diff --git a/DEPS b/DEPS index a7448c1..14ba302 100644 --- a/DEPS +++ b/DEPS
@@ -228,7 +228,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': '0733d484289faa5ea51b97bd19e6afadc82ab042', + 'skia_revision': 'cbbe23da20eabed092421c090fd3f17db4e020fc', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. @@ -240,7 +240,7 @@ # 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': 'f2c968874230190cc1d7719f77b07abccd46a20a', + 'angle_revision': '8ffb4602b3f42c0409f9fd686bfeb896d5d74914', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. @@ -255,7 +255,7 @@ # # Note this revision should be updated with # third_party/boringssl/roll_boringssl.py, not roll-dep. - 'boringssl_revision': '519c2986c73c23461b130ad19b93fd7d081353d5', + 'boringssl_revision': '80df7398ce52574801821ce7a76c031c35d6b882', # 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. @@ -299,7 +299,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': '77a708929920f307d7f27299354f23d343f7f79a', + 'catapult_revision': '7303a9158797100eb0a00267a72bafb8e61f46c5', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libFuzzer # and whatever else without interference from each other. @@ -375,7 +375,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling nearby # and whatever else without interference from each other. - 'nearby_revision': '7a02eaad37a4e0d3948750c987e82fcb94225547', + 'nearby_revision': 'f483110a8d92cf4d26f2d725a09655a0ce3b0f6c', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling securemessage # and whatever else without interference from each other. @@ -391,7 +391,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. - 'libcxxabi_revision': '8452f0657dddc7220ceb4aedf34639cdede3444b', + 'libcxxabi_revision': 'bac1433f3dfcaa6896b79571db1470526a046dd1', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -590,7 +590,7 @@ Var('chromium_git') + '/external/github.com/toji/webvr.info.git' + '@' + 'c58ae99b9ff9e2aa4c524633519570bf33536248', 'src/ios/third_party/earl_grey2/src': { - 'url': Var('chromium_git') + '/external/github.com/google/EarlGrey.git' + '@' + '33138a59a2c5f99b5cf1df30cde39ce144d78267', + 'url': Var('chromium_git') + '/external/github.com/google/EarlGrey.git' + '@' + '3a6f231bb1c1b9355d684aff73c18ea9aa0feedf', 'condition': 'checkout_ios', }, @@ -767,7 +767,7 @@ 'packages': [ { 'package': 'chromium/third_party/androidx', - 'version': 'Vi9jAya198G2rkbBEW-Kf9JBk0eTahqCqqe3mjHm8SgC', + 'version': 'MHfls6SMbw1w9cf-Cbn_1lmIBXDCXFRTZEcYi8l-uwwC', }, ], 'condition': 'checkout_android', @@ -1003,7 +1003,7 @@ }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '67574d7a19b6dd25af19ed83d4822695169e3a22', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '77720f0d5afbc03d775b21798918625b43491fc4', 'src/third_party/devtools-frontend/src': Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), @@ -1478,7 +1478,7 @@ 'packages': [ { 'package': 'fuchsia/third_party/aemu/linux-amd64', - 'version': 'MPKFcUR_7BnWseHFfeAfHoSS4AcxP2KTqtCyf0T0wgwC' + 'version': 'JKkYVtuAKUH2KWZg3NzseVY6uGeRbOwWafCjM7qlOzgC' }, ], 'condition': 'host_os == "linux" and checkout_fuchsia', @@ -1582,7 +1582,7 @@ 'src/third_party/usrsctp/usrsctplib': Var('chromium_git') + '/external/github.com/sctplab/usrsctp' + '@' + '978003f36a3bc1e9fdeafae26dbfe825684b0a25', - 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@59563d9384fb9b764f805b75b2669cd84a5f4296', + 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@4a1a688a34d63eb75d8f727d1de63e098f20ca29', 'src/third_party/vulkan_memory_allocator': Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git' + '@' + 'f67d7fa397e83060b76a1ec53579116a0bbdff7a', @@ -1618,7 +1618,7 @@ Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + '9ec0bd5501c6a35eb365dc49be7618a763135a10', 'src/third_party/webgpu-cts/src': - Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + 'a03fcf00c1a1c40c1dd9a0dd2c8071333b882a09', + Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '30b127b83bfa5de1789ccf0e5a25222d1ff0e778', 'src/third_party/webrtc': Var('webrtc_git') + '/src.git' + '@' + 'b6f19d7dfd29209b0a45fff629c1c0ed02d3b6d7', @@ -1682,7 +1682,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@7807e2400514d2035c6c4d4f19c2d8bff5a9db7b', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@bbd663b48f494d826f9675d8a24e650ecf380165', 'condition': 'checkout_src_internal', },
diff --git a/ash/BUILD.gn b/ash/BUILD.gn index 0e76b55..1c10027 100644 --- a/ash/BUILD.gn +++ b/ash/BUILD.gn
@@ -1338,6 +1338,10 @@ "system/supervised/supervised_icon_string.h", "system/system_notification_controller.cc", "system/system_notification_controller.h", + "system/time/calendar_month_view.cc", + "system/time/calendar_month_view.h", + "system/time/calendar_utils.cc", + "system/time/calendar_utils.h", "system/time/time_tray_item_view.cc", "system/time/time_tray_item_view.h", "system/time/time_view.cc", @@ -2362,6 +2366,7 @@ "system/session/logout_confirmation_controller_unittest.cc", "system/session/session_limit_notification_controller_unittest.cc", "system/status_area_widget_unittest.cc", + "system/time/calendar_month_view_unittest.cc", "system/time/time_tray_item_view_unittest.cc", "system/time/time_view_unittest.cc", "system/toast/toast_manager_unittest.cc",
diff --git a/ash/accelerators/accelerator_commands.cc b/ash/accelerators/accelerator_commands.cc index 91f54d31..842c6ca 100644 --- a/ash/accelerators/accelerator_commands.cc +++ b/ash/accelerators/accelerator_commands.cc
@@ -107,11 +107,15 @@ } void NewIncognitoWindow() { - NewWindowDelegate::GetPrimary()->NewWindow(/*is_incognito=*/true); + NewWindowDelegate::GetPrimary()->NewWindow( + /*is_incognito=*/true, + /*should_trigger_session_restore=*/false); } void NewWindow() { - NewWindowDelegate::GetPrimary()->NewWindow(/*is_incognito=*/false); + NewWindowDelegate::GetPrimary()->NewWindow( + /*is_incognito=*/false, + /*should_trigger_session_restore=*/false); } void OpenCalculator() {
diff --git a/ash/app_list/views/app_list_bubble_view.cc b/ash/app_list/views/app_list_bubble_view.cc index 6c75dbe..e2fed67 100644 --- a/ash/app_list/views/app_list_bubble_view.cc +++ b/ash/app_list/views/app_list_bubble_view.cc
@@ -50,6 +50,7 @@ layer()->SetFillsBoundsOpaquely(false); layer()->SetIsFastRoundedCorner(true); layer()->SetBackgroundBlur(kUnifiedMenuBackgroundBlur); + layer()->SetBackdropFilterQuality(ColorProvider::kBackgroundBlurQuality); auto* layout = SetLayoutManager( std::make_unique<BoxLayout>(BoxLayout::Orientation::kVertical)); @@ -85,7 +86,7 @@ bool AppListBubbleView::Back() { if (search_box_view_->HasSearch()) { - search_box_view_->ClearSearchAndDeactivateSearchBox(); + search_box_view_->ClearSearch(); return true; } // TODO(https://crbug.com/1220808): Handle back action for open folders in
diff --git a/ash/app_list/views/app_list_bubble_view_unittest.cc b/ash/app_list/views/app_list_bubble_view_unittest.cc index 43118de..c7259d5 100644 --- a/ash/app_list/views/app_list_bubble_view_unittest.cc +++ b/ash/app_list/views/app_list_bubble_view_unittest.cc
@@ -239,12 +239,14 @@ PressAndReleaseKey(ui::VKEY_BROWSER_BACK); EXPECT_TRUE(search_box_view->search_box()->GetText().empty()); + EXPECT_TRUE(search_box_view->is_search_box_active()); PressAndReleaseKey(ui::VKEY_A); EXPECT_FALSE(search_box_view->search_box()->GetText().empty()); PressAndReleaseKey(ui::VKEY_ESCAPE); EXPECT_TRUE(search_box_view->search_box()->GetText().empty()); + EXPECT_TRUE(search_box_view->is_search_box_active()); } TEST_F(AppListBubbleViewTest, BackActionsCloseAppList) {
diff --git a/ash/app_list/views/app_list_view.cc b/ash/app_list/views/app_list_view.cc index a024693..f4f3052 100644 --- a/ash/app_list/views/app_list_view.cc +++ b/ash/app_list/views/app_list_view.cc
@@ -30,6 +30,7 @@ #include "ash/public/cpp/app_list/app_list_types.h" #include "ash/public/cpp/metrics_util.h" #include "ash/public/cpp/shell_window_ids.h" +#include "ash/public/cpp/style/color_provider.h" #include "ash/public/cpp/wallpaper/wallpaper_types.h" #include "ash/shell.h" #include "ash/wm/work_area_insets.h" @@ -96,9 +97,6 @@ // enabled. constexpr int kAppListAnimationDurationImmediateMs = 0; -// Quality of the shield background blur. -constexpr float kAppListBlurQuality = 0.33f; - // Set animation durations to 0 for testing. // TODO(oshima): Use ui::ScopedAnimationDurationScaleMode instead. bool short_animations_for_testing; @@ -524,7 +522,7 @@ if (use_blur) { layer()->SetBackgroundBlur(preferred_blur_radius_); - layer()->SetBackdropFilterQuality(kAppListBlurQuality); + layer()->SetBackdropFilterQuality(ColorProvider::kBackgroundBlurQuality); } else { layer()->SetBackgroundBlur(0); }
diff --git a/ash/capture_mode/capture_label_view.cc b/ash/capture_mode/capture_label_view.cc index cf98e1b..d6fa9df 100644 --- a/ash/capture_mode/capture_label_view.cc +++ b/ash/capture_mode/capture_label_view.cc
@@ -149,7 +149,7 @@ layer()->SetRoundedCornerRadius(gfx::RoundedCornersF(kCaptureLabelRadius)); layer()->SetBackgroundBlur( static_cast<float>(AshColorProvider::LayerBlurSigma::kBlurDefault)); - layer()->SetBackdropFilterQuality(capture_mode::kBlurQuality); + layer()->SetBackdropFilterQuality(ColorProvider::kBackgroundBlurQuality); SkColor text_color = color_provider->GetContentLayerColor( AshColorProvider::ContentLayerType::kTextColorPrimary);
diff --git a/ash/capture_mode/capture_mode_bar_view.cc b/ash/capture_mode/capture_mode_bar_view.cc index 10fec36..ded07cb 100644 --- a/ash/capture_mode/capture_mode_bar_view.cc +++ b/ash/capture_mode/capture_mode_bar_view.cc
@@ -74,7 +74,7 @@ layer()->SetRoundedCornerRadius(kBorderRadius); layer()->SetBackgroundBlur( static_cast<float>(AshColorProvider::LayerBlurSigma::kBlurDefault)); - layer()->SetBackdropFilterQuality(capture_mode::kBlurQuality); + layer()->SetBackdropFilterQuality(ColorProvider::kBackgroundBlurQuality); auto* box_layout = SetLayoutManager(std::make_unique<views::BoxLayout>( views::BoxLayout::Orientation::kHorizontal, kBarPadding,
diff --git a/ash/capture_mode/capture_mode_constants.h b/ash/capture_mode/capture_mode_constants.h index 980c16e..9c0a03c2 100644 --- a/ash/capture_mode/capture_mode_constants.h +++ b/ash/capture_mode/capture_mode_constants.h
@@ -32,9 +32,6 @@ constexpr int kArrowKeyboardRegionChangeDp = 15; constexpr int kShiftArrowKeyboardRegionChangeDp = 40; -// Blur quality applied to the capture bar and settings menu backdrop. -constexpr float kBlurQuality = 0.33f; - constexpr int kSpaceBetweenCaptureBarAndSettingsMenu = 8; // Constants needed to paint the highlight around the area being captured.
diff --git a/ash/capture_mode/capture_mode_settings_view.cc b/ash/capture_mode/capture_mode_settings_view.cc index f8ea603e..90c2550a0 100644 --- a/ash/capture_mode/capture_mode_settings_view.cc +++ b/ash/capture_mode/capture_mode_settings_view.cc
@@ -54,7 +54,7 @@ layer()->SetRoundedCornerRadius(kBorderRadius); layer()->SetBackgroundBlur( static_cast<float>(AshColorProvider::LayerBlurSigma::kBlurDefault)); - layer()->SetBackdropFilterQuality(capture_mode::kBlurQuality); + layer()->SetBackdropFilterQuality(ColorProvider::kBackgroundBlurQuality); SetLayoutManager(std::make_unique<views::BoxLayout>( views::BoxLayout::Orientation::kVertical, kSettingsPadding,
diff --git a/ash/public/cpp/holding_space/holding_space_progress.cc b/ash/public/cpp/holding_space/holding_space_progress.cc index 5fc06ad8..be303f05 100644 --- a/ash/public/cpp/holding_space/holding_space_progress.cc +++ b/ash/public/cpp/holding_space/holding_space_progress.cc
@@ -38,10 +38,21 @@ const absl::optional<int64_t>& current_bytes, const absl::optional<int64_t>& total_bytes, const absl::optional<bool>& complete) + : HoldingSpaceProgress(current_bytes, + total_bytes, + complete, + /*hidden=*/false) {} + +HoldingSpaceProgress::HoldingSpaceProgress( + const absl::optional<int64_t>& current_bytes, + const absl::optional<int64_t>& total_bytes, + const absl::optional<bool>& complete, + bool hidden) : current_bytes_(current_bytes), total_bytes_(total_bytes), complete_( - complete.value_or(CalculateComplete(current_bytes_, total_bytes_))) { + complete.value_or(CalculateComplete(current_bytes_, total_bytes_))), + hidden_(hidden) { DCHECK_GE(current_bytes_.value_or(0), 0); DCHECK_GE(total_bytes_.value_or(0), 0); @@ -67,12 +78,17 @@ HoldingSpaceProgress::~HoldingSpaceProgress() = default; bool HoldingSpaceProgress::operator==(const HoldingSpaceProgress& rhs) const { - return std::tie(current_bytes_, total_bytes_, complete_) == - std::tie(rhs.current_bytes_, rhs.total_bytes_, complete_); + return std::tie(current_bytes_, total_bytes_, complete_, hidden_) == + std::tie(rhs.current_bytes_, rhs.total_bytes_, rhs.complete_, + rhs.hidden_); } HoldingSpaceProgress& HoldingSpaceProgress::operator+=( const HoldingSpaceProgress& rhs) { + // Hidden instances shouldn't be included in cumulative progress calculations. + DCHECK(!hidden_); + DCHECK(!rhs.hidden_); + HoldingSpaceProgress temp(*this); temp = temp + rhs; @@ -85,6 +101,10 @@ HoldingSpaceProgress HoldingSpaceProgress::operator+( const HoldingSpaceProgress& rhs) const { + // Hidden instances shouldn't be included in cumulative progress calculations. + DCHECK(!hidden_); + DCHECK(!rhs.hidden_); + // The number of `current_bytes` should only be present if present for both // the lhs and `rhs` instances. Otherwise `current_bytes` is indeterminate. absl::optional<int64_t> current_bytes(current_bytes_); @@ -136,4 +156,8 @@ return !current_bytes_.has_value() || !total_bytes_.has_value(); } +bool HoldingSpaceProgress::IsHidden() const { + return hidden_; +} + } // namespace ash
diff --git a/ash/public/cpp/holding_space/holding_space_progress.h b/ash/public/cpp/holding_space/holding_space_progress.h index fa67f26..01a565d 100644 --- a/ash/public/cpp/holding_space/holding_space_progress.h +++ b/ash/public/cpp/holding_space/holding_space_progress.h
@@ -29,6 +29,17 @@ const absl::optional<int64_t>& total_bytes, const absl::optional<bool>& complete); + // Creates an instance for the specified `current_bytes` and `total_bytes` + // which is explicitly `complete` or incomplete. If absent, completion will be + // calculated based on `current_bytes` and `total_bytes`. If `true`, then it + // must also be true that `current_bytes.value()` == `total_bytes.value()`. If + // `hidden` is `true`, this instance should not be painted nor included in + // cumulative progress calculations. + HoldingSpaceProgress(const absl::optional<int64_t>& current_bytes, + const absl::optional<int64_t>& total_bytes, + const absl::optional<bool>& complete, + bool hidden); + HoldingSpaceProgress(const HoldingSpaceProgress&); HoldingSpaceProgress& operator=(const HoldingSpaceProgress&); ~HoldingSpaceProgress(); @@ -49,10 +60,15 @@ // Returns `true` if progress is indeterminate. bool IsIndeterminate() const; + // Returns `true` if progress is hidden and therefore should not be painted + // nor included in cumulative progress calculations. + bool IsHidden() const; + private: absl::optional<int64_t> current_bytes_; absl::optional<int64_t> total_bytes_; bool complete_; + bool hidden_; }; } // namespace ash
diff --git a/ash/public/cpp/new_window_delegate.h b/ash/public/cpp/new_window_delegate.h index d23d14c..404a47e8 100644 --- a/ash/public/cpp/new_window_delegate.h +++ b/ash/public/cpp/new_window_delegate.h
@@ -42,8 +42,12 @@ // page will be able to autoplay media without restriction. virtual void NewTabWithUrl(const GURL& url, bool from_user_interaction) = 0; - // Invoked when the user uses Ctrl-N or Ctrl-Shift-N to open a new window. - virtual void NewWindow(bool incognito) = 0; + // Invoked when the user uses Ctrl-N or Ctrl-Shift-N to open a new window. If + // the |should_trigger_session_restore| is true, a new window opening should + // be treated like the start of a session (with potential session restore, + // startup URLs, etc.). Otherwise, don't restore the session. + virtual void NewWindow(bool incognito, + bool should_trigger_session_restore) = 0; // Invoked when an accelerator (calculator key) is used to open calculator. virtual void OpenCalculator() = 0;
diff --git a/ash/public/cpp/style/color_provider.h b/ash/public/cpp/style/color_provider.h index cb2860a5..e4e6b7b 100644 --- a/ash/public/cpp/style/color_provider.h +++ b/ash/public/cpp/style/color_provider.h
@@ -33,6 +33,10 @@ kBlurSigma10 = 10, }; + // The default blur quality for background blur. Using a value less than 1 + // improves performance. + static constexpr float kBackgroundBlurQuality = 0.33f; + // Types of Base layer. enum class BaseLayerType { // Number at the end of each transparent type indicates the alpha value.
diff --git a/ash/public/cpp/test/test_new_window_delegate.cc b/ash/public/cpp/test/test_new_window_delegate.cc index 52ba9696..deb2eac 100644 --- a/ash/public/cpp/test/test_new_window_delegate.cc +++ b/ash/public/cpp/test/test_new_window_delegate.cc
@@ -14,7 +14,8 @@ void TestNewWindowDelegate::NewTab() {} void TestNewWindowDelegate::NewTabWithUrl(const GURL& url, bool from_user_interaction) {} -void TestNewWindowDelegate::NewWindow(bool incognito) {} +void TestNewWindowDelegate::NewWindow(bool incognito, + bool should_trigger_session_restore) {} void TestNewWindowDelegate::OpenCalculator() {} void TestNewWindowDelegate::OpenFileManager() {} void TestNewWindowDelegate::OpenDownloadsFolder() {}
diff --git a/ash/public/cpp/test/test_new_window_delegate.h b/ash/public/cpp/test/test_new_window_delegate.h index ca1992435..266ea8c2 100644 --- a/ash/public/cpp/test/test_new_window_delegate.h +++ b/ash/public/cpp/test/test_new_window_delegate.h
@@ -23,7 +23,7 @@ // NewWindowDelegate: void NewTab() override; void NewTabWithUrl(const GURL& url, bool from_user_interaction) override; - void NewWindow(bool incognito) override; + void NewWindow(bool incognito, bool should_trigger_session_restore) override; void OpenCalculator() override; void OpenFileManager() override; void OpenDownloadsFolder() override;
diff --git a/ash/quick_pair/common/BUILD.gn b/ash/quick_pair/common/BUILD.gn index e175620..c1cea947 100644 --- a/ash/quick_pair/common/BUILD.gn +++ b/ash/quick_pair/common/BUILD.gn
@@ -40,6 +40,23 @@ ] } +static_library("test_support") { + testonly = true + + sources = [ + "mock_quick_pair_browser_delegate.cc", + "mock_quick_pair_browser_delegate.h", + "quick_pair_browser_delegate.h", + ] + + deps = [ + "//ash/services/quick_pair/public/mojom", + "//base/test:test_support", + "//services/network/public/cpp", + "//testing/gtest", + ] +} + source_set("unit_tests") { testonly = true
diff --git a/ash/quick_pair/common/mock_quick_pair_browser_delegate.cc b/ash/quick_pair/common/mock_quick_pair_browser_delegate.cc new file mode 100644 index 0000000..4c431ac --- /dev/null +++ b/ash/quick_pair/common/mock_quick_pair_browser_delegate.cc
@@ -0,0 +1,15 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ash/quick_pair/common/mock_quick_pair_browser_delegate.h" + +namespace ash { +namespace quick_pair { + +MockQuickPairBrowserDelegate::MockQuickPairBrowserDelegate() = default; + +MockQuickPairBrowserDelegate::~MockQuickPairBrowserDelegate() = default; + +} // namespace quick_pair +} // namespace ash
diff --git a/ash/quick_pair/common/mock_quick_pair_browser_delegate.h b/ash/quick_pair/common/mock_quick_pair_browser_delegate.h new file mode 100644 index 0000000..45d25b8c --- /dev/null +++ b/ash/quick_pair/common/mock_quick_pair_browser_delegate.h
@@ -0,0 +1,39 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef ASH_QUICK_PAIR_COMMON_MOCK_QUICK_PAIR_BROWSER_DELEGATE_H_ +#define ASH_QUICK_PAIR_COMMON_MOCK_QUICK_PAIR_BROWSER_DELEGATE_H_ + +#include "ash/quick_pair/common/quick_pair_browser_delegate.h" +#include "base/component_export.h" +#include "base/memory/scoped_refptr.h" +#include "mojo/public/cpp/bindings/pending_receiver.h" +#include "services/network/public/cpp/shared_url_loader_factory.h" +#include "testing/gmock/include/gmock/gmock.h" + +namespace ash { +namespace quick_pair { + +class MockQuickPairBrowserDelegate : public QuickPairBrowserDelegate { + public: + MockQuickPairBrowserDelegate(); + MockQuickPairBrowserDelegate(const MockQuickPairBrowserDelegate&) = delete; + MockQuickPairBrowserDelegate& operator=(const MockQuickPairBrowserDelegate&) = + delete; + ~MockQuickPairBrowserDelegate() override; + + MOCK_METHOD(scoped_refptr<network::SharedURLLoaderFactory>, + GetURLLoaderFactory, + (), + (override)); + MOCK_METHOD(void, + RequestService, + (mojo::PendingReceiver<mojom::QuickPairService>), + (override)); +}; + +} // namespace quick_pair +} // namespace ash + +#endif // ASH_QUICK_PAIR_COMMON_MOCK_QUICK_PAIR_BROWSER_DELEGATE_H_
diff --git a/ash/resources/vector_icons/BUILD.gn b/ash/resources/vector_icons/BUILD.gn index 951dbd5..5d40a542 100644 --- a/ash/resources/vector_icons/BUILD.gn +++ b/ash/resources/vector_icons/BUILD.gn
@@ -359,6 +359,9 @@ "unified_menu_battery_x_outline.icon", "unified_menu_bluetooth.icon", "unified_menu_bluetooth_connected.icon", + "unified_menu_bluetooth_connected_legacy.icon", + "unified_menu_bluetooth_disabled.icon", + "unified_menu_bluetooth_legacy.icon", "unified_menu_brightness.icon", "unified_menu_cast.icon", "unified_menu_dark_mode.icon",
diff --git a/ash/resources/vector_icons/unified_menu_bluetooth.icon b/ash/resources/vector_icons/unified_menu_bluetooth.icon index 442b3a85..bf801f7 100644 --- a/ash/resources/vector_icons/unified_menu_bluetooth.icon +++ b/ash/resources/vector_icons/unified_menu_bluetooth.icon
@@ -2,38 +2,36 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 24, -MOVE_TO, 13.57f, 18.62f, -R_V_LINE_TO, -4.3f, -R_LINE_TO, 2.08f, 2.15f, -R_LINE_TO, -2.08f, 2.15f, +CANVAS_DIMENSIONS, 20, +MOVE_TO, 11.62f, 16.13f, +V_LINE_TO, 12.47f, +LINE_TO, 13.44f, 14.3f, +LINE_TO, 11.62f, 16.13f, CLOSE, -R_MOVE_TO, 0, -8.95f, -R_V_LINE_TO, -4.3f, -R_LINE_TO, 2.08f, 2.15f, -R_LINE_TO, -2.08f, 2.15f, +MOVE_TO, 11.62f, 8.52f, +V_LINE_TO, 4.87f, +LINE_TO, 13.44f, 6.69f, +LINE_TO, 11.62f, 8.52f, CLOSE, -R_MOVE_TO, 0.5f, 2.33f, -R_LINE_TO, 3.63f, -3.74f, -R_CUBIC_TO, 0.4f, -0.41f, 0.4f, -1.07f, 0, -1.48f, -R_LINE_TO, -4.33f, -4.47f, -R_LINE_TO, -0.03f, -0.03f, -R_CUBIC_TO, -0.41f, -0.39f, -1.05f, -0.37f, -1.43f, 0.05f, -R_CUBIC_TO, -0.17f, 0.19f, -0.27f, 0.45f, -0.27f, 0.71f, -R_V_LINE_TO, 6.44f, -R_LINE_TO, -3.92f, -4.05f, -R_CUBIC_TO, -0.4f, -0.41f, -1.03f, -0.41f, -1.42f, 0, -R_CUBIC_TO, -0.4f, 0.41f, -0.4f, 1.06f, 0, 1.47f, -R_LINE_TO, 4.93f, 5.1f, -R_LINE_TO, -4.93f, 5.09f, -R_CUBIC_TO, -0.4f, 0.41f, -0.4f, 1.06f, 0, 1.47f, -R_CUBIC_TO, 0.4f, 0.41f, 1.03f, 0.41f, 1.42f, 0, -R_LINE_TO, 3.92f, -4.05f, -R_V_LINE_TO, 6.45f, -R_CUBIC_TO, 0, 0.57f, 0.45f, 1.04f, 1.01f, 1.04f, -R_CUBIC_TO, 0.25f, 0, 0.5f, -0.1f, 0.69f, -0.28f, -R_LINE_TO, 0.05f, -0.05f, -R_LINE_TO, 4.32f, -4.46f, -R_CUBIC_TO, 0.4f, -0.41f, 0.4f, -1.07f, 0, -1.48f, -R_LINE_TO, -3.63f, -3.73f, +MOVE_TO, 12.06f, 10.5f, +LINE_TO, 15.24f, 7.32f, +CUBIC_TO, 15.59f, 6.97f, 15.59f, 6.41f, 15.24f, 6.06f, +LINE_TO, 11.43f, 2.24f, +CUBIC_TO, 11.07f, 1.9f, 10.51f, 1.92f, 10.18f, 2.28f, +CUBIC_TO, 10.02f, 2.45f, 9.94f, 2.66f, 9.94f, 2.89f, +V_LINE_TO, 8.36f, +LINE_TO, 6.51f, 4.92f, +CUBIC_TO, 6.16f, 4.57f, 5.61f, 4.57f, 5.26f, 4.92f, +CUBIC_TO, 4.91f, 5.27f, 4.91f, 5.82f, 5.26f, 6.17f, +LINE_TO, 9.57f, 10.5f, +LINE_TO, 5.26f, 14.83f, +CUBIC_TO, 4.91f, 15.18f, 4.91f, 15.73f, 5.26f, 16.08f, +CUBIC_TO, 5.61f, 16.42f, 6.16f, 16.42f, 6.51f, 16.08f, +LINE_TO, 9.94f, 12.63f, +V_LINE_TO, 18.12f, +CUBIC_TO, 9.94f, 18.6f, 10.33f, 19, 10.82f, 19, +CUBIC_TO, 11.04f, 19, 11.26f, 18.92f, 11.42f, 18.76f, +LINE_TO, 15.24f, 14.93f, +CUBIC_TO, 15.59f, 14.58f, 15.59f, 14.02f, 15.24f, 13.67f, +LINE_TO, 12.06f, 10.5f, CLOSE
diff --git a/ash/resources/vector_icons/unified_menu_bluetooth_connected.icon b/ash/resources/vector_icons/unified_menu_bluetooth_connected.icon index 72aebf4..caadffc 100644 --- a/ash/resources/vector_icons/unified_menu_bluetooth_connected.icon +++ b/ash/resources/vector_icons/unified_menu_bluetooth_connected.icon
@@ -2,58 +2,58 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -CANVAS_DIMENSIONS, 24, -MOVE_TO, 13.57f, 18.62f, -R_V_LINE_TO, -4.3f, -R_LINE_TO, 2.08f, 2.15f, -R_LINE_TO, -2.08f, 2.15f, +CANVAS_DIMENSIONS, 20, +MOVE_TO, 11.06f, 10.5f, +LINE_TO, 14.24f, 7.32f, +CUBIC_TO, 14.59f, 6.97f, 14.59f, 6.41f, 14.24f, 6.06f, +LINE_TO, 10.43f, 2.24f, +CUBIC_TO, 10.07f, 1.9f, 9.51f, 1.92f, 9.18f, 2.28f, +CUBIC_TO, 9.02f, 2.45f, 8.94f, 2.66f, 8.94f, 2.89f, +V_LINE_TO, 8.36f, +LINE_TO, 5.51f, 4.92f, +CUBIC_TO, 5.16f, 4.57f, 4.61f, 4.57f, 4.26f, 4.92f, +CUBIC_TO, 3.91f, 5.27f, 3.91f, 5.82f, 4.26f, 6.17f, +LINE_TO, 8.57f, 10.5f, +LINE_TO, 4.26f, 14.83f, +CUBIC_TO, 3.91f, 15.18f, 3.91f, 15.73f, 4.26f, 16.08f, +CUBIC_TO, 4.61f, 16.42f, 5.16f, 16.42f, 5.51f, 16.08f, +LINE_TO, 8.94f, 12.63f, +V_LINE_TO, 18.12f, +CUBIC_TO, 8.94f, 18.6f, 9.33f, 19, 9.82f, 19, +CUBIC_TO, 10.04f, 19, 10.26f, 18.92f, 10.42f, 18.76f, +LINE_TO, 14.24f, 14.93f, +CUBIC_TO, 14.59f, 14.58f, 14.59f, 14.02f, 14.24f, 13.67f, +LINE_TO, 11.06f, 10.5f, CLOSE, -R_MOVE_TO, 0, -8.95f, -R_V_LINE_TO, -4.3f, -R_LINE_TO, 2.08f, 2.15f, -R_LINE_TO, -2.08f, 2.15f, +MOVE_TO, 10.62f, 12.47f, +LINE_TO, 12.44f, 14.3f, +LINE_TO, 10.62f, 16.13f, +V_LINE_TO, 12.47f, CLOSE, -R_MOVE_TO, 0.5f, 2.33f, -R_LINE_TO, 3.63f, 3.73f, -R_CUBIC_TO, 0.4f, 0.41f, 0.4f, 1.07f, 0, 1.48f, -R_LINE_TO, -4.32f, 4.46f, -R_LINE_TO, -0.05f, 0.05f, -R_CUBIC_TO, -0.19f, 0.18f, -0.43f, 0.28f, -0.69f, 0.28f, -R_CUBIC_TO, -0.56f, 0, -1.01f, -0.46f, -1.01f, -1.04f, -R_V_LINE_TO, -6.45f, -R_LINE_TO, -3.92f, 4.05f, -R_CUBIC_TO, -0.4f, 0.41f, -1.03f, 0.41f, -1.42f, 0, -R_CUBIC_TO, -0.4f, -0.41f, -0.4f, -1.06f, 0, -1.47f, -R_LINE_TO, 4.93f, -5.09f, -R_LINE_TO, -4.93f, -5.1f, -R_CUBIC_TO, -0.4f, -0.41f, -0.4f, -1.06f, 0, -1.47f, -R_CUBIC_TO, 0.4f, -0.41f, 1.03f, -0.41f, 1.42f, 0, -R_LINE_TO, 3.92f, 4.05f, -R_V_LINE_TO, -6.44f, -R_CUBIC_TO, 0, -0.26f, 0.1f, -0.52f, 0.27f, -0.71f, -R_CUBIC_TO, 0.38f, -0.42f, 1.02f, -0.44f, 1.43f, -0.05f, -R_LINE_TO, 0.03f, 0.03f, -R_LINE_TO, 4.33f, 4.47f, -R_CUBIC_TO, 0.4f, 0.41f, 0.4f, 1.07f, 0, 1.48f, -R_LINE_TO, -3.63f, 3.74f, +MOVE_TO, 10.62f, 4.87f, +LINE_TO, 12.44f, 6.69f, +LINE_TO, 10.62f, 8.52f, +V_LINE_TO, 4.87f, CLOSE, -R_MOVE_TO, -8.49f, -1.76f, -R_LINE_TO, 1.17f, 1.17f, -R_CUBIC_TO, 0.32f, 0.32f, 0.32f, 0.85f, 0, 1.17f, -R_LINE_TO, -1.17f, 1.17f, -R_CUBIC_TO, -0.32f, 0.32f, -0.85f, 0.32f, -1.17f, 0, -R_LINE_TO, -1.17f, -1.17f, -R_CUBIC_TO, -0.32f, -0.32f, -0.32f, -0.85f, 0, -1.17f, -R_LINE_TO, 1.17f, -1.17f, -R_CUBIC_TO, 0.32f, -0.32f, 0.85f, -0.32f, 1.17f, 0, +NEW_PATH, +MOVE_TO, 3.94f, 9.18f, +LINE_TO, 4.82f, 10.06f, +CUBIC_TO, 5.06f, 10.3f, 5.06f, 10.7f, 4.82f, 10.94f, +LINE_TO, 3.94f, 11.82f, +CUBIC_TO, 3.7f, 12.06f, 3.3f, 12.06f, 3.06f, 11.82f, +LINE_TO, 2.18f, 10.94f, +CUBIC_TO, 1.94f, 10.7f, 1.94f, 10.3f, 2.18f, 10.06f, +LINE_TO, 3.06f, 9.18f, +CUBIC_TO, 3.3f, 8.94f, 3.7f, 8.94f, 3.94f, 9.18f, CLOSE, -R_MOVE_TO, 15, 0, -R_LINE_TO, 1.17f, 1.17f, -R_CUBIC_TO, 0.32f, 0.32f, 0.32f, 0.85f, 0, 1.17f, -R_LINE_TO, -1.17f, 1.17f, -R_CUBIC_TO, -0.32f, 0.32f, -0.85f, 0.32f, -1.17f, 0, -R_LINE_TO, -1.17f, -1.17f, -R_CUBIC_TO, -0.32f, -0.32f, -0.32f, -0.85f, 0, -1.17f, -R_LINE_TO, 1.17f, -1.17f, -R_CUBIC_TO, 0.32f, -0.32f, 0.85f, -0.32f, 1.17f, 0, +NEW_PATH, +MOVE_TO, 17.32f, 10.06f, +LINE_TO, 16.44f, 9.18f, +CUBIC_TO, 16.2f, 8.94f, 15.8f, 8.94f, 15.56f, 9.18f, +LINE_TO, 14.68f, 10.06f, +CUBIC_TO, 14.44f, 10.3f, 14.44f, 10.7f, 14.68f, 10.94f, +LINE_TO, 15.56f, 11.82f, +CUBIC_TO, 15.8f, 12.06f, 16.2f, 12.06f, 16.44f, 11.82f, +LINE_TO, 17.32f, 10.94f, +CUBIC_TO, 17.56f, 10.7f, 17.56f, 10.3f, 17.32f, 10.06f, CLOSE
diff --git a/ash/resources/vector_icons/unified_menu_bluetooth_connected_legacy.icon b/ash/resources/vector_icons/unified_menu_bluetooth_connected_legacy.icon new file mode 100644 index 0000000..72aebf4 --- /dev/null +++ b/ash/resources/vector_icons/unified_menu_bluetooth_connected_legacy.icon
@@ -0,0 +1,59 @@ +// Copyright 2018 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. + +CANVAS_DIMENSIONS, 24, +MOVE_TO, 13.57f, 18.62f, +R_V_LINE_TO, -4.3f, +R_LINE_TO, 2.08f, 2.15f, +R_LINE_TO, -2.08f, 2.15f, +CLOSE, +R_MOVE_TO, 0, -8.95f, +R_V_LINE_TO, -4.3f, +R_LINE_TO, 2.08f, 2.15f, +R_LINE_TO, -2.08f, 2.15f, +CLOSE, +R_MOVE_TO, 0.5f, 2.33f, +R_LINE_TO, 3.63f, 3.73f, +R_CUBIC_TO, 0.4f, 0.41f, 0.4f, 1.07f, 0, 1.48f, +R_LINE_TO, -4.32f, 4.46f, +R_LINE_TO, -0.05f, 0.05f, +R_CUBIC_TO, -0.19f, 0.18f, -0.43f, 0.28f, -0.69f, 0.28f, +R_CUBIC_TO, -0.56f, 0, -1.01f, -0.46f, -1.01f, -1.04f, +R_V_LINE_TO, -6.45f, +R_LINE_TO, -3.92f, 4.05f, +R_CUBIC_TO, -0.4f, 0.41f, -1.03f, 0.41f, -1.42f, 0, +R_CUBIC_TO, -0.4f, -0.41f, -0.4f, -1.06f, 0, -1.47f, +R_LINE_TO, 4.93f, -5.09f, +R_LINE_TO, -4.93f, -5.1f, +R_CUBIC_TO, -0.4f, -0.41f, -0.4f, -1.06f, 0, -1.47f, +R_CUBIC_TO, 0.4f, -0.41f, 1.03f, -0.41f, 1.42f, 0, +R_LINE_TO, 3.92f, 4.05f, +R_V_LINE_TO, -6.44f, +R_CUBIC_TO, 0, -0.26f, 0.1f, -0.52f, 0.27f, -0.71f, +R_CUBIC_TO, 0.38f, -0.42f, 1.02f, -0.44f, 1.43f, -0.05f, +R_LINE_TO, 0.03f, 0.03f, +R_LINE_TO, 4.33f, 4.47f, +R_CUBIC_TO, 0.4f, 0.41f, 0.4f, 1.07f, 0, 1.48f, +R_LINE_TO, -3.63f, 3.74f, +CLOSE, +R_MOVE_TO, -8.49f, -1.76f, +R_LINE_TO, 1.17f, 1.17f, +R_CUBIC_TO, 0.32f, 0.32f, 0.32f, 0.85f, 0, 1.17f, +R_LINE_TO, -1.17f, 1.17f, +R_CUBIC_TO, -0.32f, 0.32f, -0.85f, 0.32f, -1.17f, 0, +R_LINE_TO, -1.17f, -1.17f, +R_CUBIC_TO, -0.32f, -0.32f, -0.32f, -0.85f, 0, -1.17f, +R_LINE_TO, 1.17f, -1.17f, +R_CUBIC_TO, 0.32f, -0.32f, 0.85f, -0.32f, 1.17f, 0, +CLOSE, +R_MOVE_TO, 15, 0, +R_LINE_TO, 1.17f, 1.17f, +R_CUBIC_TO, 0.32f, 0.32f, 0.32f, 0.85f, 0, 1.17f, +R_LINE_TO, -1.17f, 1.17f, +R_CUBIC_TO, -0.32f, 0.32f, -0.85f, 0.32f, -1.17f, 0, +R_LINE_TO, -1.17f, -1.17f, +R_CUBIC_TO, -0.32f, -0.32f, -0.32f, -0.85f, 0, -1.17f, +R_LINE_TO, 1.17f, -1.17f, +R_CUBIC_TO, 0.32f, -0.32f, 0.85f, -0.32f, 1.17f, 0, +CLOSE
diff --git a/ash/resources/vector_icons/unified_menu_bluetooth_disabled.icon b/ash/resources/vector_icons/unified_menu_bluetooth_disabled.icon new file mode 100644 index 0000000..0d503a7 --- /dev/null +++ b/ash/resources/vector_icons/unified_menu_bluetooth_disabled.icon
@@ -0,0 +1,34 @@ +// Copyright 2021 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. + +CANVAS_DIMENSIONS, 20, +MOVE_TO, 10.83f, 4.86f, +LINE_TO, 12.4f, 6.42f, +LINE_TO, 11.07f, 7.76f, +LINE_TO, 12.24f, 8.93f, +LINE_TO, 14.76f, 6.42f, +LINE_TO, 10, 1.67f, +H_LINE_TO, 9.17f, +V_LINE_TO, 5.86f, +LINE_TO, 10.83f, 7.52f, +V_LINE_TO, 4.86f, +CLOSE, +MOVE_TO, 4.51f, 3.33f, +LINE_TO, 3.33f, 4.51f, +LINE_TO, 8.82f, 10, +LINE_TO, 4.17f, 14.66f, +LINE_TO, 5.34f, 15.83f, +LINE_TO, 9.17f, 12.01f, +V_LINE_TO, 18.33f, +H_LINE_TO, 10, +LINE_TO, 13.58f, 14.76f, +LINE_TO, 15.49f, 16.67f, +LINE_TO, 16.67f, 15.49f, +LINE_TO, 4.51f, 3.33f, +CLOSE, +MOVE_TO, 12.4f, 13.58f, +LINE_TO, 10.83f, 12.01f, +V_LINE_TO, 15.14f, +LINE_TO, 12.4f, 13.58f, +CLOSE
diff --git a/ash/resources/vector_icons/unified_menu_bluetooth_legacy.icon b/ash/resources/vector_icons/unified_menu_bluetooth_legacy.icon new file mode 100644 index 0000000..442b3a85 --- /dev/null +++ b/ash/resources/vector_icons/unified_menu_bluetooth_legacy.icon
@@ -0,0 +1,39 @@ +// Copyright 2018 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. + +CANVAS_DIMENSIONS, 24, +MOVE_TO, 13.57f, 18.62f, +R_V_LINE_TO, -4.3f, +R_LINE_TO, 2.08f, 2.15f, +R_LINE_TO, -2.08f, 2.15f, +CLOSE, +R_MOVE_TO, 0, -8.95f, +R_V_LINE_TO, -4.3f, +R_LINE_TO, 2.08f, 2.15f, +R_LINE_TO, -2.08f, 2.15f, +CLOSE, +R_MOVE_TO, 0.5f, 2.33f, +R_LINE_TO, 3.63f, -3.74f, +R_CUBIC_TO, 0.4f, -0.41f, 0.4f, -1.07f, 0, -1.48f, +R_LINE_TO, -4.33f, -4.47f, +R_LINE_TO, -0.03f, -0.03f, +R_CUBIC_TO, -0.41f, -0.39f, -1.05f, -0.37f, -1.43f, 0.05f, +R_CUBIC_TO, -0.17f, 0.19f, -0.27f, 0.45f, -0.27f, 0.71f, +R_V_LINE_TO, 6.44f, +R_LINE_TO, -3.92f, -4.05f, +R_CUBIC_TO, -0.4f, -0.41f, -1.03f, -0.41f, -1.42f, 0, +R_CUBIC_TO, -0.4f, 0.41f, -0.4f, 1.06f, 0, 1.47f, +R_LINE_TO, 4.93f, 5.1f, +R_LINE_TO, -4.93f, 5.09f, +R_CUBIC_TO, -0.4f, 0.41f, -0.4f, 1.06f, 0, 1.47f, +R_CUBIC_TO, 0.4f, 0.41f, 1.03f, 0.41f, 1.42f, 0, +R_LINE_TO, 3.92f, -4.05f, +R_V_LINE_TO, 6.45f, +R_CUBIC_TO, 0, 0.57f, 0.45f, 1.04f, 1.01f, 1.04f, +R_CUBIC_TO, 0.25f, 0, 0.5f, -0.1f, 0.69f, -0.28f, +R_LINE_TO, 0.05f, -0.05f, +R_LINE_TO, 4.32f, -4.46f, +R_CUBIC_TO, 0.4f, -0.41f, 0.4f, -1.07f, 0, -1.48f, +R_LINE_TO, -3.63f, -3.73f, +CLOSE
diff --git a/ash/shelf/shelf_widget.cc b/ash/shelf/shelf_widget.cc index 3b0c0ec..89731d7 100644 --- a/ash/shelf/shelf_widget.cc +++ b/ash/shelf/shelf_widget.cc
@@ -55,7 +55,6 @@ // The maximum size of the opaque layer during an "overshoot" (drag away from // the screen edge). constexpr int kShelfMaxOvershootHeight = 40; -constexpr float kShelfBlurQuality = 0.33f; constexpr int kDragHandleCornerRadius = 2; // Return the first or last focusable child of |root|. @@ -301,7 +300,8 @@ opaque_background()->SetBackgroundBlur( should_blur_background ? kShelfBlurRadius : 0); - opaque_background()->SetBackdropFilterQuality(kShelfBlurQuality); + opaque_background()->SetBackdropFilterQuality( + ColorProvider::kBackgroundBlurQuality); background_is_currently_blurred_ = should_blur_background; }
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb index 72a2932f..4d912c5 100644 --- a/ash/strings/ash_strings_es-419.xtb +++ b/ash/strings/ash_strings_es-419.xtb
@@ -93,7 +93,7 @@ <translation id="1615402009686901181">La política del administrador inhabilita la captura de pantalla cuando hay contenido confidencial a la vista.</translation> <translation id="1632985212731562677">Accesibilidad con interruptores se puede inhabilitar en Configuración > Accesibilidad.</translation> <translation id="1654477262762802994">Iniciar una búsqueda por voz</translation> -<translation id="1655967159878494613"><ph name="QUERY_TEXT" />; <ph name="RESULT_TEXT" />; presiona la tecla de búsqueda más la barra espaciadora para ver el resultado en Asistente.</translation> +<translation id="1655967159878494613"><ph name="QUERY_TEXT" />; <ph name="RESULT_TEXT" />; Presiona la tecla de búsqueda+barra espaciadora para ver el resultado en Asistente.</translation> <translation id="1667964833127753507">El modo de color neutral no usa los colores extraídos del fondo de pantalla; los reemplaza por un conjunto de tonos neutros oscuros o claros.</translation> <translation id="1677472565718498478">Tiempo restante <ph name="TIME" /></translation> <translation id="1677507110654891115">No se conectó <ph name="FEATURE_NAME" />.</translation> @@ -800,7 +800,7 @@ <translation id="7302889331339392448">El Subtitulado instantáneo está desactivado.</translation> <translation id="7303365578352795231">Se responderá en otro dispositivo.</translation> <translation id="7305884605064981971">EDGE</translation> -<translation id="7343581795491695942"><ph name="QUERY_TEXT" />; <ph name="RESULT_TEXT" />; presiona la tecla de búsqueda más la barra espaciadora para ver el resultado en la Búsqueda de Google.</translation> +<translation id="7343581795491695942"><ph name="QUERY_TEXT" />; <ph name="RESULT_TEXT" />; Presiona la tecla de búsqueda+barra espaciadora para ver el resultado en la Búsqueda de Google.</translation> <translation id="7346909386216857016">Entendido</translation> <translation id="7348093485538360975">Teclado en pantalla</translation> <translation id="735745346212279324">VPN desconectada</translation>
diff --git a/ash/strings/ash_strings_gu.xtb b/ash/strings/ash_strings_gu.xtb index 47c29ac..a40f4c9 100644 --- a/ash/strings/ash_strings_gu.xtb +++ b/ash/strings/ash_strings_gu.xtb
@@ -93,6 +93,7 @@ <translation id="1615402009686901181">ગોપનીય કન્ટેન્ટ દેખાય ત્યારે વ્યવસ્થાપક પૉલિસીને કારણે સ્ક્રીન કૅપ્ચરની સુવિધા બંધ કરવામાં આવે છે</translation> <translation id="1632985212731562677">સ્વિચ ઍક્સેસને સેટિંગ > ઍક્સેસિબિલિટીમાંથી બંધ કરી શકાય છે.</translation> <translation id="1654477262762802994">વૉઇસ ક્વેરી શરૂ કરો</translation> +<translation id="1655967159878494613"><ph name="QUERY_TEXT" />; <ph name="RESULT_TEXT" />; Assistantમાં પરિણામ જોવા માટે, Search અને Space કી દબાવો.</translation> <translation id="1667964833127753507">ન્યૂટ્રલ કલર મોડ વૉલપેપરમાંથી મેળવવામાં આવેલા રંગોનો ઉપયોગ કરતો નથી, તેને બદલે તટસ્થપણે ટોન કરેલી આછી કે ઘેરી રંગછટાના સેટનો ઉપયોગ કરે છે.</translation> <translation id="1677472565718498478"><ph name="TIME" /> બાકી</translation> <translation id="1677507110654891115"><ph name="FEATURE_NAME" /> કનેક્ટ કરેલું નથી.</translation> @@ -140,6 +141,7 @@ <translation id="2016340657076538683">એક સંદેશ લખો</translation> <translation id="2018630726571919839">મને કોઈ જોક સંભળાવો</translation> <translation id="2021864487439853900">અનલૉક કરવા માટે ક્લિક કરો</translation> +<translation id="2023558322300866873">તમે કોઈપણ સમયે પૅકેટ કૅપ્ચર બંધ કરી શકો છો</translation> <translation id="2047639699071423250">મુખ્ય વિચાર ઉમેરો</translation> <translation id="2049240716062114887">ડેસ્કનું નામ બદલીને <ph name="DESK_NAME" /> કરવામાં આવ્યું હતું</translation> <translation id="2050339315714019657">પોર્ટ્રેટ</translation> @@ -542,6 +544,7 @@ <translation id="5083553833479578423">આસિસ્ટંટની વધુ સુવિધાઓને અનલૉક કરો.</translation> <translation id="5136175204352732067">અલગ કીબોર્ડ કનેક્ટ કર્યું</translation> <translation id="5155897006997040331">વાંચનની ઝડપ</translation> +<translation id="5166918508782100047">ઝડપી જવાબોના સેટિંગ</translation> <translation id="5168181903108465623">Cast ઉપકરણો ઉપલબ્ધ</translation> <translation id="5170568018924773124">ફોલ્ડરમાં બતાવો</translation> <translation id="5176318573511391780">આંશિક સ્ક્રીન રેકોર્ડ કરો</translation> @@ -796,6 +799,7 @@ <translation id="7302889331339392448">લાઇવ કૅપ્શનની સુવિધા બંધ છે.</translation> <translation id="7303365578352795231">અન્ય ઉપકરણ પર જવાબ આપી રહ્યાં છે.</translation> <translation id="7305884605064981971">EDGE</translation> +<translation id="7343581795491695942"><ph name="QUERY_TEXT" />; <ph name="RESULT_TEXT" />; Google Searchમાં પરિણામ જોવા માટે, Search અને Space કી દબાવો.</translation> <translation id="7346909386216857016">બરાબર, સમજાઇ ગયું</translation> <translation id="7348093485538360975">ઑન-સ્ક્રીન કીબોર્ડ</translation> <translation id="735745346212279324">VPN ડિસ્કનેક્ટ કર્યું છે</translation>
diff --git a/ash/strings/ash_strings_iw.xtb b/ash/strings/ash_strings_iw.xtb index f5bc256..f0c68660 100644 --- a/ash/strings/ash_strings_iw.xtb +++ b/ash/strings/ash_strings_iw.xtb
@@ -93,7 +93,7 @@ <translation id="1615402009686901181">בהתאם למדיניות מנהל המערכת, צילום המסך מושבת כשמוצג תוכן סודי</translation> <translation id="1632985212731562677">ניתן להשבית את התכונה 'גישה באמצעות מתג' דרך 'הגדרות' > 'נגישות'.</translation> <translation id="1654477262762802994">הפעלה של שאילתה קולית</translation> -<translation id="1655967159878494613"><ph name="QUERY_TEXT" />; <ph name="RESULT_TEXT" />; כדי לראות את התוצאות ב-Assistant, לוחצים על 'חיפוש' ועל מקש הרווח.</translation> +<translation id="1655967159878494613"><ph name="QUERY_TEXT" />; <ph name="RESULT_TEXT" />; כדי לראות את התוצאות ב-Assistant לוחצים על 'חיפוש' ועל מקש הרווח.</translation> <translation id="1667964833127753507">במצב 'צבעים ניטרליים' לא נעשה שימוש בצבעים שנשלפו מהטפט, אלא בערכת גוונים ניטרליים, בהירים וכהים.</translation> <translation id="1677472565718498478">זמן נותר - <ph name="TIME" /></translation> <translation id="1677507110654891115">התכונה <ph name="FEATURE_NAME" /> לא מחוברת.</translation>
diff --git a/ash/strings/ash_strings_mr.xtb b/ash/strings/ash_strings_mr.xtb index 216e686..2f0bedf 100644 --- a/ash/strings/ash_strings_mr.xtb +++ b/ash/strings/ash_strings_mr.xtb
@@ -93,6 +93,7 @@ <translation id="1615402009686901181">गोपनीय आशय दृश्यमान असेल तेव्हा अॅडमिनिस्ट्रेटर धोरण स्क्रीन कॅप्चर बंद करते</translation> <translation id="1632985212731562677">सेटिंग्ज > अॅक्सेसिबिलिटी मध्ये स्विच अॅक्सेस बंद केले जाऊ शकते.</translation> <translation id="1654477262762802994">व्हॉइस क्वेरी सुरू करा</translation> +<translation id="1655967159878494613"><ph name="QUERY_TEXT" />; <ph name="RESULT_TEXT" />; Assistant मध्ये परिणाम पाहण्यासाठी सर्च आणि स्पेस दाबा.</translation> <translation id="1667964833127753507">न्यूट्रल रंगीत मोड हा तटस्थपणे टोन केलेल्या फिकट किंवा गडद रंगछटांचा सेट वापरतो आणि वॉलपेपरमधून निवडलेल्या रंगांचा वापर करत नाही.</translation> <translation id="1677472565718498478"><ph name="TIME" /> शिल्लक</translation> <translation id="1677507110654891115"><ph name="FEATURE_NAME" /> कनेक्ट केलेले नाही.</translation> @@ -140,6 +141,7 @@ <translation id="2016340657076538683">मेसेज टाइप करा</translation> <translation id="2018630726571919839">मला एक विनोद सांगा</translation> <translation id="2021864487439853900">अनलॉक करण्यासाठी क्लिक करा</translation> +<translation id="2023558322300866873">तुम्ही पॅकेट कॅप्चर कधीही थांबवू शकता</translation> <translation id="2047639699071423250">मुख्य कल्पना जोडा</translation> <translation id="2049240716062114887">डेस्कचे नाव <ph name="DESK_NAME" /> वर बदलले होते</translation> <translation id="2050339315714019657">पोर्ट्रेट</translation> @@ -542,6 +544,7 @@ <translation id="5083553833479578423">असिस्टंटची आणखी वैशिष्ट्ये अनलॉक करा.</translation> <translation id="5136175204352732067">वेगळा कीबोर्ड कनेक्ट केला आहे</translation> <translation id="5155897006997040331">वाचनाचा वेग</translation> +<translation id="5166918508782100047">क्विक आन्सर्स सेटिंग्ज</translation> <translation id="5168181903108465623">कास्ट डिव्हाइसेस उपलब्ध</translation> <translation id="5170568018924773124">फोल्डरमध्ये दर्शवा</translation> <translation id="5176318573511391780">स्क्रीन अंशतः रेकॉर्ड करा</translation> @@ -796,6 +799,7 @@ <translation id="7302889331339392448">लाइव्ह कॅप्शन बंद आहे.</translation> <translation id="7303365578352795231">दुसऱ्या डिव्हाइसवर उत्तर देत आहे.</translation> <translation id="7305884605064981971">EDGE</translation> +<translation id="7343581795491695942"><ph name="QUERY_TEXT" />; <ph name="RESULT_TEXT" />; Google Search मध्ये परिणाम पाहण्यासाठी सर्च आणि स्पेस दाबा.</translation> <translation id="7346909386216857016">ठीक आहे, समजले</translation> <translation id="7348093485538360975">ऑन-स्क्रीन कीबोर्ड</translation> <translation id="735745346212279324">VPN डिस्कनेक्ट केले</translation>
diff --git a/ash/strings/ash_strings_pa.xtb b/ash/strings/ash_strings_pa.xtb index 3f56f280..8d3fd70 100644 --- a/ash/strings/ash_strings_pa.xtb +++ b/ash/strings/ash_strings_pa.xtb
@@ -93,6 +93,7 @@ <translation id="1615402009686901181">ਗੁਪਤ ਸਮੱਗਰੀ ਦੇ ਦਿਸਣਯੋਗ ਹੋਣ 'ਤੇ ਪ੍ਰਸ਼ਾਸਕ ਨੀਤੀ ਸਕ੍ਰੀਨ ਕੈਪਚਰ ਨੂੰ ਬੰਦ ਕਰ ਦਿੰਦੀ ਹੈ</translation> <translation id="1632985212731562677">ਸਵਿੱਚ ਪਹੁੰਚ ਨੂੰ ਸੈਟਿੰਗਾਂ > ਪਹੁੰਚਯੋਗਤਾ ਵਿੱਚ ਜਾ ਕੇ ਬੰਦ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।</translation> <translation id="1654477262762802994">ਅਵਾਜ਼ੀ ਪੁੱਛਗਿੱਛ ਸ਼ੁਰੂ ਕਰੋ</translation> +<translation id="1655967159878494613"><ph name="QUERY_TEXT" />; <ph name="RESULT_TEXT" />; Assistant ਵਿੱਚ ਨਤੀਜਾ ਦੇਖਣ ਲਈ Search ਦੇ ਨਾਲ Space ਨੂੰ ਦਬਾਓ।</translation> <translation id="1667964833127753507">ਨਿਰਪੱਖ ਰੰਗ ਮੋਡ ਨਿਰਪੱਖ ਰੰਗ ਵਾਲੇ ਹਲਕੇ ਜਾਂ ਗੂੜ੍ਹੇ ਰੰਗ ਦੀਆਂ ਭਾਹਾਂ ਵਾਲੇ ਸੈੱਟ ਦੀ ਜਗ੍ਹਾ ਵਾਲਪੇਪਰ ਤੋਂ ਐਕਸਟ੍ਰੈਕਟ ਕੀਤੇ ਰੰਗਾਂ ਨੂੰ ਨਹੀਂ ਵਰਤਦਾ।</translation> <translation id="1677472565718498478"><ph name="TIME" /> ਬਾਕੀ</translation> <translation id="1677507110654891115"><ph name="FEATURE_NAME" /> ਕਨੈਕਟ ਨਹੀਂ ਹੈ।</translation> @@ -140,6 +141,7 @@ <translation id="2016340657076538683">ਕੋਈ ਸੁਨੇਹਾ ਟਾਈਪ ਕਰੋ</translation> <translation id="2018630726571919839">ਮੈਨੂੰ ਕੋਈ ਚੁਟਕਲਾ ਸੁਣਾਓ</translation> <translation id="2021864487439853900">ਅਣਲਾਕ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ</translation> +<translation id="2023558322300866873">ਤੁਸੀਂ ਕਿਸੇ ਵੇਲੇ ਵੀ ਪੈਕੇਟ ਕੈਪਚਰ ਨੂੰ ਰੋਕ ਸਕਦੇ ਹੋ</translation> <translation id="2047639699071423250">ਮੁੱਖ ਜੁਗਤ ਸ਼ਾਮਲ ਕਰੋ</translation> <translation id="2049240716062114887">ਡੈਸਕ ਦਾ ਨਾਮ ਬਦਲ ਕੇ <ph name="DESK_NAME" /> ਕਰ ਦਿੱਤਾ ਗਿਆ</translation> <translation id="2050339315714019657">ਪੋਰਟਰੇਟ</translation> @@ -542,6 +544,7 @@ <translation id="5083553833479578423">Assistant ਦੀਆਂ ਹੋਰ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਅਣਲਾਕ ਕਰੋ।</translation> <translation id="5136175204352732067">ਵੱਖਰਾ ਕੀ-ਬੋਰਡ ਕਨੈਕਟ ਕੀਤਾ ਗਿਆ</translation> <translation id="5155897006997040331">ਪੜ੍ਹਨ ਸੰਬੰਧੀ ਗਤੀ</translation> +<translation id="5166918508782100047">ਤਤਕਾਲ ਜਵਾਬਾਂ ਦੀਆਂ ਸੈਟਿੰਗਾਂ</translation> <translation id="5168181903108465623">ਕਾਸਟ ਡਿਵਾਈਸਾਂ ਉਪਲਬਧ</translation> <translation id="5170568018924773124">ਫੋਲਡਰ ਵਿੱਚ ਦਿਖਾਓ</translation> <translation id="5176318573511391780">ਅੰਸ਼ਕ ਸਕ੍ਰੀਨ ਨੂੰ ਰਿਕਾਰਡ ਕਰੋ</translation> @@ -796,6 +799,7 @@ <translation id="7302889331339392448">ਲਾਈਵ ਸੁਰਖੀਆਂ ਬੰਦ ਹਨ।</translation> <translation id="7303365578352795231">ਕਿਸੇ ਹੋਰ ਡੀਵਾਈਸ 'ਤੇ ਜਵਾਬ ਦਿੱਤਾ ਜਾ ਰਿਹਾ ਹੈ।</translation> <translation id="7305884605064981971">EDGE</translation> +<translation id="7343581795491695942"><ph name="QUERY_TEXT" />; <ph name="RESULT_TEXT" />; Google Search ਵਿੱਚ ਨਤੀਜਾ ਦੇਖਣ ਲਈ Search ਦੇ ਨਾਲ Space ਨੂੰ ਦਬਾਓ।</translation> <translation id="7346909386216857016">ਠੀਕ, ਸਮਝ ਲਿਆ</translation> <translation id="7348093485538360975">ਔਨ-ਸਕ੍ਰੀਨ ਕੀ-ਬੋਰਡ</translation> <translation id="735745346212279324">VPN ਡਿਸਕਨੈਕਟ ਹੋ ਗਿਆ</translation>
diff --git a/ash/strings/ash_strings_sq.xtb b/ash/strings/ash_strings_sq.xtb index 9007051..c6ef791 100644 --- a/ash/strings/ash_strings_sq.xtb +++ b/ash/strings/ash_strings_sq.xtb
@@ -93,6 +93,7 @@ <translation id="1615402009686901181">Politika e administratorit çaktivizon regjistrimin e ekranit kur përmbajtja konfidenciale është e dukshme</translation> <translation id="1632985212731562677">"Qasja me çelës" mund të çaktivizohet te Cilësimet > Qasshmëria.</translation> <translation id="1654477262762802994">Nis një pyetje me zë</translation> +<translation id="1655967159878494613"><ph name="QUERY_TEXT" />; <ph name="RESULT_TEXT" />; Shtyp "Kërko" plus "Hapësirë" për ta shikuar rezultatin tek "Asistenti".</translation> <translation id="1667964833127753507">Modaliteti me ngjyra neutrale nuk përdor ngjyrat e nxjerra nga imazhi i sfondit, duke i zëvendësuar me një grupim me nuanca me tonalitet të çelur ose të errët.</translation> <translation id="1677472565718498478">Koha e mbetur <ph name="TIME" /></translation> <translation id="1677507110654891115"><ph name="FEATURE_NAME" /> nuk është lidhur.</translation> @@ -140,6 +141,7 @@ <translation id="2016340657076538683">Shkruaj një mesazh</translation> <translation id="2018630726571919839">Më trego një barsoletë</translation> <translation id="2021864487439853900">Kliko për ta shkyçur</translation> +<translation id="2023558322300866873">Mund ta ndalosh regjistrimin e paketave në çdo kohë.</translation> <translation id="2047639699071423250">Shto ide kyçe</translation> <translation id="2049240716062114887">Emri i tryezës u ndryshua në "<ph name="DESK_NAME" />"</translation> <translation id="2050339315714019657">Portret (vertikal</translation> @@ -542,6 +544,7 @@ <translation id="5083553833479578423">Shkyç më shumë funksione të "Asistentit".</translation> <translation id="5136175204352732067">Është lidhur një tastierë tjetër</translation> <translation id="5155897006997040331">Shpejtësia e leximit</translation> +<translation id="5166918508782100047">Cilësimet e "Përgjigjeve të shpejta"</translation> <translation id="5168181903108465623">Pajisjet e transmetimit janë të disponueshme</translation> <translation id="5170568018924773124">Shfaq në dosje</translation> <translation id="5176318573511391780">Regjistro ekranin e pjesshëm</translation> @@ -796,6 +799,7 @@ <translation id="7302889331339392448">"Titrat në çast" janë joaktivë.</translation> <translation id="7303365578352795231">Po përgjigjet në një pajisje tjetër</translation> <translation id="7305884605064981971">EDGE</translation> +<translation id="7343581795491695942"><ph name="QUERY_TEXT" />; <ph name="RESULT_TEXT" />; Shtyp "Kërko" plus "Hapësirë" për ta shikuar rezultatin në "Kërko në Google".</translation> <translation id="7346909386216857016">Në rregull, kuptova</translation> <translation id="7348093485538360975">Tastiera në ekran</translation> <translation id="735745346212279324">Rrjeti VPN u shkëput</translation>
diff --git a/ash/strings/ash_strings_te.xtb b/ash/strings/ash_strings_te.xtb index f8a128aa..1648f921 100644 --- a/ash/strings/ash_strings_te.xtb +++ b/ash/strings/ash_strings_te.xtb
@@ -93,6 +93,7 @@ <translation id="1615402009686901181">గోప్యమైన కంటెంట్ కనిపించినప్పుడు, అడ్మినిస్ట్రేటర్ పాలసీ స్క్రీన్ క్యాప్చర్ను డిజేబుల్ చేస్తుంది</translation> <translation id="1632985212731562677">సెట్టింగ్లు > యాక్సెసిబిలిటీలో స్విచ్ యాక్సెస్ను డిజేబుల్ చేయవచ్చు.</translation> <translation id="1654477262762802994">వాయిస్ ప్రశ్నను ప్రారంభించు</translation> +<translation id="1655967159878494613"><ph name="QUERY_TEXT" />; <ph name="RESULT_TEXT" />; Assistantలో ఫలితాన్ని చూడటానికి 'Search + Space'ను నొక్కండి.</translation> <translation id="1667964833127753507">'న్యూట్రల్ రంగు మోడ్'లో వాల్పేపర్ నుండి సంగ్రహించిన రంగులు ఉపయోగించబడవు, వాటి స్థానంలో తటస్థంగా కనిపించే పలుచని లేదా ముదురు రంగులు ఉపయోగించబడతాయి.</translation> <translation id="1677472565718498478"><ph name="TIME" /> మిగిలి ఉంది</translation> <translation id="1677507110654891115"><ph name="FEATURE_NAME" /> కనెక్ట్ కాలేదు.</translation> @@ -140,6 +141,7 @@ <translation id="2016340657076538683">మెసేజ్ను టైప్ చేయండి</translation> <translation id="2018630726571919839">ఒక జోక్ చెప్పు</translation> <translation id="2021864487439853900">అన్లాక్ కోసం క్లిక్ చేయండి</translation> +<translation id="2023558322300866873">మీరు ఎప్పుడైనా ప్యాకెట్ క్యాప్చర్ ఆపరేషన్ను ఆపివేయవచ్చు</translation> <translation id="2047639699071423250">ముఖ్య ఐడియాను జోడించు</translation> <translation id="2049240716062114887">డెస్క్ పేరు <ph name="DESK_NAME" />గా మార్చబడింది</translation> <translation id="2050339315714019657">పోర్ట్రెయిట్</translation> @@ -543,6 +545,7 @@ <translation id="5083553833479578423">మరిన్ని Assistant ఫీచర్లను అన్లాక్ చేయండి.</translation> <translation id="5136175204352732067">వేరే కీబోర్డ్ కనెక్ట్ చేయబడింది</translation> <translation id="5155897006997040331">రీడింగ్ వేగం</translation> +<translation id="5166918508782100047">క్విక్ ఆన్సర్స్కు సంబంధించిన సెట్టింగ్లు</translation> <translation id="5168181903108465623">Cast పరికరాలు అందుబాటులో ఉన్నాయి</translation> <translation id="5170568018924773124">ఫోల్డర్లో చూపించు</translation> <translation id="5176318573511391780">పాక్షిక స్క్రీన్ను రికార్డ్ చేయండి</translation> @@ -797,6 +800,7 @@ <translation id="7302889331339392448">లైవ్ క్యాప్షన్ ఆఫ్ చేయబడింది.</translation> <translation id="7303365578352795231">మరొక పరికరంలో సమాధానం ఇవ్వబడుతోంది.</translation> <translation id="7305884605064981971">EDGE</translation> +<translation id="7343581795491695942"><ph name="QUERY_TEXT" />; <ph name="RESULT_TEXT" />; Google Searchలో ఫలితాన్ని చూడటానికి 'Search + Space'ను నొక్కండి.</translation> <translation id="7346909386216857016">సరే, అర్థమైంది</translation> <translation id="7348093485538360975">ఆన్-స్క్రీన్ కీబోర్డ్</translation> <translation id="735745346212279324">VPN డిస్కనెక్ట్ చేయబడింది</translation>
diff --git a/ash/strings/ash_strings_ur.xtb b/ash/strings/ash_strings_ur.xtb index 6d9f7499..80e7589 100644 --- a/ash/strings/ash_strings_ur.xtb +++ b/ash/strings/ash_strings_ur.xtb
@@ -93,6 +93,7 @@ <translation id="1615402009686901181">منتظم کی پالیسی کے تحت، رازدارانہ مواد کے مرئی ہونے پر اسکرین کیپچر کرنے کی سہولت غیر فعال ہو جاتی ہے</translation> <translation id="1632985212731562677">سوئچ رسائی کو ترتیبات > ایکسیسبیلٹی میں غیر فعال کیا جا سکتا ہے۔</translation> <translation id="1654477262762802994">صوتی استفسار شروع کریں</translation> +<translation id="1655967159878494613"><ph name="QUERY_TEXT" />؛ <ph name="RESULT_TEXT" />؛ اسسٹنٹ میں نتیجہ دیکھنے کیلئے Search اور Space دبائیں۔</translation> <translation id="1667964833127753507">نیوٹرل رنگ موڈ وال پیپر ایکسٹریکٹیڈ رنگوں کا استعمال نہیں کرتا ہے، ان کی جگہ نیوٹرل طور پر ٹون کی گئی لائٹ یا گہری ہیوز والے سیٹ کا استعمال کیا جا رہا ہے۔</translation> <translation id="1677472565718498478"><ph name="TIME" /> باقی</translation> <translation id="1677507110654891115"><ph name="FEATURE_NAME" /> منسلک نہیں ہے۔</translation> @@ -140,6 +141,7 @@ <translation id="2016340657076538683">پیغام ٹائپ کریں</translation> <translation id="2018630726571919839">مجھے کوئی لطیفہ سنائيں</translation> <translation id="2021864487439853900">غیر مقفل کرنے کے لیے کلک کریں</translation> +<translation id="2023558322300866873">آپ کسی بھی وقت پیکٹ کیپچر کو روک سکتے ہیں</translation> <translation id="2047639699071423250">اہم تصور شامل کریں</translation> <translation id="2049240716062114887">ڈیسک کا نام تبدیل کر کے <ph name="DESK_NAME" /> کر دیا گیا۔</translation> <translation id="2050339315714019657">پورٹریٹ</translation> @@ -542,6 +544,7 @@ <translation id="5083553833479578423">اسسٹنٹ کی مزید خصوصیات کو غیر مقفل کریں۔</translation> <translation id="5136175204352732067">مختلف کی بورڈ منسلک کر دیا گیا</translation> <translation id="5155897006997040331">پڑھنے کی رفتار</translation> +<translation id="5166918508782100047">فوری جوابات کی ترتیبات</translation> <translation id="5168181903108465623">کاسٹ آلات دستیاب ہیں</translation> <translation id="5170568018924773124">فولڈر میں دکھائیں</translation> <translation id="5176318573511391780">جزوی اسکرین کو ریکارڈ کریں</translation> @@ -796,6 +799,7 @@ <translation id="7302889331339392448">لائیو کیپشن آف ہے۔</translation> <translation id="7303365578352795231">ایک دوسرے آلہ پر جواب دیا جا رہا ہے۔</translation> <translation id="7305884605064981971">EDGE</translation> +<translation id="7343581795491695942"><ph name="QUERY_TEXT" />؛ <ph name="RESULT_TEXT" />؛ Google تلاش میں نتیجہ دیکھنے کیلئے Search اور Space دبائیں۔</translation> <translation id="7346909386216857016">ٹھیک ہے، سمجھ آ گئی</translation> <translation id="7348093485538360975">آن اسکرین کی بورڈ</translation> <translation id="735745346212279324">VPN منقطع ہو گیا</translation>
diff --git a/ash/system/bluetooth/bluetooth_feature_pod_controller_legacy.cc b/ash/system/bluetooth/bluetooth_feature_pod_controller_legacy.cc index 01e41df3..88e114b 100644 --- a/ash/system/bluetooth/bluetooth_feature_pod_controller_legacy.cc +++ b/ash/system/bluetooth/bluetooth_feature_pod_controller_legacy.cc
@@ -87,7 +87,7 @@ button_->SetToggled(is_enabled); if (!is_enabled) { - button_->SetVectorIcon(kUnifiedMenuBluetoothIcon); + button_->SetVectorIcon(kUnifiedMenuBluetoothLegacyIcon); button_->SetLabel(l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_BLUETOOTH)); button_->SetSubLabel(l10n_util::GetStringUTF16( IDS_ASH_STATUS_TRAY_BLUETOOTH_DISABLED_SHORT)); @@ -107,7 +107,7 @@ if (connected_devices.size() > 1) { const size_t device_count = connected_devices.size(); - button_->SetVectorIcon(kUnifiedMenuBluetoothConnectedIcon); + button_->SetVectorIcon(kUnifiedMenuBluetoothConnectedLegacyIcon); button_->SetLabel(l10n_util::GetStringUTF16( IDS_ASH_STATUS_TRAY_BLUETOOTH_MULTIPLE_DEVICES_CONNECTED_LABEL)); button_->SetSubLabel(base::FormatNumber(device_count)); @@ -119,7 +119,7 @@ connected_devices.back(); const std::u16string device_name = device::GetBluetoothDeviceNameForDisplay(device); - button_->SetVectorIcon(kUnifiedMenuBluetoothConnectedIcon); + button_->SetVectorIcon(kUnifiedMenuBluetoothConnectedLegacyIcon); button_->SetLabel(device_name); if (device->battery_info) { @@ -133,7 +133,7 @@ SetTooltipState(l10n_util::GetStringFUTF16( IDS_ASH_STATUS_TRAY_BLUETOOTH_DEVICE_CONNECTED_TOOLTIP, device_name)); } else { - button_->SetVectorIcon(kUnifiedMenuBluetoothIcon); + button_->SetVectorIcon(kUnifiedMenuBluetoothLegacyIcon); button_->SetLabel(l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_BLUETOOTH)); button_->SetSubLabel( l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_BLUETOOTH_ENABLED_SHORT));
diff --git a/ash/system/holding_space/holding_space_animation_registry.cc b/ash/system/holding_space/holding_space_animation_registry.cc index ddc502a4..a1c7664 100644 --- a/ash/system/holding_space/holding_space_animation_registry.cc +++ b/ash/system/holding_space/holding_space_animation_registry.cc
@@ -256,9 +256,9 @@ // Iterate over each holding space item in the attached `model_`. for (const auto& item : model_->items()) { - // If an `item` is not initialized, it should neither contribute to - // `cumulative_progress_` nor should it have an animation. - if (!item->IsInitialized()) { + // If an `item` is not initialized or is not visibly in-progress, it + // shouldn't contribute to `cumulative_progress_` nor have an animation. + if (!item->IsInitialized() || item->progress().IsHidden()) { EraseAnimationForKey(item.get()); continue; }
diff --git a/ash/system/holding_space/holding_space_item_chip_view.cc b/ash/system/holding_space/holding_space_item_chip_view.cc index 66f1364b..5ef2c13b 100644 --- a/ash/system/holding_space/holding_space_item_chip_view.cc +++ b/ash/system/holding_space/holding_space_item_chip_view.cc
@@ -501,12 +501,15 @@ if (image_->bounds().IsEmpty()) return; + const bool is_item_visibly_in_progress = + !item()->progress().IsHidden() && !item()->progress().IsComplete(); + const HoldingSpaceProgressRingAnimation* progress_ring_animation = HoldingSpaceAnimationRegistry::GetInstance() ->GetProgressRingAnimationForKey(item()); gfx::Transform transform; - if (!item()->progress().IsComplete() || progress_ring_animation) { + if (is_item_visibly_in_progress || progress_ring_animation) { transform = gfx::GetScaleTransform(image_->bounds().CenterPoint(), kInProgressImageScaleFactor); }
diff --git a/ash/system/holding_space/holding_space_progress_ring.cc b/ash/system/holding_space/holding_space_progress_ring.cc index 7be2661..5b6b47b 100644 --- a/ash/system/holding_space/holding_space_progress_ring.cc +++ b/ash/system/holding_space/holding_space_progress_ring.cc
@@ -124,10 +124,12 @@ // Iterate over all holding space items. for (const auto& item : model->items()) { // Ignore any holding space items that are not yet initialized, since - // they are not visible to the user, or items that are not in-progress, - // since they do not contribute to `cumulative_progress`. - if (item->IsInitialized() && !item->progress().IsComplete()) + // they are not visible to the user, or items that are not visibly + // in-progress, since they do not contribute to `cumulative_progress`. + if (item->IsInitialized() && !item->progress().IsHidden() && + !item->progress().IsComplete()) { cumulative_progress += item->progress(); + } } return cumulative_progress.GetValue(); @@ -205,8 +207,10 @@ // HoldingSpaceProgressRing: absl::optional<float> CalculateProgress() const override { // If `item_` is `nullptr` it is being destroyed. Return `1.f` in that case - // so that no progress ring will be painted. - return item_ ? item_->progress().GetValue() : 1.f; + // so that no progress ring will be painted. Similarly, return `1.f` to + // prevent painting a progress ring when progress is hidden. + return item_ && !item_->progress().IsHidden() ? item_->progress().GetValue() + : 1.f; } // HoldingSpaceModelObserver:
diff --git a/ash/system/time/calendar_month_view.cc b/ash/system/time/calendar_month_view.cc new file mode 100644 index 0000000..111d01b --- /dev/null +++ b/ash/system/time/calendar_month_view.cc
@@ -0,0 +1,191 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ash/system/time/calendar_month_view.h" + +#include "ash/style/ash_color_provider.h" +#include "ash/system/time/calendar_utils.h" +#include "base/bind.h" +#include "base/strings/string_number_conversions.h" +#include "base/time/time.h" +#include "ui/gfx/canvas.h" +#include "ui/views/controls/button/button.h" +#include "ui/views/controls/button/label_button.h" +#include "ui/views/layout/grid_layout.h" + +namespace ash { + +namespace { + +// Number of days in one week. +constexpr int kDateInOneWeek = 7; + +// The thickness of the today's circle line. +constexpr int kLineThickness = 2; + +// The radius used to draw rounded today's circle +constexpr float kTodayRoundedRadius = 20.f; + +// The padding in each date cell view. +constexpr int kDateVerticalPadding = 13; +constexpr int kDateHorizontalPadding = 2; +} // namespace + +using views::GridLayout; + +// Renders a Calendar date cell. Pass in `true` as `is_grayed_out_date` if +// the date is not in the current month view's month. +// TODO(https://crbug.com/1236276): enable focusing, add has_event dot, +// on-select effect. +class CalendarDateCellView : public views::LabelButton { + public: + CalendarDateCellView(base::Time::Exploded& date, bool is_grayed_out_date) + : views::LabelButton( + views::Button::PressedCallback(base::BindRepeating([]() { + // TODO(https://crbug.com/1238927): Add a menthod in the + // controller to open the expandable view and call it here. + })), + base::UTF8ToUTF16(base::NumberToString(date.day_of_month))), + date_(date), + grayed_out_(is_grayed_out_date) { + SetHorizontalAlignment(gfx::ALIGN_CENTER); + SetBorder( + views::CreateEmptyBorder(kDateVerticalPadding, kDateHorizontalPadding, + kDateVerticalPadding, kDateHorizontalPadding)); + label()->SetElideBehavior(gfx::NO_ELIDE); + label()->SetSubpixelRenderingEnabled(false); + label()->SetFontList(views::Label::GetDefaultFontList().Derive( + 1, gfx::Font::NORMAL, gfx::Font::Weight::MEDIUM)); + } + + ~CalendarDateCellView() override = default; + + void OnThemeChanged() override { + views::View::OnThemeChanged(); + const AshColorProvider* color_provider = AshColorProvider::Get(); + const SkColor primary_text_color = color_provider->GetContentLayerColor( + AshColorProvider::ContentLayerType::kTextColorPrimary); + const SkColor secondary_text_color = color_provider->GetContentLayerColor( + AshColorProvider::ContentLayerType::kTextColorSecondary); + + // Gray-out the date that is not in the current month. + SetEnabledTextColors(grayed_out_ ? primary_text_color + : secondary_text_color); + } + + // Draws the background for 'today'. + void OnPaintBackground(gfx::Canvas* canvas) override { + if (!IsToday(date_)) + return; + + const AshColorProvider* color_provider = AshColorProvider::Get(); + const SkColor bg_color = color_provider->GetControlsLayerColor( + AshColorProvider::ControlsLayerType::kControlBackgroundColorInactive); + const SkColor border_color = color_provider->GetControlsLayerColor( + AshColorProvider::ControlsLayerType::kFocusRingColor); + + cc::PaintFlags highlight_background; + const gfx::Rect content = GetContentsBounds(); + gfx::Point center((content.width() + kDateHorizontalPadding * 2) / 2, + (content.height() + kDateVerticalPadding * 2) / 2); + + highlight_background.setColor(bg_color); + highlight_background.setStyle(cc::PaintFlags::kFill_Style); + highlight_background.setAntiAlias(true); + canvas->DrawCircle(center, kTodayRoundedRadius, highlight_background); + + cc::PaintFlags highlight_border; + highlight_border.setColor(border_color); + highlight_border.setAntiAlias(true); + highlight_border.setStyle(cc::PaintFlags::kStroke_Style); + highlight_border.setStrokeWidth(kLineThickness); + canvas->DrawCircle(center, kTodayRoundedRadius, highlight_border); + } + + private: + // The date used to render this cell view. + base::Time::Exploded date_; + + const bool grayed_out_; +}; + +CalendarMonthView::CalendarMonthView(const base::Time first_day_of_month) { + GridLayout* layout = SetLayoutManager(std::make_unique<GridLayout>()); + views::ColumnSet* column_set = layout->AddColumnSet(0); + + // Set up the `GridLayout` to have 7 columns, which is one week row (7 days). + for (int i = 0; i < kDateInOneWeek; i++) { + column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1, + GridLayout::ColumnSize::kFixed, 0, 0); + column_set->AddPaddingColumn(0, 2); + } + + base::Time::Exploded first_day_of_month_exploded = + GetExploded(first_day_of_month); + + // Calculates the start date. + const base::Time start_of_the_first_row = + first_day_of_month - + base::TimeDelta::FromDays(first_day_of_month_exploded.day_of_week); + base::Time::Exploded start_of_row_exploded = + GetExploded(start_of_the_first_row); + + base::Time current_date = start_of_the_first_row; + base::Time::Exploded current_date_exploded = GetExploded(current_date); + + int column_set_id = 0; + // Gray-out dates in the first row, which are from the previous month, and the + // non-gray-out dates of the current month. + while (current_date_exploded.month == start_of_row_exploded.month || + current_date_exploded.month == first_day_of_month_exploded.month) { + // Next column set id is generated. + column_set_id = AddDateCellToLayout( + current_date_exploded, column_set_id, + /*is_in_current_month=*/current_date_exploded.month == + first_day_of_month_exploded.month); + current_date += base::TimeDelta::FromDays(1); + current_date.LocalExplode(¤t_date_exploded); + } + + // TODO(https://crbug.com/1236276): Handle some cases when the first day is + // not Sunday. + if (current_date_exploded.day_of_week == 0) + return; + + // Adds the first several days from the next month if the last day is not the + // end day of this week. + const base::Time end_of_the_last_row = + current_date + + base::TimeDelta::FromDays(6 - current_date_exploded.day_of_week); + base::Time::Exploded end_of_row_exploded = GetExploded(end_of_the_last_row); + + // Gray-out dates in the last row, which are from the next month. + while (current_date_exploded.day_of_month <= + end_of_row_exploded.day_of_month) { + // Next column set id is generated. + column_set_id = AddDateCellToLayout(current_date_exploded, column_set_id, + /*is_in_current_month=*/false); + current_date += base::TimeDelta::FromDays(1); + current_date.LocalExplode(¤t_date_exploded); + } +} + +CalendarMonthView::~CalendarMonthView() = default; + +int CalendarMonthView::AddDateCellToLayout( + base::Time::Exploded current_date_exploded, + int column_set_id, + bool is_in_current_month) { + GridLayout* layout_manager = static_cast<GridLayout*>(GetLayoutManager()); + if (column_set_id == 0) + layout_manager->StartRow(0, 0); + + layout_manager->AddView(std::make_unique<CalendarDateCellView>( + current_date_exploded, + /*is_grayed_out_date=*/is_in_current_month)); + + return (column_set_id + 1) % kDateInOneWeek; +} + +} // namespace ash
diff --git a/ash/system/time/calendar_month_view.h b/ash/system/time/calendar_month_view.h new file mode 100644 index 0000000..3b5eaac --- /dev/null +++ b/ash/system/time/calendar_month_view.h
@@ -0,0 +1,31 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef ASH_SYSTEM_TIME_CALENDAR_MONTH_VIEW_H_ +#define ASH_SYSTEM_TIME_CALENDAR_MONTH_VIEW_H_ + +#include "ash/ash_export.h" +#include "ui/views/view.h" + +namespace ash { + +// Container for `CalendarDateCellView` for a single month. +class ASH_EXPORT CalendarMonthView : public views::View { + public: + explicit CalendarMonthView(base::Time first_day_of_month); + CalendarMonthView(const CalendarMonthView& other) = delete; + CalendarMonthView& operator=(const CalendarMonthView& other) = delete; + ~CalendarMonthView() override; + + private: + // Adds the `current_date`'s `CalendarDateCellView` to the grid layout and + // returns the next column set id. + int AddDateCellToLayout(base::Time::Exploded current_date_exploded, + int column_set_id, + bool is_in_current_month); +}; + +} // namespace ash + +#endif // ASH_SYSTEM_TIME_CALENDAR_MONTH_VIEW_H_
diff --git a/ash/system/time/calendar_month_view_unittest.cc b/ash/system/time/calendar_month_view_unittest.cc new file mode 100644 index 0000000..9743e15 --- /dev/null +++ b/ash/system/time/calendar_month_view_unittest.cc
@@ -0,0 +1,74 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ash/system/time/calendar_month_view.h" + +#include <memory> + +#include "ash/test/ash_test_base.h" +#include "base/time/time.h" +#include "ui/views/controls/button/label_button.h" +#include "ui/views/layout/grid_layout.h" + +namespace ash { + +using CalendarMonthViewTest = AshTestBase; + +// Test the basics of the `CalendarMonthView`. +TEST_F(CalendarMonthViewTest, Basics) { + // Create a monthview based on Aug,1st 2021. + // 1 , 2 , 3 , 4 , 5 , 6 , 7 + // 8 , 9 , 10, 11, 12, 13, 14 + // 15, 16, 17, 18, 19, 20, 21 + // 22, 23, 24, 25, 26, 27, 28 + // 29, 30, 31, 1 , 2 , 3 , 4 + base::Time date; + ASSERT_TRUE(base::Time::FromString("1 Aug 2021 10:00 GMT", &date)); + + std::unique_ptr<CalendarMonthView> month_view_ = + std::make_unique<CalendarMonthView>(date); + + // Randomly checks some dates in this month view. + EXPECT_EQ( + static_cast<views::LabelButton*>(month_view_->children()[0])->GetText(), + u"1"); + EXPECT_EQ( + static_cast<views::LabelButton*>(month_view_->children()[30])->GetText(), + u"31"); + EXPECT_EQ( + static_cast<views::LabelButton*>(month_view_->children()[34])->GetText(), + u"4"); + + views::GridLayout* layout = + static_cast<views::GridLayout*>(month_view_->GetLayoutManager()); + views::ColumnSet* column_set0 = layout->GetColumnSet(0); + // 7 date columns and 7 padding columns. + EXPECT_EQ(column_set0->num_columns(), 14); + + // Create a monthview based on Jun,1st 2021, which has the previous month's + // dates in the first row. + // 30, 31, 1 , 2 , 3 , 4 , 5 + // 6 , 7 , 8 , 9 , 10, 11, 12 + // 13, 14, 15, 16, 17, 18, 19 + // 20, 21, 22, 23, 24, 25, 26 + // 27, 28, 29, 30, 1 , 2 , 3 + base::Time jun_date; + ASSERT_TRUE(base::Time::FromString("1 Jun 2021 10:00 GMT", &jun_date)); + + std::unique_ptr<CalendarMonthView> jun_month_view_ = + std::make_unique<CalendarMonthView>(jun_date); + + // Randomly checks some dates in this month view. + EXPECT_EQ(static_cast<views::LabelButton*>(jun_month_view_->children()[0]) + ->GetText(), + u"30"); + EXPECT_EQ(static_cast<views::LabelButton*>(jun_month_view_->children()[30]) + ->GetText(), + u"29"); + EXPECT_EQ(static_cast<views::LabelButton*>(jun_month_view_->children()[34]) + ->GetText(), + u"3"); +} + +} // namespace ash \ No newline at end of file
diff --git a/ash/system/time/calendar_utils.cc b/ash/system/time/calendar_utils.cc new file mode 100644 index 0000000..c077b81 --- /dev/null +++ b/ash/system/time/calendar_utils.cc
@@ -0,0 +1,22 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ash/system/time/calendar_utils.h" + +namespace ash { + +bool IsToday(const base::Time::Exploded& selected_date) { + base::Time::Exploded today_exploded = GetExploded(base::Time::Now()); + return selected_date.year == today_exploded.year && + selected_date.month == today_exploded.month && + selected_date.day_of_month == today_exploded.day_of_month; +} + +base::Time::Exploded GetExploded(const base::Time& date) { + base::Time::Exploded exploded; + date.LocalExplode(&exploded); + return exploded; +} + +} // namespace ash
diff --git a/ash/system/time/calendar_utils.h b/ash/system/time/calendar_utils.h new file mode 100644 index 0000000..51a44da --- /dev/null +++ b/ash/system/time/calendar_utils.h
@@ -0,0 +1,20 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef ASH_SYSTEM_TIME_CALENDAR_UTILS_H_ +#define ASH_SYSTEM_TIME_CALENDAR_UTILS_H_ + +#include "base/time/time.h" + +namespace ash { + +// Checks if the `selected_date` is local time today. +bool IsToday(const base::Time::Exploded& selected_date); + +// Gets the given `date`'s `Exploded` instance. +base::Time::Exploded GetExploded(const base::Time& date); + +} // namespace ash + +#endif // ASH_SYSTEM_TIME_CALENDAR_UTILS_H_ \ No newline at end of file
diff --git a/ash/webui/common/resources/navigation_view_panel.html b/ash/webui/common/resources/navigation_view_panel.html index a98fe4e..5628a70 100644 --- a/ash/webui/common/resources/navigation_view_panel.html +++ b/ash/webui/common/resources/navigation_view_panel.html
@@ -23,6 +23,7 @@ grid-area: head; position: sticky; top: 0; + z-index: 3; } #sideNav {
diff --git a/ash/webui/common/resources/page_toolbar.html b/ash/webui/common/resources/page_toolbar.html index 6b8bfea34..37e7fd5 100644 --- a/ash/webui/common/resources/page_toolbar.html +++ b/ash/webui/common/resources/page_toolbar.html
@@ -5,7 +5,7 @@ <style cr-shared-style> :host { align-items: center; - background-color: var(--cros-toolbar-bg-color); + background: var(--cros-bg-color); display: flex; height: 64px; padding-top: 8px;
diff --git a/ash/webui/diagnostics_ui/backend/routine_log.cc b/ash/webui/diagnostics_ui/backend/routine_log.cc index f2c83f6..dbc0903 100644 --- a/ash/webui/diagnostics_ui/backend/routine_log.cc +++ b/ash/webui/diagnostics_ui/backend/routine_log.cc
@@ -9,7 +9,11 @@ #include "base/files/file_util.h" #include "base/i18n/time_formatting.h" +#include "base/logging.h" +#include "base/sequenced_task_runner.h" #include "base/strings/utf_string_conversions.h" +#include "base/task/task_traits.h" +#include "base/task/thread_pool.h" #include "base/time/time.h" namespace ash { @@ -52,40 +56,52 @@ } // namespace RoutineLog::RoutineLog(const base::FilePath& routine_log_file_path) - : routine_log_file_path_(routine_log_file_path) {} + : routine_log_file_path_(routine_log_file_path) { + sequenced_task_runner_ = base::ThreadPool::CreateSequencedTaskRunner( + {base::MayBlock(), base::TaskPriority::USER_VISIBLE, + base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}); +} RoutineLog::~RoutineLog() = default; -void RoutineLog::LogRoutineStarted(mojom::RoutineType type) { +void RoutineLog::LogContentToFile(const std::string& contents) { + // Ensure file exists. if (!base::PathExists(routine_log_file_path_)) { CreateFile(); } + // Write contents to file. + AppendToLog(contents); +} + +void RoutineLog::LogRoutineStarted(mojom::RoutineType type) { std::stringstream log_line; log_line << GetCurrentDateTimeAsString() << kSeparator << getRoutineTypeString(type) << kSeparator << kStartedDescription << kNewline; - AppendToLog(log_line.str()); + sequenced_task_runner_->PostTask( + FROM_HERE, base::BindOnce(&RoutineLog::LogContentToFile, + base::Unretained(this), log_line.str())); } void RoutineLog::LogRoutineCompleted(mojom::RoutineType type, mojom::StandardRoutineResult result) { - DCHECK(base::PathExists(routine_log_file_path_)); - std::stringstream log_line; log_line << GetCurrentDateTimeAsString() << kSeparator << getRoutineTypeString(type) << kSeparator << getRoutineResultString(result) << kNewline; - AppendToLog(log_line.str()); + sequenced_task_runner_->PostTask( + FROM_HERE, base::BindOnce(&RoutineLog::LogContentToFile, + base::Unretained(this), log_line.str())); } void RoutineLog::LogRoutineCancelled() { - DCHECK(base::PathExists(routine_log_file_path_)); - std::stringstream log_line; log_line << GetCurrentDateTimeAsString() << kSeparator << kCancelledDescription << kNewline; - AppendToLog(log_line.str()); + sequenced_task_runner_->PostTask( + FROM_HERE, base::BindOnce(&RoutineLog::LogContentToFile, + base::Unretained(this), log_line.str())); } std::string RoutineLog::GetContents() const {
diff --git a/ash/webui/diagnostics_ui/backend/routine_log.h b/ash/webui/diagnostics_ui/backend/routine_log.h index 1669219c..8084122 100644 --- a/ash/webui/diagnostics_ui/backend/routine_log.h +++ b/ash/webui/diagnostics_ui/backend/routine_log.h
@@ -9,6 +9,7 @@ #include "ash/webui/diagnostics_ui/mojom/system_routine_controller.mojom.h" #include "base/files/file_path.h" +#include "base/sequenced_task_runner.h" namespace ash { namespace diagnostics { @@ -25,7 +26,9 @@ RoutineLog(const RoutineLog&) = delete; RoutineLog& operator=(const RoutineLog&) = delete; - // Adds an entry in the RoutineLog. + // LogRoutine* functions schedule a task using sequence_task_runner_ to add an + // entry in the routine log file. Tasks are run on blockable, sequenced task + // runner to support I/O operations. void LogRoutineStarted(mojom::RoutineType type); void LogRoutineCompleted(mojom::RoutineType type, mojom::StandardRoutineResult result); @@ -35,11 +38,18 @@ std::string GetContents() const; private: + // Performs the file operations to ensure the log file exists and appends + // provided content. + // Expectation is this will be called from a thread which allows blocking. + void LogContentToFile(const std::string& content); + void AppendToLog(const std::string& content); void CreateFile(); const base::FilePath routine_log_file_path_; + // Blockable task runner to enable I/O operations. + scoped_refptr<base::SequencedTaskRunner> sequenced_task_runner_; }; } // namespace diagnostics
diff --git a/ash/webui/diagnostics_ui/backend/routine_log_unittest.cc b/ash/webui/diagnostics_ui/backend/routine_log_unittest.cc index fd6f1d3c..5f3734d 100644 --- a/ash/webui/diagnostics_ui/backend/routine_log_unittest.cc +++ b/ash/webui/diagnostics_ui/backend/routine_log_unittest.cc
@@ -11,6 +11,7 @@ #include "ash/webui/diagnostics_ui/mojom/system_routine_controller.mojom.h" #include "base/files/file_util.h" #include "base/files/scoped_temp_dir.h" +#include "base/run_loop.h" #include "base/test/task_environment.h" #include "base/time/clock.h" #include "base/time/time.h" @@ -31,7 +32,7 @@ log_path_ = temp_dir_.GetPath().AppendASCII(kLogFileName); } - ~RoutineLogTest() override = default; + ~RoutineLogTest() override { base::RunLoop().RunUntilIdle(); } protected: base::test::TaskEnvironment task_environment_{ @@ -44,6 +45,9 @@ TEST_F(RoutineLogTest, Empty) { RoutineLog log(log_path_); + // Ensure pending tasks complete. + task_environment_.RunUntilIdle(); + EXPECT_FALSE(base::PathExists(log_path_)); EXPECT_TRUE(log.GetContents().empty()); } @@ -53,6 +57,9 @@ log.LogRoutineStarted(mojom::RoutineType::kCpuStress); + // Ensure pending tasks complete. + task_environment_.RunUntilIdle(); + EXPECT_TRUE(base::PathExists(log_path_)); const std::string contents = log.GetContents(); @@ -71,6 +78,10 @@ log.LogRoutineStarted(mojom::RoutineType::kMemory); log.LogRoutineCompleted(mojom::RoutineType::kMemory, mojom::StandardRoutineResult::kTestPassed); + + // Ensure pending tasks complete. + task_environment_.RunUntilIdle(); + EXPECT_TRUE(base::PathExists(log_path_)); const std::string contents = log.GetContents(); @@ -97,6 +108,10 @@ log.LogRoutineStarted(mojom::RoutineType::kMemory); log.LogRoutineCancelled(); + + // Ensure pending tasks complete. + task_environment_.RunUntilIdle(); + EXPECT_TRUE(base::PathExists(log_path_)); const std::string contents = log.GetContents();
diff --git a/ash/webui/diagnostics_ui/backend/session_log_handler_unittest.cc b/ash/webui/diagnostics_ui/backend/session_log_handler_unittest.cc index ee0aba1..db71078 100644 --- a/ash/webui/diagnostics_ui/backend/session_log_handler_unittest.cc +++ b/ash/webui/diagnostics_ui/backend/session_log_handler_unittest.cc
@@ -194,8 +194,10 @@ }; TEST_F(SessionLogHandlerTest, SaveSessionLog) { + base::RunLoop run_loop; // Populate routine log routine_log_->LogRoutineStarted(mojom::RoutineType::kCpuStress); + run_loop.RunUntilIdle(); // Populate telemetry log const std::string expected_board_name = "board_name"; @@ -220,7 +222,6 @@ ui::SelectFileDialog::SetFactory(new TestSelectFileDialogFactory(log_path)); base::ListValue args; args.Append(kHandlerFunctionName); - base::RunLoop run_loop; session_log_handler_->SetLogCreatedClosureForTest(run_loop.QuitClosure()); web_ui_.HandleReceivedMessage("saveSessionLog", &args); run_loop.Run();
diff --git a/ash/webui/file_manager/BUILD.gn b/ash/webui/file_manager/BUILD.gn index 026b8813..89e0027 100644 --- a/ash/webui/file_manager/BUILD.gn +++ b/ash/webui/file_manager/BUILD.gn
@@ -30,6 +30,6 @@ "//content/public/browser", "//ui/file_manager:file_manager_gen_resources", "//ui/file_manager:resources", - "//ui/webui", + "//ui/web_dialogs", ] }
diff --git a/ash/webui/file_manager/file_manager_ui.cc b/ash/webui/file_manager/file_manager_ui.cc index 036229a..7e14b61 100644 --- a/ash/webui/file_manager/file_manager_ui.cc +++ b/ash/webui/file_manager/file_manager_ui.cc
@@ -38,7 +38,7 @@ FileManagerUI::FileManagerUI(content::WebUI* web_ui, std::unique_ptr<FileManagerUIDelegate> delegate) - : MojoWebUIController(web_ui), delegate_(std::move(delegate)) { + : MojoWebDialogUI(web_ui), delegate_(std::move(delegate)) { auto* browser_context = web_ui->GetWebContents()->GetBrowserContext(); auto* trusted_source = CreateTrustedAppDataSource(); content::WebUIDataSource::Add(browser_context, trusted_source);
diff --git a/ash/webui/file_manager/file_manager_ui.h b/ash/webui/file_manager/file_manager_ui.h index 4464ac88..153247d 100644 --- a/ash/webui/file_manager/file_manager_ui.h +++ b/ash/webui/file_manager/file_manager_ui.h
@@ -14,7 +14,7 @@ #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "mojo/public/cpp/bindings/receiver.h" -#include "ui/webui/mojo_web_ui_controller.h" +#include "ui/web_dialogs/web_dialog_ui.h" namespace ash { namespace file_manager { @@ -22,7 +22,7 @@ class FileManagerPageHandler; // WebUI controller for chrome://file-manager. -class FileManagerUI : public ui::MojoWebUIController, +class FileManagerUI : public ui::MojoWebDialogUI, public mojom::PageHandlerFactory { public: FileManagerUI(content::WebUI* web_ui,
diff --git a/ash/webui/scanning/resources/action_toolbar.js b/ash/webui/scanning/resources/action_toolbar.js index 5168b92..6545eab 100644 --- a/ash/webui/scanning/resources/action_toolbar.js +++ b/ash/webui/scanning/resources/action_toolbar.js
@@ -62,11 +62,13 @@ * @private */ computePageNumberText_() { - if (!this.currentPageInView || !this.numTotalPages) { + // |currentPageInView| is <= 0 means a page was removed from the multi-page + // scan session and the next page in view has not been set yet. + if (this.currentPageInView <= 0 || !this.numTotalPages) { return ''; } - assert(this.currentPageInView > 0 && this.numTotalPages > 0); + assert(this.numTotalPages > 0); assert(this.currentPageInView <= this.numTotalPages); return this.i18n(
diff --git a/ash/webui/scanning/resources/scan_preview.html b/ash/webui/scanning/resources/scan_preview.html index a94c807..f10089d 100644 --- a/ash/webui/scanning/resources/scan_preview.html +++ b/ash/webui/scanning/resources/scan_preview.html
@@ -149,7 +149,7 @@ [[dialogConfirmationText_]] </div> <div slot="button-container"> - <cr-button class="cancel-button"> + <cr-button id="cancelButton" class="cancel-button" on-click="closeDialog_"> [[i18n('cancelButtonText')]] </cr-button> <cr-button id="actionButton" class="action-button">
diff --git a/ash/webui/scanning/resources/scan_preview.js b/ash/webui/scanning/resources/scan_preview.js index 9efe609f..3872182 100644 --- a/ash/webui/scanning/resources/scan_preview.js +++ b/ash/webui/scanning/resources/scan_preview.js
@@ -339,15 +339,36 @@ setFocusedScannedImage_(scannedImages, pageInView) { assert(this.multiPageScanChecked); - // Remove the focus CSS class from the scanned image which already has it. + this.removeFocusFromScannedImage_(scannedImages); + + assert(pageInView > 0 && pageInView <= scannedImages.length); + scannedImages[pageInView - 1].classList.add('focused-scanned-image'); + this.currentPageInView_ = pageInView; + }, + + /** + * Removes the focus CSS class from the scanned image which already has it + * then resets |currentPageInView_|. + * @param {!HTMLCollection} scannedImages + * @private + */ + removeFocusFromScannedImage_(scannedImages) { + // This condition is only true when the user chooses to remove a page from + // the multi-page scan session. When a page gets removed, the focus is + // cleared and not immediately set again. + if (this.currentPageInView_ <= 0) { + return; + } + assert( this.currentPageInView_ > 0 && this.currentPageInView_ <= scannedImages.length); scannedImages[this.currentPageInView_ - 1].classList.remove( 'focused-scanned-image'); - scannedImages[pageInView - 1].classList.add('focused-scanned-image'); - this.currentPageInView_ = pageInView; + // Set to -1 because the focus has been removed from the current page and no + // other page has it. + this.currentPageInView_ = -1; }, /** @@ -429,6 +450,12 @@ * @private */ showRemoveOrRescanDialog_(isRemovePageDialog, pageNumber) { + // Configure the on-click action. + this.$$('#actionButton').addEventListener('click', () => { + this.fireDialogAction_( + isRemovePageDialog ? 'remove-page' : 'rescan-page', pageNumber); + }, {once: true}); + // Configure the dialog strings for the requested mode (Remove or Rescan). const buttonLabelKey = isRemovePageDialog ? 'removePageButtonLabel' : 'rescanPageButtonLabel'; @@ -448,6 +475,27 @@ }, /** + * @param {string} event Either the 'remove-page' or 'rescan-page' event. + * @param {number} pageNumber + * @private + */ + fireDialogAction_(event, pageNumber) { + const scannedImages = + this.$$('#scannedImages').getElementsByClassName('scanned-image'); + this.removeFocusFromScannedImage_(scannedImages); + + // Subtract one from |pageNumber| to get the page's index. + assert(pageNumber > 0); + this.fire(event, pageNumber - 1); + this.closeDialog_(); + }, + + /** @private */ + closeDialog_() { + this.$$('#scanPreviewDialog').close(); + }, + + /** * Scrolls down to the last scanned image in the viewport. * @private */
diff --git a/ash/webui/scanning/resources/scanning_app.html b/ash/webui/scanning/resources/scanning_app.html index b255a53..577ea6e 100644 --- a/ash/webui/scanning/resources/scanning_app.html +++ b/ash/webui/scanning/resources/scanning_app.html
@@ -165,7 +165,8 @@ <scan-preview id="scanPreview" app-state="[[appState_]]" object-urls="[[objectUrls_]]" page-number="[[pageNumber_]]" progress-percent="[[progressPercent_]]" - multi-page-scan-checked="[[multiPageScanChecked]]"></scan-preview> + multi-page-scan-checked="[[multiPageScanChecked]]" + on-remove-page="onRemovePage_"></scan-preview> </div> <div id="rightPanel"> <h1 id="appTitle">[[i18n('appTitle')]]</h1>
diff --git a/ash/webui/scanning/resources/scanning_app.js b/ash/webui/scanning/resources/scanning_app.js index 55345483..4b45b56 100644 --- a/ash/webui/scanning/resources/scanning_app.js +++ b/ash/webui/scanning/resources/scanning_app.js
@@ -658,6 +658,19 @@ }); }, + /** + * @param {Event} e + * @private + */ + onRemovePage_(e) { + const pageIndex = e.detail; + assert(pageIndex >= 0 && pageIndex < this.objectUrls_.length); + + this.splice('objectUrls_', pageIndex, 1); + this.pageNumber_ = this.objectUrls_.length; + this.multiPageScanController_.removePage(pageIndex); + }, + /** @private */ onCompleteMultiPageScan_() { this.multiPageScanController_.completeMultiPageScan();
diff --git a/ash/wm/window_cycle/window_cycle_list.cc b/ash/wm/window_cycle/window_cycle_list.cc index 56e1e90..65793df 100644 --- a/ash/wm/window_cycle/window_cycle_list.cc +++ b/ash/wm/window_cycle/window_cycle_list.cc
@@ -66,13 +66,6 @@ // Shield horizontal inset. constexpr int kBackgroundHorizontalInsetDp = 8; -// Shield background blur sigma. -constexpr float kBackgroundBlurSigma = - static_cast<float>(AshColorProvider::LayerBlurSigma::kBlurDefault); - -// Quality of the shield background blur. -constexpr float kBackgroundBlurQuality = 0.33f; - // All previews are the same height (this is achieved via a combination of // scaling and padding). constexpr int kFixedPreviewHeightDp = 256; @@ -303,8 +296,9 @@ SkColor background_color = AshColorProvider::Get()->GetBaseLayerColor( AshColorProvider::BaseLayerType::kTransparent80); layer->SetColor(background_color); - layer->SetBackgroundBlur(kBackgroundBlurSigma); - layer->SetBackdropFilterQuality(kBackgroundBlurQuality); + layer->SetBackgroundBlur( + static_cast<float>(ColorProvider::LayerBlurSigma::kBlurDefault)); + layer->SetBackdropFilterQuality(ColorProvider::kBackgroundBlurQuality); layer->SetName("WindowCycleView"); layer->SetMasksToBounds(true);
diff --git a/base/tracing/protos/chrome_track_event.proto b/base/tracing/protos/chrome_track_event.proto index 0cfc2f64..149f883 100644 --- a/base/tracing/protos/chrome_track_event.proto +++ b/base/tracing/protos/chrome_track_event.proto
@@ -218,9 +218,19 @@ optional Importance importance = 3; } +// Information that identifies a Chrome Extension. +message ChromeExtensionId { + // Unique id that identifies a Chrome Extension. + optional string extension_id = 1; + + // Pseudonymized `extension_id` field (see also + // content::PseudonymizationUtil::PseudonymizeString method). + optional uint32 pseudonymized_extension_id = 2; +} + message ChromeTrackEvent { // Extension range for Chrome: 1000-1999 - // Next ID: 1018 + // Next ID: 1019 extend TrackEvent { optional ChromeAppState chrome_app_state = 1000; @@ -259,5 +269,7 @@ optional ResourceBundle resource_bundle = 1016; optional ChromeWebAppBadNavigate chrome_web_app_bad_navigate = 1017; + + optional ChromeExtensionId chrome_extension_id = 1018; } }
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1 index 7582cd6..f1b71a0 100644 --- a/build/fuchsia/linux.sdk.sha1 +++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@ -6.20210818.1.1 +6.20210818.2.1
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1 index 7582cd6..f1b71a0 100644 --- a/build/fuchsia/mac.sdk.sha1 +++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@ -6.20210818.1.1 +6.20210818.2.1
diff --git a/build/toolchain/nacl_toolchain.gni b/build/toolchain/nacl_toolchain.gni index 1ab7704..4d3257f 100644 --- a/build/toolchain/nacl_toolchain.gni +++ b/build/toolchain/nacl_toolchain.gni
@@ -60,10 +60,10 @@ if (use_rbe) { if (is_win) { - rbe_cc_cfg_file = "${rbe_cfg_dir}/nacl/rewrapper_windows.cfg" + rbe_cc_cfg_file = "${rbe_cfg_dir}/rewrapper_windows_nacl.cfg" } else { # TODO(ukai): non linux? - rbe_cc_cfg_file = "${rbe_cfg_dir}/nacl/rewrapper_linux.cfg" + rbe_cc_cfg_file = "${rbe_cfg_dir}/rewrapper_linux_nacl.cfg" } }
diff --git a/build/toolchain/rbe.gni b/build/toolchain/rbe.gni index af5f37d..97d5518e 100644 --- a/build/toolchain/rbe.gni +++ b/build/toolchain/rbe.gni
@@ -28,12 +28,11 @@ # Configuration file selection based on operating system. if (is_linux || is_android || is_chromeos) { - rbe_cc_cfg_file = "${rbe_cfg_dir}/chromium-browser-clang/rewrapper_linux.cfg" + rbe_cc_cfg_file = "${rbe_cfg_dir}/rewrapper_linux.cfg" } if (is_win) { - rbe_cc_cfg_file = - "${rbe_cfg_dir}/chromium-browser-clang/rewrapper_windows.cfg" + rbe_cc_cfg_file = "${rbe_cfg_dir}/rewrapper_windows.cfg" } if (is_mac || is_ios) { - rbe_cc_cfg_file = "${rbe_cfg_dir}/chromium-browser-clang/rewrapper_mac.cfg" + rbe_cc_cfg_file = "${rbe_cfg_dir}/rewrapper_mac.cfg" }
diff --git a/buildtools/reclient_cfgs/.gitignore b/buildtools/reclient_cfgs/.gitignore index 7d7e38c..a2c2674 100644 --- a/buildtools/reclient_cfgs/.gitignore +++ b/buildtools/reclient_cfgs/.gitignore
@@ -1,3 +1,2 @@ -/chromium-browser-clang/ +/chromium-browser-clang// /nacl/ -/win-cross-experiments/
diff --git a/buildtools/reclient_cfgs/fetch_reclient_cfgs.py b/buildtools/reclient_cfgs/fetch_reclient_cfgs.py index 5cf0099..75631015 100755 --- a/buildtools/reclient_cfgs/fetch_reclient_cfgs.py +++ b/buildtools/reclient_cfgs/fetch_reclient_cfgs.py
@@ -6,11 +6,9 @@ """This script is used to fetch reclient cfgs.""" import argparse -import glob import os import posixpath import re -import shutil import subprocess import sys @@ -66,32 +64,21 @@ cipd_prefix = posixpath.join(args.cipd_prefix, args.rbe_project) - tool_revisions = { - 'chromium-browser-clang': ClangRevision(), - 'nacl': NaclRevision() - } - for toolchain in tool_revisions: - revision = tool_revisions[toolchain] - if not revision: - print('failed to detect %s revision' % toolchain) - continue + clang_revision = ClangRevision() + if clang_revision: + CipdInstall(posixpath.join(cipd_prefix, 'chromium-browser-clang'), + ref='revision/' + clang_revision, + directory=os.path.join(THIS_DIR, 'chromium-browser-clang')) + else: + print('failed to detect clang revision') - CipdInstall(posixpath.join(cipd_prefix, toolchain), - ref='revision/' + revision, - directory=os.path.join(THIS_DIR, toolchain)) - if os.path.exists(os.path.join(THIS_DIR, - toolchain, 'win-cross-experiments')): - # copy in win-cross-experiments/toolchain - # as windows may not use symlinks. - wcedir = os.path.join(THIS_DIR, 'win-cross-experiments', toolchain) - if not os.path.exists(wcedir): - os.makedirs(wcedir, mode=0o755) - for cfg in glob.glob(os.path.join(THIS_DIR, toolchain, '*.cfg')): - fname = os.path.join(wcedir, os.path.basename(cfg)) - if os.path.exists(fname): - os.remove(fname) - print('Copy from %s to %s...' % (cfg, fname)) - shutil.copy(cfg, fname) + nacl_revision = NaclRevision() + if nacl_revision: + CipdInstall(posixpath.join(cipd_prefix, 'nacl'), + ref='revision/' + nacl_revision, + directory=os.path.join(THIS_DIR, 'nacl')) + else: + print('failed to detect nacl revision') return 0
diff --git a/buildtools/reclient_cfgs/win-cross-experiments/rewrapper_windows.cfg b/buildtools/reclient_cfgs/win-cross-experiments/rewrapper_windows.cfg new file mode 100644 index 0000000..f23991a1 --- /dev/null +++ b/buildtools/reclient_cfgs/win-cross-experiments/rewrapper_windows.cfg
@@ -0,0 +1,7 @@ +# llvmorg-14-init-1002-gb5e470aa-1 +platform=container-image=docker://gcr.io/chops-private-images-prod/rbe/chromium-browser-clang/windows-cross@sha256:40bd9f8c56c8db0025beed9e0291af60ffb1b689933d0b3c99120d2fa71b2608,OSFamily=Linux +server_address=pipe://reproxy.pipe +labels=type=compile,compiler=clang-cl,lang=cpp +exec_strategy=remote_local_fallback +windows_cross=true +remote_wrapper=/chromium-browser-clang/run.sh
diff --git a/buildtools/reclient_cfgs/win-cross-experiments/rewrapper_windows_nacl.cfg b/buildtools/reclient_cfgs/win-cross-experiments/rewrapper_windows_nacl.cfg new file mode 100644 index 0000000..706e058c --- /dev/null +++ b/buildtools/reclient_cfgs/win-cross-experiments/rewrapper_windows_nacl.cfg
@@ -0,0 +1,8 @@ +# 9a5dd7a226bcf5c999ba459b0b872aaaecd6541d +platform=container-image=docker://gcr.io/chops-private-images-prod/rbe/nacl/windows-cross@sha256:7118c427c388391a519bbd8d051c1243ae1d7bed15810b7704b4487a3e857297,OSFamily=Linux +server_address=pipe://reproxy.pipe +labels=type=compile,compiler=nacl,lang=cpp +exec_strategy=remote_local_fallback +inputs=native_client/toolchain/win_x86/pnacl_newlib +windows_cross=true +remote_wrapper=/native_client/run.sh
diff --git a/cc/benchmarks/rasterize_and_record_benchmark.cc b/cc/benchmarks/rasterize_and_record_benchmark.cc index 1be5bac5..1af6c65 100644 --- a/cc/benchmarks/rasterize_and_record_benchmark.cc +++ b/cc/benchmarks/rasterize_and_record_benchmark.cc
@@ -84,12 +84,6 @@ "record_time_subsequence_caching_disabled_ms", paint_benchmark_result.record_time_subsequence_caching_disabled_ms); results_->SetDoubleKey( - "record_time_partial_invalidation_ms", - paint_benchmark_result.record_time_partial_invalidation_ms); - results_->SetDoubleKey( - "record_time_small_invalidation_ms", - paint_benchmark_result.record_time_small_invalidation_ms); - results_->SetDoubleKey( "raster_invalidation_and_convert_time_ms", paint_benchmark_result.raster_invalidation_and_convert_time_ms); results_->SetDoubleKey(
diff --git a/cc/trees/draw_property_utils.cc b/cc/trees/draw_property_utils.cc index e3ae726..f2d0a33 100644 --- a/cc/trees/draw_property_utils.cc +++ b/cc/trees/draw_property_utils.cc
@@ -1134,6 +1134,10 @@ DCHECK(elastic_overscroll.IsZero()); return; } + // The inner viewport container size takes into account the size change as a + // result of the top controls, see ScrollTree::container_bounds. + gfx::Size scroller_size = + property_trees->scroll_tree.container_bounds(inner_viewport->id); if (overscroll_elasticity_effect_element_id) { if (elastic_overscroll.IsZero()) { property_trees->effect_tree.OnFilterAnimated( @@ -1144,10 +1148,8 @@ overscroll_elasticity_effect_element_id, FilterOperations( std::vector<FilterOperation>({FilterOperation::CreateStretchFilter( - -elastic_overscroll.x() / - inner_viewport->container_bounds.width(), - -elastic_overscroll.y() / - inner_viewport->container_bounds.height())}))); + -elastic_overscroll.x() / scroller_size.width(), + -elastic_overscroll.y() / scroller_size.height())}))); return; } @@ -1158,23 +1160,20 @@ overscroll_elasticity_transform_node->to_screen_is_potentially_animated = !elastic_overscroll.IsZero(); - if (!elastic_overscroll.IsZero() && inner_viewport) { + if (!elastic_overscroll.IsZero()) { overscroll_elasticity_transform_node->local.Scale( - 1.f + std::abs(elastic_overscroll.x()) / - inner_viewport->container_bounds.width(), - 1.f + std::abs(elastic_overscroll.y()) / - inner_viewport->container_bounds.height()); + 1.f + std::abs(elastic_overscroll.x()) / scroller_size.width(), + 1.f + std::abs(elastic_overscroll.y()) / scroller_size.height()); // If overscrolling to the right, stretch from right. if (elastic_overscroll.x() > 0.f) { - overscroll_elasticity_transform_node->origin.set_x( - inner_viewport->container_bounds.width()); + overscroll_elasticity_transform_node->origin.set_x(scroller_size.width()); } // If overscrolling off the bottom, stretch from bottom. if (elastic_overscroll.y() > 0.f) { overscroll_elasticity_transform_node->origin.set_y( - inner_viewport->container_bounds.height()); + scroller_size.height()); } } overscroll_elasticity_transform_node->needs_local_transform_update = true;
diff --git a/cc/trees/layer_tree_host_client.h b/cc/trees/layer_tree_host_client.h index 00f3e63..1d085ee 100644 --- a/cc/trees/layer_tree_host_client.h +++ b/cc/trees/layer_tree_host_client.h
@@ -73,8 +73,6 @@ double record_time_ms = 0; double record_time_caching_disabled_ms = 0; double record_time_subsequence_caching_disabled_ms = 0; - double record_time_partial_invalidation_ms = 0; - double record_time_small_invalidation_ms = 0; double raster_invalidation_and_convert_time_ms = 0; double paint_artifact_compositor_update_time_ms = 0; size_t painter_memory_usage = 0;
diff --git a/chrome/VERSION b/chrome/VERSION index 7075491..5d9b6300 100644 --- a/chrome/VERSION +++ b/chrome/VERSION
@@ -1,4 +1,4 @@ MAJOR=95 MINOR=0 -BUILD=4613 +BUILD=4614 PATCH=0
diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/SecondaryTasksSurfaceViewBinder.java b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/SecondaryTasksSurfaceViewBinder.java index 67bc10e..8d331f132 100644 --- a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/SecondaryTasksSurfaceViewBinder.java +++ b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/SecondaryTasksSurfaceViewBinder.java
@@ -5,7 +5,6 @@ package org.chromium.chrome.features.start_surface; import static org.chromium.chrome.features.start_surface.StartSurfaceProperties.IS_SECONDARY_SURFACE_VISIBLE; -import static org.chromium.chrome.features.start_surface.StartSurfaceProperties.IS_SHOWING_OVERVIEW; import static org.chromium.chrome.features.start_surface.StartSurfaceProperties.TOP_MARGIN; import android.view.View; @@ -20,8 +19,6 @@ PropertyKey propertyKey) { if (IS_SECONDARY_SURFACE_VISIBLE == propertyKey) { updateVisibility(viewHolder, model); - } else if (IS_SHOWING_OVERVIEW == propertyKey) { - updateVisibility(viewHolder, model); } else if (TOP_MARGIN == propertyKey) { setTopBarHeight(viewHolder, model.get(TOP_MARGIN)); } @@ -29,8 +26,7 @@ private static void updateVisibility( TasksSurfaceViewBinder.ViewHolder viewHolder, PropertyModel model) { - boolean isShowing = - model.get(IS_SHOWING_OVERVIEW) && model.get(IS_SECONDARY_SURFACE_VISIBLE); + boolean isShowing = model.get(IS_SECONDARY_SURFACE_VISIBLE); if (isShowing && viewHolder.tasksSurfaceView.getParent() == null) { viewHolder.parentView.addView(viewHolder.tasksSurfaceView); setTopBarHeight(viewHolder, model.get(TOP_MARGIN)); @@ -39,6 +35,8 @@ // We don't need to handle toolbar scrolling problem on secondary tasks surface so // topToolbarPlaceholderView is not needed. viewHolder.topToolbarPlaceholderView.setVisibility(View.GONE); + // Somehow if background is not transparent, GTS will be hidden. + viewHolder.tasksSurfaceView.getBackground().setAlpha(0); viewHolder.tasksSurfaceView.setVisibility(isShowing ? View.VISIBLE : View.GONE); }
diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java index 7b64754..f6880d90 100644 --- a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java +++ b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
@@ -315,6 +315,9 @@ if (mTasksSurface != null) { mTasksSurface.onHide(); } + if (mSecondaryTasksSurface != null) { + mSecondaryTasksSurface.onHide(); + } if (mFeedPlaceholderCoordinator != null) { mFeedPlaceholderCoordinator.destroy(); mFeedPlaceholderCoordinator = null;
diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceLayout.java b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceLayout.java index b572d78..8c64dc3 100644 --- a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceLayout.java +++ b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceLayout.java
@@ -151,8 +151,8 @@ // If not doing GTS-to-Tab transition animation or single tab switcher is shown on // start surface, we show the fade-out instead, which was already done. if (!TabUiFeatureUtilities.isTabToGtsAnimationEnabled() - || StartSurfaceConfiguration.START_SURFACE_LAST_ACTIVE_TAB_ONLY - .getValue()) { + || StartSurfaceConfiguration.START_SURFACE_LAST_ACTIVE_TAB_ONLY.getValue() + || isHidingStartSurface()) { postHiding(); return; } @@ -314,7 +314,6 @@ public void doneHiding() { try (TraceEvent e = TraceEvent.scoped("StartSurfaceLayout.DoneHiding")) { super.doneHiding(); - mStartSurface.onHide(); RecordUserAction.record("MobileExitStackView"); // When shown on StartSurface jank is tracked under // JankScenario.START_SURFACE_TAB_SWITCHER and it's started/stopped on @@ -536,11 +535,7 @@ } private void postHiding() { - if (isHidingStartSurface()) { - getCarouselOrSingleTabListDelegate().postHiding(); - } else { - getGridTabListDelegate().postHiding(); - } + mStartSurface.onHide(); mIsAnimating = false; doneHiding(); }
diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java index a72201b..869698c 100644 --- a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java +++ b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
@@ -358,37 +358,6 @@ if (mPropertyModel == null || state == mStartSurfaceState) return; - // When entering the Start surface by tapping home button or new tab page, we need to reset - // the scrolling position. - if (state == StartSurfaceState.SHOWING_HOMEPAGE) { - mPropertyModel.set(RESET_TASK_SURFACE_HEADER_SCROLL_POSITION, true); - mPropertyModel.set(RESET_FEED_SURFACE_SCROLL_POSITION, true); - StartSurfaceUserData.getInstance().saveFeedInstanceState(null); - - String newHomeSurface = - StartSurfaceConfiguration.NEW_SURFACE_FROM_HOME_BUTTON.getValue(); - switch (newHomeSurface) { - case "hide_tab_switcher_only": - mHideMVForNewSurface = false; - mHideTabCarouselForNewSurface = true; - break; - case "hide_mv_tiles_and_tab_switcher": - mHideMVForNewSurface = true; - mHideTabCarouselForNewSurface = true; - break; - default: - mHideMVForNewSurface = false; - mHideTabCarouselForNewSurface = false; - } - } - - // Every time Chrome is started, no matter warm start or cold start, show MV tiles & tab - // carousel. - if (state == StartSurfaceState.SHOWING_START && !mTabModelSelector.isIncognitoSelected()) { - mHideMVForNewSurface = false; - mHideTabCarouselForNewSurface = false; - } - // Cache previous state. if (mStartSurfaceState != StartSurfaceState.NOT_SHOWN) { mPreviousStartSurfaceState = mStartSurfaceState; @@ -461,7 +430,42 @@ // two different things, audit the wording usage and see if we can rename this method to // setStartSurfaceStateInternal. private void setOverviewStateInternal() { - if (mStartSurfaceState == StartSurfaceState.SHOWN_HOMEPAGE) { + if (mStartSurfaceState == StartSurfaceState.SHOWING_HOMEPAGE) { + // When entering the Start surface by tapping home button or new tab page, we need to + // reset the scrolling position. + mPropertyModel.set(RESET_TASK_SURFACE_HEADER_SCROLL_POSITION, true); + mPropertyModel.set(RESET_FEED_SURFACE_SCROLL_POSITION, true); + StartSurfaceUserData.getInstance().saveFeedInstanceState(null); + + String newHomeSurface = + StartSurfaceConfiguration.NEW_SURFACE_FROM_HOME_BUTTON.getValue(); + switch (newHomeSurface) { + case "hide_tab_switcher_only": + mHideMVForNewSurface = false; + mHideTabCarouselForNewSurface = true; + break; + case "hide_mv_tiles_and_tab_switcher": + mHideMVForNewSurface = true; + mHideTabCarouselForNewSurface = true; + break; + default: + mHideMVForNewSurface = false; + mHideTabCarouselForNewSurface = false; + } + } else if (mStartSurfaceState == StartSurfaceState.SHOWING_START) { + if (!mTabModelSelector.isIncognitoSelected()) { + // Every time Chrome is started, no matter warm start or cold start, show MV tiles & + // tab carousel. + mHideMVForNewSurface = false; + mHideTabCarouselForNewSurface = false; + } + } else if (mStartSurfaceState == StartSurfaceState.SHOWING_TABSWITCHER) { + // Set secondary surface visible to make sure tab list recyclerview is updated in time + // (before GTS animations start). We need to skip + // mSecondaryTasksSurfaceController#showOverview here since it will hide GTS animations. + setSecondaryTasksSurfaceVisibility( + /* isVisible= */ true, /* skipUpdateController = */ true); + } else if (mStartSurfaceState == StartSurfaceState.SHOWN_HOMEPAGE) { setExploreSurfaceVisibility(!mIsIncognito && mFeedSurfaceController != null); boolean hasNormalTab; if (CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START) @@ -481,7 +485,7 @@ hasNormalTab && !mIsIncognito && !mHideTabCarouselForNewSurface); setMVTilesVisibility(!mIsIncognito && !mHideMVForNewSurface); setFakeBoxVisibility(!mIsIncognito); - setSecondaryTasksSurfaceVisibility(mIsIncognito); + setSecondaryTasksSurfaceVisibility(mIsIncognito, /* skipUpdateController = */ false); // Only pad single pane home page since tabs grid has already been padding for the // bottom bar. @@ -496,11 +500,13 @@ setTabCarouselVisibility(false); setMVTilesVisibility(false); setFakeBoxVisibility(false); - setSecondaryTasksSurfaceVisibility(true); + setSecondaryTasksSurfaceVisibility( + /* isVisible= */ true, /* skipUpdateController = */ false); setExploreSurfaceVisibility(false); } else if (mStartSurfaceState == StartSurfaceState.NOT_SHOWN) { if (mSecondaryTasksSurfacePropertyModel != null) { - setSecondaryTasksSurfaceVisibility(false); + setSecondaryTasksSurfaceVisibility( + /* isVisible= */ false, /* skipUpdateController = */ false); } } @@ -766,7 +772,15 @@ if (mPropertyModel.get(IS_SHOWING_OVERVIEW)) notifyStateChange(); } - private void setSecondaryTasksSurfaceVisibility(boolean isVisible) { + /** + * Set the visibility of secondary tasks surface. Secondary tasks surface is used for showing + * normal grid tab switcher, incognito gird tab switcher and incognito homepage. + * @param isVisible Whether secondary tasks surface is visible. + * @param skipUpdateController Whether to skip mSecondaryTasksSurfaceController#showOverview and + * mSecondaryTasksSurfaceController#hideOverview. + */ + private void setSecondaryTasksSurfaceVisibility( + boolean isVisible, boolean skipUpdateController) { assert mIsStartSurfaceEnabled; if (isVisible) { @@ -778,11 +792,11 @@ mIsIncognito && mStartSurfaceState == StartSurfaceState.SHOWN_HOMEPAGE); mSecondaryTasksSurfacePropertyModel.set(IS_INCOGNITO, mIsIncognito); } - if (mSecondaryTasksSurfaceController != null) { + if (mSecondaryTasksSurfaceController != null && !skipUpdateController) { mSecondaryTasksSurfaceController.showOverview(/* animate = */ true); } } else { - if (mSecondaryTasksSurfaceController != null) { + if (mSecondaryTasksSurfaceController != null && !skipUpdateController) { mSecondaryTasksSurfaceController.hideOverview(/* animate = */ false); } }
diff --git a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/SecondaryTasksSurfaceViewBinderTest.java b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/SecondaryTasksSurfaceViewBinderTest.java index 527eae2a..14120b1 100644 --- a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/SecondaryTasksSurfaceViewBinderTest.java +++ b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/SecondaryTasksSurfaceViewBinderTest.java
@@ -10,9 +10,10 @@ import static org.junit.Assert.assertNull; import static org.chromium.chrome.features.start_surface.StartSurfaceProperties.IS_SECONDARY_SURFACE_VISIBLE; -import static org.chromium.chrome.features.start_surface.StartSurfaceProperties.IS_SHOWING_OVERVIEW; import static org.chromium.chrome.features.start_surface.StartSurfaceProperties.TOP_MARGIN; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.MarginLayoutParams; @@ -49,6 +50,7 @@ // for the SecondaryTasksSurfaceViewBinderTest. mParentView = new FrameLayout(getActivity()); mTasksSurfaceView = new View(getActivity()); + mTasksSurfaceView.setBackground(new ColorDrawable(Color.WHITE)); mTopToolbarPlaceholderView = new View(getActivity()); getActivity().setContentView(mParentView); @@ -63,94 +65,49 @@ @Test @UiThreadTest @SmallTest - public void testSetVisibilityAfterShowingOverview() { - assertFalse(mPropertyModel.get(IS_SHOWING_OVERVIEW)); - assertFalse(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE)); - assertNull(mTasksSurfaceView.getParent()); - - mPropertyModel.set(IS_SHOWING_OVERVIEW, true); - assertNull(mTasksSurfaceView.getParent()); - assertEquals(mTasksSurfaceView.getVisibility(), View.GONE); - - mPropertyModel.set(IS_SECONDARY_SURFACE_VISIBLE, true); - assertNotNull(mTasksSurfaceView.getParent()); - assertEquals(mTasksSurfaceView.getVisibility(), View.VISIBLE); - - mPropertyModel.set(IS_SECONDARY_SURFACE_VISIBLE, false); - assertNotNull(mTasksSurfaceView.getParent()); - assertEquals(mTasksSurfaceView.getVisibility(), View.GONE); - - mPropertyModel.set(IS_SHOWING_OVERVIEW, false); - assertNotNull(mTasksSurfaceView.getParent()); - assertEquals(mTasksSurfaceView.getVisibility(), View.GONE); - } - - @Test - @UiThreadTest - @SmallTest - public void testSetVisibilityBeforeShowingOverview() { - assertFalse(mPropertyModel.get(IS_SHOWING_OVERVIEW)); + public void testSetVisibility() { assertFalse(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE)); assertNull(mTasksSurfaceView.getParent()); mPropertyModel.set(IS_SECONDARY_SURFACE_VISIBLE, true); - assertNull(mTasksSurfaceView.getParent()); - assertEquals(mTasksSurfaceView.getVisibility(), View.GONE); - - mPropertyModel.set(IS_SHOWING_OVERVIEW, true); assertNotNull(mTasksSurfaceView.getParent()); - assertEquals(mTasksSurfaceView.getVisibility(), View.VISIBLE); - - mPropertyModel.set(IS_SHOWING_OVERVIEW, false); - assertNotNull(mTasksSurfaceView.getParent()); - assertEquals(mTasksSurfaceView.getVisibility(), View.GONE); + assertEquals(View.VISIBLE, mTasksSurfaceView.getVisibility()); mPropertyModel.set(IS_SECONDARY_SURFACE_VISIBLE, false); assertNotNull(mTasksSurfaceView.getParent()); - assertEquals(mTasksSurfaceView.getVisibility(), View.GONE); + assertEquals(View.GONE, mTasksSurfaceView.getVisibility()); } @Test @UiThreadTest @SmallTest public void testSetVisibilityWithTopMargin() { - assertFalse(mPropertyModel.get(IS_SHOWING_OVERVIEW)); assertFalse(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE)); assertNull(mTasksSurfaceView.getParent()); mPropertyModel.set(TOP_MARGIN, 20); - mPropertyModel.set(IS_SHOWING_OVERVIEW, true); - assertNull(mTasksSurfaceView.getParent()); - assertEquals(mTasksSurfaceView.getVisibility(), View.GONE); - mPropertyModel.set(IS_SECONDARY_SURFACE_VISIBLE, true); assertNotNull(mTasksSurfaceView.getParent()); - assertEquals(mTasksSurfaceView.getVisibility(), View.VISIBLE); + assertEquals(View.VISIBLE, mTasksSurfaceView.getVisibility()); assertEquals(View.GONE, mTopToolbarPlaceholderView.getVisibility()); MarginLayoutParams layoutParams = (MarginLayoutParams) mTasksSurfaceView.getLayoutParams(); assertEquals(20, layoutParams.topMargin); mPropertyModel.set(IS_SECONDARY_SURFACE_VISIBLE, false); assertNotNull(mTasksSurfaceView.getParent()); - assertEquals(mTasksSurfaceView.getVisibility(), View.GONE); - - mPropertyModel.set(IS_SHOWING_OVERVIEW, false); - assertNotNull(mTasksSurfaceView.getParent()); - assertEquals(mTasksSurfaceView.getVisibility(), View.GONE); + assertEquals(View.GONE, mTasksSurfaceView.getVisibility()); } @Test @UiThreadTest @SmallTest public void testSetTopMargin() { - assertFalse(mPropertyModel.get(IS_SHOWING_OVERVIEW)); assertFalse(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE)); assertNull(mTasksSurfaceView.getParent()); // Setting the top margin shouldn't cause a NullPointerException when the layout params are // null, since this should be handled in the *ViewBinder. mPropertyModel.set(TOP_MARGIN, 20); - mPropertyModel.set(IS_SHOWING_OVERVIEW, true); mPropertyModel.set(IS_SECONDARY_SURFACE_VISIBLE, true); MarginLayoutParams layoutParams = (MarginLayoutParams) mTasksSurfaceView.getLayoutParams();
diff --git a/chrome/android/features/start_surface/internal/junit/src/org/chromium/chrome/features/start_surface/StartSurfaceMediatorUnitTest.java b/chrome/android/features/start_surface/internal/junit/src/org/chromium/chrome/features/start_surface/StartSurfaceMediatorUnitTest.java index 88d2047..9a2c262b 100644 --- a/chrome/android/features/start_surface/internal/junit/src/org/chromium/chrome/features/start_surface/StartSurfaceMediatorUnitTest.java +++ b/chrome/android/features/start_surface/internal/junit/src/org/chromium/chrome/features/start_surface/StartSurfaceMediatorUnitTest.java
@@ -10,6 +10,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; @@ -18,6 +19,7 @@ import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -1201,6 +1203,28 @@ assertFalse(feedSurfaceCoordinator.isPlaceholderShown()); } + @Test + public void setShowingTabSwitcher() { + doReturn(false).when(mTabModelSelector).isIncognitoSelected(); + doReturn(mVoiceRecognitionHandler).when(mOmniboxStub).getVoiceRecognitionHandler(); + doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled(); + + StartSurfaceMediator mediator = + createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false); + mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel); + mediator.setSecondaryTasksSurfaceController(mSecondaryTasksSurfaceController); + assertThat(mediator.getStartSurfaceState(), equalTo(StartSurfaceState.NOT_SHOWN)); + + mediator.setOverviewState(StartSurfaceState.SHOWING_TABSWITCHER); + assertFalse(mSecondaryTasksSurfacePropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE)); + assertTrue(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE)); + verify(mSecondaryTasksSurfaceController, times(0)).showOverview(true); + + mediator.showOverview(false); + assertThat(mediator.getStartSurfaceState(), equalTo(StartSurfaceState.SHOWN_TABSWITCHER)); + verify(mSecondaryTasksSurfaceController, times(1)).showOverview(true); + } + private StartSurfaceMediator createStartSurfaceMediator( boolean isStartSurfaceEnabled, boolean excludeMVTiles) { return createStartSurfaceMediator(
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurfaceCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurfaceCoordinator.java index cb59f60..7c1e4b7 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurfaceCoordinator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurfaceCoordinator.java
@@ -226,6 +226,7 @@ mMostVisitedList.destroyMVTiles(); mIsMVTilesInitialized = false; } + mTabSwitcher.getTabListDelegate().postHiding(); } @VisibleForTesting
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java index 7b604bd3..6281883 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java
@@ -27,6 +27,7 @@ import org.chromium.base.ObserverList; import org.chromium.base.StrictModeContext; import org.chromium.base.ThreadUtils; +import org.chromium.base.library_loader.LibraryLoader; import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordUserAction; import org.chromium.base.task.PostTask; @@ -458,14 +459,13 @@ private int getSoftCleanupDelay() { if (mSoftCleanupDelayMsForTesting != null) return mSoftCleanupDelayMsForTesting; - - String delay = ChromeFeatureList.getFieldTrialParamByFeature( - ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID, SOFT_CLEANUP_DELAY_PARAM); - try { - return Integer.valueOf(delay); - } catch (NumberFormatException e) { - return DEFAULT_SOFT_CLEANUP_DELAY_MS; + if (!LibraryLoader.getInstance().isInitialized()) { + return 0; } + + return ChromeFeatureList.getFieldTrialParamByFeatureAsInt( + ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID, SOFT_CLEANUP_DELAY_PARAM, + DEFAULT_SOFT_CLEANUP_DELAY_MS); } @VisibleForTesting @@ -475,14 +475,13 @@ private int getCleanupDelay() { if (mCleanupDelayMsForTesting != null) return mCleanupDelayMsForTesting; - - String delay = ChromeFeatureList.getFieldTrialParamByFeature( - ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID, CLEANUP_DELAY_PARAM); - try { - return Integer.valueOf(delay); - } catch (NumberFormatException e) { - return DEFAULT_CLEANUP_DELAY_MS; + if (!LibraryLoader.getInstance().isInitialized()) { + return 0; } + + return ChromeFeatureList.getFieldTrialParamByFeatureAsInt( + ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID, CLEANUP_DELAY_PARAM, + DEFAULT_CLEANUP_DELAY_MS); } private void setVisibility(boolean isVisible) {
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities.java index 7bac445..916d45e9 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities.java
@@ -24,7 +24,6 @@ import org.chromium.chrome.browser.preferences.SharedPreferencesManager; import org.chromium.chrome.browser.tasks.ConditionalTabStripUtils; import org.chromium.chrome.browser.tasks.ReturnToChromeExperimentsUtil; -import org.chromium.chrome.features.start_surface.StartSurfaceConfiguration; import org.chromium.ui.base.DeviceFormFactor; import java.util.Random; @@ -185,8 +184,7 @@ Log.d(TAG, "GTS.MinMemoryMB = " + ZOOMING_MIN_MEMORY.getValue()); return CachedFeatureFlags.isEnabled(ChromeFeatureList.TAB_TO_GTS_ANIMATION) && Build.VERSION.SDK_INT >= ZOOMING_MIN_SDK.getValue() - && SysUtils.amountOfPhysicalMemoryKB() / 1024 >= ZOOMING_MIN_MEMORY.getValue() - && !StartSurfaceConfiguration.isStartSurfaceSinglePaneEnabled(); + && SysUtils.amountOfPhysicalMemoryKB() / 1024 >= ZOOMING_MIN_MEMORY.getValue(); } /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadInfoBarController.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadInfoBarController.java index 1a3ed473..19b8809 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadInfoBarController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadInfoBarController.java
@@ -1136,11 +1136,11 @@ assert shownState != -1 : "Invalid state " + state; RecordHistogram.recordEnumeratedHistogram( - "Android.Download.InfoBar.Shown", shownState, UmaInfobarShown.NUM_ENTRIES); - RecordHistogram.recordEnumeratedHistogram("Android.Download.InfoBar.Shown", + "Download.Progress.InfoBar.Shown", shownState, UmaInfobarShown.NUM_ENTRIES); + RecordHistogram.recordEnumeratedHistogram("Download.Progress.InfoBar.Shown", UmaInfobarShown.ANY_STATE, UmaInfobarShown.NUM_ENTRIES); if (multipleDownloadState != -1) { - RecordHistogram.recordEnumeratedHistogram("Android.Download.InfoBar.Shown", + RecordHistogram.recordEnumeratedHistogram("Download.Progress.InfoBar.Shown", multipleDownloadState, UmaInfobarShown.NUM_ENTRIES); } } @@ -1151,7 +1151,7 @@ private void recordCloseButtonClicked() { RecordUserAction.record("Android.Download.InfoBar.CloseButtonClicked"); - RecordHistogram.recordEnumeratedHistogram("Android.Download.InfoBar.CloseButtonClicked", + RecordHistogram.recordEnumeratedHistogram("Download.Progress.InfoBar.CloseButtonClicked", mState, DownloadInfoBarState.NUM_ENTRIES); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadMessageUiControllerImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadMessageUiControllerImpl.java index 2ebbb22..fc5e301 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadMessageUiControllerImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadMessageUiControllerImpl.java
@@ -993,11 +993,11 @@ assert shownState != -1 : "Invalid state " + state; RecordHistogram.recordEnumeratedHistogram( - "Android.Download.InfoBar.Shown", shownState, UmaInfobarShown.NUM_ENTRIES); - RecordHistogram.recordEnumeratedHistogram("Android.Download.InfoBar.Shown", + "Download.Progress.InfoBar.Shown", shownState, UmaInfobarShown.NUM_ENTRIES); + RecordHistogram.recordEnumeratedHistogram("Download.Progress.InfoBar.Shown", UmaInfobarShown.ANY_STATE, UmaInfobarShown.NUM_ENTRIES); if (multipleDownloadState != -1) { - RecordHistogram.recordEnumeratedHistogram("Android.Download.InfoBar.Shown", + RecordHistogram.recordEnumeratedHistogram("Download.Progress.InfoBar.Shown", multipleDownloadState, UmaInfobarShown.NUM_ENTRIES); } } @@ -1009,7 +1009,7 @@ private void recordCloseButtonClicked() { RecordUserAction.record("Android.Download.InfoBar.CloseButtonClicked"); RecordHistogram.recordEnumeratedHistogram( - "Android.Download.InfoBar.CloseButtonClicked", mState, UiState.NUM_ENTRIES); + "Download.Progress.InfoBar.CloseButtonClicked", mState, UiState.NUM_ENTRIES); } private static void recordLinkClicked(boolean openItem) {
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/app/metrics/TabbedActivityLaunchCauseMetricsTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/app/metrics/TabbedActivityLaunchCauseMetricsTest.java index d41e44a..0e623534 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/app/metrics/TabbedActivityLaunchCauseMetricsTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/app/metrics/TabbedActivityLaunchCauseMetricsTest.java
@@ -46,6 +46,7 @@ import org.chromium.base.test.util.CriteriaHelper; import org.chromium.base.test.util.FlakyTest; import org.chromium.base.test.util.JniMocker; +import org.chromium.base.test.util.RequiresRestart; import org.chromium.chrome.R; import org.chromium.chrome.browser.ChromeTabbedActivity; import org.chromium.chrome.browser.LauncherShortcutActivity; @@ -211,6 +212,7 @@ @Test @MediumTest + @RequiresRestart("crbug.com/1223068") public void testExternalSearchIntentNoResolvers() throws Throwable { final int count = 1 + histogramCountForValue(
diff --git a/chrome/app/os_settings_strings.grdp b/chrome/app/os_settings_strings.grdp index 217149a..53391b9 100644 --- a/chrome/app/os_settings_strings.grdp +++ b/chrome/app/os_settings_strings.grdp
@@ -3618,12 +3618,6 @@ <message name="IDS_SETTINGS_DISPLAY_NIGHT_LIGHT_SCHEDULE_SUNSET_TO_SUNRISE" desc="In Device Settings > Displays, the label of the option to set the automatic schedule of the Night Light feature to turn on at sunset and off at sunrise."> Sunset to sunrise </message> - <message name="IDS_SETTINGS_DISPLAY_NIGHT_LIGHT_START_TIME" desc="In Device Settings > Displays, the label of the start time bubble."> - Start time - </message> - <message name="IDS_SETTINGS_DISPLAY_NIGHT_LIGHT_STOP_TIME" desc="In Device Settings > Displays, the label of the end time bubble."> - End time - </message> <message name="IDS_SETTINGS_DISPLAY_NIGHT_LIGHT_TEXT" desc="In Device Settings > Displays, text describing the Night Light feature."> Make it easier to look at your screen or read in dim light </message>
diff --git a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_DISPLAY_NIGHT_LIGHT_STOP_TIME.png.sha1 b/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_DISPLAY_NIGHT_LIGHT_STOP_TIME.png.sha1 deleted file mode 100644 index 203e6484e..0000000 --- a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_DISPLAY_NIGHT_LIGHT_STOP_TIME.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -5b1d5700a12e4506a1ee7452b62d47e81d68dc95
diff --git a/chrome/app/resources/chromium_strings_af.xtb b/chrome/app/resources/chromium_strings_af.xtb index 6dad264..c0f7cdd 100644 --- a/chrome/app/resources/chromium_strings_af.xtb +++ b/chrome/app/resources/chromium_strings_af.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> kan tussen Chromium-profiele wissel</translation> <translation id="3509308970982693815">Maak asseblief alle Chromium-vensters toe en probeer weer.</translation> <translation id="3575459661164320785">Daar is skadelike sagteware op jou rekenaar. Chromium kan dit verwyder, jou instellings teruglaai en uitbreidings deaktiveer om jou blaaier weer normaal te laat werk.</translation> -<translation id="3610776674893128619">Vee hardeskyf uit en installeer Chromium-bedryfstelsel</translation> <translation id="3639635944603682591">Hierdie persoon se blaaierdata sal van hierdie toestel af uitgevee word. Meld as <ph name="USER_EMAIL" /> by Chromium aan om die data te herwin.</translation> <translation id="364817392622123556">{COUNT,plural, =0{'n Nuwe opdatering vir Chromium is beskikbaar en sal toegepas word sodra jy herbegin.}=1{'n Nuwe opdatering vir Chromium is beskikbaar en sal toegepas word sodra jy herbegin. Jou incognitovenster sal nie weer oopgemaak word nie.}other{'n Nuwe opdatering vir Chromium is beskikbaar en sal toegepas word sodra jy herbegin. Jou # incognitovensters sal nie weer oopgemaak word nie.}}</translation> <translation id="3651803019964686660">Meld op albei toestelle by Chromium aan om 'n nommer van <ph name="ORIGIN" /> af na jou Android-foon te stuur.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> is gevaarlik en daarom het Chromium dit geblokkeer.</translation> <translation id="6134968993075716475">Veiligblaai is afgeskakel. Chromium beveel aan dat jy dit aanskakel.</translation> <translation id="6145820983052037069">Jy kan hier tussen Chromium-profiele wissel</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Ons is gereed om Chromium-bedryfstelsel te installeer! Sodra jy voortgaan: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Sal lêers, data en jou huidige bedryfstelsel uitgevee word. - <ph name="LIST_ITEM" />Sal Chromium-bedryfstelsel geïnstalleer word. - <ph name="LIST_ITEM" />Sal jou toestel afskakel wanneer installasie afgehandel is. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Een laaste onthounota: Installasie sal jou hele hardeskyf uitvee. Maak asseblief seker dat alle data wat vir jou belangrik is, gerugsteun is.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Installasie kan nie gekanselleer word nadat dit begin is nie.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Maak seker dat jy by Chromium aangemeld is op jou <ph name="TARGET_DEVICE_NAME" /> en probeer dan weer stuur.</translation> <translation id="6212496753309875659">Hierdie rekenaar het reeds 'n meer onlangse weergawe van Chromium. As die sagteware nie werk nie, deïnstalleer Chromium en probeer weer.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium sal nou herbegin}=1{Chromium sal oor 1 sekonde herbegin}other{Chromium sal oor # sekondes herbegin}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Chromium-bedryfstelsel</translation> <translation id="6455857529632101747">Welkom by Chromium-profiele</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium sal oor 1 sekonde herbegin}other{Chromium sal oor # sekondes herbegin}}</translation> -<translation id="646620589868199210">Gereed om Chromium-bedryfstelsel te installeer</translation> <translation id="6475912303565314141">Dit beheer ook watter bladsy gewys word wanneer jy Chromium begin.</translation> <translation id="6510925080656968729">Deïnstalleer Chromium</translation> <translation id="6542839706527980775">Elke profiel hou sy eie Chromium-inligting soos boekmerke, geskiedenis, wagwoorde en meer</translation>
diff --git a/chrome/app/resources/chromium_strings_am.xtb b/chrome/app/resources/chromium_strings_am.xtb index a19be50..d37b269 100644 --- a/chrome/app/resources/chromium_strings_am.xtb +++ b/chrome/app/resources/chromium_strings_am.xtb
@@ -83,7 +83,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> በChromium መገለጫዎች መካከል መቀያየር ይችላል</translation> <translation id="3509308970982693815">እባክዎ ሁሉንም የChromium መስኮቶችን ይዝጉና እንደገና ይሞክሩ።</translation> <translation id="3575459661164320785">በእርስዎ ኮምፒውተር ላይ ጎጂ ሶፍትዌር አለ። Chromium የእርስዎን አሰሳ እንደገና በጤናማነት እንዲሠራ ለማድረግ ሊያስወግደው፣ የእርስዎን ቅንብሮች እንደነበሩ ሊመልሳቸው እና ቅጥያዎችን ሊያሰናክል ይችላል።</translation> -<translation id="3610776674893128619">ደረቅ አንጻፊን ደምስስ እና Chromium OSን ጫን</translation> <translation id="3639635944603682591">ይህ ሰው የአሰሳ ውሂብ ከዚህ መሣሪያ ይሰረዛል። ውሂቡን መልሶ ለማግኘት እንደ <ph name="USER_EMAIL" /> ሆነው ወደ Chromium ይግቡ።</translation> <translation id="364817392622123556">{COUNT,plural, =0{አዲስ ዝማኔ ለChromium የሚገኝ ሲሆን ልክ ዳግም ሲያስጀምሩት ይተገበራል።}=1{አዲስ ዝማኔ ለChromium የሚገኝ ሲሆን ልክ ዳግም ሲያስጀምሩት ይተገበራል። የእርስዎ ማንነት የማያሳውቅ መስኮት ዳግም አይከፈትም}one{አዲስ ዝማኔ ለChromium የሚገኝ ሲሆን ልክ ዳግም ሲያስጀምሩት ይተገበራል። የእርስዎ # ማንነት የማያሳውቁ መስኮቶች ዳግም አይከፈቱም}other{አዲስ ዝማኔ ለChromium የሚገኝ ሲሆን ልክ ዳግም ሲያስጀምሩት ይተገበራል። የእርስዎ # ማንነት የማያሳውቁ መስኮቶች ዳግም አይከፈቱም}}</translation> <translation id="3651803019964686660">አንድ ቁጥር ከ<ph name="ORIGIN" /> ወደ የእርስዎ Android ስልክ ለመላክ በሁለቱም መሣሪያዎች ላይ በመለያ ወደ Chromium ይግቡ።</translation> @@ -165,15 +164,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> አደገኛ ነው፣ ስለዚህ Chromium አግዶታል።</translation> <translation id="6134968993075716475">የጥንቃቄ አሰሳ ጠፍቷል። Chromium እንዲያበሩት ይመክራል።</translation> <translation id="6145820983052037069">እዚህ በChromium መገለጫዎች መካከል መቀያየር ይችላሉ</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Chromium OSን ለመጫን ዝግጁ ነን! አንድ ጊዜ ከቀጠሉ በኋላ፦ - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ፋይሎች፣ ውሂብ እና አሁን ያለው የእርስዎ ሥርዓተ ክወና ይደመሰሳሉ። - <ph name="LIST_ITEM" />Chromium OS ይጫናል። - <ph name="LIST_ITEM" />አንዴ ጭነቱ ከተጠናቀቀ በኋላ የእርስዎ መሣሪያ ይዘጋል። - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />አንድ የመጨረሻ ማስታወሻ፦ መጫን ሙሉውን የእርስዎ ደረቅ አንጻፊ ይደመስሳል። እባክዎ የሚጨነቁለት የማንኛውም ውሂብ በምትኬ መቀመጡን ያረጋግጡ።<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />አንዴ መጫን ከተጀመረ በኋላ ሊሰረዝ አይችልም።<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">በእርስዎ <ph name="TARGET_DEVICE_NAME" /> ላይ በመለያ ወደ Chromium መግባትዎን ያረጋግጡ እና እንደገና ለመላክ ይሞክሩ።</translation> <translation id="6212496753309875659">ይህ ኮምፒውተር አስቀድሞ ይበልጥ አዲስ የሆነ የChromium ስሪት አለው። ሶፍትዌሩ የማይሰራ ከሆነ እባክዎ Chromiumን ያራግፉና እንደገና ይሞክሩ።</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium አሁን ዳግም ይጀመራል}=1{Chromium በ1 ሰከንድ ውስጥ ዳግም ይጀመራል}one{Chromium በ# ሰከንዶች ውስጥ ዳግም ይጀመራል}other{Chromium በ# ሰከንዶች ውስጥ ዳግም ይጀመራል}}</translation> @@ -191,7 +181,6 @@ <translation id="6434250628340475518">Chromium OS ሥርዓት</translation> <translation id="6455857529632101747">ወደ Chromium መገለጫዎች እንኳን በደህና መጡ</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium በ1 ሰከንድ ውስጥ ዳግም ይጀምራል}one{Chromium በ# ሰከንዶች ውስጥ ዳግም ይጀምራል}other{Chromium በ# ሰከንዶች ውስጥ ዳግም ይጀምራል}}</translation> -<translation id="646620589868199210">Chromium OSን ለመጫን ዝግጁ</translation> <translation id="6475912303565314141">እንዲሁም Chromiumን ሲጀምሩት የሚታየውን ገጽ ይቆጣጠራል።</translation> <translation id="6510925080656968729">Chromiumን ያራግፉ</translation> <translation id="6542839706527980775">እያንዳንዱ መገለጫ እንደ ዕልባቶች፣ ታሪክ፣ የይለፍ ቃላት እና ሌሎችም ያሉ የራሱ የChromium መረጃዎችን ይይዛል</translation>
diff --git a/chrome/app/resources/chromium_strings_ar.xtb b/chrome/app/resources/chromium_strings_ar.xtb index 9147c00..456eb1c0 100644 --- a/chrome/app/resources/chromium_strings_ar.xtb +++ b/chrome/app/resources/chromium_strings_ar.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931">يعمل الاختصار <ph name="SHORTCUT" /> على التبديل بين الملفات الشخصية على Chromium.</translation> <translation id="3509308970982693815">يُرجى إغلاق جميع نوافذ Chromium وإعادة المحاولة.</translation> <translation id="3575459661164320785">هناك برنامج ضار على جهاز الكمبيوتر. ويمكن لمتصفِّح Chrome إزالته واستعادة إعداداتك وإيقاف الإضافات لكي يعمل متصفِّحك بشكلٍ طبيعي من جديد.</translation> -<translation id="3610776674893128619">مَحو بيانات محرك الأقراص الثابتة وتثبيت نظام التشغيل Chromium</translation> <translation id="3639635944603682591">ستُحذَف بيانات تصفُّح هذا المستخدم من هذا الجهاز. ولاسترداد البيانات، سجّل الدخول إلى Chromium بصفتك <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{يتوفر تحديث جديد لبرنامج Chromium وسيتم تطبيقه عند إعادة التشغيل.}=1{يتوفر تحديث جديد لبرنامج Chromium وسيتم تطبيقه عند إعادة التشغيل. لن تتم إعادة فتح نافذة التصفح المتخفي.}two{يتوفر تحديث جديد لبرنامج Chromium وسيتم تطبيقه عند إعادة التشغيل. لن تتم إعادة فتح نافذتَي التصفح المتخفي.}few{يتوفر تحديث جديد لبرنامج Chromium وسيتم تطبيقه عند إعادة التشغيل. لن تتم إعادة فتح نوافذ التصفّح المتخفي البالغ عددها #.}many{يتوفر تحديث جديد لبرنامج Chromium وسيتم تطبيقه عند إعادة التشغيل. لن تتم إعادة فتح نوافذ التصفّح المتخفي البالغ عددها #.}other{يتوفر تحديث جديد لبرنامج Chromium وسيتم تطبيقه عند إعادة التشغيل. لن تتم إعادة فتح نوافذ التصفّح المتخفي البالغ عددها #.}}</translation> <translation id="3651803019964686660">لإرسال رقم من <ph name="ORIGIN" /> إلى هاتفك الذي يعمل بنظام التشغيل Android، يُرجى تسجيل الدخول إلى Chromium على الجهازَين.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363">ملف <ph name="FILE_NAME" /> ضار، لذلك فقد حظره Chromium.</translation> <translation id="6134968993075716475">تم إيقاف "التصفّح الآمن" ويقترح متصفّح Chrome تفعيله.</translation> <translation id="6145820983052037069">يمكنك من هنا التبديل بين الملفات الشخصية على Chromium.</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />نحن جاهزون لتثبيت نظام التشغيل Chromium. عند الاستمرار في عملية التثبيت: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />سيتم محو الملفات والبيانات ونظام التشغيل الحالي. - <ph name="LIST_ITEM" />سيتم تثبيت نظام التشغيل Chromium. - <ph name="LIST_ITEM" />سيتم إيقاف تشغيل الجهاز عند اكتمال التثبيت. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />تذكير أخير: ستؤدي عملية التثبيت إلى محو بيانات محرك الأقراص الثابتة بالكامل. يُرجى التأكّد من احتفاظك بنسخة احتياطية من أي بيانات ضرورية.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />عند بدء عملية التثبيت، لا يمكن إلغاؤها.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">يُرجى التأكُّد من تسجيل الدخول إلى متصفِّح Chromium على جهازك <ph name="TARGET_DEVICE_NAME" /> ثم محاولة الإرسال مرة أخرى.</translation> <translation id="6212496753309875659">يحتوي هذا الكمبيوتر فعلاً على إصدار أحدث من Chromium. إذا كان البرنامج لا يعمل، يُرجى إزالة Chromium وإعادة المحاولة.</translation> <translation id="6219195342503754812">{0,plural, =0{ستتم إعادة تشغيل Chromium الآن}=1{ستتم إعادة تشغيل Chromium في غضون ثانية واحدة}two{ستتم إعادة تشغيل Chromium في غضون ثانيتين}few{ستتم إعادة تشغيل Chromium في غضون # ثوان}many{ستتم إعادة تشغيل Chromium في غضون # ثانيةً}other{ستتم إعادة تشغيل Chromium في غضون # ثانية}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">نظام التشغيل Chromium</translation> <translation id="6455857529632101747">مرحبًا بك في الملفات الشخصية على Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{ستتم إعادة تشغيل Chromium خلال ثانية واحدة}zero{ستتم إعادة تشغيل Chromium خلال # ثانية}two{ستتم إعادة تشغيل Chromium خلال ثانيتين (#)}few{ستتم إعادة تشغيل Chromium خلال # ثوانٍ}many{ستتم إعادة تشغيل Chromium خلال # ثانيةً}other{ستتم إعادة تشغيل Chromium خلال # ثانية}}</translation> -<translation id="646620589868199210">نحن مستعدون لتثبيت نظام التشغيل Chromium</translation> <translation id="6475912303565314141">كما أنها تتحكم في الصفحة التي تظهر عند تشغيل Chromium.</translation> <translation id="6510925080656968729">إزالة Chromium</translation> <translation id="6542839706527980775">يحتفظ كل ملف شخصي بالمعلومات الخاصة به على Chromium، مثل الإشارات المرجعية والسجلّ وكلمات المرور وغير ذلك.</translation>
diff --git a/chrome/app/resources/chromium_strings_as.xtb b/chrome/app/resources/chromium_strings_as.xtb index baca2949..36033068 100644 --- a/chrome/app/resources/chromium_strings_as.xtb +++ b/chrome/app/resources/chromium_strings_as.xtb
@@ -83,7 +83,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> টিপি Chromiumৰ প্ৰ’ফাইলসমূহৰ মাজত সালসলনি কৰিব পাৰি</translation> <translation id="3509308970982693815">অনুগ্ৰহ কৰি Chromiumৰ সকলো ৱিণ্ড’ বন্ধ কৰি পুনৰ চেষ্টা কৰক।</translation> <translation id="3575459661164320785">আপোনাৰ কম্পিউটাৰত কোনো ক্ষতিকাৰক ছফ্টৱেৰ আছে। Chromiumএ আপোনাৰ ব্ৰাউজাৰে সাধাৰণভাৱে কাম কৰিবলৈ এইটো আঁতৰাব পাৰে, আপোনাৰ ছেটিং পুনঃস্থাপন কৰিব পাৰে আৰু এক্সটেনশ্বন অক্ষম কৰিব পাৰে।</translation> -<translation id="3610776674893128619">হাৰ্ড ড্ৰাইভটো মচি Chromium OS ইনষ্টল কৰক</translation> <translation id="3639635944603682591">এই ডিভাইচটোৰ পৰা এই লোকজনৰ ব্ৰাউজিঙৰ ডেটা মচা যাব। ডেটা পুনৰুদ্ধাৰ কৰিবলৈ Chromiumত <ph name="USER_EMAIL" /> হিচাপে ছাইন ইন কৰক।</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromiumৰ এটা নতুন আপডে’ট আহিছে আৰু আপুনি Chromium পুনৰ লঞ্চ কৰিলেই সেইটো প্ৰযোজ্য হ’ব।}=1{Chromiumৰ এটা নতুন আপডে’ট আহিছে আৰু আপুনি Chromium পুনৰ লঞ্চ কৰিলেই সেইটো প্ৰযোজ্য হ’ব। আপোনাৰ.ইনক’গনিট' ৱিণ্ড'খন পুনৰ খুলিব নোৱাৰিব।}one{Chromiumৰ এটা নতুন আপডে’ট আহিছে আৰু আপুনি Chromium পুনৰ লঞ্চ কৰিলেই সেইটো প্ৰযোজ্য হ’ব। আপোনাৰ #খন.ইনক’গনিট' ৱিণ্ড' পুনৰ খুলিব নোৱাৰিব।}other{Chromiumৰ এটা নতুন আপডে’ট আহিছে আৰু আপুনি Chromium পুনৰ লঞ্চ কৰিলেই সেইটো প্ৰযোজ্য হ’ব। আপোনাৰ #খন.ইনক’গনিট' ৱিণ্ড' পুনৰ খুলিব নোৱাৰিব।}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" />ৰ পৰা এটা নম্বৰ আপোনাৰ Android ফ’নলৈ পঠিয়াবলৈ দুয়োটা ডিভাইচত Chromiumত ছাইন ইন কৰক।</translation> @@ -165,15 +164,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> ক্ষতিকাৰক বাবে Chromiumএ ইয়াক অৱৰোধ কৰিছে।</translation> <translation id="6134968993075716475">সুৰক্ষিত ব্ৰাউজিং অফ আছে। Chromiumএ ইয়াক অন কৰাটো চুপাৰিছ কৰে।</translation> <translation id="6145820983052037069">ইয়াত আপুনি Chromiumৰ প্ৰ’ফাইলসমূহৰ মাজত সালসলনি কৰিব পাৰে</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />আমি Chromium OS ইনষ্টল কৰিবলৈ সাজু! আপুনি আগবাঢ়িলে: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ফাইল, ডেটা আৰু আপোনাৰ বৰ্তমানৰ অপাৰেটিং ছিষ্টেমটো মচা হ’ব। - <ph name="LIST_ITEM" />Chromium OS ইনষ্টল কৰা হ’ব। - <ph name="LIST_ITEM" />ইনষ্টল কৰাটো সম্পূৰ্ণ হ’লে আপোনাৰ ডিভাইচটো শ্বাট ডাউন হ’ব। - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />অন্তিম ৰিমাইণ্ডাৰ: ইনষ্টল কৰাটোৱে আপোনাৰ গোটেই হাৰ্ড ড্ৰাইভটো মচিব। অনুগ্ৰহ কৰি আপুনি গুৰুত্বপূৰ্ণ বুলি বিবেচনা কৰা যিকোনো ডেটাৰ বেক আপ লোৱাটো নিশ্চিত কৰক।<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ইনষ্টল কৰাটো আৰম্ভ হ’লে ইয়াক বাতিল কৰিব নোৱাৰি।<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">আপোনাৰ <ph name="TARGET_DEVICE_NAME" />ত Chromiumত আপুনি ছাইন ইন হৈ থকাটো নিশ্চিত কৰক আৰু তাৰ পাছত পুনৰ পঠিয়াবলৈ চেষ্টা কৰক।</translation> <translation id="6212496753309875659">এই কম্পিউটাৰটোত ইতিমধ্যে Chromiumৰ অধিক শেহতীয়া সংস্কৰণ আছে। যদি ছফ্টৱেৰটোৱে কাম কৰা নাই তেন্তে Chromium আনইনষ্টল কৰি আকৌ চেষ্টা কৰক।</translation> <translation id="6219195342503754812">{0,plural, =0{এতিয়া Chromium পুনৰ লঞ্চ হ’ব}=1{১ ছেকেণ্ডত Chromium পুনৰ লঞ্চ হ’ব}one{# ছেকেণ্ডত Chromium পুনৰ লঞ্চ হ’ব}other{# ছেকেণ্ডত Chromium পুনৰ লঞ্চ হ’ব}}</translation> @@ -191,7 +181,6 @@ <translation id="6434250628340475518">Chromium OS ছিষ্টেম</translation> <translation id="6455857529632101747">Chromiumৰ প্ৰ’ফাইললৈ স্বাগতম</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium ১ ছেকেণ্ডত ৰিষ্টাৰ্ট হ’ব}one{Chromium # ছেকেণ্ডত ৰিষ্টাৰ্ট হ’ব}other{Chromium # ছেকেণ্ডত ৰিষ্টাৰ্ট হ’ব}}</translation> -<translation id="646620589868199210">ইনষ্টল কৰিবলৈ সাজু Chromium OS</translation> <translation id="6475912303565314141">আপুনি Chromium আৰম্ভ কৰিলে কি পৃষ্ঠা দেখুওৱা হ'ব সেয়াও ই নিয়ন্ত্ৰণ কৰে।</translation> <translation id="6510925080656968729">Chromium আনইনষ্টল কৰক</translation> <translation id="6542839706527980775">প্ৰতিটো প্ৰ'ফাইলে ইয়াৰ নিজৰ Chromiumৰ তথ্য ৰাখে, যেনে বুকমাৰ্ক, ইতিহাস, পাছৱৰ্ড আৰু অধিক</translation>
diff --git a/chrome/app/resources/chromium_strings_az.xtb b/chrome/app/resources/chromium_strings_az.xtb index 22415f7..3f02989 100644 --- a/chrome/app/resources/chromium_strings_az.xtb +++ b/chrome/app/resources/chromium_strings_az.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> Chromium profilləri arasında keçid edə bilər</translation> <translation id="3509308970982693815">Bütün Chromium pəncərələrini bağlayın və yenidən cəhd edin.</translation> <translation id="3575459661164320785">Kompüterdə zərərli proqram təminatı var. Brauzerin normal şəkldə işləməsi üçün Chromium onu silə, ayarları bərpa edə və artırmaları deaktiv edə bilər.</translation> -<translation id="3610776674893128619">Sərt Diski Silin və Chromium OS'i quraşdırın</translation> <translation id="3639635944603682591">Bu şəxsin axtarış datası bu cihazdan silinəcək. Datanı bərpa etmək üçün Chromium'a <ph name="USER_EMAIL" /> olaraq daxil olun.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium üçün yeni güncəlləmə əlçatandır. Chromium yenidən işə başladıqdan sonra tətbiq ediləcək.}=1{Chromium üçün yeni güncəlləmə əlçatandır. Chromium yenidən işə başladıqdan sonra tətbiq ediləcək. Anonim pəncərəniz yenidən açılmayacaq.}other{Chromium üçün yeni güncəlləmə əlçatandır. Chromium yenidən işə başladıqdan sonra tətbiq ediləcək. # Anonim pəncərəniz yenidən açılmayacaq.}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" /> cihazından Android telefonunuza nömrə göndərmək üçün hər iki cihazda Chromium'a daxil olun.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> təklükəli olduğu üçün Chromium onu blok etdi.</translation> <translation id="6134968993075716475">Təhlükəsiz Baxış deaktivdir. Chromium onu aktiv etməyi tövsiyə edir.</translation> <translation id="6145820983052037069">Burada Chromium profilləri arasında keçid edə bilərsiniz</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Chromium OS'i quraşdırmağa hazırıq! Başladıqda: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Fayllar, data və cari əməliyyat sisteminiz silinəcək. - <ph name="LIST_ITEM" />Chromium OS quraşdırılacaq. - <ph name="LIST_ITEM" />Quraşdırma başa çatdıqdan sonra cihazınız sönəcək. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Son xatırlatma: quraşdırma nəticəsində sərt diskdəki bütün data silinəcək. Lazımlı bütün datanı yedəkləyin.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Quraşdırma başladıqdan sonra ləğv edilə bilməz.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177"><ph name="TARGET_DEVICE_NAME" /> cihazınızda Chromium'a daxil olduğunuza əmin olun və sonra yenidən göndərin.</translation> <translation id="6212496753309875659">Bu kompüterdə Chromium'um daha son versiyası var. Proqram təminatı işləmirsə, Chroimum'u sistemdən silin və yenidən cəhd edin.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium indi yenidən başlayacaq}=1{Chromium 1 saniyəyə yenidən başlayacaq}other{Chromium # saniyəyə yenidən başlayacaq}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">Chromium OS Sistemi</translation> <translation id="6455857529632101747">Chromium profillərinə xoş gəlmisiniz</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 saniyəyə yenidən başlayacaq}other{Chromium # saniyəyə yenidən başlayacaq}}</translation> -<translation id="646620589868199210">Chromium OS'i quraşdırmağa hazırıq</translation> <translation id="6475912303565314141">Həmçinin, Chromium açılanda hansı səhifənin göstərildiyini idarə edir.</translation> <translation id="6510925080656968729">Chromium'u sistemdən silin</translation> <translation id="6542839706527980775">Hər bir profil əlfəcinlər, tarixçələr, parollar və s. kimi öz Chromium məlumatlarını saxlayır</translation>
diff --git a/chrome/app/resources/chromium_strings_be.xtb b/chrome/app/resources/chromium_strings_be.xtb index 759fac9..52bd96e 100644 --- a/chrome/app/resources/chromium_strings_be.xtb +++ b/chrome/app/resources/chromium_strings_be.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931">Пераключацца паміж профілямі Chromium можна, выкарыстоўваючы спалучэнне клавіш <ph name="SHORTCUT" /></translation> <translation id="3509308970982693815">Закрыйце ўсе вокны Chromium і паўтарыце спробу.</translation> <translation id="3575459661164320785">На камп'ютары знойдзена шкоднае ПЗ. Chromium можа яго выдаліць, аднавіць налады і выключыць пашырэнні, каб браўзер змог зноў нармальна працаваць.</translation> -<translation id="3610776674893128619">Сцерці даныя на цвёрдым дыску і ўсталяваць Chromium OS</translation> <translation id="3639635944603682591">Даныя аб прагледжаных гэтым карыстальнікам старонках будуць выдалены з прылады. Каб аднавіць гэтыя даныя, увайдзіце ў Chromium як <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Даступна новае абнаўленне для Chromium. Яно будзе прыменена пасля перазапуску.}=1{Даступна новае абнаўленне для Chromium. Яно будзе прыменена пасля перазапуску. Акно ў рэжыме інкогніта не будзе адкрыта паўторна.}one{Даступна новае абнаўленне для Chromium. Яно будзе прыменена пасля перазапуску. # акно ў рэжыме інкогніта не будзе адкрыта паўторна.}few{Даступна новае абнаўленне для Chromium. Яно будзе прыменена пасля перазапуску. # акны ў рэжыме інкогніта не будуць адкрыты паўторна.}many{Даступна новае абнаўленне для Chromium. Яно будзе прыменена пасля перазапуску. # вокнаў у рэжыме інкогніта не будуць адкрыты паўторна.}other{Даступна новае абнаўленне для Chromium. Яно будзе прыменена пасля перазапуску. # акна ў рэжыме інкогніта не будуць адкрыты паўторна.}}</translation> <translation id="3651803019964686660">Каб адпраўляць нумары з <ph name="ORIGIN" /> на свой тэлефон Android, увайдзіце ў Chromium на абедзвюх прыладах.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363">Файл <ph name="FILE_NAME" /> небяспечны, таму Chromium заблакіраваў яго.</translation> <translation id="6134968993075716475">"Бяспечны прагляд" выключаны. Chromium рэкамендуе ўключыць гэты рэжым.</translation> <translation id="6145820983052037069">Пераключацца паміж профілямі Chromium можна тут</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Цяпер можна ўсталёўваць Chromium OS! Пасля запуску ўсталявання адбудзецца наступнае: -<ph name="BEGIN_LIST" /> -<ph name="LIST_ITEM" />Файлы, даныя і бягучая аперацыйная сістэма будуць сцёрты. - <ph name="LIST_ITEM" />Будзе ўсталявана аперацыйная сістэма Chromium OS. - <ph name="LIST_ITEM" />Пасля заканчэння працэсу ўсталявання прылада завершыць працу. - <ph name="END_LIST" /> -<ph name="END_PARAGRAPH1" /> -<ph name="BEGIN_PARAGRAPH2" />Яшчэ раз напамінаем, што пры ўсталяванні ўсе даныя на цвёрдым дыску будуць сцёрты. Упэўніцеся, што вы маеце іх рэзервовую копію.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Пасля таго як усталяванне пачнецца, працэс нельга будзе скасаваць.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Упэўніцеся, што вы ўвайшлі ў Chromium на прыладзе "<ph name="TARGET_DEVICE_NAME" />", а затым паспрабуйце ажыццявіць адпраўку яшчэ раз.</translation> <translation id="6212496753309875659">На гэтым камп'ютары ўжо ўсталявана навейшая версія Chromium. Калі праграма не працуе, выдаліце Chromium і паўтарыце спробу.</translation> <translation id="6219195342503754812">{0,plural, =0{Перазапуск Chromium адбудзецца зараз}=1{Chromium будзе перазапушчаны праз 1 секунду}one{Chromium будзе перазапушчаны праз # секунду}few{Chromium будзе перазапушчаны праз # секунды}many{Chromium будзе перазапушчаны праз # секунд}other{Chromium будзе перазапушчаны праз # секунды}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Сістэма Chromium OS</translation> <translation id="6455857529632101747">Вітаем у профілях Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Перазапуск Chromium адбудзецца праз 1 секунду}one{Перазапуск Chromium адбудзецца праз # секунду}few{Перазапуск Chromium адбудзецца праз # секунды}many{Перазапуск Chromium адбудзецца праз # секунд}other{Перазапуск Chromium адбудзецца праз # секунды}}</translation> -<translation id="646620589868199210">Вы гатовыя да ўсталявання Chromium OS?</translation> <translation id="6475912303565314141">Таксама вызначае, якая старонка паказваецца пра запуску Chromium.</translation> <translation id="6510925080656968729">Выдаліць Chromium</translation> <translation id="6542839706527980775">У кожным профілі захоўваюцца свае даныя Chromium, напрыклад закладкі, гісторыя, паролі і не толькі</translation>
diff --git a/chrome/app/resources/chromium_strings_bg.xtb b/chrome/app/resources/chromium_strings_bg.xtb index d9b3aa2..af025c2 100644 --- a/chrome/app/resources/chromium_strings_bg.xtb +++ b/chrome/app/resources/chromium_strings_bg.xtb
@@ -80,7 +80,6 @@ <translation id="3497319089134299931">Посредством <ph name="SHORTCUT" /> можете да превключвате между потребителските профили в Chromium</translation> <translation id="3509308970982693815">Моля, затворете всички прозорци на Chromium и опитайте отново.</translation> <translation id="3575459661164320785">На компютъра ви има опасен софтуер. Chromium може да го премахне, да възстанови настройките ви и да деактивира разширенията, така че браузърът отново да заработи нормално.</translation> -<translation id="3610776674893128619">Изтриване на твърдия диск и инсталиране на Chromium OS</translation> <translation id="3639635944603682591">Данните за сърфирането на този човек ще бъдат изтрити от устройството. За да ги възстановите, влезте в Chromium като <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Налице е актуализация за Chromium, която ще бъде приложена веднага щом рестартирате.}=1{Налице е актуализация за Chromium, която ще бъде приложена веднага щом рестартирате. Прозорецът ви в режим „инкогнито“ няма да бъде отворен отново.}other{Налице е актуализация за Chromium, която ще бъде приложена веднага щом рестартирате. Вашите # прозореца в режим „инкогнито“ няма да бъдат отворени отново.}}</translation> <translation id="3651803019964686660">За да изпратите номер от <ph name="ORIGIN" /> до телефона си с Android, влезте в Chromium и на двете устройства.</translation> @@ -162,15 +161,6 @@ <translation id="6129621093834146363">Chromium блокира „<ph name="FILE_NAME" />“, тъй като файлът е опасен.</translation> <translation id="6134968993075716475">Функцията „Безопасно сърфиране“ е изключена. Chromium препоръчва да я включите.</translation> <translation id="6145820983052037069">Оттук можете да превключвате между потребителските профили в Chromium</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Готови сме да инсталираме Chromium OS! Когато продължите: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />файловете, данните и текущата ви операционна система ще бъдат изтрити; - <ph name="LIST_ITEM" />Chromium OS ще бъде инсталирана; - <ph name="LIST_ITEM" />устройството ви ще се изключи след завършване на инсталирането. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Последно напомняне: при инсталирането целият ви твърд диск ще бъде изтрит. Уверете се, че имате резервно копие на всичките си важни данни.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />След като инсталирането започне, не може да бъде отменено.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Проверете дали сте влезли в Chromium на устройството си <ph name="TARGET_DEVICE_NAME" /> и опитайте да изпратите отново.</translation> <translation id="6212496753309875659">На този компютър вече има по-скорошна версия на Chromium. Ако софтуерът не работи, моля, деинсталирайте Chromium и опитайте отново.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium ще се стартира отново сега}=1{Chromium ще се стартира отново след 1 секунда}other{Chromium ще се стартира отново след # секунди}}</translation> @@ -188,7 +178,6 @@ <translation id="6434250628340475518">Система Chromium OS</translation> <translation id="6455857529632101747">Добре дошли в потребителските профили в Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium ще се рестартира след 1 секунда}other{Chromium ще се рестартира след # секунди}}</translation> -<translation id="646620589868199210">Chromium OS е готова за инсталиране</translation> <translation id="6475912303565314141">То също контролира коя страница се показва при стартиране на Chromium.</translation> <translation id="6510925080656968729">Деинсталиране на Chromium</translation> <translation id="6542839706527980775">Всеки потребителски профил съхранява своя собствена информация в Chromium, като например отметки, история, пароли и др.</translation>
diff --git a/chrome/app/resources/chromium_strings_bn.xtb b/chrome/app/resources/chromium_strings_bn.xtb index 0e9c377..888980f 100644 --- a/chrome/app/resources/chromium_strings_bn.xtb +++ b/chrome/app/resources/chromium_strings_bn.xtb
@@ -81,7 +81,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> ব্যবহার করে একটি Chromium প্রোফাইল থেকে আরেকটিতে পাল্টানো যায়</translation> <translation id="3509308970982693815">দয়া করে সব Chromium উইন্ডো বন্ধ করুন ও আবার চেষ্টা করুন৷</translation> <translation id="3575459661164320785">আপনার কম্পিউটারে ক্ষতিকারক সফ্টওয়্যার পাওয়া গেছে। Chromium এটিকে সরিয়ে দিতে পারে, আপনার সেটিংস রিস্টোর করতে পারে এবং বিভিন্ন এক্সটেনশন বন্ধ করে দিতে পারে যাতে আপনার ব্রাউজার আবার স্বাভাবিকভাবে কাজ করে।</translation> -<translation id="3610776674893128619">হার্ড ড্রাইভের ডেটা মুছে ফেলে Chromium OS ইনস্টল করুন</translation> <translation id="3639635944603682591">এই ডিভাইস থেকে এই ব্যক্তির ব্রাউজিং ডেটা মুছে ফেলা হবে। ডেটা ফিরিয়ে আনতে Chromium-এ <ph name="USER_EMAIL" /> হিসেবে সাইন-ইন করুন।</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium-এর একটি নতুন আপডেট উপলভ্য আছে এবং আপনি আবার চালু করলেই সেটি প্রয়োগ করা হবে।}=1{Chromium-এর একটি নতুন আপডেট উপলভ্য আছে এবং আপনি আবার চালু করলেই সেটি প্রয়োগ করা হবে। আপনার ছদ্মবেশী উইন্ডো আবার খুলবে না।}one{Chromium-এর একটি নতুন আপডেট উপলভ্য আছে এবং আপনি আবার চালু করলেই সেটি প্রয়োগ করা হবে। আপনার #টি ছদ্মবেশী উইন্ডো আবার খুলবে না।}other{Chromium-এর একটি নতুন আপডেট উপলভ্য আছে এবং আপনি আবার চালু করলেই সেটি প্রয়োগ করা হবে। আপনার #টি ছদ্মবেশী উইন্ডো আবার খুলবে না।}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" /> থেকে আপনার Android ফোনে একটি নম্বর পাঠাতে, উভয় ডিভাইসের Chromium-এ সাইন-ইন করুন।</translation> @@ -163,15 +162,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> বিপজ্জনক, তাই Chromium এটিকে অবরুদ্ধ করেছে।</translation> <translation id="6134968993075716475">'Safe Browsing'-এর সুবিধা বন্ধ করা আছে। তবে এটি চালু রাখার জন্য Chromium আপনাকে সাজেস্ট করছে।</translation> <translation id="6145820983052037069">আপনি এখানে একটি Chromium প্রোফাইল থেকে আরেকটিতে পাল্টাতে পারেন</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />আমরা Chromium OS ইনস্টল করার জন্য প্রস্তুত! একবার শুরু করে ফেললে: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />সব ফাইল, ডেটা ও আপনার বর্তমান অপারেটিং সিস্টেম মুছে যাবে। - <ph name="LIST_ITEM" />Chromium OS ইনস্টল করা হবে। - <ph name="LIST_ITEM" />ইনস্টল করা হয়ে গেলে আপনার ডিভাইস বন্ধ হয়ে যাবে। - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />শেষ বারের মতো রিমাইন্ডার: ইনস্টল করা হলে আপনার হার্ড ড্রাইভের সমস্ত ডেটা মুছে যাবে। দরকারি সমস্ত ডেটার ব্যাক-আপ নেওয়া হয়েছে কিনা দেখে নিন।<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ইনস্টল করা একবার শুরু হয়ে গেলে আর বন্ধ করা যাবে না।<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">আপনার <ph name="TARGET_DEVICE_NAME" />-এর Chromium-এ সাইন-ইন করেছেন কিনা তা দেখে নিন এবং তারপরে আবার পাঠানোর চেষ্টা করুন।</translation> <translation id="6212496753309875659">এই কম্পিউটারে ইতিমধ্যে Chromium-এর আরও একটি সাম্প্রতিক ভার্সন রয়েছে৷ যদি সফ্টওয়্যার কাজ না করে, দয়া করে Chromium আনইনস্টল করুন এবং আবার চেষ্টা করুন৷</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium এখন আবার লঞ্চ হবে}=1{Chromium ১ সেকেন্ডের মধ্যে আবার লঞ্চ হবে}one{Chromium # সেকেন্ডের মধ্যে আবার লঞ্চ হবে}other{Chromium # সেকেন্ডের মধ্যে আবার লঞ্চ হবে}}</translation> @@ -189,7 +179,6 @@ <translation id="6434250628340475518">Chromium OS সিস্টেম</translation> <translation id="6455857529632101747">Chromium প্রোফাইল-এ স্বাগতম</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium ১ সেকেন্ডের মধ্যে রিস্টার্ট হবে}one{Chromium # সেকেন্ডের মধ্যে রিস্টার্ট হবে}other{Chromium # সেকেন্ডের মধ্যে রিস্টার্ট হবে}}</translation> -<translation id="646620589868199210">Chromium OS ইনস্টল করার জন্য প্রস্তুত</translation> <translation id="6475912303565314141">আপনি Chromium শুরু করলে কোন পৃষ্ঠাটি দেখানো হবে তাও এটি নিয়ন্ত্রণ করে।</translation> <translation id="6510925080656968729">Chromium আনইনস্টল করুন</translation> <translation id="6542839706527980775">প্রতিটি প্রোফাইলে বুকমার্ক, ইতিহাস, পাসওয়ার্ড ও আরও অনেক কিছুর মতো তার নিজস্ব Chromium তথ্য আছে</translation>
diff --git a/chrome/app/resources/chromium_strings_bs.xtb b/chrome/app/resources/chromium_strings_bs.xtb index fee9b961..7c54f30b 100644 --- a/chrome/app/resources/chromium_strings_bs.xtb +++ b/chrome/app/resources/chromium_strings_bs.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931">Prečicom <ph name="SHORTCUT" /> možete prebacivati između Chromium profila</translation> <translation id="3509308970982693815">Zatvorite sve prozore Chromiuma i pokušajte ponovo.</translation> <translation id="3575459661164320785">Na vašem računaru se nalazi štetni softver. Chromium ga može ukloniti, vratiti vaše postavke i onemogućiti ekstenziju kako bi vaš preglednik ponovo radio normalno.</translation> -<translation id="3610776674893128619">Potpuno izbriši tvrdi disk i instaliraj Chromium OS</translation> <translation id="3639635944603682591">Podaci o pregledavanju za tu osobu izbrisat će se s ovog uređaja. Da biste vratili te podatke, prijavite se na Chromium kao <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Dostupno je novo ažuriranje za Chromium i primijenit će se čim ga ponovo pokrenete.}=1{Dostupno je novo ažuriranje za Chromium i primijenit će se čim ga ponovo pokrenete. Vaš anonimni prozor se neće ponovo otvoriti.}one{Dostupno je novo ažuriranje za Chromium i primijenit će se čim ga ponovo pokrenete. Vaš # anonimni prozor se neće ponovo otvoriti.}few{Dostupno je novo ažuriranje za Chromium i primijenit će se čim ga ponovo pokrenete. Vaša # anonimna prozora se neće ponovo otvoriti.}other{Dostupno je novo ažuriranje za Chromium i primijenit će se čim ga ponovo pokrenete. Vaših # anonimnih prozora se neće ponovo otvoriti.}}</translation> <translation id="3651803019964686660">Da pošaljete broj s uređaja <ph name="ORIGIN" /> na svoj Android telefon, prijavite se u Chromium na oba uređaja.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363">Fajl <ph name="FILE_NAME" /> je opasan pa ga je Chromium blokirao.</translation> <translation id="6134968993075716475">Sigurno pregledanje je isključeno. Chromium preporučuje da ga uključite.</translation> <translation id="6145820983052037069">Ovdje možete prebacivati između Chromium profila</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Spremni smo instalirati Chromium OS! Kada nastavite: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Izbrisat će se fajlovi, podaci i vaš trenutni operativni sistem. - <ph name="LIST_ITEM" />Chromium OS će se instalirati. - <ph name="LIST_ITEM" />Vaš uređaj će se isključiti kada se instalacija završi. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Još jednom podsjećamo: prilikom instaliranja će se potpuno izbrisati vaš cijeli tvrdi disk. Provjerite jeste li napravili sigurnosnu kopiju podataka koji su vam bitni.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Kada instalacija započne, ne možete je otkazati.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Provjerite jeste li prijavljeni u Chromium na svom uređaju <ph name="TARGET_DEVICE_NAME" /> i zatim pokušajte poslati ponovo.</translation> <translation id="6212496753309875659">Na ovom računaru se već nalazi novija verzija Chromiuma. Ako softver ne funkcionira, deinstalirajte Chromium i pokušajte ponovo.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium će se sada ponovo pokrenuti}=1{Chromium će se ponovo pokrenuti za 1 sekundu}one{Chromium će se ponovo pokrenuti za # sekundu}few{Chromium će se ponovo pokrenuti za # sekunde}other{Chromium će se ponovo pokrenuti za # sekundi}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Sistem Chromium OS</translation> <translation id="6455857529632101747">Dobro došli u Chromium profile</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium će se ponovo pokrenuti za 1 sekundu}one{Chromium će se ponovo pokrenuti za # sekundu}few{Chromium će se ponovo pokrenuti za # sekunde}other{Chromium će se ponovo pokrenuti za # sekundi}}</translation> -<translation id="646620589868199210">Spremni ste da instalirate Chromium OS</translation> <translation id="6475912303565314141">Također kontrolira koja stranica se prikazuje kada pokrenete Chromium.</translation> <translation id="6510925080656968729">Deinstaliraj Chromium</translation> <translation id="6542839706527980775">Svaki profil sadrži svoje Chromium informacije, poput oznaka, historije, lozinki i još mnogo toga</translation>
diff --git a/chrome/app/resources/chromium_strings_ca.xtb b/chrome/app/resources/chromium_strings_ca.xtb index 00578258..90a66d29 100644 --- a/chrome/app/resources/chromium_strings_ca.xtb +++ b/chrome/app/resources/chromium_strings_ca.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> permet canviar entre perfils de Chromium</translation> <translation id="3509308970982693815">Tanqueu totes les finestres de Chromium i torneu-ho a provar.</translation> <translation id="3575459661164320785">Hi ha programari nociu a l'ordinador. Chromium el pot suprimir, restaurar la configuració i desactivar les extensions perquè el navegador torni a funcionar amb normalitat.</translation> -<translation id="3610776674893128619">Esborra la unitat de disc dur i instal·la Chromium OS</translation> <translation id="3639635944603682591">Les dades de navegació d'aquesta persona se suprimiran d'aquest dispositiu. Per recuperar-les, inicia la sessió a Chromium com a <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Hi ha una actualització nova de Chromium disponible i s'aplicarà tan aviat com el reiniciïs.}=1{Hi ha una actualització nova de Chromium disponible i s'aplicarà tan aviat com el reiniciïs. La finestra d'incògnit no es tornarà a obrir.}other{Hi ha una actualització nova de Chromium disponible i s'aplicarà tan aviat com el reiniciïs. Les # finestres d'incògnit no es tornaran a obrir.}}</translation> <translation id="3651803019964686660">Per enviar un número del dispositiu <ph name="ORIGIN" /> al teu telèfon Android, inicia la sessió a Chromium en tots dos dispositius.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363">Chromium ha bloquejat <ph name="FILE_NAME" /> perquè és perillós.</translation> <translation id="6134968993075716475">Navegació segura està desactivada. Chromium recomana activar-la.</translation> <translation id="6145820983052037069">Pots canviar entre perfils de Chromium aquí</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Estem a punt per instal·lar Chromium OS. Quan continuïs: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />S'esborraran els fitxers, les dades i el sistema operatiu actual. - <ph name="LIST_ITEM" />S'instal·larà Chromium OS. - <ph name="LIST_ITEM" />S'apagarà el dispositiu quan es completi la instal·lació. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Un últim recordatori: la instal·lació esborrarà tota la unitat de disc dur. Assegura't que hagis fet una còpia de seguretat de les dades que vols conservar.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Un cop comenci la instal·lació, no es pondrà cancel·lar.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Assegura't que tinguis la sessió iniciada a Chromium a <ph name="TARGET_DEVICE_NAME" /> i prova d'enviar-ho de nou.</translation> <translation id="6212496753309875659">Aquest equip ja té una versió més recent de Chromium. Si el programari no funciona, desinstal·leu Chromium i torneu-ho a provar.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium es reiniciarà ara}=1{Chromium es reiniciarà d'aquí a 1 segon}other{Chromium es reiniciarà d'aquí a # segons}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">Sistema Chromium OS</translation> <translation id="6455857529632101747">Et donem la benvinguda als perfils de Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium es reiniciarà d'aquí a 1 segon}other{Chromium es reiniciarà d'aquí a # segons}}</translation> -<translation id="646620589868199210">A punt per instal·lar Chromium OS</translation> <translation id="6475912303565314141">També controla la pàgina que es mostra quan inicieu Chromium.</translation> <translation id="6510925080656968729">Desinstal·la Chromium</translation> <translation id="6542839706527980775">Cada perfil conserva la seva pròpia informació de Chromium, com ara les adreces d'interès, l'historial, les contrasenyes i més</translation>
diff --git a/chrome/app/resources/chromium_strings_cs.xtb b/chrome/app/resources/chromium_strings_cs.xtb index 0475245..1868ac3e 100644 --- a/chrome/app/resources/chromium_strings_cs.xtb +++ b/chrome/app/resources/chromium_strings_cs.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931">Zkratkou <ph name="SHORTCUT" /> lze přepínat mezi profily Chromium</translation> <translation id="3509308970982693815">Zavřete prosím všechna okna prohlížeče Chromium a zkuste to znovu.</translation> <translation id="3575459661164320785">Máte v počítači škodlivý software. Chromium ho může odstranit, obnovit vaše nastavení a zakázat rozšíření, aby prohlížeč opět fungoval jako obvykle.</translation> -<translation id="3610776674893128619">Vymazat pevný disk a nainstalovat Chromium OS</translation> <translation id="3639635944603682591">Ze zařízení budou smazány údaje této osoby o prohlížení. Budete-li je chtít znovu získat, přihlaste se do prohlížeče Chromium jako <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Je k dispozici nová aktualizace prohlížeče Chromium, která bude použita po restartování.}=1{Je k dispozici nová aktualizace prohlížeče Chromium, která bude použita po restartování. Anonymní okno se neotevře znovu.}few{Je k dispozici nová aktualizace prohlížeče Chromium, která bude použita po restartování. # anonymní okna se neotevřou znovu.}many{Je k dispozici nová aktualizace prohlížeče Chromium, která bude použita po restartování. # anonymního okna se neotevře znovu.}other{Je k dispozici nová aktualizace prohlížeče Chromium, která bude použita po restartování. # anonymních oken se neotevře znovu.}}</translation> <translation id="3651803019964686660">Chcete-li poslat číslo z webu <ph name="ORIGIN" /> na svůj telefon Android, v obou zařízeních se přihlaste do prohlížeče Chromium.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363">Soubor <ph name="FILE_NAME" /> je nebezpečný, proto jej prohlížeč Chromium zablokoval.</translation> <translation id="6134968993075716475">Bezpečné prohlížení je vypnuté. Chromium ho doporučuje zapnout.</translation> <translation id="6145820983052037069">Zde můžete přepínat mezi profily Chromium</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Jsme připraveni nainstalovat systém Chromium OS. Pokud budete pokračovat: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Budou vymazány soubory, data a váš současný operační systém. - <ph name="LIST_ITEM" />Nainstaluje se systém Chromium OS. - <ph name="LIST_ITEM" />Po dokončení instalace se zařízení vypne. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Ještě poslední připomenutí: Při instalaci bude zcela vymazán pevný disk. Zkontrolujte si, zda máte všechna důležitá data zálohovaná.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Po spuštění již instalaci nelze zrušit.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Zkontrolujte, zda jste v zařízení <ph name="TARGET_DEVICE_NAME" /> přihlášeni do prohlížeče Chromium, a potom zkuste číslo odeslat znovu.</translation> <translation id="6212496753309875659">V tomto počítači je již nainstalována novější verze prohlížeče Chromium. Jestliže tento software nefunguje, odinstalujte Chromium a zkuste to znovu.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium se nyní restartuje}=1{Chromium se za 1 sekundu restartuje}few{Chromium se za # sekundy restartuje}many{Chromium se za # sekundy restartuje}other{Chromium se za # sekund restartuje}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Systém Chromium OS</translation> <translation id="6455857529632101747">Vítejte v profilech Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium se za 1 sekundu restartuje}few{Chromium se za # sekundy restartuje}many{Chromium se za # sekundy restartuje}other{Chromium se za # sekund restartuje}}</translation> -<translation id="646620589868199210">Instalace Chromium OS je připravena</translation> <translation id="6475912303565314141">Také řídí, která stránka se zobrazí při spuštění prohlížeče Chromium.</translation> <translation id="6510925080656968729">Odinstalovat Chromium</translation> <translation id="6542839706527980775">V každém profilu jsou uloženy soukromé údaje z Chromia, například záložky, historie, hesla a další</translation>
diff --git a/chrome/app/resources/chromium_strings_da.xtb b/chrome/app/resources/chromium_strings_da.xtb index e6433796..c959185 100644 --- a/chrome/app/resources/chromium_strings_da.xtb +++ b/chrome/app/resources/chromium_strings_da.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> kan skifte mellem Chromium-profiler</translation> <translation id="3509308970982693815">Luk alle Chromium-vinduer, og prøv igen.</translation> <translation id="3575459661164320785">Der er skadelig software på din computer. Chromium kan fjerne den, gendanne dine indstillinger og deaktivere udgivelser, så din browser fungerer normalt igen.</translation> -<translation id="3610776674893128619">Ryd harddisk, og installer Chromium OS</translation> <translation id="3639635944603682591">Brugerens browserdata slettes fra denne enhed. Log ind på Chromium som <ph name="USER_EMAIL" /> for at gendanne dataene.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Der er en ny Chromium-opdatering, som anvendes, så snart du genstarter.}=1{Der er en ny Chromium-opdatering, som anvendes, så snart du genstarter. Dit inkognitovindue åbnes ikke igen.}one{Der er en ny Chromium-opdatering, som anvendes, så snart du genstarter. # inkognitovindue åbnes ikke igen.}other{Der er en ny Chromium-opdatering, som anvendes, så snart du genstarter. Dine # inkognitovinduer åbnes ikke igen.}}</translation> <translation id="3651803019964686660">Hvis du vil sende et nummer fra <ph name="ORIGIN" /> til din Android-telefon, skal du logge ind på Chromium på begge enheder.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> er skadelig, så Chromium har blokeret den.</translation> <translation id="6134968993075716475">Beskyttet browsing er deaktiveret. Chromium anbefaler, at du aktiverer funktionen.</translation> <translation id="6145820983052037069">Her kan du skifte mellem Chromium-profiler</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Vi er klar til at installere Chromium OS. Når du fortsætter, sker følgende: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Filer, data og dit aktuelle operativsystem ryddes. - <ph name="LIST_ITEM" />Chromium OS installeres. - <ph name="LIST_ITEM" />Din enhed slukker, når installationen er gennemført. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />En sidste påmindelse: Når du installerer, ryddes hele din harddisk. Sørg for, at du har sikkerhedskopieret alle dine vigtigste data.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Når installationen er gået i gang, kan den ikke annulleres.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Sørg for, at du er logget ind på Chromium på din <ph name="TARGET_DEVICE_NAME" />, og prøv derefter at sende igen.</translation> <translation id="6212496753309875659">Computeren har allerede en nyere version af Chromium. Hvis softwaren ikke virker, skal du afinstallere Chromium og prøve igen.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium genstarter nu}=1{Chromium genstarter om 1 sekund}one{Chromium genstarter om # sekund}other{Chromium genstarter om # sekunder}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">Chromium OS-system</translation> <translation id="6455857529632101747">Velkommen til Chromium-profiler</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium genstarter om 1 sekund}one{Chromium genstarter om # sekund}other{Chromium genstarter om # sekunder}}</translation> -<translation id="646620589868199210">Chromium OS er klar til at blive installeret</translation> <translation id="6475912303565314141">Den styrer også, hvilken side der vises, når du åbner Chromium.</translation> <translation id="6510925080656968729">Afinstaller Chromium</translation> <translation id="6542839706527980775">Hver profil har sine egne Chromium-oplysninger som f.eks. bogmærker, historik, adgangskoder m.m.</translation>
diff --git a/chrome/app/resources/chromium_strings_de.xtb b/chrome/app/resources/chromium_strings_de.xtb index 9b3a922d..9c2fa6ec 100644 --- a/chrome/app/resources/chromium_strings_de.xtb +++ b/chrome/app/resources/chromium_strings_de.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931">Mit <ph name="SHORTCUT" /> kann zwischen Chromium-Profilen gewechselt werden</translation> <translation id="3509308970982693815">Schließen Sie bitte alle Chromium-Fenster und versuchen Sie es erneut.</translation> <translation id="3575459661164320785">Schädliche Software wurde auf Ihrem Computer gefunden. Chromium kann diese Software entfernen, Ihre Einstellungen wiederherstellen und Erweiterungen deaktivieren, sodass Ihr Browser wieder wie gewohnt funktioniert.</translation> -<translation id="3610776674893128619">Festplatte löschen & Chromium OS installieren</translation> <translation id="3639635944603682591">Die Browserdaten dieser Person werden von diesem Gerät gelöscht. Wenn Sie die Daten wiederherstellen möchten, melden Sie sich als <ph name="USER_EMAIL" /> in Chromium an.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Ein neues Update für Chromium ist verfügbar und wird installiert, sobald Sie den Browser neu starten.}=1{Ein neues Update für Chromium ist verfügbar und wird installiert, sobald Sie den Browser neu starten. Ihr Inkognitofenster wird nicht wieder geöffnet.}other{Ein neues Update für Chromium ist verfügbar und wird installiert, sobald Sie den Browser neu starten. Ihre # Inkognitofenster werden nicht wieder geöffnet.}}</translation> <translation id="3651803019964686660">Wenn Sie eine Nummer von <ph name="ORIGIN" /> an Ihr Android-Smartphone senden möchten, müssen Sie sich auf beiden Geräten in Chromium anmelden.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> ist schädlich und wurde daher von Chromium blockiert.</translation> <translation id="6134968993075716475">Safe Browsing ist deaktiviert. Es wird empfohlen, diese Funktion zu aktivieren.</translation> <translation id="6145820983052037069">Hier können Sie zwischen Chromium-Profilen wechseln</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Wir sind bereit, Chromium OS zu installieren. Sobald Sie fortfahren, passiert Folgendes: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Dateien, Daten und Ihr aktuelles Betriebssystem werden gelöscht. - <ph name="LIST_ITEM" />Chromium OS wird installiert. - <ph name="LIST_ITEM" />Ihr Gerät wird heruntergefahren, sobald die Installation abgeschlossen ist. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Eine letzte Erinnerung: Durch die Installation wird Ihre gesamte Festplatte gelöscht. Kontrollieren Sie daher noch einmal, ob Sie alle wichtigen Daten gesichert haben.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Sobald die Installation gestartet wurde, kann sie nicht mehr abgebrochen werden.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Sie müssen auf Ihrem Gerät (<ph name="TARGET_DEVICE_NAME" />) in Chromium angemeldet sein. Versuchen Sie es dann noch einmal.</translation> <translation id="6212496753309875659">Auf diesem Computer befindet sich bereits eine neuere Version von Chromium. Falls die Software nicht funktioniert, deinstallieren Sie Chromium bitte und versuchen Sie es erneut.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium wird jetzt neu gestartet}=1{Chromium wird in einer Sekunde neu gestartet}other{Chromium wird in # Sekunden neu gestartet}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">Chromium OS-System</translation> <translation id="6455857529632101747">Willkommen bei den Chromium-Profilen</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium wird in 1 Sekunde neu gestartet}other{Chromium wird in # Sekunden neu gestartet}}</translation> -<translation id="646620589868199210">Bereit für die Installation von Chromium OS</translation> <translation id="6475912303565314141">Die Erweiterung legt auch die Seite fest, die beim Start von Chromium angezeigt wird.</translation> <translation id="6510925080656968729">Chromium deinstallieren</translation> <translation id="6542839706527980775">In jedem Profil sind eigene Chromium-Daten wie zum Beispiel Lesezeichen, Verlauf und Passwörter enthalten</translation>
diff --git a/chrome/app/resources/chromium_strings_el.xtb b/chrome/app/resources/chromium_strings_el.xtb index 1225b990..fa42dea 100644 --- a/chrome/app/resources/chromium_strings_el.xtb +++ b/chrome/app/resources/chromium_strings_el.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931">Με τη συντόμευση <ph name="SHORTCUT" /> μπορείτε να κάνετε εναλλαγή μεταξύ των προφίλ Chromium</translation> <translation id="3509308970982693815">Κλείστε όλα τα παράθυρα του Chromium και δοκιμάστε ξανά.</translation> <translation id="3575459661164320785">Υπάρχει επιβλαβές λογισμικό στον υπολογιστή σας. Το Chromium μπορεί να το καταργήσει, να επαναφέρει τις ρυθμίσεις σας και να απενεργοποιήσει τις επεκτάσεις, προκειμένου το πρόγραμμα περιήγησής σας να επιστρέψει σε φυσιολογική λειτουργία.</translation> -<translation id="3610776674893128619">Διαγραφή σκληρού δίσκου και εγκατάσταση του Chromium OS</translation> <translation id="3639635944603682591">Τα δεδομένα περιήγησης αυτού του ατόμου θα διαγραφούν από αυτήν τη συσκευή. Για να επαναφέρετε τα δεδομένα, συνδεθείτε στο Chromium ως <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Υπάρχει νέα διαθέσιμη ενημέρωση για το Chromium και θα εφαρμοστεί μόλις κάνετε επανεκκίνηση.}=1{Υπάρχει νέα διαθέσιμη ενημέρωση για το Chromium και θα εφαρμοστεί μόλις κάνετε επανεκκίνηση. Το παράθυρο για ανώνυμη περιήγηση δεν θα ανοίξει ξανά.}other{Υπάρχει νέα διαθέσιμη ενημέρωση για το Chromium και θα εφαρμοστεί μόλις κάνετε επανεκκίνηση. Τα # παράθυρα για ανώνυμη περιήγηση δεν θα ανοίξουν ξανά.}}</translation> <translation id="3651803019964686660">Για να στείλετε έναν αριθμό από το <ph name="ORIGIN" /> στο τηλέφωνό σας Android, συνδεθείτε στο Chromium και στις δύο συσκευές.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363">Το αρχείο <ph name="FILE_NAME" /> είναι επικίνδυνο, επομένως έχει αποκλειστεί από το Chromium.</translation> <translation id="6134968993075716475">Η Ασφαλής περιήγηση είναι απενεργοποιημένη. Το Chromium συνιστά να την ενεργοποιήσετε.</translation> <translation id="6145820983052037069">Μπορείτε εδώ να κάνετε εναλλαγή μεταξύ των προφίλ σας Chromium</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Είμαστε έτοιμοι να εγκαταστήσουμε το Chromium OS! Εάν προχωρήσετε στο επόμενο βήμα: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Τα αρχεία, τα δεδομένα και το τρέχον λειτουργικό σύστημα θα διαγραφούν. - <ph name="LIST_ITEM" />Θα εγκατασταθεί το Chromium OS. - <ph name="LIST_ITEM" />Η συσκευή σας θα απενεργοποιηθεί όταν ολοκληρωθεί η εγκατάσταση. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Μια τελευταία υπενθύμιση: Η εγκατάσταση θα διαγράψει όλα τα περιεχόμενα του σκληρού δίσκου σας. Βεβαιωθείτε ότι έχετε δημιουργήσει αντίγραφα ασφαλείας των δεδομένων που σας ενδιαφέρουν.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Όταν η εγκατάσταση ξεκινήσει, δεν είναι δυνατή η ακύρωσή της.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Βεβαιωθείτε ότι έχετε συνδεθεί στο Chromium στη συσκευή σας <ph name="TARGET_DEVICE_NAME" /> και έπειτα δοκιμάστε ξανά την αποστολή.</translation> <translation id="6212496753309875659">Αυτός ο υπολογιστής διαθέτει ήδη μια πιο πρόσφατη έκδοση του Chromium. Αν το λογισμικό δεν λειτουργεί, απεγκαταστήστε το Chromium και κατεβάστε το ξανά.</translation> <translation id="6219195342503754812">{0,plural, =0{Η επανεκκίνηση του Chromium θα γίνει τώρα}=1{Η επανεκκίνηση του Chromium θα γίνει σε 1 δευτερόλεπτο}other{Η επανεκκίνηση του Chromium θα γίνει σε # δευτερόλεπτα}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">Σύστημα Chromium OS</translation> <translation id="6455857529632101747">Καλώς ήρθατε στα προφίλ του Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Θα γίνει επανεκκίνηση του Chromium σε 1 δευτερόλεπτο}other{Θα γίνει επανεκκίνηση του Chromium σε # δευτερόλεπτα}}</translation> -<translation id="646620589868199210">Έτοιμοι για εγκατάσταση του Chromium OS</translation> <translation id="6475912303565314141">Επίσης, ελέγχει τη σελίδα που εμφανίζεται κατά την εκκίνηση του Chromium.</translation> <translation id="6510925080656968729">Απεγκατάσταση Chromium</translation> <translation id="6542839706527980775">Κάθε προφίλ διατηρεί τις δικές του πληροφορίες στο Chromium, όπως σελιδοδείκτες, ιστορικό, κωδικούς πρόσβασης και άλλα.</translation>
diff --git a/chrome/app/resources/chromium_strings_en-GB.xtb b/chrome/app/resources/chromium_strings_en-GB.xtb index 15270bb..770061e 100644 --- a/chrome/app/resources/chromium_strings_en-GB.xtb +++ b/chrome/app/resources/chromium_strings_en-GB.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> can switch between Chromium profiles</translation> <translation id="3509308970982693815">Please close all Chromium windows and try again.</translation> <translation id="3575459661164320785">There's harmful software on your computer. Chromium can remove it, restore your settings and disable extensions to make your browser work normally again.</translation> -<translation id="3610776674893128619">Erase hard drive and install Chromium OS</translation> <translation id="3639635944603682591">This person's browsing data will be deleted from this device. To recover the data, sign in to Chromium as <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{A new update for Chromium is available and will be applied as soon as you relaunch.}=1{A new update for Chromium is available and will be applied as soon as you relaunch. Your Incognito window won't reopen.}other{A new update for Chromium is available and will be applied as soon as you relaunch. Your # Incognito windows won't reopen.}}</translation> <translation id="3651803019964686660">To send a number from <ph name="ORIGIN" /> to your Android phone, sign in to Chromium on both devices.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> is dangerous, so Chromium has blocked it.</translation> <translation id="6134968993075716475">Safe Browsing is off. Chromium recommends turning it on.</translation> <translation id="6145820983052037069">You can switch between Chromium profiles here</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />We’re ready to install Chromium OS! Once you proceed: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Files, data and your current operating system will be erased. - <ph name="LIST_ITEM" />Chromium OS will be installed. - <ph name="LIST_ITEM" />Your device will shut down once the installation is complete. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />One last reminder: installation will erase your entire hard drive. Please make sure that you have any data that you care about backed up.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Once installation starts it cannot be cancelled.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Make sure that you are signed in to Chromium on your <ph name="TARGET_DEVICE_NAME" /> and then try sending again.</translation> <translation id="6212496753309875659">This computer already has a more recent version of Chromium. If the software is not working, please uninstall Chromium and try again.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium will relaunch now}=1{Chromium will relaunch in 1 second}other{Chromium will relaunch in # seconds}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Chromium OS System</translation> <translation id="6455857529632101747">Welcome to Chromium profiles</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium will restart in 1 second}other{Chromium will restart in # seconds}}</translation> -<translation id="646620589868199210">Ready to install Chromium OS</translation> <translation id="6475912303565314141">It also controls what page is shown when you start Chromium.</translation> <translation id="6510925080656968729">Uninstall Chromium</translation> <translation id="6542839706527980775">Each profile holds its own Chromium info, like bookmarks, history, passwords and more</translation>
diff --git a/chrome/app/resources/chromium_strings_es-419.xtb b/chrome/app/resources/chromium_strings_es-419.xtb index b4973690..e0da122 100644 --- a/chrome/app/resources/chromium_strings_es-419.xtb +++ b/chrome/app/resources/chromium_strings_es-419.xtb
@@ -80,7 +80,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> permite alternar de un perfil de Chromium a otro</translation> <translation id="3509308970982693815">Cierra todas las ventanas de Chromium e inténtalo de nuevo.</translation> <translation id="3575459661164320785">Tu computadora tiene software dañino. Chromium puede quitarlo, inhabilitar las extensiones y restablecer la configuración para que el navegador vuelva a funcionar correctamente.</translation> -<translation id="3610776674893128619">Borrar el disco duro e instalar Chromium OS</translation> <translation id="3639635944603682591">Los datos de navegación de esta persona se borrarán de este dispositivo. Para recuperarlos, accede a Chromium como <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Hay una nueva actualización disponible para Chromium que se aplicará cuando lo reinicies.}=1{Hay una nueva actualización disponible para Chromium que se aplicará cuando lo reinicies. No se volverá a abrir la ventana de incógnito.}other{Hay una nueva actualización disponible para Chromium que se aplicará cuando lo reinicies. No se volverán a abrir las # ventanas de incógnito.}}</translation> <translation id="3651803019964686660">Para enviar un número desde <ph name="ORIGIN" /> a tu teléfono Android, accede a Chromium en ambos dispositivos.</translation> @@ -162,15 +161,6 @@ <translation id="6129621093834146363">Chromium bloqueó <ph name="FILE_NAME" /> porque es un archivo peligroso.</translation> <translation id="6134968993075716475">La Navegación segura está desactivada. Chromium recomienda activarla.</translation> <translation id="6145820983052037069">Puedes alternar entre los perfiles de Chromium aquí</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />¡Todo listo para instalar Chromium OS! Si continúas, sucederá lo siguiente: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Se borrarán los archivos, los datos y tu sistema operativo actual. - <ph name="LIST_ITEM" />Se instalará Chromium OS. - <ph name="LIST_ITEM" />Cuando se complete la instalación, se apagará el dispositivo. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Un último recordatorio: la instalación borrará tu disco duro completo. Asegúrate de haber creado una copia de seguridad de todos los datos que consideres importantes.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Una vez que comienza la instalación, no puede cancelarse.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Asegúrate de haber accedido a Chromium en tu <ph name="TARGET_DEVICE_NAME" /> y, luego, intenta enviarlo de nuevo.</translation> <translation id="6212496753309875659">Este equipo ya tiene una versión más reciente de Chromium. Si el software no funciona, desinstala Chromium y vuelve a intentarlo.</translation> <translation id="6219195342503754812">{0,plural, =0{Se reiniciará Chromium ahora}=1{Se reiniciará Chromium en 1 segundo}other{Se reiniciará Chromium en # segundos}}</translation> @@ -188,7 +178,6 @@ <translation id="6434250628340475518">Sistema operativo Chromium</translation> <translation id="6455857529632101747">Te damos la bienvenida a los perfiles de Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium se reiniciará en 1 segundo}other{Chromium se reiniciará en # segundos}}</translation> -<translation id="646620589868199210">Todo listo para instalar Chromium OS</translation> <translation id="6475912303565314141">También controla qué página se muestra al iniciar Chromium.</translation> <translation id="6510925080656968729">Desinstalar Chromium</translation> <translation id="6542839706527980775">Cada perfil conserva su propia información de Chromium, como los favoritos, el historial, las contraseñas y más.</translation>
diff --git a/chrome/app/resources/chromium_strings_es.xtb b/chrome/app/resources/chromium_strings_es.xtb index 561c1be..96dff04 100644 --- a/chrome/app/resources/chromium_strings_es.xtb +++ b/chrome/app/resources/chromium_strings_es.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931">Usa <ph name="SHORTCUT" /> para cambiar de un perfil de Chromium a otro</translation> <translation id="3509308970982693815">Cierra todas las ventanas de Chromium e inténtalo de nuevo.</translation> <translation id="3575459661164320785">Se ha detectado software dañino en tu ordenador. Chromium puede eliminarlo, restaurar tu configuración y desactivar las extensiones para que el navegador vuelva a funcionar con normalidad.</translation> -<translation id="3610776674893128619">Borrar disco duro e instalar Chromium OS</translation> <translation id="3639635944603682591">Los datos de navegación de este usuario se eliminarán del dispositivo. Para recuperar tus datos, inicia sesión en Chromium como <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Hay una nueva actualización de Chromium disponible que se aplicará cuando reinicies el navegador.}=1{Hay una nueva actualización de Chromium disponible que se aplicará cuando reinicies el navegador. La ventana de incógnito no se volverá a abrir.}other{Hay una nueva actualización de Chromium disponible que se aplicará cuando reinicies el navegador. Las # ventanas de incógnito no se volverán a abrir.}}</translation> <translation id="3651803019964686660">Para enviar un número desde <ph name="ORIGIN" /> a tu teléfono Android, inicia sesión en Chromium con ambos dispositivos.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> es peligroso, por lo que Chromium lo ha bloqueado.</translation> <translation id="6134968993075716475">La función Navegación segura está desactivada. Chromium recomienda activarla.</translation> <translation id="6145820983052037069">Puedes cambiar de un perfil de Chromium a otro aquí</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />¡Estamos listos para instalar Chromium OS! Cuando continúes: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Se eliminarán los archivos, los datos y tu sistema operativo actual. - <ph name="LIST_ITEM" />Se instalará Chromium OS. - <ph name="LIST_ITEM" />Tu dispositivo se apagará cuando se complete la instalación. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Un último recordatorio: la instalación borrará todo tu disco duro. Asegúrate de tener una copia de seguridad de los datos importantes.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />La instalación no se puede cancelar una vez que empiece.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Comprueba que hayas iniciado sesión en Chromium con tu <ph name="TARGET_DEVICE_NAME" /> y, después, prueba a enviarlo de nuevo.</translation> <translation id="6212496753309875659">Este ordenador ya cuenta con una versión más reciente de Chromium. Si el software no funciona, desinstala Chromium y vuelve a intentarlo.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium se reiniciará ahora}=1{Chromium se reiniciará dentro de 1 segundo}other{Chromium se reiniciará dentro de # segundos}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Sistema Chromium OS</translation> <translation id="6455857529632101747">Te damos la bienvenida a los perfiles de Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium se reiniciará en 1 segundo}other{Chromium se reiniciará en # segundos}}</translation> -<translation id="646620589868199210">Todo listo para instalar Chromium OS</translation> <translation id="6475912303565314141">También controla qué página se muestra al iniciar Chromium.</translation> <translation id="6510925080656968729">Desinstalar Chromium</translation> <translation id="6542839706527980775">Cada perfil almacena su propia información de Chromium, como los marcadores, el historial, las contraseñas y mucho más.</translation>
diff --git a/chrome/app/resources/chromium_strings_et.xtb b/chrome/app/resources/chromium_strings_et.xtb index 472411d..1b9c482 100644 --- a/chrome/app/resources/chromium_strings_et.xtb +++ b/chrome/app/resources/chromium_strings_et.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931">Chromiumi profiilide vahel vahetamiseks vajutage klahve <ph name="SHORTCUT" /></translation> <translation id="3509308970982693815">Sulgege kõik Chromiumi aknad ja proovige uuesti.</translation> <translation id="3575459661164320785">Teie arvutis on kahjulik tarkvara. Chromium saab selle eemaldada, taastada teie seaded ja keelata laiendused, et brauser töötaks jälle normaalselt.</translation> -<translation id="3610776674893128619">Tühjenda kõvaketas ja installi Chromium OS</translation> <translation id="3639635944603682591">Selle isiku sirvimisandmed kustutatakse seadmest. Andmete taastamiseks logige Chromiumi sisse kasutajana <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Saadaval on uus Chromiumi värskendus, mis rakendatakse taaskäivitamisel.}=1{Saadaval on uus Chromiumi värskendus, mis rakendatakse taaskäivitamisel. Teie inkognito akent ei avata uuesti.}other{Saadaval on uus Chromiumi värskendus, mis rakendatakse taaskäivitamisel. Teie # inkognito akent ei avata uuesti.}}</translation> <translation id="3651803019964686660">Numbri saatmiseks asukohast <ph name="ORIGIN" /> Android-telefoni logige mõlemas seadmes Chromiumi sisse.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> on ohtlik, mistõttu Chromium blokeeris selle.</translation> <translation id="6134968993075716475">Google'i ohutu sirvimine on välja lülitatud. Chromium soovitab selle sisse lülitada.</translation> <translation id="6145820983052037069">Chromiumi profiili saate vahetada siin</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Oleme Chromium OS-i installimiseks valmis! Jätkamisel toimub järgmine. - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Kustutatakse failid, andmed ja praegune operatsioonisüsteem. - <ph name="LIST_ITEM" />Installitakse Chromium OS. - <ph name="LIST_ITEM" />Kui installimine on lõpetatud, lülitub teie seade välja. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Viimane meeldetuletus: installimisel tühjendatakse kogu kõvaketas. Veenduge, et oleksite kõik olulised andmed varundanud.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Pärast alustamist ei saa installimist tühistada.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Veenduge, et oleksite seadmes <ph name="TARGET_DEVICE_NAME" /> Chromiumi sisse logitud, ja proovige siis uuesti saata.</translation> <translation id="6212496753309875659">Arvutis on juba Chromiumi uuem versioon. Kui tarkvara ei tööta, siis desinstallige Chromium ja proovige uuesti.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium käivitatakse kohe uuesti}=1{Chromium käivitatakse uuesti 1 sekundi pärast}other{Chromium käivitatakse uuesti # sekundi pärast}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">Chromium OS-i süsteem</translation> <translation id="6455857529632101747">Tere tulemast kasutama Chromiumi profiile</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium taaskäivitub 1 sekundi pärast}other{Chromium taaskäivitub # sekundi pärast}}</translation> -<translation id="646620589868199210">Chromium OS-i installimiseks valmis</translation> <translation id="6475912303565314141">Lisaks juhib see seda, mis leht kuvatakse Chromiumi käivitamisel.</translation> <translation id="6510925080656968729">Desinstalli Chromium</translation> <translation id="6542839706527980775">Igal profiilil on oma Chromiumi teave, nagu järjehoidjad, ajalugu, paroolid ja muu</translation>
diff --git a/chrome/app/resources/chromium_strings_eu.xtb b/chrome/app/resources/chromium_strings_eu.xtb index 8ce4591..df52811c 100644 --- a/chrome/app/resources/chromium_strings_eu.xtb +++ b/chrome/app/resources/chromium_strings_eu.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> da Chromium-eko profil batetik bestera aldatzeko lasterbidea</translation> <translation id="3509308970982693815">Itxi Chromium leiho guztiak eta saiatu berriro.</translation> <translation id="3575459661164320785">Software kaltegarria duzu ordenagailuan. Chromium-ek hura kendu, ezarpenak leheneratu eta luzapenak desgai ditzake, arakatzaileak ohiko moduan funtziona dezan berriro.</translation> -<translation id="3610776674893128619">Ezabatu disko gogorreko eduki guztia eta instalatu Chromium OS</translation> <translation id="3639635944603682591">Pertsona honen arakatze-datuak gailutik ezabatuko dira. Datuak berreskuratzeko, hasi saioa Chromium-en <ph name="USER_EMAIL" /> gisa.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium-en eguneratze bat erabilgarri dago eta sistema eragilea berrabiarazten duzunean aplikatuko da.}=1{Chromium-en eguneratze bat erabilgarri dago eta sistema eragilea berrabiarazten duzunean aplikatuko da. Ezkutuko moduko leihoa ez da berriro irekiko.}other{Chromium-en eguneratze bat erabilgarri dago eta sistema eragilea berrabiarazten duzunean aplikatuko da. Ezkutuko moduko # leihoak ez dira berriro irekiko.}}</translation> <translation id="3651803019964686660">Zenbaki bat <ph name="ORIGIN" /> webgunetik Android-eko telefonora bidaltzeko, hasi Chromium-eko saioa bi gailuetan.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> arriskutsua da; horregatik, blokeatu egin du Chromium-ek.</translation> <translation id="6134968993075716475">Arakatze segurua desaktibatuta dago. Aktibatzea gomendatzen du Chromium-ek.</translation> <translation id="6145820983052037069">Aldatu Chromium-eko profila hemen</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Prest gaude Chromium OS instalatzeko. Aurrera egiten duzunean: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Fitxategi, datu eta une honetan darabilzun sistema eragileko eduki guztia ezabatuko da. - <ph name="LIST_ITEM" />Chromium OS instalatuko da. - <ph name="LIST_ITEM" />Gailua itzali egingo da instalazio-prozesua amaitzean. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Azken abisua: Chrome OS instalatuz gero, ezabatu egingo da disko gogor osoko eduki guztia. Ziurtatu gorde nahi dituzun datuen babeskopia egin duzula.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Instalazio-prozesua hasiz gero, ezin da bertan behera utzi.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Ziurtatu Chromium-eko saioa hasita daukazula <ph name="TARGET_DEVICE_NAME" /> gailuan eta saiatu berriro bidaltzen.</translation> <translation id="6212496753309875659">Ordenagailuak Chromium arakatzailearen bertsio berriagoa du. Softwareak ez badu funtzionatzean, desinstalatu Chromium eta saiatu berriro.</translation> <translation id="6219195342503754812">{0,plural, =0{Orain berrabiaraziko da Chromium}=1{1 segundo barru berrabiaraziko da Chromium}other{# segundo barru berrabiaraziko da Chromium}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Chromium OS sistema</translation> <translation id="6455857529632101747">Ongi etorri Chromium-eko profiletara</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{1 segundo barru berrabiaraziko da Chromium}other{# segundo barru berrabiaraziko da Chromium}}</translation> -<translation id="646620589868199210">Chromium OS instalatzeko prest dago</translation> <translation id="6475912303565314141">Chromium abiarazten duzunean erakusten den orria ere kontrolatzen du.</translation> <translation id="6510925080656968729">Desinstalatu Chromium</translation> <translation id="6542839706527980775">Profil bakoitzak Chromium-eko informazio propioa dauka; adibidez, laster-markak, historia, pasahitzak eta beste</translation>
diff --git a/chrome/app/resources/chromium_strings_fa.xtb b/chrome/app/resources/chromium_strings_fa.xtb index 22a3b04..eb131a42 100644 --- a/chrome/app/resources/chromium_strings_fa.xtb +++ b/chrome/app/resources/chromium_strings_fa.xtb
@@ -81,7 +81,6 @@ <translation id="3497319089134299931">با <ph name="SHORTCUT" /> میتوانید بین نمایههای Chromium جابهجا شوید</translation> <translation id="3509308970982693815">لطفاً همه پنجرههای Chromium را ببندید و دوباره سعی کنید.</translation> <translation id="3575459661164320785">نرمافزار مضری در رایانهتان وجود دارد. Chromium میتواند آن را بردارد، تنظیمات را بازیابی کند و افزونهها را غیرفعال کند تا عملکرد مرورگرتان دوباره عادی شود.</translation> -<translation id="3610776674893128619">پاک کردن دیسک سخت و نصب کردن Chromium OS</translation> <translation id="3639635944603682591">دادههای محصول مرور این کاربر از این دستگاه حذف میشود. برای بازیابی دادهها، با نام <ph name="USER_EMAIL" /> به سیستم Chromium وارد شوید.</translation> <translation id="364817392622123556">{COUNT,plural, =0{بهروزرسانی جدیدی برای Chromium در دسترس است و بهمحض راهاندازی مجدد اعمال خواهد شد.}=1{بهروزرسانی جدیدی برای Chromium در دسترس است و بهمحض راهاندازی مجدد اعمال خواهد شد. پنجره ناشناس بازگشایی نمیشود.}one{بهروزرسانی جدیدی برای Chromium در دسترس است و بهمحض راهاندازی مجدد اعمال خواهد شد. # پنجره ناشناس بازگشایی نمیشود.}other{بهروزرسانی جدیدی برای Chromium در دسترس است و بهمحض راهاندازی مجدد اعمال خواهد شد. # پنجره ناشناس بازگشایی نمیشود.}}</translation> <translation id="3651803019964686660">برای ارسال شماره از <ph name="ORIGIN" /> به تلفن Android خود، در هر دو دستگاه به سیستم Chromium وارد شوید.</translation> @@ -163,15 +162,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> خطرناک است، بنابراین Chromium آن را مسدود کرده است.</translation> <translation id="6134968993075716475">«مرور ایمن» خاموش است. Chromium توصیه میکند آن را روشن کنید.</translation> <translation id="6145820983052037069">میتوانید در اینجا بین نمایههای Chromium جابهجا شوید</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />آمادهایم Chromium OS را نصب کنیم! اگر ادامه دهید: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />فایلها، دادهها، و سیستمعامل کنونی پاک خواهد شد. - <ph name="LIST_ITEM" />Chromium OS نصب خواهد شد. - <ph name="LIST_ITEM" />وقتی نصب تکمیل شود، دستگاهتان خاموش خواهد شد. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />آخرین یادآوری: درصورت نصب کردن، کل دیسک سخت پاک خواهد شد. لطفاً مطمئن شوید همه دادههای مهمتان را پشتیبانگیری کرده باشید.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />وقتی نصب شروع شود، نمیتوان آن را لغو کرد.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">مطمئن شوید در <ph name="TARGET_DEVICE_NAME" /> به سیستم Chromium وارد شده باشید و سپس دوباره ارسال کنید.</translation> <translation id="6212496753309875659">این رایانه در حال حاضر دارای یک نسخه جدیدتر از Chromium است. درصورتیکه نرمافزار کار نمیکند، لطفاً Chromium را حذف نصب کنید و دوباره سعی کنید.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium هماکنون راهاندازی مجدد میشود}=1{Chromium ۱ ثانیه دیگر راهاندازی مجدد میشود}one{Chromium # ثانیه دیگر راهاندازی مجدد میشود}other{Chromium # ثانیه دیگر راهاندازی مجدد میشود}}</translation> @@ -189,7 +179,6 @@ <translation id="6434250628340475518">سیستم سیستمعامل Chromium</translation> <translation id="6455857529632101747">به نمایههای Chromium خوشآمدید</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium بعد از ۱ ثانیه بازراهاندازی میشود}one{Chromium بعد از # ثانیه بازراهاندازی میشود}other{Chromium بعد از # ثانیه بازراهاندازی میشود}}</translation> -<translation id="646620589868199210">آماده برای نصب Chromium OS</translation> <translation id="6475912303565314141">این برنامه همچنین صفحهای را که هنگام راهاندازی Chromium نشان داده میشود، کنترل میکند.</translation> <translation id="6510925080656968729">حذف نصب Chromium </translation> <translation id="6542839706527980775">هرکدام از نمایهها دارای اطلاعات Chromium مختص خودش است (مثلاً نشانکها، سابقه، گذرواژهها، و غیره)</translation>
diff --git a/chrome/app/resources/chromium_strings_fi.xtb b/chrome/app/resources/chromium_strings_fi.xtb index 872e0c34..a84f1178 100644 --- a/chrome/app/resources/chromium_strings_fi.xtb +++ b/chrome/app/resources/chromium_strings_fi.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931">Valitsemalla <ph name="SHORTCUT" /> voit vaihdella eri Chromium-profiilien välillä</translation> <translation id="3509308970982693815">Sulje kaikki Chromium-ikkunat ja yritä uudelleen.</translation> <translation id="3575459661164320785">Tietokoneellasi on haitallinen ohjelmisto. Chromium voi poistaa sen, palauttaa asetuksesi ja poistaa laajennukset käytöstä, jotta selaimesi toimii taas normaalisti.</translation> -<translation id="3610776674893128619">Tyhjennä kovalevy ja asenna Chromium-käyttöjärjestelmä</translation> <translation id="3639635944603682591">Käyttäjän selaustiedot poistetaan tältä laitteelta. Jos haluat palauttaa tiedot myöhemmin, kirjaudu Chromiumiin käyttäjänä <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Uusi Chromium-päivitys on saatavilla, ja se otetaan käyttöön uudelleenkäynnistyksen jälkeen.}=1{Uusi Chromium-päivitys on saatavilla, ja se otetaan käyttöön uudelleenkäynnistyksen jälkeen. Incognito-ikkunaasi ei avata uudelleen.}other{Uusi Chromium-päivitys on saatavilla, ja se otetaan käyttöön uudelleenkäynnistyksen jälkeen. # incognito-ikkunaasi ei avata uudelleen.}}</translation> <translation id="3651803019964686660">Jos haluat lähettää numeron osoitteesta <ph name="ORIGIN" /> Android-puhelimeesi, kirjaudu Chromiumiin molemmilla laitteilla.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> on vaarallinen, joten Chromium on estänyt sen.</translation> <translation id="6134968993075716475">Selaussuoja on pois päältä. Chromium suosittelee laittamaan sen päälle.</translation> <translation id="6145820983052037069">Voit vaihdella Chromium-profiilien välillä täällä</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Olemme valmiina asentamaan Chromium-käyttöjärjestelmän. Kun jatkat: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Tiedostot, data ja nykyinen käyttöjärjestelmäsi poistetaan. - <ph name="LIST_ITEM" />Chromium-käyttöjärjestelmä asennetaan. - <ph name="LIST_ITEM" />Laite sammuu, kun asennus on valmis. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Muista: asennus tyhjentää koko kovalevysi. Varmista, että olet varmuuskopioinut tärkeän datan.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Kun asennus on alkanut, sitä ei voi perua.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Varmista, että olet kirjautunut Chromiumiin laitteellasi (<ph name="TARGET_DEVICE_NAME" />) ja yritä sitten lähettämistä uudelleen.</translation> <translation id="6212496753309875659">Tälle tietokoneelle on jo asennettu Chromiumin uudempi versio. Jos Chromium ei toimi, poista sen asennus ja yritä uudelleen.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium käynnistetään uudelleen nyt}=1{Chromium käynnistetään uudelleen 1 sekunnin kuluttua}other{Chromium käynnistetään uudelleen # sekunnin kuluttua}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">Chromium-käyttöjärjestelmä</translation> <translation id="6455857529632101747">Tervetuloa Chromium-profiileihin</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium käynnistyy uudelleen 1 sekunnin kuluttua}other{Chromium käynnistyy uudelleen # sekunnin kuluttua}}</translation> -<translation id="646620589868199210">Valmiina asentamaan Chromium-käyttöjärjestelmän</translation> <translation id="6475912303565314141">Määrittää myös Chromiumin aloitussivun.</translation> <translation id="6510925080656968729">Poista Chromium</translation> <translation id="6542839706527980775">Jokainen profiili sisältää omat Chromium-tietonsa, esim. kirjanmerkit, historian ja salasanat</translation>
diff --git a/chrome/app/resources/chromium_strings_fil.xtb b/chrome/app/resources/chromium_strings_fil.xtb index df682ca..1a5e4441 100644 --- a/chrome/app/resources/chromium_strings_fil.xtb +++ b/chrome/app/resources/chromium_strings_fil.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931">Puwedeng magpalipat-lipat sa mga profile sa Chromium sa pamamagitan ng <ph name="SHORTCUT" /></translation> <translation id="3509308970982693815">Pakisara ang lahat ng window sa Chromium at subukang muli.</translation> <translation id="3575459661164320785">May mapaminsalang software sa iyong computer. Magagawa ng Chromium na alisin ito, i-restore ang iyong mga setting, at i-disable ang mga extension para muling mapagana nang normal ang browser mo.</translation> -<translation id="3610776674893128619">Burahin ang Hard Drive at I-install ang Chromium OS</translation> <translation id="3639635944603682591">Made-delete sa device na ito ang data sa pag-browse ng taong ito. Para ma-recover ang data, mag-sign in sa Chromium bilang <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{May available na bagong update para sa Chromium at ilalapat ito sa sandaling maglunsad ka ulit.}=1{May available na bagong update para sa Chromium at ilalapat ito sa sandaling maglunsad ka ulit. Hindi bubukas ulit ang iyong Incognito window.}one{May available na bagong update para sa Chromium at ilalapat ito sa sandaling maglunsad ka ulit. Hindi bubukas ulit ang iyong # Incognito window.}other{May available na bagong update para sa Chromium at ilalapat ito sa sandaling maglunsad ka ulit. Hindi bubukas ulit ang iyong # na Incognito window.}}</translation> <translation id="3651803019964686660">Para magpadala ng numero sa iyong Android phone mula sa <ph name="ORIGIN" />, mag-sign in sa Chromium sa parehong device.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363">Mapanganib ang <ph name="FILE_NAME" />, kaya na-block ito ng Chromium.</translation> <translation id="6134968993075716475">Naka-off ang Ligtas na Pag-browse. Inirerekomenda ng Chromium na i-on ito.</translation> <translation id="6145820983052037069">Puwede kang magpalipat-lipat sa mga profile sa Chromium dito</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Handa na kaming i-install ang Chromium OS! Kapag nagpatuloy ka: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Mabubura ang mga file, data, at ang iyong kasalukuyang operating system. - <ph name="LIST_ITEM" />Mai-install ang Chromium OS. - <ph name="LIST_ITEM" />Magsha-shut down ang iyong device kapag nakumpleto na ang pag-install. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Huling paalala: mabubura ng pag-install ang buong hard drive mo. Pakitiyak na may back up na ang anumang data na mahalaga sa iyo.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Kapag nagsimula na ang pag-install, hindi na ito makakansela.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Tiyaking naka-sign in ka sa Chromium sa iyong <ph name="TARGET_DEVICE_NAME" /> at pagkatapos ay subukang ipadala ulit.</translation> <translation id="6212496753309875659">May mas bagong bersyon ng Chromium na ang computer na ito. Kung hindi gumagana ang software, mangyaring i-uninstall ang Chromium at subukang muli.</translation> <translation id="6219195342503754812">{0,plural, =0{Muli nang ilulunsad ang Chromium ngayon}=1{Muli nang ilulunsad ang Chromium sa loob ng 1 segundo}one{Muli nang ilulunsad ang Chromium sa loob ng # segundo}other{Muli nang ilulunsad ang Chromium sa loob ng # na segundo}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Chromium OS System</translation> <translation id="6455857529632101747">Welcome sa mga profile sa Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Magre-restart ang Chromium pagkalipas ng 1 segundo}one{Magre-restart ang Chromium pagkalipas ng # segundo}other{Magre-restart ang Chromium pagkalipas ng # na segundo}}</translation> -<translation id="646620589868199210">Handa nang i-install ang Chromium OS</translation> <translation id="6475912303565314141">Kinokontrol din nito kung anong pahina ang ipinapakita kapag sinimulan mo ang Chromium.</translation> <translation id="6510925080656968729">I-uninstall ang Chromium</translation> <translation id="6542839706527980775">Ang bawat profile ay may sariling impormasyon sa Chromium tulad ng mga bookmark, history, mga password, at iba pa</translation>
diff --git a/chrome/app/resources/chromium_strings_fr-CA.xtb b/chrome/app/resources/chromium_strings_fr-CA.xtb index f3416c40..9ec84a0d 100644 --- a/chrome/app/resources/chromium_strings_fr-CA.xtb +++ b/chrome/app/resources/chromium_strings_fr-CA.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> permet de basculer entre les profils Chromium</translation> <translation id="3509308970982693815">Veuillez fermer toutes les fenêtres Chromium et essayer de nouveau.</translation> <translation id="3575459661164320785">Nous avons trouvé un logiciel nuisible sur votre ordinateur. Chromium peut le supprimer, restaurer vos paramètres et désactiver les extensions pour que votre navigateur puisse fonctionner normalement de nouveau.</translation> -<translation id="3610776674893128619">Effacer les données du disque dur et installer Chromium OS</translation> <translation id="3639635944603682591">Les données de navigation de cette personne seront supprimées de cet appareil. Pour récupérer ces données, connectez-vous à Chromium en tant que <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Une nouvelle mise à jour de Chromium est proposée et sera appliquée dès que vous le relancerez.}=1{Une nouvelle mise à jour de Chromium est proposée et sera appliquée dès que vous le relancerez. Votre fenêtre de navigation privée ne sera pas rouverte.}one{Une nouvelle mise à jour de Chromium est proposée et sera appliquée dès que vous le relancerez. Votre fenêtre de navigation privée ne sera pas rouverte.}other{Une nouvelle mise à jour de Chromium est proposée et sera appliquée dès que vous le relancerez. Vos # fenêtres de navigation privée ne seront pas rouvertes.}}</translation> <translation id="3651803019964686660">Pour envoyer un numéro de <ph name="ORIGIN" /> vers votre téléphone Android, connectez-vous à Chromium sur les deux appareils.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363">Chromium a bloqué le fichier <ph name="FILE_NAME" />, car il est dangereux.</translation> <translation id="6134968993075716475">La navigation sécurisée est désactivée. Chromium vous recommande de l'activer.</translation> <translation id="6145820983052037069">Vous pouvez basculer entre les profils Chromium ici</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Nous sommes prêts à installer Chromium OS! Une fois que vous procédez à l'installation : - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />les fichiers, les données et votre système d'exploitation actuel seront effacés; - <ph name="LIST_ITEM" />Chromium OS sera installé; - <ph name="LIST_ITEM" />votre appareil s'éteindra une fois que celle-ci sera terminée. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Un dernier rappel : l'installation effacera l'ensemble des données présentes sur votre disque dur. Veuillez vous assurer que l'ensemble des données auxquelles vous tenez est sauvegardé.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Une fois que l'installation a commencé, elle ne peut pas être annulée.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Assurez-vous d'être connecté à Chromium sur votre <ph name="TARGET_DEVICE_NAME" />, puis essayez de l'envoyer à nouveau.</translation> <translation id="6212496753309875659">Cet ordinateur dispose déjà d'une version plus récente de Chromium. Si le logiciel ne fonctionne pas, veuillez le désinstaller, puis réessayer.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium va redémarrer maintenant}=1{Chromium redémarrera dans 1 seconde}one{Chromium redémarrera dans # seconde}other{Chromium redémarrera dans # secondes}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Système Chromium OS</translation> <translation id="6455857529632101747">Bienvenue dans les profils Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium redémarrera dans 1 seconde}one{Chromium redémarrera dans # seconde}other{Chromium redémarrera dans # secondes}}</translation> -<translation id="646620589868199210">Prêt à installer Chromium OS</translation> <translation id="6475912303565314141">Elle gère également la page qui s'affiche au démarrage de Chromium.</translation> <translation id="6510925080656968729">Désinstaller Chromium</translation> <translation id="6542839706527980775">Chaque profil Chromium contient ses propres données, comme les favoris, l'historique, les mots de passe, etc.</translation>
diff --git a/chrome/app/resources/chromium_strings_fr.xtb b/chrome/app/resources/chromium_strings_fr.xtb index 2a9bfdb..82514419 100644 --- a/chrome/app/resources/chromium_strings_fr.xtb +++ b/chrome/app/resources/chromium_strings_fr.xtb
@@ -83,7 +83,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> permet de passer d'un profil Chromium à un autre</translation> <translation id="3509308970982693815">Veuillez fermer toutes les fenêtres de Chromium, puis réessayer.</translation> <translation id="3575459661164320785">Un logiciel malveillant a été détecté sur votre ordinateur. Chromium peut le supprimer, restaurer vos paramètres et désactiver les extensions pour que votre navigateur fonctionne de nouveau normalement.</translation> -<translation id="3610776674893128619">Effacer le disque dur et installer Chromium OS</translation> <translation id="3639635944603682591">Les données de navigation de cet utilisateur vont être supprimées de cet appareil. Pour les récupérer, connectez-vous à Chromium en tant que <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Une nouvelle mise à jour de Chromium est disponible. Elle sera installée dès que vous relancerez le navigateur.}=1{Une nouvelle mise à jour de Chromium est disponible. Elle sera installée dès que vous relancerez le navigateur. Sachez que la fenêtre de navigation privée ne sera pas rouverte.}one{Une nouvelle mise à jour de Chromium est disponible. Elle sera installée dès que vous relancerez le navigateur. Sachez que la fenêtre de navigation privée (#) ne sera pas rouverte.}other{Une nouvelle mise à jour de Chromium est disponible. Elle sera installée dès que vous relancerez le navigateur. Sachez que les # fenêtres de navigation privée ne seront pas rouvertes.}}</translation> <translation id="3651803019964686660">Pour envoyer un numéro depuis <ph name="ORIGIN" /> vers votre téléphone Android, connectez-vous à Chromium sur les deux appareils.</translation> @@ -165,15 +164,6 @@ <translation id="6129621093834146363">Chromium a bloqué <ph name="FILE_NAME" />, car ce fichier est dangereux.</translation> <translation id="6134968993075716475">La navigation sécurisée étant désactivée, Chromium vous recommande de l'activer.</translation> <translation id="6145820983052037069">Vous pouvez passer d'un profil Chromium à un autre ici</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Nous sommes prêts à installer Chromium OS ! Si vous poursuivez : - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Les fichiers, les données et votre système d'exploitation actuel seront effacés. - <ph name="LIST_ITEM" />Chromium OS sera installé. - <ph name="LIST_ITEM" />Votre appareil s'éteindra une fois l'installation terminée. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Un dernier rappel : l'installation effacera la totalité de votre disque dur. Assurez-vous que toutes vos données importantes sont sauvegardées.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Une fois commencée, l'installation ne peut être annulée.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Vérifiez si vous êtes bien connecté à Chromium sur votre <ph name="TARGET_DEVICE_NAME" />, puis procédez de nouveau à l'envoi.</translation> <translation id="6212496753309875659">Cet ordinateur dispose déjà d'une version plus récente de Chromium. Si le logiciel ne fonctionne pas, veuillez le désinstaller, puis réessayer.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium va être relancé maintenant}=1{Chromium va être relancé dans 1 seconde}one{Chromium va être relancé dans # seconde}other{Chromium va être relancé dans # secondes}}</translation> @@ -191,7 +181,6 @@ <translation id="6434250628340475518">Système Chromium OS</translation> <translation id="6455857529632101747">Bienvenue sur la page de profils Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium va redémarrer dans 1 seconde}one{Chromium va redémarrer dans # seconde}other{Chromium va redémarrer dans # secondes}}</translation> -<translation id="646620589868199210">Chromium OS est prêt à être installé</translation> <translation id="6475912303565314141">Elle contrôle également la page qui s'affiche au démarrage de Chromium.</translation> <translation id="6510925080656968729">Désinstaller Chromium</translation> <translation id="6542839706527980775">Chaque profil possède ses propres informations Chromium, comme des favoris, un historique, des mots de passe, etc.</translation>
diff --git a/chrome/app/resources/chromium_strings_gl.xtb b/chrome/app/resources/chromium_strings_gl.xtb index ec6196c36..13dd8ca 100644 --- a/chrome/app/resources/chromium_strings_gl.xtb +++ b/chrome/app/resources/chromium_strings_gl.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931">O atallo <ph name="SHORTCUT" /> permite cambiar entre perfís de Chromium</translation> <translation id="3509308970982693815">Pecha todas as ventás de Chromium e téntao de novo.</translation> <translation id="3575459661164320785">O teu ordenador ten software daniño. Chromium pode quitalo, restaurar a configuración e desactivar as extensións para que o navegador funcione con normalidade de novo.</translation> -<translation id="3610776674893128619">Borrar unidade de disco duro e instalar Chromium OS</translation> <translation id="3639635944603682591">Os datos de navegación desta persoa eliminaranse deste dispositivo. Para recuperalos, inicia sesión en Chromium como <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Hai dispoñible unha actualización nova para Chromium e aplicarase en canto o reinicies.}=1{Hai dispoñible unha actualización nova para Chromium e aplicarase en canto o reinicies. A ventá do modo de incógnito non se volverá abrir.}other{Hai dispoñible unha actualización nova para Chromium e aplicarase en canto o reinicies. As # ventás do modo de incógnito non se volverán abrir.}}</translation> <translation id="3651803019964686660">Para enviar un número desde <ph name="ORIGIN" /> ao teu teléfono Android, inicia sesión en Chromium nos dous dispositivos.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> é perigoso, así que Chromium bloqueouno.</translation> <translation id="6134968993075716475">A opción Navegación segura está desactivada. Chromium recomenda activala.</translation> <translation id="6145820983052037069">Aquí podes cambiar entre perfís de Chromium</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Está todo listo para instalar Chromium OS! Ao continuar: -<ph name="BEGIN_LIST" /> -<ph name="LIST_ITEM" />Borraranse os ficheiros, os datos e o teu sistema operativo actual. - <ph name="LIST_ITEM" />Instalarase Chromium OS. - <ph name="LIST_ITEM" />O dispositivo apagarase en canto remate a instalación. - <ph name="END_LIST" /> -<ph name="END_PARAGRAPH1" /> -<ph name="BEGIN_PARAGRAPH2" />Non esquezas que coa instalación borrarase toda a unidade de disco duro. Asegúrate de ter unha copia de seguranza dos datos que sexan importantes.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />En canto se inicia a instalación non se pode cancelar.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Asegúrate de iniciar sesión en Chromium no teu <ph name="TARGET_DEVICE_NAME" /> e proba a enviar o número de novo.</translation> <translation id="6212496753309875659">Este ordenador xa conta cunha versión máis recente de Chromium. Se o software non funciona, desinstala Chromium e téntao de novo.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium reiniciarase agora}=1{Chromium reiniciarase en 1 segundo}other{Chromium reiniciarase en # segundos}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Sistema Chromium OS</translation> <translation id="6455857529632101747">Dámosche a benvida aos perfís de Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium reiniciarase en 1 segundo}other{Chromium reiniciarase en # segundos}}</translation> -<translation id="646620589868199210">Todo listo para instalar Chromium OS</translation> <translation id="6475912303565314141">Tamén controla a páxina que se mostra ao iniciar Chromium.</translation> <translation id="6510925080656968729">Desinstalar Chromium</translation> <translation id="6542839706527980775">En cada perfil gárdase a información de Chromium que lle corresponde (por exemplo, os marcadores, o historial ou os contrasinais)</translation>
diff --git a/chrome/app/resources/chromium_strings_gu.xtb b/chrome/app/resources/chromium_strings_gu.xtb index c36d222..72ec80d1 100644 --- a/chrome/app/resources/chromium_strings_gu.xtb +++ b/chrome/app/resources/chromium_strings_gu.xtb
@@ -16,6 +16,7 @@ <translation id="1524282610922162960">Chromium ટૅબ શેર કરો</translation> <translation id="1553461853655228091">તમારા આસપાસનો 3D નકશો બનાવવા માટે, Chromiumને તમારા કૅમેરાના ઍક્સેસની પરવાનગી જરૂરી છે</translation> <translation id="1607715478322902680">{COUNT,plural, =0{અપડેટ લાગુ કરવા માટે તમે Chromiumને ફરીથી લૉન્ચ કરો એવું તમારા વ્યવસ્થાપક ઇચ્છે છે}=1{અપડેટ લાગુ કરવા માટે તમે Chromiumને ફરીથી લૉન્ચ કરો એવું તમારા વ્યવસ્થાપક ઇચ્છે છે. તમારી છુપી વિન્ડો ફરીથી ખૂલશે નહીં.}one{અપડેટ લાગુ કરવા માટે તમે Chromiumને ફરીથી લૉન્ચ કરો એવું તમારા વ્યવસ્થાપક ઇચ્છે છે. તમારી # છુપી વિન્ડો ફરીથી ખૂલશે નહીં.}other{અપડેટ લાગુ કરવા માટે તમે Chromiumને ફરીથી લૉન્ચ કરો એવું તમારા વ્યવસ્થાપક ઇચ્છે છે. તમારી # છુપી વિન્ડો ફરીથી ખૂલશે નહીં.}}</translation> +<translation id="1667812772085710766">તમે જ્યારે Chromium બંધ કરો, ત્યારે તે ઑટોમૅટિક રીતે કુકી અને તમે મુલાકાત લીધેલા પેજમાંના સાઇટનો ડેટા સાફ કરે છે</translation> <translation id="1708666629004767631">Chromiumનું નવું, સુરક્ષિત વર્ઝન ઉપલબ્ધ છે.</translation> <translation id="1774152462503052664">Chromium ને પૃષ્ઠભૂમિમાં ચાલવા દો</translation> <translation id="1779356040007214683">Chromium ને સુરક્ષિત બનાવવા માટે, અમે <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> માં સૂચિબદ્ધ નથી અને તમારી જાણ વિના ઉમેરવામાં આવ્યાં હોઈ શકે છે તેવા કેટલાક એક્સ્ટેન્શન્સને અક્ષમ કર્યા છે.</translation> @@ -83,7 +84,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> વડે એક Chromium પ્રોફાઇલથી બીજી Chromium પ્રોફાઇલ પર સ્વિચ કરી શકાય છે</translation> <translation id="3509308970982693815">કૃપા કરીને બધી Chromium વિંડોઝ બંધ કરો અને ફરીથી પ્રયાસ કરો.</translation> <translation id="3575459661164320785">તમારા કમ્પ્યુટરમાં નુકસાનકારક સૉફ્ટવેર છે. Chromium તે કાઢી શકે છે, તમારું સેટિંગ પાછું મેળવી શકે છે અને એક્સ્ટેંશન બંધ કરી શકે છે જેથી તમારું બ્રાઉઝર ફરી સામાન્ય રીતે કામ કરી શકે.</translation> -<translation id="3610776674893128619">હાર્ડ ડ્રાઇવનો ડેટા કાઢી નાખો અને Chromium OSને ઇન્સ્ટૉલ કરો</translation> <translation id="3639635944603682591">આ વ્યક્તિનો બ્રાઉઝિંગ ડેટા આ ડિવાઇસમાંથી ડિલીટ કરવામાં આવશે. આ ડેટા પાછો મેળવવા માટે, Chromiumમાં <ph name="USER_EMAIL" /> તરીકે સાઇન ઇન કરો.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium માટે નવી અપડેટ ઉપલબ્ધ છે અને તે જેવું તમે ફરીથી લૉન્ચ કરશો, તેને લાગુ કરવામાં આવશે.}=1{Chromium માટે નવી અપડેટ ઉપલબ્ધ છે અને તે જેવું તમે ફરીથી લૉન્ચ કરશો, તેને લાગુ કરવામાં આવશે. તમારી છુપી વિન્ડો ફરીથી ખૂલશે નહીં.}one{Chromium માટે નવી અપડેટ ઉપલબ્ધ છે અને તે જેવું તમે ફરીથી લૉન્ચ કરશો, તેને લાગુ કરવામાં આવશે. તમારી # છુપી વિન્ડો ફરીથી ખૂલશે નહીં.}other{Chromium માટે નવી અપડેટ ઉપલબ્ધ છે અને તે જેવું તમે ફરીથી લૉન્ચ કરશો, તેને લાગુ કરવામાં આવશે. તમારી # છુપી વિન્ડો ફરીથી ખૂલશે નહીં.}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" />માંથી તમારા Android ફોન પર નંબર મોકલવા માટે, બન્ને ડિવાઇસ પર Chromiumમાં સાઇન ઇન કરો.</translation> @@ -165,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> જોખમી છે, તેથી Chromium એ તેને અવરોધિત કરેલ છે.</translation> <translation id="6134968993075716475">Safe Browsingની સુવિધા બંધ છે. Chromium તેને ચાલુ રાખવાનો સુઝાવ આપે છે.</translation> <translation id="6145820983052037069">તમે અહીં એક Chromium પ્રોફાઇલથી બીજી Chromium પ્રોફાઇલ પર સ્વિચ કરી શકો છો</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />અમે Chromium OS ઇન્સ્ટૉલ કરવા માટે તૈયાર છીએ! તમે આગળ વધશો પછી: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ફાઇલો, ડેટા અને તમારી હાલની ઑપરેટિંગ સિસ્ટમ કાઢી નાખવામાં આવશે. - <ph name="LIST_ITEM" />Chromium OS ઇન્સ્ટૉલ કરવામાં આવશે. - <ph name="LIST_ITEM" />ઇન્સ્ટૉલેશન પૂર્ણ થઈ ગયા પછી, તમારું ડિવાઇસ શટ ડાઉન થઈ જશે. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />છેલ્લું રિમાઇન્ડર: ઇન્સ્ટૉલેશન કરવાથી, તમારી હાર્ડ ડ્રાઇવનો બધો ડેટા કાઢી નાખવામાં આવશે. કૃપા કરીને ખાતરી કરો કે તમે તમારા જરૂરી ડેટાનો બૅકઅપ લઈ લીધો છે.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />એકવાર ઇન્સ્ટૉલેશન શરૂ થયા પછી, તેને રદ કરી શકાશે નહીં.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">ખાતરી કરો કે તમે તમારા <ph name="TARGET_DEVICE_NAME" /> પર Chromiumમાં સાઇન ઇન કર્યું છે અને પછી ફરીથી મોકલવાનો પ્રયાસ કરો.</translation> <translation id="6212496753309875659">આ કમ્પ્યુટર પર પહેલાંથી જ Chromiumનું સૌથી તાજેતરનું વર્ઝન છે. જો સૉફ્ટવેર કાર્ય કરી રહ્યું નથી, તો કૃપા કરીને Chromiumને અનઇન્સ્ટૉલ કરો અને ફરીથી પ્રયાસ કરો.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium હમણાં ફરીથી લૉન્ચ થશે}=1{Chromium 1 સેકન્ડમાં ફરીથી લૉન્ચ થશે}one{Chromium # સેકન્ડમાં ફરીથી લૉન્ચ થશે}other{Chromium # સેકન્ડમાં ફરીથી લૉન્ચ થશે}}</translation> @@ -191,7 +182,6 @@ <translation id="6434250628340475518">Chromium OS સિસ્ટમ</translation> <translation id="6455857529632101747">Chromium પ્રોફાઇલમાં આપનું સ્વાગત છે</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 સેકન્ડમાં ફરી શરૂ થશે}one{Chromium # સેકન્ડમાં ફરી શરૂ થશે}other{Chromium # સેકન્ડમાં ફરી શરૂ થશે}}</translation> -<translation id="646620589868199210">Chromium OS ઇન્સ્ટૉલ કરવા માટે તૈયાર છે</translation> <translation id="6475912303565314141">જ્યારે તમે Chromium શરૂ કરો ત્યારે કયું પૃષ્ઠ બતાવવામાં આવે તે તેનું પણ નિયંત્રણ કરે છે.</translation> <translation id="6510925080656968729">Chromium ને અનઇન્સ્ટૉલ કરો</translation> <translation id="6542839706527980775">દરેક પ્રોફાઇલ બુકમાર્ક, ઇતિહાસ, પાસવર્ડ અને બીજી ઘણી બાબતો જેવી તેની પોતાની Chromium માહિતી ધરાવે છે</translation>
diff --git a/chrome/app/resources/chromium_strings_hi.xtb b/chrome/app/resources/chromium_strings_hi.xtb index 2274ffc..7509269 100644 --- a/chrome/app/resources/chromium_strings_hi.xtb +++ b/chrome/app/resources/chromium_strings_hi.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> दबाकर Chromium प्रोफ़ाइलों के बीच स्विच किया जा सकता है</translation> <translation id="3509308970982693815">कृपया सभी क्रोमियम विंडो बंद करें और फिर से प्रयास करें.</translation> <translation id="3575459661164320785">आपके कंप्यूटर पर नुकसान पहुंचाने वाला सॉफ़्टवेयर है. क्रोमियम उसे हटा सकता है, आपकी सेटिंग को बहाल कर सकता है, और एक्सटेंशन को बंद कर सकता है, ताकि आपका ब्राउज़र फिर सामान्य रूप से काम करने लगे.</translation> -<translation id="3610776674893128619">हार्ड ड्राइव के डेटा को हमेशा के लिए मिटाएं और Chromium OS को इंस्टॉल करें</translation> <translation id="3639635944603682591">इस व्यक्ति का ब्राउज़िंग डेटा इस डिवाइस से मिटा दिया जाएगा. डेटा वापस पाने के लिए, क्रोमियम में <ph name="USER_EMAIL" /> के रूप में साइन इन करें.</translation> <translation id="364817392622123556">{COUNT,plural, =0{क्रोमियम के लिए एक नया अपडेट उपलब्ध है और जैसे ही आप फिर से लॉन्च करेंगे, अपडेट लागू कर दिया जाएगा.}=1{क्रोमियम के लिए एक नया अपडेट उपलब्ध है और जैसे ही आप फिर से लॉन्च करेंगे, अपडेट लागू कर दिया जाएगा. आपकी गुप्त विंडो फिर से नहीं खुलेगी.}one{क्रोमियम के लिए एक नया अपडेट उपलब्ध है और जैसे ही आप फिर से लॉन्च करेंगे, अपडेट लागू कर दिया जाएगा. आपकी # गुप्त विंडो फिर से नहीं खुलेंगी.}other{क्रोमियम के लिए एक नया अपडेट उपलब्ध है और जैसे ही आप फिर से लॉन्च करेंगे, अपडेट लागू कर दिया जाएगा. आपकी # गुप्त विंडो फिर से नहीं खुलेंगी.}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" /> से अपने Android फ़ोन पर नंबर भेजने के लिए, दोनों डिवाइस पर क्रोमियम में साइन इन करें.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> खतरनाक है, इसलिए क्रोमियम ने उसे अवरोधित कर दिया है.</translation> <translation id="6134968993075716475">सुरक्षित ब्राउज़िंग की सुविधा बंद है. 'क्रोमियम' इसे चालू करने का सुझाव देता है.</translation> <translation id="6145820983052037069">आप यहां Chromium प्रोफ़ाइलों के बीच स्विच कर सकते हैं</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />हम Chromium OS को इंस्टॉल करने के लिए तैयार हैं! इंस्टॉल करना शुरू करने के बाद: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />फ़ाइलें, डेटा, और आपका मौजूदा ऑपरेटिंग सिस्टम हमेशा के लिए मिटा दिया जाएगा. - <ph name="LIST_ITEM" />Chromium OS इंस्टॉल हो जाएगा. - <ph name="LIST_ITEM" />इंस्टॉल होने के बाद, आपका डिवाइस शट डाउन हो जाएगा. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />आखिरी रिमाइंडर: इंस्टॉल करने से, आपकी हार्ड ड्राइव का सारा डेटा हमेशा के लिए मिटा दिया जाएगा. कृपया पक्का करें कि आपने अपने ज़रूरी डेटा का बैक अप लिया है.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />इंस्टॉल करना शुरू करने के बाद, रद्द नहीं किया जा सकता.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">पक्का करें कि आपने <ph name="TARGET_DEVICE_NAME" /> पर क्रोमियम में साइन इन किया है. इसके बाद, फिर से भेजने की कोशिश करें.</translation> <translation id="6212496753309875659">इस कंप्यूटर में पहले से क्रोमियम का ज़्यादा नया वर्शन है. अगर सॉफ़्टवेयर काम नहीं कर रहा है, तो कृपया क्रोमियम अनइंस्टॉल करें और फिर से प्रयास करें.</translation> <translation id="6219195342503754812">{0,plural, =0{क्रोमियम अभी फिर से लॉन्च होगा}=1{क्रोमियम 1 सेकंड में फिर से लॉन्च होगा}one{क्रोमियम # सेकंड में फिर से लॉन्च होगा}other{क्रोमियम # सेकंड में फिर से लॉन्च होगा}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">क्रोमियम OS सिस्टम</translation> <translation id="6455857529632101747">Chromium प्रोफ़ाइलों में आपका स्वागत है</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{क्रोमियम 1 सेकंड में रीस्टार्ट होगा}one{क्रोमियम # सेकंड में रीस्टार्ट होगा}other{क्रोमियम # सेकंड में रीस्टार्ट होगा}}</translation> -<translation id="646620589868199210">क्या आप Chromium OS को इंस्टॉल करने के लिए तैयार हैं</translation> <translation id="6475912303565314141">इससे यह भी नियंत्रित होता है कि जब आप क्रोमियम प्रारंभ करते हैं तब कौन सा पृष्ठ दिखाया जाए.</translation> <translation id="6510925080656968729">क्रोमियम को अनइंस्टाल करें</translation> <translation id="6542839706527980775">हर प्रोफ़ाइल के पास उसके अपने Chromium की जानकारी होती है, जैसे कि बुकमार्क, इतिहास, पासवर्ड, और अन्य जानकारी</translation>
diff --git a/chrome/app/resources/chromium_strings_hr.xtb b/chrome/app/resources/chromium_strings_hr.xtb index 574455c..cbae4dc 100644 --- a/chrome/app/resources/chromium_strings_hr.xtb +++ b/chrome/app/resources/chromium_strings_hr.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931">Pomoću prečaca <ph name="SHORTCUT" /> možete se prebacivati između profila u Chromiumu</translation> <translation id="3509308970982693815">Zatvorite sve prozore preglednika Chromium i pokušajte ponovo.</translation> <translation id="3575459661164320785">Na računalu imate štetni softver. Chromium ga može ukloniti, vratiti vaše postavke i onemogućiti proširenja kako bi vaš preglednik ponovo funkcionirao normalno.</translation> -<translation id="3610776674893128619">Izbriši tvrdi disk i instaliraj OS Chromium</translation> <translation id="3639635944603682591">Podaci o pregledavanju za tu osobu izbrisat će se s ovog uređaja. Da biste vratili te podatke, prijavite se na Chromium kao <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Dostupno je novo ažuriranje za Chromium koje će se primijeniti nakon ponovnog pokretanja.}=1{Dostupno je novo ažuriranje za Chromium koje će se primijeniti nakon ponovnog pokretanja. Anonimni se prozor neće ponovno otvoriti.}one{Dostupno je novo ažuriranje za Chromium koje će se primijeniti nakon ponovnog pokretanja. Vaš # anonimni prozor neće se ponovno otvoriti.}few{Dostupno je novo ažuriranje za Chromium koje će se primijeniti nakon ponovnog pokretanja. Vaša # anonimna prozora neće se ponovno otvoriti.}other{Dostupno je novo ažuriranje za Chromium koje će se primijeniti nakon ponovnog pokretanja. Vaših # anonimnih prozora neće se ponovno otvoriti.}}</translation> <translation id="3651803019964686660">Da biste poslali broj s uređaja <ph name="ORIGIN" /> na svoj Android telefon, prijavite se na Chromium na oba uređaja.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363">Datoteka <ph name="FILE_NAME" /> opasna je, pa ju je Chromium blokirao.</translation> <translation id="6134968993075716475">Sigurno je pregledavanje isključeno. Chromium preporučuje da ga uključite.</translation> <translation id="6145820983052037069">Ovdje se možete prebacivati između profila u Chromiumu</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Spremni smo za instaliranje OS-a Chromium! Kad nastavite: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Izbrisat će se datoteke, podaci i vaš trenutačni operativni sustav. - <ph name="LIST_ITEM" />Instalirat će se OS Chromium. - <ph name="LIST_ITEM" />Vaš će se uređaj isključiti nakon dovršetka instalacije. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Još jednom podsjećamo: instalacijom se briše cijeli tvrdi disk. Provjerite imate li sigurnosnu kopiju svih važnih podataka.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Nakon što započne, instalacija se ne može otkazati.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Obavezno se prijavite na Chromium na uređaju <ph name="TARGET_DEVICE_NAME" /> i nakon toga ponovno pokušajte sa slanjem.</translation> <translation id="6212496753309875659">Ovo računalo već ima noviju verziju Chromiuma. Ako softver ne funkcionira, deinstalirajte Chromium i pokušajte ponovo.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium će se sada ponovo pokrenuti}=1{Chromium će se ponovo pokrenuti za jednu sekundu}one{Chromium će se ponovo pokrenuti za # sekundu}few{Chromium će se ponovo pokrenuti za # sekunde}other{Chromium će se ponovo pokrenuti za # sekundi}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">OS Chromium</translation> <translation id="6455857529632101747">Dobro došli u Chromiumove profile</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium će se ponovo pokrenuti za 1 sekundu}one{Chromium će se ponovo pokrenuti za # sekundu}few{Chromium će se ponovo pokrenuti za # sekunde}other{Chromium će se ponovo pokrenuti za # sekundi}}</translation> -<translation id="646620589868199210">Spremno za instaliranje OS-a Chromium</translation> <translation id="6475912303565314141">Upravlja i time koja se stranica prikazuje prilikom pokretanja Chromiuma.</translation> <translation id="6510925080656968729">Deinstaliranje Chromiuma</translation> <translation id="6542839706527980775">Svaki profil ima vlastite podatke u Chromiumu kao što su oznake, povijest, zaporke i slično</translation>
diff --git a/chrome/app/resources/chromium_strings_hu.xtb b/chrome/app/resources/chromium_strings_hu.xtb index c51b41e23..3a5963a 100644 --- a/chrome/app/resources/chromium_strings_hu.xtb +++ b/chrome/app/resources/chromium_strings_hu.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931">A(z) <ph name="SHORTCUT" /> billentyűkombinációval válthat a Chromium-profilok között</translation> <translation id="3509308970982693815">Zárjon be minden Chromium-ablakot, és próbálkozzon újra.</translation> <translation id="3575459661164320785">A számítógépen kártékony szoftver található. A Chromium képes a kártékony szoftver eltávolítására, a beállítások visszaállítására és a bővítmények letiltására, hogy a böngésző újra a szokásos módon működhessen.</translation> -<translation id="3610776674893128619">Merevlemez törlése és a Chromium OS telepítése</translation> <translation id="3639635944603682591">A személy böngészési adatai törlődnek az eszközről. Az adatok visszaállításához jelentkezzen be a Chromiumba a következő felhasználóként: <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Új Chromium-frissítés jelent meg, amely az újraindítás után azonnal érvénybe lép.}=1{Új Chromium-frissítés jelent meg, amely az újraindítás után azonnal érvénybe lép. Az inkognitó ablak nem fog újra megnyílni.}other{Új Chromium-frissítés jelent meg, amely az újraindítás után azonnal érvénybe lép. A(z) # inkognitó ablak nem fog újra megnyílni.}}</translation> <translation id="3651803019964686660">Ha innen: <ph name="ORIGIN" /> szeretne számot küldeni Android-telefonjára, jelentkezzen be a Chromiumba mindkét eszközén.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363">A(z) <ph name="FILE_NAME" /> veszélyes, ezért a Chromium letiltotta.</translation> <translation id="6134968993075716475">A Biztonságos Böngészés ki van kapcsolva. A Chromium a szolgáltatás bekapcsolását javasolja.</translation> <translation id="6145820983052037069">Itt válthat a Chromium-profilok között</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Készen állunk a Chromium OS telepítésére! A továbblépést követően: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />A fájlok, az adatok és az aktuális operációs rendszer törlődik. - <ph name="LIST_ITEM" />A Chromium OS telepítésére készül. - <ph name="LIST_ITEM" />Az eszköze kikapcsol a telepítés befejezése után. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Egy utolsó emlékeztető: a telepítéssel törlődik az egész merevlemez. Győződjön meg róla, hogy minden fontos adatról van biztonsági másolata<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Miután kezdetét vette a telepítés, már nem lehet megszakítani.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Ellenőrizze, hogy bejelentkezett-e a Chromiumba <ph name="TARGET_DEVICE_NAME" /> eszközén, majd próbálja meg újraküldeni.</translation> <translation id="6212496753309875659">A számítógépen már megtalálható a Chromium újabb verziója. Ha a szoftver nem működik, kérjük, távolítsa el a Chromiumot, majd próbálkozzon újra.</translation> <translation id="6219195342503754812">{0,plural, =0{A Chromium most újraindul}=1{A Chromium 1 másodpercen belül újraindul}other{A Chromium # másodpercen belül újraindul}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">Chromium OS rendszer</translation> <translation id="6455857529632101747">Üdvözöljük a Chromium-profilokban!</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{A Chromium 1 másodpercen belül újraindul}other{A Chromium # másodpercen belül újraindul}}</translation> -<translation id="646620589868199210">A Chromium OS készen áll a telepítésre</translation> <translation id="6475912303565314141">Továbbá azt is szabályozza, hogy melyik oldal jelenik meg a Chromium indításakor.</translation> <translation id="6510925080656968729">Chromium eltávolítása</translation> <translation id="6542839706527980775">Minden profil saját Chromium-adatokat (például könyvjelzőket, előzményeket, jelszavakat és egyebeket) tárol.</translation>
diff --git a/chrome/app/resources/chromium_strings_hy.xtb b/chrome/app/resources/chromium_strings_hy.xtb index ff5ec37..b3ad08f8 100644 --- a/chrome/app/resources/chromium_strings_hy.xtb +++ b/chrome/app/resources/chromium_strings_hy.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931">Chromium-ի այլ պրոֆիլի կարող եք անցնել <ph name="SHORTCUT" /> ստեղների համադրության միջոցով</translation> <translation id="3509308970982693815">Փակեք Chromium-ի բոլոր պատուհանները և կրկին փորձեք:</translation> <translation id="3575459661164320785">Ձեր համակարգչում վնասաբեր ծրագիր է հայտնաբերվել։ Ձեր դիտարկիչի կայուն աշխատանքը վերականգնելու համար Chromium-ը կարող է ջնջել ծրագիրը և վերականգնել ձեր կարգավորումները։</translation> -<translation id="3610776674893128619">Ջնջել բոլոր տվյալները կոշտ սկավառակից և տեղադրել Chromium OS-ը</translation> <translation id="3639635944603682591">Այս օգտատիրոջ այցելությունների պատմությունը կհեռացվի այս սարքից։ Տվյալները վերականգնելու համար <ph name="USER_EMAIL" /> հաշվով մուտք գործեք Chromium-ում։</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium-ի այս տարբերակի համար առկա է թարմացում: Այն կտեղադրվի, երբ դիտարկիչը վերագործարկվի։}=1{Chromium-ի այս տարբերակի համար առկա է թարմացում: Այն կտեղադրվի, երբ դիտարկիչը վերագործարկվի։ Ձեր ինկոգնիտո պատուհանը նորից չի բացվի։}one{Chromium-ի այս տարբերակի համար առկա է թարմացում: Այն կտեղադրվի, երբ դիտարկիչը վերագործարկվի։ Ձեր # ինկոգնիտո պատուհանը նորից չի բացվի։}other{Chromium-ի այս տարբերակի համար առկա է թարմացում: Այն կտեղադրվի, երբ դիտարկիչը վերագործարկվի։ Ձեր # ինկոգնիտո պատուհանները նորից չեն բացվի։}}</translation> <translation id="3651803019964686660">Հեռախոսահամարը <ph name="ORIGIN" /> կայքից ձեր Android հեռախոսին ուղարկելու համար երկու սարքերի Chromium դիտարկիչներում մտեք հաշիվ։</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> ֆայլը վտանգավոր է, և Chromium-ն արգելափակել է այն։</translation> <translation id="6134968993075716475">Անվտանգ դիտարկումն անջատված է։ Chromium-ը խորհուրդ է տալիս միացնել այն։</translation> <translation id="6145820983052037069">Այստեղ կարող եք անցնել Chromium-ի այլ պրոֆիլի</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Մենք պատրաստ ենք տեղադրելու Chromium OS-ը։ Երբ գործարկեք այն՝ - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Ֆայլերը, տվյալները և ձեր ընթացիկ օպերացիոն համակարգը կջնջվեն։ - <ph name="LIST_ITEM" />Կտեղադրվի Chromium OS համակարգը։ - <ph name="LIST_ITEM" />Տեղադրման ավարտից հետո ձեր սարքը կվերգործարկվի։ - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Եվս մեկ վերջին հիշեցում. տեղադրման արդյունքում ձեր կոշտ սկավառակում առկա բոլոր տվյալները կջնջվեն։ Համոզվեք, որ պահուստավորել եք ձեզ անհրաժեշտ տվյալները։<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Հենց որ տեղադրումը սկսվի, այն հնարավոր չի լինի չեղարկել։<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Համոզվեք, որ մուտք եք գործել հաշիվ <ph name="TARGET_DEVICE_NAME" /> սարքի Chromium դիտարկիչում և փորձեք նորից ուղարկել։</translation> <translation id="6212496753309875659">Այս համակարգչում արդեն տեղադրված է Chromium-ի ավելի նոր տարբերակը: Եթե ծրագրակազմը չի աշխատում, ապատեղադրեք Chromium-ը և նորից փորձեք:</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium-ը հիմա կվերագործարկվի}=1{Chromium-ը կվերագործարկվի 1 վայրկյանից}one{Chromium-ը կվերագործարկվի # վայրկյանից}other{Chromium-ը կվերագործարկվի # վայրկյանից}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Chromium OS համակարգ</translation> <translation id="6455857529632101747">Բարի գալուստ Chromium պրոֆիլներ</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium-ը կվերագործարկվի 1 վայրկյանից}one{Chromium-ը կվերագործարկվի # վայրկյանից}other{Chromium-ը կվերագործարկվի # վայրկյանից}}</translation> -<translation id="646620589868199210">Chromium OS-ը պատրաստ է տեղադրման</translation> <translation id="6475912303565314141">Այն նաև վերահսկում է, թե որ էջը ցուցադրվի Chromium-ը մեկնարկելիս:</translation> <translation id="6510925080656968729">Ապատեղադրել Chromium-ը</translation> <translation id="6542839706527980775">Յուրաքանչյուր պրոֆիլում առանձին պահվում են Chromium-ի օգտատերերի տվյալները, օրինակ՝ էջանիշները, պատմությունը, գաղտնաբառերը և այլն</translation>
diff --git a/chrome/app/resources/chromium_strings_id.xtb b/chrome/app/resources/chromium_strings_id.xtb index 2f783d6..c272538 100644 --- a/chrome/app/resources/chromium_strings_id.xtb +++ b/chrome/app/resources/chromium_strings_id.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> dapat membuat berpindah-pindah profil Chromium</translation> <translation id="3509308970982693815">Tutup semua jendela Chromium dan coba lagi.</translation> <translation id="3575459661164320785">Ada software berbahaya di komputer Anda. Chromium dapat menghapusnya, memulihkan setelan Anda, dan menonaktifkan ekstensi agar browser berfungsi kembali secara normal.</translation> -<translation id="3610776674893128619">Hapus Hard Drive & Instal Chromium OS</translation> <translation id="3639635944603682591">Data browsing pengguna ini akan dihapus dari perangkat ini. Untuk memulihkan data, login ke Chromium sebagai <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Update baru untuk Chromium telah tersedia dan akan diterapkan segera setelah diluncurkan kembali.}=1{Update baru untuk Chromium telah tersedia dan akan diterapkan segera setelah diluncurkan kembali. Jendela Samaran Anda tidak akan dibuka kembali.}other{Update baru untuk Chromium telah tersedia dan akan diterapkan segera setelah diluncurkan kembali. # jendela Samaran Anda tidak akan dibuka kembali.}}</translation> <translation id="3651803019964686660">Untuk mengirimkan nomor dari <ph name="ORIGIN" /> ke ponsel Android Anda, login ke Chromium di kedua perangkat.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> berbahaya, sehingga Chromium memblokirnya.</translation> <translation id="6134968993075716475">Safe Browsing nonaktif. Chromium merekomendasikan untuk mengaktifkannya.</translation> <translation id="6145820983052037069">Anda dapat berpindah-pindah profil Chromium di sini</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Kami siap menginstal Chromium OS. Setelah Anda melanjutkan: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />File, data, dan sistem operasi saat ini akan dihapus. - <ph name="LIST_ITEM" />Chromium OS akan diinstal. - <ph name="LIST_ITEM" />Perangkat Anda akan dimatikan setelah proses penginstalan selesai. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Pengingat terakhir: penginstalan akan menghapus seluruh data di hard drive. Pastikan Anda telah mencadangkan semua data penting.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Penginstalan tidak dapat dibatalkan setelah dimulai.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Pastikan Anda login ke Chromium di <ph name="TARGET_DEVICE_NAME" /> Anda, lalu coba kirimkan lagi.</translation> <translation id="6212496753309875659">Komputer ini sudah memiliki versi Chromium yang lebih baru. Jika software tidak bekerja, harap coba uninstal Chromium, lalu cobalah kembali.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium akan diluncurkan ulang sekarang}=1{Chromium akan diluncurkan ulang dalam 1 detik}other{Chromium akan diluncurkan ulang dalam # detik}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">Sistem Chromium OS</translation> <translation id="6455857529632101747">Selamat datang di profil Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium akan dimulai ulang dalam 1 detik}other{Chromium akan dimulai ulang dalam # detik}}</translation> -<translation id="646620589868199210">Siap menginstal Chromium OS</translation> <translation id="6475912303565314141">Juga mengontrol halaman apa yang ditampilkan saat Anda memulai Chromium.</translation> <translation id="6510925080656968729">Uninstal Chromium</translation> <translation id="6542839706527980775">Setiap profil memiliki info Chromium tersendiri, seperti bookmark, histori, sandi, dan lainnya</translation>
diff --git a/chrome/app/resources/chromium_strings_is.xtb b/chrome/app/resources/chromium_strings_is.xtb index 414346e2..43ad437 100644 --- a/chrome/app/resources/chromium_strings_is.xtb +++ b/chrome/app/resources/chromium_strings_is.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> getur skipt á milli Chromium prófíla</translation> <translation id="3509308970982693815">Lokaðu öllum gluggum Chromium og reyndu aftur.</translation> <translation id="3575459661164320785">Skaðlegur hugbúnaður er á tölvunni þinni. Chromium getur fjarlægt hann, endurheimt stillingar þínar og gert viðbætur óvirkar svo vafrinn þinn virki aftur eins og ætla skyldi.</translation> -<translation id="3610776674893128619">Eyða af harða diskinum og setja upp Chromium OS</translation> <translation id="3639635944603682591">Vefskoðunargögnum þessa aðila verður eytt úr þessu tæki. Skráðu þig inn í Chromium sem <ph name="USER_EMAIL" /> til að endurheimta gögn.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Ný útgáfa af Chromium er í boði og hún verður notuð um leið og þú endurræsir.}=1{Ný útgáfa af Chromium er í boði og hún verður notuð um leið og þú endurræsir. Huliðsglugginn enduropnast ekki.}one{Ný útgáfa af Chromium er í boði og hún verður notuð um leið og þú endurræsir. # huliðsgluggi enduropnast ekki.}other{Ný útgáfa af Chromium er í boði og hún verður notuð um leið og þú endurræsir. # huliðsgluggar enduropnast ekki.}}</translation> <translation id="3651803019964686660">Til að senda númer úr <ph name="ORIGIN" /> í Android símann þinn skaltu skrá þig inn á Chromium í báðum tækjunum.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> er skaðleg skrá og Chromium útilokaði hana.</translation> <translation id="6134968993075716475">Slökkt er á öruggri vefskoðun. Chromium mælir með því að kveikt sé á henni.</translation> <translation id="6145820983052037069">Hér geturðu skipt á milli Chromium prófíla</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Nú er allt tilbúið fyrir uppsetningu Chromium OS! Þegar þú heldur áfram: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Verður skrám, gögnum og núverandi stýrikerfi eytt. - <ph name="LIST_ITEM" />Chromium OS verður sett upp. - <ph name="LIST_ITEM" />Slökkt verður á tækinu þegar uppsetningunni lýkur. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Ein lokaáminning: uppsetningin mun eyða öllu af harða disknum. Vertu viss um að hafa tekið afrit af öllum gögnum sem þú vilt geyma.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Þegar uppsetningin hefst er ekki hægt að hætta við hana.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Vertu viss um að þú sért skráð(ur) inn á Chromium í <ph name="TARGET_DEVICE_NAME" /> og reyndu svo að senda aftur.</translation> <translation id="6212496753309875659">Á þessari tölvu er þegar nýrri útgáfa af Chromium. Ef hugbúnaðurinn virkar ekki skaltu fjarlægja Chromium og reyna aftur.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium verður endurræst núna}=1{Chromium verður endurræst eftir 1 sekúndu}one{Chromium verður endurræst eftir # sekúndu}other{Chromium verður endurræst eftir # sekúndur}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Chromium OS kerfi</translation> <translation id="6455857529632101747">Velkomin(n) í Chromium prófíla</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium verður endurræst eftir eina sekúndu}one{Chromium verður endurræst eftir # sekúndu}other{Chromium verður endurræst eftir # sekúndur}}</translation> -<translation id="646620589868199210">Nú er hægt að setja upp Chromium OS</translation> <translation id="6475912303565314141">Stýrir því einnig hvaða síða birtist þegar þú ræsir Chromium.</translation> <translation id="6510925080656968729">Fjarlægja Chromium</translation> <translation id="6542839706527980775">Á hverjum prófíl eru geymdar Chromium upplýsingar á borð við bókamerki, feril, aðgangsorð og fleira</translation>
diff --git a/chrome/app/resources/chromium_strings_it.xtb b/chrome/app/resources/chromium_strings_it.xtb index a9fc3c3..e90969c 100644 --- a/chrome/app/resources/chromium_strings_it.xtb +++ b/chrome/app/resources/chromium_strings_it.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931">La scorciatoia <ph name="SHORTCUT" /> consente di passare da un profilo Chromium all'altro</translation> <translation id="3509308970982693815">Chiudi tutte le finestre di Chromium e riprova.</translation> <translation id="3575459661164320785">È stato rilevato software dannoso sul tuo computer. Chromium può rimuoverlo, ripristinare le tue impostazioni e disattivare le estensioni per ristabilire il normale funzionamento del browser.</translation> -<translation id="3610776674893128619">Resetta il disco rigido e installa Chromium OS</translation> <translation id="3639635944603682591">I dati di navigazione di questa persona verranno eliminati dal dispositivo. Per recuperare i dati, accedi a Chromium con il nome utente <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{È disponibile un nuovo aggiornamento di Chromium che verrà installato appena eseguirai il riavvio.}=1{È disponibile un nuovo aggiornamento di Chromium che verrà installato appena eseguirai il riavvio. La finestra di navigazione in incognito non verrà riaperta.}other{È disponibile un nuovo aggiornamento di Chromium che verrà installato appena eseguirai il riavvio. Le # finestre di navigazione in incognito non verranno riaperte.}}</translation> <translation id="3651803019964686660">Per inviare un numero da <ph name="ORIGIN" /> al tuo telefono Android, accedi a Chromium su entrambi i dispositivi.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> è pericoloso, pertanto è stato bloccato da Chromium.</translation> <translation id="6134968993075716475">Navigazione sicura è disattivata. Chromium consiglia di attivarla.</translation> <translation id="6145820983052037069">Puoi passare da un profilo Chromium all'altro qui</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />È tutto pronto per l'installazione di Chromium OS. Se procedi: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Verranno cancellati i file, i dati e il sistema operativo corrente. - <ph name="LIST_ITEM" />Verrà installato Chromium OS. - <ph name="LIST_ITEM" />Il dispositivo si spegnerà al termine dell'installazione. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Un ultimo promemoria: l'installazione comporterà il reset di tutto il disco rigido. Assicurati di avere una copia di backup di tutti i dati importanti.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Non è possibile annullare l'installazione dopo averla avviata.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Assicurati di aver effettuato l'accesso a Chromium sul tuo dispositivo <ph name="TARGET_DEVICE_NAME" /> e prova a ripetere l'invio.</translation> <translation id="6212496753309875659">Questo computer ha già una versione più recente di Chromium. Se il software non funziona, disinstalla Chromium e riprova.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium verrà riavviato ora}=1{Chromium verrà riavviato tra 1 secondo}other{Chromium verrà riavviato tra # secondi}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">Sistema Chromium OS</translation> <translation id="6455857529632101747">Ti diamo il benvenuto nei profili Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium si riavvierà tra 1 secondo}other{Chromium si riavvierà tra # secondi}}</translation> -<translation id="646620589868199210">È possibile installare Chromium OS</translation> <translation id="6475912303565314141">Controlla anche la pagina visualizzata all'avvio di Chromium.</translation> <translation id="6510925080656968729">Disinstalla Chromium</translation> <translation id="6542839706527980775">Ogni profilo dispone delle proprie informazioni di Chromium, come preferiti, cronologia, password e altro</translation>
diff --git a/chrome/app/resources/chromium_strings_iw.xtb b/chrome/app/resources/chromium_strings_iw.xtb index 8e14db2..88d1ab8 100644 --- a/chrome/app/resources/chromium_strings_iw.xtb +++ b/chrome/app/resources/chromium_strings_iw.xtb
@@ -14,7 +14,7 @@ <translation id="1524282610922162960">שיתוף כרטיסיית Chromium</translation> <translation id="1553461853655228091">Chromium זקוק להרשאת גישה למצלמה כדי ליצור מפה תלת-ממדית של הסביבה שלך</translation> <translation id="1607715478322902680">{COUNT,plural, =0{מנהל המערכת מבקש להפעיל מחדש את Chromium כדי להחיל עדכון}=1{מנהל המערכת מבקש להפעיל מחדש את Chromium כדי להחיל עדכון. החלון האנונימי לא ייפתח מחדש.}two{מנהל המערכת מבקש להפעיל מחדש את Chromium כדי להחיל עדכון. # החלונות האנונימיים לא ייפתחו מחדש.}many{מנהל המערכת מבקש להפעיל מחדש את Chromium כדי להחיל עדכון. # החלונות האנונימיים לא ייפתחו מחדש.}other{מנהל המערכת מבקש להפעיל מחדש את Chromium כדי להחיל עדכון. # החלונות האנונימיים לא ייפתחו מחדש.}}</translation> -<translation id="1667812772085710766">לאחר הסגירה של Chromium, קובצי cookie ונתונים מאתרים של הדפים שבהם ביקרת יימחקו באופן אוטומטי</translation> +<translation id="1667812772085710766">אחרי שסוגרים את Chromium, קובצי ה-cookie והנתונים מהדפים שבהם ביקרת יימחקו באופן אוטומטי</translation> <translation id="1708666629004767631">גרסה חדשה ובטוחה יותר של Chromium זמינה כעת.</translation> <translation id="1774152462503052664">התרה ל-Chromium לפעול ברקע</translation> <translation id="1779356040007214683">כדי לשפר את האבטחה של Chromium, השבתנו חלק מהתוספים שלא רשומים ב<ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> וייתכן שנוספו ללא ידיעתך.</translation> @@ -80,7 +80,6 @@ <translation id="3497319089134299931">ניתן לעבור בין פרופילים של Chromium באמצעות <ph name="SHORTCUT" /></translation> <translation id="3509308970982693815">יש לסגור את כל חלונות Chromium ולנסות שוב.</translation> <translation id="3575459661164320785">יש במחשב שלך תוכנה מזיקה. Chromium יכול להסיר אותה, לשחזר את ההגדרות שלך ולהשבית תוספים כדי שהדפדפן יחזור שוב לפעולה רגילה.</translation> -<translation id="3610776674893128619">מחיקת הכונן הקשיח והתקנת מערכת ההפעלה Chromium</translation> <translation id="3639635944603682591">נתוני הגלישה של האדם הזה יימחקו מהמכשיר. כדי לשחזר את הנתונים, יש להיכנס ל-Chromium בתור <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{יש עדכון חדש בשביל Chromium והמערכת תחיל אותו ברגע שתבוצע הפעלה מחדש.}=1{יש עדכון חדש בשביל Chromium והמערכת תחיל אותו ברגע שתבוצע הפעלה מחדש. החלון האנונימי לא ייפתח מחדש.}two{יש עדכון חדש בשביל Chromium והמערכת תחיל אותו ברגע שתבוצע הפעלה מחדש. # החלונות האנונימיים לא ייפתחו מחדש.}many{יש עדכון חדש בשביל Chromium והמערכת תחיל אותו ברגע שתבוצע הפעלה מחדש. # החלונות האנונימיים לא ייפתחו מחדש.}other{יש עדכון חדש בשביל Chromium והמערכת תחיל אותו ברגע שתבוצע הפעלה מחדש. # החלונות האנונימיים לא ייפתחו מחדש.}}</translation> <translation id="3651803019964686660">כדי לשלוח מספר מ-<ph name="ORIGIN" /> לטלפון Android שלך, צריך להיכנס אל Chromium בשני המכשירים.</translation> @@ -162,15 +161,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> מסוכן, ולכן Chromium חסם אותו.</translation> <translation id="6134968993075716475">הגלישה הבטוחה כבויה. ההמלצה של Chromium היא להפעיל אותה.</translation> <translation id="6145820983052037069">כאן ניתן לעבור בין פרופילים של Chromium</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />הכל מוכן להתקנת מערכת ההפעלה Chromium! לאחר ההתקדמות בתהליך ההתקנה: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />הקבצים, הנתונים ומערכת ההפעלה שלך יימחקו. - <ph name="LIST_ITEM" />תושלם ההתקנה של מערכת ההפעלה Chromium. - <ph name="LIST_ITEM" />המכשיר ייכבה לאחר השלמת ההתקנה. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />תזכורת בפעם האחרונה: ההתקנה תוביל למחיקת הכונן הקשיח במלואו. חשוב לוודא שגיבית את הנתונים שחשובים לך.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />אין אפשרות לבטל את ההתקנה לאחר שהחלה.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">יש לוודא שנכנסת ל-Chromium ב-<ph name="TARGET_DEVICE_NAME" /> שלך ולשלוח שוב.</translation> <translation id="6212496753309875659">במחשב זה קיימת כבר גרסה מתקדמת יותר של Chromium. אם התוכנה אינה פועלת, יש להסיר את ההתקנה של Chromium ולנסות שוב.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium יופעל מחדש עכשיו}=1{Chromium יופעל מחדש בעוד שנייה אחת}two{Chromium יופעל מחדש בעוד # שניות}many{Chromium יופעל מחדש בעוד # שניות}other{Chromium יופעל מחדש בעוד # שניות}}</translation> @@ -188,7 +178,6 @@ <translation id="6434250628340475518">מערכת Chromium OS</translation> <translation id="6455857529632101747">ברוך בואך לפרופילים של Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium יבצע אתחול בעוד שנייה אחת}two{Chromium יבצע אתחול בעוד # שניות}many{Chromium יבצע אתחול בעוד # שניות}other{Chromium יבצע אתחול בעוד # שניות}}</translation> -<translation id="646620589868199210">הכל מוכן להתקנת מערכת ההפעלה Chromium</translation> <translation id="6475912303565314141">הגדרה זו גם קובעת איזה דף מוצג כשמפעילים את Chromium.</translation> <translation id="6510925080656968729">הסרה של התקנת Chromium</translation> <translation id="6542839706527980775">בכל פרופיל מאוחסנים נתוני Chromium משלו כמו סימניות, היסטוריה, סיסמאות ועוד</translation>
diff --git a/chrome/app/resources/chromium_strings_ja.xtb b/chrome/app/resources/chromium_strings_ja.xtb index 1214fcb..d9e8646d 100644 --- a/chrome/app/resources/chromium_strings_ja.xtb +++ b/chrome/app/resources/chromium_strings_ja.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931">Chromium プロフィールを切り替えるには、<ph name="SHORTCUT" /> を使用します</translation> <translation id="3509308970982693815">すべての Chromium ウィンドウを閉じてからもう一度お試しください。</translation> <translation id="3575459661164320785">お使いのパソコンに有害なソフトウェアが見つかりました。Chromium では、ブラウザを正常な動作に戻すためにこのソフトウェアを削除し、設定を復元して、拡張機能を無効化することができます。</translation> -<translation id="3610776674893128619">ハードドライブのデータを消去して Chromium OS をインストール</translation> <translation id="3639635944603682591">この操作を行うと、このユーザーの閲覧データがこのデバイスから削除されます。データを復元するには、<ph name="USER_EMAIL" /> として Chromium にログインしてください。</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium の新しいアップデートを利用できます。再起動するとすぐにアップデートが適用されます。}=1{Chromium の新しいアップデートを利用できます。再起動するとすぐにアップデートが適用されます。シークレット ウィンドウは、再起動後は自動的には開きません。}other{Chromium の新しいアップデートを利用できます。再起動するとすぐにアップデートが適用されます。現在開いている # 個のシークレット ウィンドウは、再起動後は自動的には開きません。}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" /> から Android スマートフォンに番号を送信するには、両方のデバイスで Chromium にログインしてください。</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> は危険なファイルであるため、Chromium でブロックしました。</translation> <translation id="6134968993075716475">セーフ ブラウジングがオフになっています。Chromium はオンにすることをおすすめしています。</translation> <translation id="6145820983052037069">こちらで Chromium プロフィールを切り替えることができます</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Chromium OS をインストールする準備ができました。インストールを開始すると、次の処理が行われます。 - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ファイル、データ、現在のオペレーティング システムが消去されます。 - <ph name="LIST_ITEM" />Chromium OS がインストールされます。 - <ph name="LIST_ITEM" />インストールが完了するとデバイスがシャットダウンされます。 - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />重要: インストールすると、ハードドライブのデータはすべて消去されます。大切なデータがすべてバックアップされていることをご確認ください。<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />インストールを開始した後にキャンセルすることはできません。<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177"><ph name="TARGET_DEVICE_NAME" /> で Chromium にログインしていることを確認してから、もう一度送信してください。</translation> <translation id="6212496753309875659">新しいバージョンの Chromium が既にインストールされています。ソフトウェアが動作しない場合は、Chromium をアンインストールしてからもう一度お試しください。</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium は今すぐ再起動されます}=1{Chromium は 1 秒後に再起動されます}other{Chromium は # 秒後に再起動されます}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">Chromium OS システム</translation> <translation id="6455857529632101747">Chromium プロフィールへようこそ</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium は 1 秒後に再起動します}other{Chromium は # 秒後に再起動します}}</translation> -<translation id="646620589868199210">Chromium OS をインストールできます</translation> <translation id="6475912303565314141">この拡張機能では、Chromium の起動時に表示されるページも制御されます。</translation> <translation id="6510925080656968729">Chromium をアンインストール</translation> <translation id="6542839706527980775">Chromium の情報(ブックマーク、履歴、パスワードなど)はプロフィールごとに分けて保持されます</translation>
diff --git a/chrome/app/resources/chromium_strings_ka.xtb b/chrome/app/resources/chromium_strings_ka.xtb index bf6b3a2..d7bd9ac 100644 --- a/chrome/app/resources/chromium_strings_ka.xtb +++ b/chrome/app/resources/chromium_strings_ka.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> გადართავს Chromium პროფილებს</translation> <translation id="3509308970982693815">დახურეთ Chromium-ის ყველა ფანჯარა და ხელახლა სცადეთ.</translation> <translation id="3575459661164320785">თქვენს კომპიუტერზე აღმოჩენილია საზიანო პროგრამული უზრუნველყოფა. Chromium-ს შეუძლია მისი ამოშლა, თქვენი პარამეტრების აღდგენა და გაფართოებების გათიშვა, რომ ბრაუზერმა კვლავ ნორმალურად იმუშაოს.</translation> -<translation id="3610776674893128619">მყარი დისკის ამოშლა და Chromium OS-ის ინსტალაცია</translation> <translation id="3639635944603682591">ამ პიროვნების დათვალიერების მონაცემები წაიშლება ამ მოწყობილობიდან. მონაცემების აღსადგენად შედით Chromium-ში, როგორც <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{ხელმისაწვდომია Chromium-ის განახლება, რომელიც მას მიესადაგება ხელახლა გაშვებისთანავე.}=1{ხელმისაწვდომია Chromium-ის განახლება, რომელიც მას მიესადაგება ხელახლა გაშვებისთანავე. თქვენი ინკოგნიტო ფანჯარა ხელახლა არ გაიხსნება.}other{ხელმისაწვდომია Chromium-ის განახლება, რომელიც მას მიესადაგება ხელახლა გაშვებისთანავე. თქვენი # ინკოგნიტო ფანჯარა ხელახლა არ გაიხსნება.}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" />-დან თქვენს Android ტელეფონზე ნომრის გასაგზავნად შედით Chromium-ში ორივე მოწყობილობაზე.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363">Chromium-მა დაბლოკა <ph name="FILE_NAME" />, რადგან ის სახიფათოა.</translation> <translation id="6134968993075716475">Safe Browsing გამორთულია. Chromium გირჩევთ მის ჩართვას.</translation> <translation id="6145820983052037069">აქ შეგიძლიათ Chromium პროფილებს შორის გადართვა</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Chromium OS-ის ინსტალაციისთვის ყველაფერი მზადაა! გაგრძელების შემდეგ: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ფაილები, მონაცემები და თქვენი ამჟამინდელი ოპერაციული სისტემა ამოიშლება. - <ph name="LIST_ITEM" />დაინსტალირდება Chromium OS. - <ph name="LIST_ITEM" />ინსტალაციის დასრულების შემდეგ თქვენი მოწყობილობა გამოირთვება. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />ბოლოჯერ შეგახსენებთ, რომ ინსტალაცია მთლიანად ამოშლის თქვენს მყარ დისკს. დარწმუნდით, რომ თქვენთვის მნიშვნელოვანი მონაცემების სარეზერვო ასლი გაქვთ შექმნილი.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ინსტალაციის დაწყების შემდეგ მას ვეღარ გააუქმებთ.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">დარწმუნდით, რომ თქვენს <ph name="TARGET_DEVICE_NAME" />-ზე შესული ხართ Chromium-ში, შემდეგ კი ხელახლა ცადეთ გაგზავნა.</translation> <translation id="6212496753309875659">ამ კომპიუტერს უკვე აქვს Chromium.-ის უფრო ახალი ვერსია. იმ შემთხვევაში, თუ პროგრამა არ მუშაობს, გთხოვთ, განახორციელეთ Chromium-ის დეინსტალაცია და სცადეთ ისევ.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium ახლა ხელახლა გაეშვება}=1{Chromium ხელახლა გაეშვება 1 წამში}other{Chromium ხელახლა გაეშვება # წამში}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Chromium OS სისტემა</translation> <translation id="6455857529632101747">მოგესალმებათ Chromium პროფილები</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium გადაიტვირთება 1 წამში}other{Chromium გადაიტვირთება # წამში}}</translation> -<translation id="646620589868199210">Chromium OS-ის ინსტალაციისთვის ყველაფერი მზადაა</translation> <translation id="6475912303565314141">იგი ასევე აკონტროლებს, თუ რომელი გვერდი გამოჩნდება Chromium-ის გაშვებისას.</translation> <translation id="6510925080656968729">Chromium-ის დეინსტალაცია</translation> <translation id="6542839706527980775">თითოეულ პროფილში ინახება საკუთარი Chromium ინფორმაცია, როგორიცაა სანიშნეები, ისტორია, პაროლები და სხვა</translation>
diff --git a/chrome/app/resources/chromium_strings_kk.xtb b/chrome/app/resources/chromium_strings_kk.xtb index 3f80250..7f0a897 100644 --- a/chrome/app/resources/chromium_strings_kk.xtb +++ b/chrome/app/resources/chromium_strings_kk.xtb
@@ -16,7 +16,7 @@ <translation id="1524282610922162960">Chromium қойындысын бөлісу</translation> <translation id="1553461853655228091">Chromium браузеріне айналаңыздың 3D картасын жасау үшін камераны пайдалану рұқсаты керек.</translation> <translation id="1607715478322902680">{COUNT,plural, =0{Жаңартылған нұсқаны қолдану үшін әкімшіңіз Chromium браузерін қайта іске қосуыңызды талап етеді.}=1{Жаңартылған нұсқаны қолдану үшін әкімшіңіз Chromium браузерін қайта іске қосуыңызды талап етеді. Инкогнито терезесі қайта ашылмайды.}other{Жаңартылған нұсқаны қолдану үшін әкімшіңіз Chromium браузерін қайта іске қосуыңызды талап етеді. # инкогнито терезесі қайта ашылмайды.}}</translation> -<translation id="1667812772085710766">Chromium жабылғанда сіз кірген беттердің cookie файлдары мен сайт деректері автоматты түрде жойылады.</translation> +<translation id="1667812772085710766">Chromium жабылғанда, сіз кірген беттердің cookie файлдары мен сайт деректері автоматты түрде жойылады.</translation> <translation id="1708666629004767631">Chromium жүйесінің жаңа, қауіпсіз нұсқасы қолжетімді.</translation> <translation id="1774152462503052664">Chromium жүйесін фонда іске қосуға рұқсат беру</translation> <translation id="1779356040007214683">Chromium қауіпсіз ету үшін <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> ішінде көрсетілмеген және сізге білдірмей қосылған болуы мүмкін кейбір кеңейтімдерді өшірдік.</translation> @@ -84,7 +84,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> арқылы Chromium профильдерін ауыстыруға болады.</translation> <translation id="3509308970982693815">Барлық Chromium терезелерін жауып, әрекетті қайталап көріңіз.</translation> <translation id="3575459661164320785">Компьютеріңізде зиянды бағдарламалық құрал бар. Chromium браузері оны өшіріп, параметрлеріңізді қалпына келтіреді де, кеңейтімдерді ажыратады. Соның арқасында браузеріңіз қалыпты жұмысын жалғастырады.</translation> -<translation id="3610776674893128619">Қатты дискіні тазарту және Chromium OS-ті орнату</translation> <translation id="3639635944603682591">Бұл пайдаланушының браузерді пайдалану деректері құрылғыдан жойылады. Деректерді қалпына келтіру үшін Chromium браузеріне <ph name="USER_EMAIL" /> болып кіріңіз.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium браузерінің жаңа нұсқасы шықты. Ол браузерді өшіріп, қайта іске қосқанда орнатылады.}=1{Chromium браузерінің жаңа нұсқасы шықты. Ол браузерді өшіріп, қайта іске қосқанда орнатылады. Инкогнито терезесі қайта ашылмайды.}other{Chromium браузерінің жаңа нұсқасы шықты. Ол браузерді өшіріп, қайта іске қосқанда орнатылады. # инкогнито терезесі қайта ашылмайды.}}</translation> <translation id="3651803019964686660">Нөмірді <ph name="ORIGIN" /> құрылғысынан Android телефонына жіберу үшін екі құрылғыда да Chromium браузеріне кіріңіз.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> қауіпті болғандықтан, Chromium оны бөгеді.</translation> <translation id="6134968993075716475">"Қауіпсіз шолу" функциясы өшірулі. Chromium браузері оны қосуды ұсынады.</translation> <translation id="6145820983052037069">Осы жерде Chromium профильдерін ауыстыра аласыз.</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Chromium OS-ті орнатуға болады. Орнатуды бастаған жағдайда: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Файлдар, деректер және ағымдағы операциялық жүйе тазартылады. - <ph name="LIST_ITEM" />Chromium OS орнатылады. - <ph name="LIST_ITEM" />Орнату аяқталғанда, құрылғыңыз өшіріледі. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Соңғы ескерту: орнату кезінде қатты диск толық тазартылады. Деректердің сақтық көшірмесі жасалғанына көз жеткізіңіз.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Орнату басталған соң, одан бас тарту мүмкін емес.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177"><ph name="TARGET_DEVICE_NAME" /> құрылғысындағы Chromium браузеріне кіргеніңізді тексеріп, қайта жіберіп көріңіз.</translation> <translation id="6212496753309875659">Бұл компьютерде жаңа Chromium нұсқасы бұрыннан бар. Бағдарламалық жасақтама жұмыс істемесе, Chromium жойып, әрекетті қайталап көріңіз.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium браузері қазір қайта іске қосылады}=1{Chromium браузері 1 секундтан кейін қайта іске қосылады}other{Chromium браузері # секундтан кейін қайта іске қосылады}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Chromium OS жүйесі</translation> <translation id="6455857529632101747">Chromium профильдеріне қош келдіңіз!</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 секундтан кейін қайта іске қосылады}other{Chromium # секундтан кейін қайта іске қосылады}}</translation> -<translation id="646620589868199210">Құрылғы Chromium OS-ті орнатуға дайын</translation> <translation id="6475912303565314141">Сонымен қатар Chromium іске қосылғанда қайсы бет көрсетілуін бақылайды.</translation> <translation id="6510925080656968729">Chromium жою</translation> <translation id="6542839706527980775">Әр профильде бетбелгілер, тарих, құпия сөздер және тағы басқа Chromium ақпараты бар.</translation>
diff --git a/chrome/app/resources/chromium_strings_km.xtb b/chrome/app/resources/chromium_strings_km.xtb index 03828a7e..7d1ebf7 100644 --- a/chrome/app/resources/chromium_strings_km.xtb +++ b/chrome/app/resources/chromium_strings_km.xtb
@@ -85,7 +85,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> អាចប្ដូររវាងកម្រងព័ត៌មាន Chromium</translation> <translation id="3509308970982693815">សូមបិទផ្ទាំង Chromium ទាំងអស់ ហើយព្យាយាមម្តងទៀត។</translation> <translation id="3575459661164320785">មានកម្មវិធីបង្កគ្រោះថ្នាក់នៅលើកុំព្យូទ័ររបស់អ្នក។ Chrome អាចលុបវា ហើយស្តារការកំណត់របស់អ្នក ដើម្បីធ្វើឱ្យកម្មវិធីរុករកតាមអ៊ីនធឺណិតរបស់អ្នកដំណើរការធម្មតាឡើងវិញ។ Chromium អាចលុបកម្មវិធីនេះ ស្ដារការកំណត់របស់អ្នក និងបិទកម្មវិធីបន្ថែម ដើម្បីធ្វើឱ្យកម្មវិធីរុករកតាមអ៊ីនធឺណិតរបស់អ្នកដំណើរការជាធម្មតាឡើងវិញ។</translation> -<translation id="3610776674893128619">លុបថាសរឹង និងដំឡើង Chromium OS</translation> <translation id="3639635944603682591">ទិន្នន័យរុករករបស់បុគ្គលនេះនឹងលុបចេញពីឧបករណ៍នេះ។ ដើម្បីស្ដារទិន្នន័យនេះ សូមចូល Chromium ជា <ph name="USER_EMAIL" /> ។</translation> <translation id="364817392622123556">{COUNT,plural, =0{មានកំណែថ្មីសម្រាប់ Chromium ហើយ ហើយកំណែថ្មីនេះនឹងប្រើភ្លាមៗ បន្ទាប់ពីអ្នកចាប់ផ្ដើមឡើងវិញ។}=1{មានកំណែថ្មីសម្រាប់ Chromium ហើយ ហើយកំណែថ្មីនេះនឹងប្រើភ្លាមៗ បន្ទាប់ពីអ្នកចាប់ផ្ដើមឡើងវិញ។ ផ្ទាំងឯកជនរបស់អ្នកនឹងមិនបើកឡើងវិញទេ។}other{មានកំណែថ្មីសម្រាប់ Chromium ហើយ ហើយកំណែថ្មីនេះនឹងប្រើភ្លាមៗ បន្ទាប់ពីអ្នកចាប់ផ្ដើមឡើងវិញ។ ផ្ទាំងឯកជន # របស់អ្នកនឹងមិនបើកឡើងវិញទេ។}}</translation> <translation id="3651803019964686660">ដើម្បីផ្ញើលេខទូរសព្ទពី <ph name="ORIGIN" /> ទៅទូរសព្ទ Android របស់អ្នក សូមចូល Chromium នៅលើឧបករណ៍ទាំងពីរ។</translation> @@ -167,15 +166,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> មានគ្រោះថ្នាក់ ដូច្នេះ Chromium បានរារាំងវា។</translation> <translation id="6134968993075716475">បានបិទមុខងាររុករកដោយសុវត្ថិភាព។ Chromium ណែនាំឱ្យបើកមុខងារនេះ។</translation> <translation id="6145820983052037069">អ្នកអាចប្ដូររវាងកម្រងព័ត៌មាន Chromium នៅទីនេះ</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />យើងត្រៀមខ្លួនដំឡើង Chromium OS ហើយ! នៅពេលដែលអ្នកបន្ត៖ - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ឯកសារ ទិន្នន័យ និងប្រព័ន្ធប្រតិបត្តិការបច្ចុប្បន្នរបស់អ្នកនឹងត្រូវលុប។ - <ph name="LIST_ITEM" />Chromium OS នឹងត្រូវបានដំឡើង។ - <ph name="LIST_ITEM" />ឧបករណ៍របស់អ្នកនឹងបិទ នៅពេលការដំឡើងបញ្ចប់។ - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />ការរំលឹកចុងក្រោយ៖ ការដំឡើងនឹងលុបថាសរឹងរបស់អ្នកទាំងស្រុង។ សូមប្រាកដថា អ្នកបានបម្រុងទុកទិន្នន័យដែលចាំបាច់សម្រាប់អ្នក។<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />នៅពេលការដំឡើងចាប់ផ្ដើម អ្នកមិនអាចបោះបង់បានទេ។<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">ត្រូវប្រាកដថា អ្នកចូល Chromium នៅលើ <ph name="TARGET_DEVICE_NAME" /> របស់អ្នក បន្ទាប់មកសាកល្បងផ្ញើម្ដងទៀត។</translation> <translation id="6212496753309875659">កុំព្យូទ័រនេះមានកំណែ Chromium ថ្មីជាងនេះរួចហើយ។ ប្រសិនបើកម្មវិធីនេះមិនដំណើរការ សូមលុបការតំឡើង Chromium ហើយព្យាយាមម្តងទៀត។</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium នឹងចាប់ផ្តើមឡើងវិញឥឡូវនេះ}=1{Chromium នឹងចាប់ផ្ដើមឡើងវិញក្នុងរយៈពេល 1 វិនាទីទៀត}other{Chromium នឹងចាប់ផ្ដើមឡើងវិញក្នុងរយៈពេល # វិនាទីទៀត}}</translation> @@ -193,7 +183,6 @@ <translation id="6434250628340475518">ប្រព័ន្ធ Chromium OS</translation> <translation id="6455857529632101747">សូមស្វាគមន៍មកកាន់កម្រងព័ត៌មាន Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium នឹងចាប់ផ្តើមឡើងវិញក្នុងរយៈពេល 1 វិនាទីទៀត}other{Chromium នឹងចាប់ផ្តើមឡើងវិញក្នុងរយៈពេល # វិនាទីទៀត}}</translation> -<translation id="646620589868199210">ត្រៀមខ្លួនដំឡើង Chromium OS</translation> <translation id="6475912303565314141">វាក៏គ្រប់គ្រងអ្វីដែលត្រូវបានបង្ហាញនៅលើទំព័រដែរ នៅពេលអ្នកចាប់ផ្តើម Chromium។</translation> <translation id="6510925080656968729">លុបការតំឡើង Chromium</translation> <translation id="6542839706527980775">កម្រងព័ត៌មាននីមួយៗមានព័ត៌មាន Chromium របស់វាផ្ទាល់ដូចជា ចំណាំ ប្រវត្តិ ពាក្យសម្ងាត់ និងអ្វីៗជាច្រើនទៀត</translation>
diff --git a/chrome/app/resources/chromium_strings_kn.xtb b/chrome/app/resources/chromium_strings_kn.xtb index f2d4765f..a950b72 100644 --- a/chrome/app/resources/chromium_strings_kn.xtb +++ b/chrome/app/resources/chromium_strings_kn.xtb
@@ -80,7 +80,6 @@ <translation id="3497319089134299931">Chromium ಪ್ರೊಫೈಲ್ಗಳನ್ನು ಬದಲಾಯಿಸಲು <ph name="SHORTCUT" /> ಅನ್ನು ಬಳಸಬಹುದು</translation> <translation id="3509308970982693815">ದಯವಿಟ್ಟು ಎಲ್ಲಾ Chromium ವಿಂಡೋಗಳನ್ನು ಮುಚ್ಚಿರಿ ಹಾಗೂ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</translation> <translation id="3575459661164320785">ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ನಲ್ಲಿ ಹಾನಿಕಾರಕ ಸಾಫ್ಟ್ವೇರ್ ಕಂಡುಬಂದಿದೆ. Chromium ಅದನ್ನು ತೆಗೆದುಹಾಕಬಹುದು, ನಿಮ್ಮ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಮರುಸ್ಥಾಪಿಸಬಹುದು ಮತ್ತು ನಿಮ್ಮ ಬ್ರೌಸರ್ ಅನ್ನು ಪುನಃ ಸಾಮಾನ್ಯವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವಂತೆ ಮಾಡಲು ವಿಸ್ತರಣೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಬಹುದು.</translation> -<translation id="3610776674893128619">ಹಾರ್ಡ್ ಡ್ರೈವ್ ಅನ್ನು ಅಳಿಸಿ ಮತ್ತು Chromium OS ಅನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ</translation> <translation id="3639635944603682591">ಈ ವ್ಯಕ್ತಿಯ ಬ್ರೌಸಿಂಗ್ ಡೇಟಾವನ್ನು ಈ ಸಾಧನದಿಂದ ಅಳಿಸಲಾಗುತ್ತದೆ. ಡೇಟಾವನ್ನು ಪುನಃ ಪಡೆದುಕೊಳ್ಳಲು, Chromium ನಲ್ಲಿ <ph name="USER_EMAIL" /> ಎಂದು ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium ಗಾಗಿ ಹೊಸತೊಂದು ಅಪ್ಡೇಟ್ ಲಭ್ಯವಿದೆ ಮತ್ತು ನೀವು ಮರುಪ್ರಾರಂಭಿಸಿದ ಕೂಡಲೇ ಅದನ್ನು ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ.}=1{Chromium ಗಾಗಿ ಹೊಸತೊಂದು ಅಪ್ಡೇಟ್ ಲಭ್ಯವಿದೆ ಮತ್ತು ನೀವು ಮರುಪ್ರಾರಂಭಿಸಿದ ಕೂಡಲೇ ಅದನ್ನು ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ. ನಿಮ್ಮ ಅಜ್ಞಾತ ವಿಂಡೋವನ್ನು ತೆರೆಯಲಾಗುವುದಿಲ್ಲ.}one{Chromium ಗಾಗಿ ಹೊಸತೊಂದು ಅಪ್ಡೇಟ್ ಲಭ್ಯವಿದೆ ಮತ್ತು ನೀವು ಮರುಪ್ರಾರಂಭಿಸಿದ ಕೂಡಲೇ ಅದನ್ನು ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ. ನಿಮ್ಮ # ಅಜ್ಞಾತ ವಿಂಡೋಗಳನ್ನು ತೆರೆಯಲಾಗುವುದಿಲ್ಲ.}other{Chromium ಗಾಗಿ ಹೊಸತೊಂದು ಅಪ್ಡೇಟ್ ಲಭ್ಯವಿದೆ ಮತ್ತು ನೀವು ಮರುಪ್ರಾರಂಭಿಸಿದ ಕೂಡಲೇ ಅದನ್ನು ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ. ನಿಮ್ಮ # ಅಜ್ಞಾತ ವಿಂಡೋಗಳನ್ನು ತೆರೆಯಲಾಗುವುದಿಲ್ಲ.}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" /> ನಿಂದ ನಿಮ್ಮ Android ಫೋನ್ಗೆ ಸಂಖ್ಯೆಯನ್ನು ಕಳುಹಿಸಲು, ಎರಡೂ ಸಾಧನಗಳಲ್ಲಿ Chromium ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation> @@ -162,15 +161,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> ಅಪಾಯಕಾರಿಯಾಗಿದೆ, ಹಾಗಾಗಿ Chromium ಅದನ್ನು ನಿರ್ಬಂಧಿಸಿದೆ.</translation> <translation id="6134968993075716475">ಸುರಕ್ಷಿತ ಬ್ರೌಸಿಂಗ್ ಆಫ್ ಆಗಿದೆ. ಅದನ್ನು ಆನ್ ಮಾಡಲು Chromium ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.</translation> <translation id="6145820983052037069">ನೀವು ಇಲ್ಲಿ Chromium ಪ್ರೊಫೈಲ್ಗಳನ್ನು ಬದಲಾಯಿಸಬಹುದು</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Chromium OS ಅನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲು ನಾವು ಸಿದ್ಧರಿದ್ದೇವೆ! ಒಮ್ಮೆ ನೀವು ಮುಂದುವರಿಯಿರಿ: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ಫೈಲ್ಗಳು, ಡೇಟಾ ಮತ್ತು ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ. - <ph name="LIST_ITEM" />Chromium OS ಅನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲಾಗುತ್ತದೆ. - <ph name="LIST_ITEM" />ಇನ್ಸ್ಟಾಲೇಶನ್ ಪೂರ್ಣಗೊಂಡ ನಂತರ ನಿಮ್ಮ ಸಾಧನವು ಶಟ್ ಡೌನ್ ಆಗುತ್ತದೆ. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />ಕೊನೆಯ ರಿಮೈಂಡರ್: ಇನ್ಸ್ಟಾಲೇಶನ್ ನಿಮ್ಮ ಸಂಪೂರ್ಣ ಹಾರ್ಡ್ ಡ್ರೈವ್ ಅನ್ನು ಅಳಿಸುತ್ತದೆ. ನಿಮಗೆ ಬೇಕಾದ ಯಾವುದೇ ಡೇಟಾವನ್ನು ಬ್ಯಾಕಪ್ ಮಾಡಲಾಗಿದೆ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ಇನ್ಸ್ಟಾಲೇಶನ್ ಪ್ರಾರಂಭವಾದ ನಂತರ ಅದನ್ನು ರದ್ದು ಮಾಡಲಾಗುವುದಿಲ್ಲ.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">ನಿಮ್ಮ <ph name="TARGET_DEVICE_NAME" /> ನಲ್ಲಿ ನೀವು Chromium ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿದ್ದೀರಿ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ ಮತ್ತು ನಂತರ ಪುನಃ ಕಳುಹಿಸಲು ಪ್ರಯತ್ನಿಸಿ.</translation> <translation id="6212496753309875659">ಈ ಕಂಪ್ಯೂಟರ್ Chromium ನ ಇತ್ತೀಚಿನ ಹೆಚ್ಚಿನ ಆವೃತ್ತಿಯನ್ನು ಹೊಂದಿದೆ. ಸಾಫ್ಟ್ವೇರ್ ಕಾರ್ಯನಿರ್ವಹಿಸದಿದ್ದರೆ, ದಯವಿಟ್ಟು Chromium ಅನ್ನು ಅನ್ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ ಮತ್ತು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation> <translation id="6219195342503754812">{0,plural, =0{ಇದೀಗ Chromium ಮರುಪ್ರಾರಂಭಗೊಳ್ಳುತ್ತದೆ}=1{1 ಸೆಕೆಂಡಿನಲ್ಲಿ Chromium ಮರುಪ್ರಾರಂಭಗೊಳ್ಳುತ್ತದೆ}one{# ಸೆಕೆಂಡುಗಳಲ್ಲಿ Chromium ಮರುಪ್ರಾರಂಭಗೊಳ್ಳುತ್ತದೆ}other{# ಸೆಕೆಂಡುಗಳಲ್ಲಿ Chromium ಮರುಪ್ರಾರಂಭಗೊಳ್ಳುತ್ತದೆ}}</translation> @@ -188,7 +178,6 @@ <translation id="6434250628340475518">Chromium OS ಸಿಸ್ಟಂ</translation> <translation id="6455857529632101747">Chromium ಪ್ರೊಫೈಲ್ಗಳಿಗೆ ಸುಸ್ವಾಗತ</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 ಸೆಕೆಂಡ್ನಲ್ಲಿ ಮರುಪ್ರಾರಂಭವಾಗುತ್ತದೆ}one{Chromium # ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಮರುಪ್ರಾರಂಭವಾಗುತ್ತದೆ}other{Chromium # ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಮರುಪ್ರಾರಂಭವಾಗುತ್ತದೆ}}</translation> -<translation id="646620589868199210">Chromium OS ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲು ಸಿದ್ಧವಾಗಿದೆ</translation> <translation id="6475912303565314141">ನೀವು Chromium ಪ್ರಾರಂಭಿಸಿದಾಗ ತೋರಿಸಬೇಕಾದ ಪುಟವನ್ನು ಕೂಡಾ ಇದು ನಿಯಂತ್ರಿಸುತ್ತದೆ.</translation> <translation id="6510925080656968729">Chromium ಅನ್ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ</translation> <translation id="6542839706527980775">ಪ್ರತಿಯೊಂದು ಪ್ರೊಫೈಲ್ ಬುಕ್ಮಾರ್ಕ್ಗಳು, ಇತಿಹಾಸ, ಪಾಸ್ವರ್ಡ್ಗಳು ಹಾಗೂ ಇನ್ನಷ್ಟವುಗಳಂತಹ ತನ್ನ ಸ್ವಂತ Chromium ಮಾಹಿತಿಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ</translation>
diff --git a/chrome/app/resources/chromium_strings_ko.xtb b/chrome/app/resources/chromium_strings_ko.xtb index ad8a8589..a23d142 100644 --- a/chrome/app/resources/chromium_strings_ko.xtb +++ b/chrome/app/resources/chromium_strings_ko.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> 바로가기를 사용하여 Chromium 프로필 간에 전환하세요</translation> <translation id="3509308970982693815">Chromium 창을 모두 닫고 다시 시도해 보세요.</translation> <translation id="3575459661164320785">컴퓨터에 유해한 소프트웨어가 있습니다. Chromium에서 유해한 소프트웨어를 삭제하고, 설정을 복원하고, 확장 프로그램을 사용 중지하여 브라우저가 다시 정상적으로 작동하도록 할 수 있습니다.</translation> -<translation id="3610776674893128619">하드 드라이브 삭제 및 Chromium OS 설치</translation> <translation id="3639635944603682591">선택한 사용자의 인터넷 사용 기록이 이 기기에서 삭제됩니다. 데이터를 복구하려면 <ph name="USER_EMAIL" />(으)로 Chromium에 로그인하세요.</translation> <translation id="364817392622123556">{COUNT,plural, =0{새 Chromium 업데이트가 있습니다. Chromium을 다시 실행하면 업데이트가 바로 적용됩니다.}=1{새 Chromium 업데이트가 있습니다. Chromium을 다시 실행하면 업데이트가 바로 적용됩니다. 시크릿 창이 다시 열리지 않습니다.}other{새 Chromium 업데이트가 있습니다. Chromium을 다시 실행하면 업데이트가 바로 적용됩니다. 시크릿 창 #개가 다시 열리지 않습니다.}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" />에서 Android 휴대전화로 번호를 전송하려면 두 기기 모두에서 Chromium에 로그인하세요.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" />은(는) 위험한 파일이므로 Chromium에서 차단했습니다.</translation> <translation id="6134968993075716475">세이프 브라우징이 사용 중지되어 있습니다. 사용 설정하는 것이 좋습니다.</translation> <translation id="6145820983052037069">여기에서 Chromium 프로필 간에 전환할 수 있습니다.</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Chromium OS를 설치할 준비가 완료되었습니다. 설치 시 다음 사항이 적용됩니다. - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />파일, 데이터, 현재 운영체제가 삭제됩니다. - <ph name="LIST_ITEM" />Chromium OS가 설치됩니다. - <ph name="LIST_ITEM" />설치가 완료되면 기기가 종료됩니다. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />한 번 더 알려드립니다. 설치를 진행하면 하드 드라이브에 있는 모든 데이터가 삭제됩니다. 중요한 데이터를 모두 백업했는지 확인해 주시기 바랍니다.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />설치가 시작되면 취소할 수 없습니다.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177"><ph name="TARGET_DEVICE_NAME" />에서 Chromium에 로그인되어 있는지 확인한 다음 다시 전송해 보세요.</translation> <translation id="6212496753309875659">컴퓨터에 이미 최신 버전의 Chromium이 있습니다. 소프트웨어가 작동하지 않으면 Chromium의 설치를 제거한 뒤 다시 시도하세요.</translation> <translation id="6219195342503754812">{0,plural, =0{곧 Chromium이 다시 시작됩니다}=1{1초 후 Chromium이 다시 시작됩니다}other{#초 후 Chromium이 다시 시작됩니다}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Chromium OS 시스템</translation> <translation id="6455857529632101747">Chromium 프로필에 오신 것을 환영합니다</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{1초 후에 Chromium이 다시 시작됩니다}other{#초 후에 Chromium이 다시 시작됩니다}}</translation> -<translation id="646620589868199210">Chromium OS 설치 준비 완료</translation> <translation id="6475912303565314141">또한 Chromium을 시작할 때 표시되는 페이지를 설정합니다.</translation> <translation id="6510925080656968729">Chromium 설치 제거</translation> <translation id="6542839706527980775">각 프로필에는 북마크, 방문 기록, 비밀번호 등과 같은 Chromium 정보가 보관됩니다.</translation>
diff --git a/chrome/app/resources/chromium_strings_ky.xtb b/chrome/app/resources/chromium_strings_ky.xtb index cfd08e65..3d1435c1 100644 --- a/chrome/app/resources/chromium_strings_ky.xtb +++ b/chrome/app/resources/chromium_strings_ky.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> Chromium профилдерин которо алат</translation> <translation id="3509308970982693815">Бардык Chromium терезелерин жаап, дагы аракет кылып көрүңүз.</translation> <translation id="3575459661164320785">Компьютериңизде кооптуу программа бар. Серепчиңизди кайра ойдогудай иштетүү үчүн Chromium аны алып салып, жөндөөлөрдү калыбына келтирип, кеңейтүүлөрдү өчүрө алат.</translation> -<translation id="3610776674893128619">Катуу дискти тазалап, Chromium OS'ту орнотуу</translation> <translation id="3639635944603682591">Бул адамдын серептөө дайындары бул түзмөктөн биротоло өчүрүлөт. Дайындарды калыбына келтирүү үчүн, Chromium'га <ph name="USER_EMAIL" /> аккаунту менен кириңиз.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium үчүн жаңыртуу бар. Түзмөгүңүз өчүрүлүп-күйгүзүлгөндөн кийин ал колдонулуп баштайт.}=1{Chromium үчүн жаңыртуу бар. Түзмөгүңүз өчүрүлүп-күйгүзүлгөндөн кийин ал колдонулуп баштайт. Жашыруун терезеңиз кайра ачылбайт.}other{Chromium үчүн жаңыртуу бар. Түзмөгүңүз өчүрүлүп-күйгүзүлгөндөн кийин ал колдонулуп баштайт. # жашыруун терезеңиз кайра ачылбайт.}}</translation> <translation id="3651803019964686660">Номерди <ph name="ORIGIN" /> сайтынан Android телефонуңузга жөнөтүү үчүн эки түзмөгүңүздөн тең Chromium'га кириңиз.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> кооптуу файл болгондуктан, Chromium аны бөгөттөп койду.</translation> <translation id="6134968993075716475">Коопсуз серептөө өчүк. Chromium аны күйгүзүүнү сунуштайт.</translation> <translation id="6145820983052037069">Chromium профилдерин бул жерден которо аласыз</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Chromium OS'ту орното берсеңиз болот. Улантсаңыз: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Файлдар, дайын-даректер жана учурдагы операциялык тутумуңуз тазаланат. - <ph name="LIST_ITEM" />Chromium OS орнотулат. - <ph name="LIST_ITEM" />Орнотулуп бүткөндөн кийин түзмөгүңүз өчүрүлөт. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Акыркы эстеткич: Тутумду орнотсоңуз, катуу дискиңиз толугу менен тазаланат. Керектүү дайын-даректердин камдык көчүрмөлөрү сакталганын текшериңиз.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Орнотулуп баштагандан кийин аны жокко чыгарууга болбойт.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Chromium'га <ph name="TARGET_DEVICE_NAME" /> түзмөгүңүздөн кирип турганыңызды текшерип, кайра аракет кылыңыз.</translation> <translation id="6212496753309875659">Бул компьютерде Chromium'дун жаңыраак версиясы мурунтан эле орнотулган. Эгер программа иштебей жатса, Chromium'ду орнотуудан чыгарып, дагы бир жолу аракет кылып көрүңүз.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium азыр кайра иштетилет}=1{Chromium 1 секунддан кийин кайра иштетилет}other{Chromium # секунддан кийин кайра иштетилет}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Chromium OS тутуму</translation> <translation id="6455857529632101747">Chromium профилдерине кош келиңиз</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 секунддан кийин өчүрүлүп-күйгүзүлөт}other{Chromium # секунддан кийин өчүрүлүп-күйгүзүлөт}}</translation> -<translation id="646620589868199210">Chromium OS'ту орното берсеңиз болот</translation> <translation id="6475912303565314141">Chromium иштеп баштаганда кайсы бет көрүнө тургандыгын белгилейт.</translation> <translation id="6510925080656968729">Chromium'ду орнотуудан чыгарып салуу</translation> <translation id="6542839706527980775">Ар бир профилде өзүнө таандык кыстармалар, таржымал, сырсөздөр жана башкалар сыяктуу Chromium маалыматы бар</translation>
diff --git a/chrome/app/resources/chromium_strings_lo.xtb b/chrome/app/resources/chromium_strings_lo.xtb index b7bcefa..47720dcd 100644 --- a/chrome/app/resources/chromium_strings_lo.xtb +++ b/chrome/app/resources/chromium_strings_lo.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> ສາມາດສະຫຼັບລະຫວ່າງໂປຣໄຟລ໌ Chromium ໄດ້</translation> <translation id="3509308970982693815">ກະລຸນາປິດທຸກໜ້າຕ່າງ Chromium ແລະລອງໃໝ່ອີກ.</translation> <translation id="3575459661164320785">ມີຊອບແວອັນຕະລາຍໃນຄອມພິວເຕີຂອງທ່ານ. Chromium ສາມາດລຶບມັນອອກ, ກູ້ຄືນການຕັ້ງຄ່າຂອງທ່ານ ແລະ ປິດນໍາໃຊ້ສ່ວນຂະຫຍາຍເພື່ອເຮັດໃຫ້ໂປຣແກຣມທ່ອງເວັບຂອງທ່ານໃຊ້ໄດ້ເປັນປົກກະຕິອີກຄັ້ງ.</translation> -<translation id="3610776674893128619">ລຶບຮາດໄດຣຟ໌ ແລະ ຕິດຕັ້ງ Chromium OS</translation> <translation id="3639635944603682591">ຂໍ້ມູນການທ່ອງເວັບຂອງບຸກຄົນນີ້ຈະຖືກລຶບອອກຈາກອຸປະກອນນີ້. ເພື່ອກູ້ຂໍ້ມູນຄືນມາ, ກະລຸນາເຂົ້າສູ່ລະບົບ Chromium ເປັນ <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{ມີການອັບເດດໃໝ່ສຳລັບ Chromium ແລະ ຈະນຳໃຊ້ໃນທັນທີທີ່ທ່ານເປີດໃຊ້ຄືນໃໝ່.}=1{ມີການອັບເດດໃໝ່ສຳລັບ Chromium ແລະ ຈະນຳໃຊ້ໃນທັນທີທີ່ທ່ານເປີດໃຊ້ຄືນໃໝ່. ໜ້າຈໍທີ່ບໍ່ເປີດເຜີຍຕົວຕົນຂອງທ່ານຈະບໍ່ເປີດຄືນໃໝ່.}other{ມີການອັບເດດໃໝ່ສຳລັບ Chromium ແລະ ຈະນຳໃຊ້ໃນທັນທີທີ່ທ່ານເປີດໃຊ້ຄືນໃໝ່. ໜ້າຈໍທີ່ບໍ່ເປີດເຜີຍຕົວຕົນຂອງທ່ານ # ລາຍການຈະບໍ່ເປີດຄືນໃໝ່.}}</translation> <translation id="3651803019964686660">ເພື່ອສົ່ງເບີຈາກ <ph name="ORIGIN" /> ໃຫ້ໂທລະສັບ Android ຂອງທ່ານ, ກະລຸນາເຂົ້າສູ່ລະບົບ Chromium ຢູ່ໃນທັງສອງອຸປະກອນ.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> ອັນຕະລາຍ, ສະນັ້ນ Chromium ໄດ້ບລັອກມັນໄວ້ແລ້ວ.</translation> <translation id="6134968993075716475">Safe Browsing ປິດຢູ່. Chromium ຂໍແນະນຳໃຫ້ເປີດມັນ.</translation> <translation id="6145820983052037069">ທ່ານສາມາດສະຫຼັບລະຫວ່າງໂປຣໄຟລ໌ Chromium ໄດ້ຢູ່ບ່ອນນີ້</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />ພວກເຮົາພ້ອມຕິດຕັ້ງ Chromium OS ແລ້ວ! ຫຼັງຈາກທີ່ທ່ານດຳເນີນການຕໍ່ແລ້ວ: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ໄຟລ໌, ຂໍ້ມູນ ແລະ ລະບົບປະຕິບັດການປັດຈຸບັນຂອງທ່ານຈະຖືກລຶບອອກ. - <ph name="LIST_ITEM" />Chromium OS ຈະຖືກຕິດຕັ້ງ. - <ph name="LIST_ITEM" />ອຸປະກອນຂອງທ່ານຈະປິດເຄື່ອງເມື່ອການຕິດຕັ້ງສຳເລັດແລ້ວ. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />ການແຈ້ງເຕືອນເທື່ອສຸດທ້າຍ: ການຕິດຕັ້ງຈະລຶບທັງຮາດໄດຣຟ໌ຂອງທ່ານອອກ. ກະລຸນາກວດສອບວ່າທ່ານສຳຮອງຂໍ້ມູນທີ່ທ່ານຕ້ອງການໄວ້ໝົດແລ້ວ.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ຫຼັງຈາກເລີ່ມການຕິດຕັ້ງແລ້ວມັນຈະບໍ່ສາມາດຍົກເລີກໄດ້.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">ກວດໃຫ້ແນ່ໃຈວ່າທ່ານໄດ້ເຂົ້າສູ່ລະບົບ Chrome ໃນ <ph name="TARGET_DEVICE_NAME" /> ຂອງທ່ານ ແລ້ວລອງສົ່ງໃໝ່.</translation> <translation id="6212496753309875659">ຄອມພິວເຕີນີ້ມີ Chromium ລຸ້ນໃໝ່ກ່ວາຢູ່ຮຽບຮ້ອຍແລ້ວ. ຖ້າຊອບແວບໍ່ເຮັດວຽກ, ກະລຸນາຖອນຕິດຕັ້ງ Chromium ແລະລອງໃໝ່ອີກ.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium ຈະເປີດຄືນໃໝ່ດຽວນີ້}=1{Chromium ຈະເປີດຄືນໃໝ່ໃນ 1 ວິນາທີ}other{Chromium ຈະເປີດຄືນໃໝ່ໃນ # ວິນາທີ}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">ລະບົບປະຕິບັດການຂອງ Chromium</translation> <translation id="6455857529632101747">ຍິນດີຕ້ອນຮັບສູ່ໂປຣໄຟລ໌ Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium ຈະປິດແລ້ວເປີດໃໝ່ໃນ 1 ວິນາທີ}other{Chromium ຈະປິດແລ້ວເປີດໃໝ່ໃນ # ວິນາທີ}}</translation> -<translation id="646620589868199210">ພ້ອມຕິດຕັ້ງ Chromium OS ແລ້ວ</translation> <translation id="6475912303565314141">ມັນຍັງຄວບຄຸມວ່າຈະໃຫ້ສະແດງໜ້າໃດຂຶ້ນ ເມື່ອທ່ານເລີ່ມຕົ້ນເປີດ Chromium.</translation> <translation id="6510925080656968729">ຖອນຕິດຕັ້ງ Chromium</translation> <translation id="6542839706527980775">ແຕ່ລະໂປຣໄຟລ໌ມີຂໍ້ມູນ Chromium ຂອງມັນເອງ ເຊັ່ນ: ບຸກມາກ, ປະຫວັດ, ລະຫັດຜ່ານ ແລະ ອື່ນໆອີກ</translation>
diff --git a/chrome/app/resources/chromium_strings_lt.xtb b/chrome/app/resources/chromium_strings_lt.xtb index 0ae26b6..cdd5eb8b 100644 --- a/chrome/app/resources/chromium_strings_lt.xtb +++ b/chrome/app/resources/chromium_strings_lt.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931">Naudojant spartųjį klavišą <ph name="SHORTCUT" /> galima perjungti „Chromium“ profilius</translation> <translation id="3509308970982693815">Uždarykite visus „Chromium“ langus ir bandykite dar kartą.</translation> <translation id="3575459661164320785">Kompiuteryje yra kenkėjiškos programinės įrangos. „Chromium“ gali ją pašalinti, atkurti nustatymus ir išjungti plėtinius, kad naršyklė vėl veiktų įprastai.</translation> -<translation id="3610776674893128619">Ištrinti standųjį diską ir įdiegti „Chromium“ OS</translation> <translation id="3639635944603682591">Šio asmens naršymo duomenys bus ištrinti iš šio įrenginio. Jei norite atkurti duomenis, prisijunkite prie „Chromium“ kaip <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Pasiekiamas naujas „Chromium“ naujinys. Jis bus pritaikytas, kai paleisite „Chromium“ iš naujo.}=1{Pasiekiamas naujas „Chromium“ naujinys. Jis bus pritaikytas, kai paleisite „Chromium“ iš naujo. Inkognito langas nebus atidarytas iš naujo.}one{Pasiekiamas naujas „Chromium“ naujinys. Jis bus pritaikytas, kai paleisite „Chromium“ iš naujo. # inkognito langas nebus atidarytas iš naujo.}few{Pasiekiamas naujas „Chromium“ naujinys. Jis bus pritaikytas, kai paleisite „Chromium“ iš naujo. # inkognito langai nebus atidaryti iš naujo.}many{Pasiekiamas naujas „Chromium“ naujinys. Jis bus pritaikytas, kai paleisite „Chromium“ iš naujo. # inkognito lango nebus atidaryta iš naujo.}other{Pasiekiamas naujas „Chromium“ naujinys. Jis bus pritaikytas, kai paleisite „Chromium“ iš naujo. # inkognito langų nebus atidaryta iš naujo.}}</translation> <translation id="3651803019964686660">Jei norite iš <ph name="ORIGIN" /> į „Android“ telefoną išsiųsti numerį, prisijunkite prie „Chromium“ abiejuose įrenginiuose.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363">Failas „<ph name="FILE_NAME" />“ pavojingas, todėl „Chromium“ jį užblokavo.</translation> <translation id="6134968993075716475">Saugaus naršymo funkcija išjungta. „Chromium“ rekomenduoja ją įjungti.</translation> <translation id="6145820983052037069">Čia galite perjungti „Chromium“ profilius</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Esame pasiruošę įdiegti „Chromium“ OS! Atliekant diegimo procesą bus atlikti toliau nurodyti veiksmai. - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Bus ištrinti failai, duomenys ir dabartinė operacinė sistema. - <ph name="LIST_ITEM" />Bus įdiegta „Chromium“ OS. - <ph name="LIST_ITEM" />Įdiegus įrenginys bus išjungtas. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Paskutinis priminimas: įdiegiant bus ištrinti visi standžiojo disko duomenys. Įsitikinkite, kad turite atsarginę svarbių duomenų kopiją.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Pradėjus diegimo procesą jo atšaukti nebegalima.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Įsitikinkite, kad esate prisijungę prie „Chromium“ naudodami „<ph name="TARGET_DEVICE_NAME" />“, ir bandykite siųsti iš naujo.</translation> <translation id="6212496753309875659">Šiame kompiuteryje jau yra naujesnės versijos „Chromium“. Jei programinė įranga neveikia, pašalinkite „Chromium“ ir bandykite dar kartą.</translation> <translation id="6219195342503754812">{0,plural, =0{„Chromium“ bus paleista iš naujo dabar}=1{„Chromium“ bus paleista iš naujo po 1 sekundės}one{„Chromium“ bus paleista iš naujo po # sekundės}few{„Chromium“ bus paleista iš naujo po # sekundžių}many{„Chromium“ bus paleista iš naujo po # sekundės}other{„Chromium“ bus paleista iš naujo po # sekundžių}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">„Chromium“ OS sistema</translation> <translation id="6455857529632101747">Sveiki, tai – „Chromium“ profiliai</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{„Chromium“ bus paleista iš naujo po 1 sekundės}one{„Chromium“ bus paleista iš naujo po # sekundės}few{„Chromium“ bus paleista iš naujo po # sekundžių}many{„Chromium“ bus paleista iš naujo po # sekundės}other{„Chromium“ bus paleista iš naujo po # sekundžių}}</translation> -<translation id="646620589868199210">Galima įdiegti „Chromium“ OS</translation> <translation id="6475912303565314141">Ji taip pat kontroliuoja, koks puslapis rodomas, kai paleidžiate „Chromium“.</translation> <translation id="6510925080656968729">Pašalinti „Chromium“</translation> <translation id="6542839706527980775">Kiekviename profilyje saugoma atskira „Chromium“ informacija, pvz., žymės, istorija, slaptažodžiai ir kt.</translation>
diff --git a/chrome/app/resources/chromium_strings_lv.xtb b/chrome/app/resources/chromium_strings_lv.xtb index 58ee68f..e6f3038 100644 --- a/chrome/app/resources/chromium_strings_lv.xtb +++ b/chrome/app/resources/chromium_strings_lv.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931">Lai pārslēgtos starp Chromium profiliem, izmantojiet īsinājumtaustiņu <ph name="SHORTCUT" />.</translation> <translation id="3509308970982693815">Aizveriet visus Chromium logus un mēģiniet vēlreiz.</translation> <translation id="3575459661164320785">Jūsu datorā ir kaitīga programmatūra. Pārlūkprogramma Chromium var to noņemt, atjaunot jūsu iestatījumus un atspējot paplašinājumus, lai atkal pareizi darbotos.</translation> -<translation id="3610776674893128619">Dzēst datus cietajā diskā un instalēt Chromium OS</translation> <translation id="3639635944603682591">Šī lietotāja pārlūkošanas dati tiks dzēsti no šīs ierīces. Lai atkoptu datus, pierakstieties pārlūkprogrammā Chromium kā lietotājs <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Pieejams Chromium atjauninājums, un tas tiks lietots, tiklīdz restartēsiet pārlūku.}=1{Pieejams Chromium atjauninājums, un tas tiks lietots, tiklīdz restartēsiet pārlūku. Jūsu inkognito režīma logs netiks atkārtoti atvērts.}zero{Pieejams Chromium atjauninājums, un tas tiks lietots, tiklīdz restartēsiet pārlūku. # jūsu inkognito režīma logi netiks atkārtoti atvērti.}one{Pieejams Chromium atjauninājums, un tas tiks lietots, tiklīdz restartēsiet pārlūku. # jūsu inkognito režīma logs netiks atkārtoti atvērts.}other{Pieejams Chromium atjauninājums, un tas tiks lietots, tiklīdz restartēsiet pārlūku. # jūsu inkognito režīma logi netiks atkārtoti atvērti.}}</translation> <translation id="3651803019964686660">Lai nosūtītu numuru no vietnes <ph name="ORIGIN" /> uz savu Android tālruni, abās ierīcēs pierakstieties pārlūkā Chromium.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363">Fails <ph name="FILE_NAME" /> ir bīstams, tādēļ Chromium to bloķēja.</translation> <translation id="6134968993075716475">Droša pārlūkošana ir izslēgta. Pārlūkā Chromium tiek ieteikts to ieslēgt.</translation> <translation id="6145820983052037069">Šeit varat pārslēgties starp Chromium profiliem.</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Viss ir sagatavots Chromium OS instalēšanai! Paveicot nākamas darbības, sagaidāmas tālāk norādītās izmaiņas. - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Faili, dati un pašreizējā operētājsistēma tiks dzēsta. - <ph name="LIST_ITEM" />Tiks instalēta operētājsistēma Chromium OS. - <ph name="LIST_ITEM" />Kad instalēšana būs pabeigta, ierīce tiks izslēgta. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Atgādinām, ka instalēšanas laikā tiks izdzēsti visi dati cietajā diskā. Pārliecinieties, ka esat dublējis visus jums vajadzīgos datus.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Kad instalēšana būs sākta, to nevarēs atcelt.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Ierīcē <ph name="TARGET_DEVICE_NAME" /> pierakstieties pārlūkā Chromium un pēc tam vēlreiz mēģiniet veikt sūtīšanu.</translation> <translation id="6212496753309875659">Šim datoram jau ir jaunākā Chromium versija. Ja programmatūra nedarbojas, atinstalējiet pārlūku Chromium un mēģiniet vēlreiz.</translation> <translation id="6219195342503754812">{0,plural, =0{Pārlūks Chromium tūlīt tiks restartēts}=1{Pārlūks Chromium pēc 1 sekundes tiks restartēts}zero{Pārlūks Chromium pēc # sekundēm tiks restartēts}one{Pārlūks Chromium pēc # sekundes tiks restartēts}other{Pārlūks Chromium pēc # sekundēm tiks restartēts}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">Chromium OS sistēma</translation> <translation id="6455857529632101747">Laipni lūdzam Chromium profilos!</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Pārlūks Chromium tiks restartēts pēc 1 sekundes.}zero{Pārlūks Chromium tiks restartēts pēc # sekundēm.}one{Pārlūks Chromium tiks restartēts pēc # sekundes.}other{Pārlūks Chromium tiks restartēts pēc # sekundēm.}}</translation> -<translation id="646620589868199210">Sagatavotība Chromium OS instalēšanai</translation> <translation id="6475912303565314141">Tas nosaka arī to, kāda lapa tiks rādīta, kad atvērsiet pārlūku Chromium.</translation> <translation id="6510925080656968729">Atinstalēt Chromium</translation> <translation id="6542839706527980775">Katrā profilā tiek glabāta attiecīgā Chromium profila informācija, piemēram, grāmatzīmes, vēsture, paroles un citi dati.</translation>
diff --git a/chrome/app/resources/chromium_strings_mk.xtb b/chrome/app/resources/chromium_strings_mk.xtb index dce11103..62c50905 100644 --- a/chrome/app/resources/chromium_strings_mk.xtb +++ b/chrome/app/resources/chromium_strings_mk.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931">Со <ph name="SHORTCUT" /> се менуваат профили на Chromium</translation> <translation id="3509308970982693815">Затворете ги сите прозорци на Chromium и обидете се повторно.</translation> <translation id="3575459661164320785">Има штетен софтвер на вашиот компјутер. Chromium може да го отстрани, да ги врати вашите поставки и да ги оневозможи екстензиите за да му овозможи на вашиот прелистувач повторно да функционира нормално.</translation> -<translation id="3610776674893128619">Избриши го хард дискот и инсталирај Chromium OS</translation> <translation id="3639635944603682591">Податоците од прелистување на ова лице ќе се избришат од уредов. За да ги вратите податоците, најавете се на Chromium како <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Достапно е ново ажурирање за Chromium и ќе се примени штом рестартирате.}=1{Достапно е ново ажурирање за Chromium и ќе се примени штом рестартирате. Прозорецот „Инкогнито“ нема да се отвори повторно.}one{Достапно е ново ажурирање за Chromium и ќе се примени штом рестартирате. # прозорец „Инкогнито“ нема да се отвори повторно.}other{Достапно е ново ажурирање за Chromium и ќе се примени штом рестартирате. # прозорци „Инкогнито“ нема да се отворат повторно.}}</translation> <translation id="3651803019964686660">За да испратите број од <ph name="ORIGIN" /> до телефонот со Android, најавете се на Chromium на двата уреда.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363">Датотеката <ph name="FILE_NAME" /> е опасна, па затоа Chromium ја блокираше.</translation> <translation id="6134968993075716475">„Безбедното прелистување“ е исклучено. Chromium препорачува да го вклучите.</translation> <translation id="6145820983052037069">Може да се префрлате помеѓу профилите на Chromium тука</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Подготвени сме за инсталирање на Chromium OS! Штом ќе продолжите: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Датотеките, податоците и моменталниот оперативен систем ќе се избришат. - <ph name="LIST_ITEM" />Ќе се инсталира Chromium OS. - <ph name="LIST_ITEM" />Уредот ќе се исклучи кога ќе заврши инсталацијата. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Еден последен потсетник: инсталацијата ќе го избрише целиот хард диск. Погрижете се дека сте направиле бекап од податоците што ви се важни.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Штом ќе започне инсталирањето нема да може да се откаже.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Проверете дали сте најавени на Chromium на <ph name="TARGET_DEVICE_NAME" /> и обидете се да испратите повторно.</translation> <translation id="6212496753309875659">Овој компјутер веќе има најнова верзија на Chromium. Доколку софтверот не работи, деинсталирајте го Chromium и обидете се повторно.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium ќе се рестартира сега}=1{Chromium ќе се рестартира по 1 секунда}one{Chromium ќе се рестартира по # секунда}other{Chromium ќе се рестартира по # секунди}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Систем Chromium OS</translation> <translation id="6455857529632101747">Добре дојдовте во профили на Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium ќе се рестартира за 1 секунда}one{Chromium ќе се рестартира за # секунда}other{Chromium ќе се рестартира за # секунди}}</translation> -<translation id="646620589868199210">Chromium OS е подготвен за инсталирање</translation> <translation id="6475912303565314141">Тоа исто така контролира која страница ќе се прикаже кога го стартувате Chromium.</translation> <translation id="6510925080656968729">Деинсталирај Chromium</translation> <translation id="6542839706527980775">Секој профил содржи сопствени податоци на Chromium, како обележувачи, историја, лозинки и друго</translation>
diff --git a/chrome/app/resources/chromium_strings_ml.xtb b/chrome/app/resources/chromium_strings_ml.xtb index a9508f7..67228a3 100644 --- a/chrome/app/resources/chromium_strings_ml.xtb +++ b/chrome/app/resources/chromium_strings_ml.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> എന്നതിന് Chromium പ്രൊഫൈലുകൾ തമ്മിൽ പരസ്പരം മാറ്റാനാകും</translation> <translation id="3509308970982693815">എല്ലാ Chromium വിൻഡോകളും അടച്ചതിനുശേഷം വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="3575459661164320785">നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ ദോഷകരമായ സോഫ്റ്റ്വെയറുണ്ട്. നിങ്ങളുടെ ബ്രൗസർ വീണ്ടും സാധാരണ രീതിയിൽ പ്രവർത്തിക്കാൻ, Chromium-ന് ഇത് നീക്കം ചെയ്യാനും ക്രമീകരണം പുനഃസ്ഥാപിക്കാനും വിപുലീകരണം പ്രവർത്തനരഹിതമാക്കാനുമാവും.</translation> -<translation id="3610776674893128619">ഹാർഡ് ഡ്രൈവ് മായ്ച്ച് Chromium OS ഇൻസ്റ്റാൾ ചെയ്യുക</translation> <translation id="3639635944603682591">ഈ ഉപകരണത്തിൽ നിന്ന് ഈ വ്യക്തിയുടെ ബ്രൗസിംഗ് ഡാറ്റ ഇല്ലാതാക്കും. ഡാറ്റ വീണ്ടെടുക്കാൻ, <ph name="USER_EMAIL" /> എന്നതായി Chromium-ത്തിലേക്ക് സൈൻ ഇൻ ചെയ്യുക.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium-നുള്ള പുതിയൊരു അപ്ഡേറ്റ് ലഭ്യമാണ്, നിങ്ങൾ വീണ്ടും ആരംഭിച്ച ഉടൻ തന്നെ അത് ബാധകമാക്കും.}=1{Chromium-നുള്ള പുതിയൊരു അപ്ഡേറ്റ് ലഭ്യമാണ്, നിങ്ങൾ വീണ്ടും ആരംഭിച്ച ഉടൻ തന്നെ അത് ബാധകമാക്കും. നിങ്ങളുടെ അദൃശ്യ വിൻഡോ വീണ്ടും തുറക്കില്ല.}other{Chromium-നുള്ള പുതിയൊരു അപ്ഡേറ്റ് ലഭ്യമാണ്, നിങ്ങൾ വീണ്ടും ആരംഭിച്ച ഉടൻ തന്നെ അത് ബാധകമാക്കും. നിങ്ങളുടെ # അദൃശ്യ വിൻഡോകൾ വീണ്ടും തുറക്കില്ല.}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" /> എന്നതിൽ നിന്ന് നിങ്ങളുടെ Android ഫോണിലേക്ക് ഒരു നമ്പർ അയയ്ക്കാൻ, രണ്ട് ഉപകരണങ്ങളിൽ നിന്നും Chromium-ൽ സൈൻ ഇൻ ചെയ്യുക.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> അപകടകരമായതിനാൽ, Chromium ഇതിനെ ബ്ലോക്കുചെയ്തു.</translation> <translation id="6134968993075716475">സുരക്ഷിത ബ്രൗസിംഗ് ഓഫാണ്. ഇത് ഓണാക്കാൻ Chromium നിർദ്ദേശിക്കുന്നു.</translation> <translation id="6145820983052037069">നിങ്ങൾക്ക് ഇവിടെ Chromium പ്രൊഫൈലുകൾ തമ്മിൽ പരസ്പരം മാറ്റാനാകും</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Chromium OS ഇൻസ്റ്റാൾ ചെയ്യാൻ ഞങ്ങൾ തയ്യാറാണ്! തുടർന്നാൽ: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ഫയലുകൾ, ഡാറ്റ, നിങ്ങളുടെ നിലവിലെ ഓപ്പറേറ്റിംഗ് സിസ്റ്റം എന്നിവ മായ്ക്കും. - <ph name="LIST_ITEM" />Chromium OS ഇൻസ്റ്റാൾ ചെയ്യും. - <ph name="LIST_ITEM" />ഇൻസ്റ്റാൾ ചെയ്യൽ പൂർത്തിയായാൽ നിങ്ങളുടെ ഉപകരണം ഷട്ട് ഡൗൺ ആകും. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />അവസാന റിമൈൻഡർ: ഇൻസ്റ്റാൾ ചെയ്യുന്നത് നിങ്ങളുടെ ഹാർഡ് ഡ്രൈവ് മുഴുവനായും മായ്ക്കും. നിങ്ങൾക്ക് വേണ്ട എല്ലാ ഡാറ്റയും ബാക്കപ്പെടുത്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ഒരിക്കൽ ഇൻസ്റ്റാൾ ചെയ്യൽ ആരംഭിച്ചാൽ അത് റദ്ദാക്കാനാകില്ല.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">നിങ്ങൾ <ph name="TARGET_DEVICE_NAME" /> ഉപകരണത്തിൽ Chromium-ലാണ് സൈൻ ഇൻ ചെയ്തിരിക്കുന്നതെന്ന് ഉറപ്പാക്കുക, തുടർന്ന് വീണ്ടും അയയ്ക്കാൻ ശ്രമിക്കുക.</translation> <translation id="6212496753309875659">Chromium-ത്തിന്റെ ഏറ്റവും പുതിയ പതിപ്പ് ഈ കമ്പ്യൂട്ടറില് ഇപ്പോൾ തന്നെയുണ്ട്. സോഫ്റ്റ്വെയര് പ്രവര്ത്തിക്കുന്നില്ലെങ്കില്, Chromium അൺഇൻസ്റ്റാൾ ചെയ്ത് വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium ഇപ്പോൾ വീണ്ടും സമാരംഭിക്കും}=1{ഒരു സെക്കൻഡിൽ Chromium വീണ്ടും സമാരംഭിക്കും}other{# സെക്കൻഡിൽ Chromium വീണ്ടും സമാരംഭിക്കും}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Chromium OS സിസ്റ്റം</translation> <translation id="6455857529632101747">Chromium പ്രൊഫൈലുകളിലേക്ക് സ്വാഗതം</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium ഒരു സെക്കൻഡിൽ പുനഃരാരംഭിക്കും}other{Chromium # സെക്കൻഡിൽ പുനഃരാരംഭിക്കും}}</translation> -<translation id="646620589868199210">Chromium OS ഇൻസ്റ്റാൾ ചെയ്യാൻ തയ്യാറാണ്</translation> <translation id="6475912303565314141">നിങ്ങൾ Chromium ആരംഭിക്കുമ്പോൾ ദൃശ്യമാകുന്ന പേജും അത് നിയന്ത്രിയ്ക്കും.</translation> <translation id="6510925080656968729">Chromium അൺഇൻസ്റ്റാൾ ചെയ്യുക</translation> <translation id="6542839706527980775">ഓരോ പ്രൊഫൈലും ബുക്ക്മാർക്കുകൾ, ചരിത്രം, പാസ്വേഡുകൾ എന്നിവയും മറ്റും പോലുള്ള അതിന്റെ സ്വന്തം Chromium വിവരങ്ങൾ സൂക്ഷിക്കുന്നു</translation>
diff --git a/chrome/app/resources/chromium_strings_mn.xtb b/chrome/app/resources/chromium_strings_mn.xtb index 9a5ce35..27131e11 100644 --- a/chrome/app/resources/chromium_strings_mn.xtb +++ b/chrome/app/resources/chromium_strings_mn.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> Chromium-н профайлууд хооронд сэлгэх боломжтой</translation> <translation id="3509308970982693815">Chromium-н бүх цонхыг хаасны дараагаар дахин хандана уу.</translation> <translation id="3575459661164320785">Таны компьютер дээр аюултай программ хангамж байна. Chromium таны хөтчийн ажиллагааг дахин хэвийн болгохын тулд үүнийг устгах, таны тохиргоог сэргээх болон өргөтгөлүүдийг идэвхгүй болгох боломжтой.</translation> -<translation id="3610776674893128619">Хатуу дискийг устгаж, Chromium OS-г суулгах</translation> <translation id="3639635944603682591">Энэ хэрэглэгчийн хөтчийн өгөгдлийг энэ төхөөрөмжөөс устгана. Өгөгдлийг сэргээхийн тулд Chromium-д <ph name="USER_EMAIL" />-р нэвтэрнэ үү.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium-н шинэ шинэчлэлт боломжтой байгаа бөгөөд таныг дахин ачаалах үед түүнийг хэрэгжүүлэх болно.}=1{Chromium-н шинэ шинэчлэлт боломжтой байгаа бөгөөд таныг дахин ачаалах үед түүнийг хэрэгжүүлэх болно. Таны нууцлалтай цонхыг дахин нээхгүй.}other{Chromium-н шинэ шинэчлэлт боломжтой байгаа бөгөөд таныг дахин ачаалах үед түүнийг хэрэгжүүлэх болно. Таны # нууцлалтай цонхыг дахин нээхгүй.}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" />-с Android утсандаа дугаар илгээхийн тулд хоёр төхөөрөмжийнхөө аль алинаас нь Chromium-д нэвтэрнэ үү.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> аюултай тул үүнийг Chromium блок хийсэн.</translation> <translation id="6134968993075716475">Аюулгүй үзэх онцлог унтраалттай байна. Chromium түүнийг асаахыг зөвлөж байна.</translation> <translation id="6145820983052037069">Та энд Chromium-н профайлууд хооронд сэлгэх боломжтой</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Бид Chromium OS-г суулгахад бэлэн боллоо! Таныг үргэлжлүүлмэгц: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Файл, өгөгдөл болон таны одоогийн үйлдлийн системийг устгана. - <ph name="LIST_ITEM" />Chromium OS-г суулгана. - <ph name="LIST_ITEM" />Суулгаж дуусмагц таны төхөөрөмжийг унтраана. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Хамгийн сүүлийн сануулга: суулгаснаар таны хатуу дискийг бүхэлд нь устгана. Танд аливаа хуулбарлах шаардлагатай өгөгдөл байгаа эсэхийг шалгана уу.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Суулгаж эхэлмэгц үүнийг цуцлах боломжгүй болно.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Та Chromium-д өөрийн <ph name="TARGET_DEVICE_NAME" />-с нэвтэрсэн эсэхээ шалгаад, дахин илгээхээр оролдоно уу.</translation> <translation id="6212496753309875659">Энэ компьютерт Chromium-ийн хамгийн сүүлийн үеийн хувилбар байна. Хэрэв программ ажиллахгүй байвал Chromium-ийг устгаад, дахин суурьлуулж үзнэ үү.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium-г одоо дахин ажиллуулна}=1{Chromium-г 1 секундийн дотор дахин ажиллуулна}other{Chromium-г # секундийн дотор дахин ажиллуулна}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">Chromium OS Систем</translation> <translation id="6455857529632101747">Chromium профайлд тавтай морилно уу</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 секундийн дараа дахин эхэлнэ}other{Chromium # секундийн дараа дахин эхэлнэ}}</translation> -<translation id="646620589868199210">Chromium OS-г суулгахад бэлэн боллоо</translation> <translation id="6475912303565314141">Энэ нь мөн таныг Chromium-ыг эхлүүлж байх үед гарч ирсэн хуудсыг хянадаг.</translation> <translation id="6510925080656968729">Chromium-ийг устгах</translation> <translation id="6542839706527980775">Профайл тус бүр Chromium-н өөрийн мэдээллийг агуулах бөгөөд үүнд хавчуурга, түүх, нууц үг болон бусад мэдээлэл багтана</translation>
diff --git a/chrome/app/resources/chromium_strings_mr.xtb b/chrome/app/resources/chromium_strings_mr.xtb index 9c8417e..f5f170a3 100644 --- a/chrome/app/resources/chromium_strings_mr.xtb +++ b/chrome/app/resources/chromium_strings_mr.xtb
@@ -15,6 +15,7 @@ <translation id="1524282610922162960">Chromium टॅब शेअर करा</translation> <translation id="1553461853655228091">तुमच्या आसपासचा 3D नकाशा तयार करण्यासाठी Chromium ला तुमचा कॅमेरा अॅक्सेस करण्याची परवानगी हवी आहे</translation> <translation id="1607715478322902680">{COUNT,plural, =0{अपडेट लागू करता यावे यासाठी तुम्ही Chromium पुन्हा लाँच करण्याची तुमच्या ॲडमिनिस्ट्रेटरला गरज आहे}=1{अपडेट लागू करता यावे यासाठी तुम्ही Chromium पुन्हा लाँच करण्याची तुमच्या ॲडमिनिस्ट्रेटरला गरज आहे. तुमची गुप्त विंडो पुन्हा उघडणार नाही.}other{अपडेट लागू करता यावे यासाठी तुम्ही Chromium पुन्हा लाँच करण्याची तुमच्या ॲडमिनिस्ट्रेटरला गरज आहे. तुमच्या # गुप्त विंडो पुन्हा उघडणार नाहीत.}}</translation> +<translation id="1667812772085710766">तुम्ही Chromium बंद केल्यास, ते तुम्ही भेट दिलेल्या पेजच्या कुकी आणि साइट डेटा आपोआप साफ करते</translation> <translation id="1708666629004767631">Chromium ची नवीन, सुरक्षित आवृत्ती उपलब्ध आहे.</translation> <translation id="1774152462503052664">Chromium बॅकग्राउंडमध्ये सुरू द्या</translation> <translation id="1779356040007214683">Chromium अधिक सुरक्षित बनविण्यासाठी, आम्ही <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> मध्ये सूचीबद्ध नसलेले आणि आपल्या माहिती शिवाय कदाचित जोडले गेलेले काही विस्तार अक्षम केले.</translation> @@ -82,7 +83,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> Chromium प्रोफाइलदरम्यान स्विच करू शकतात</translation> <translation id="3509308970982693815">कृपया सर्व Chromium विंडो बंद करा आणि पुन्हा प्रयत्न करा.</translation> <translation id="3575459661164320785">तुमच्या काँप्युटरवर हानिकारक सॉफ्टवेअर आहे. Chromium ते काढून टाकून तुमचा ब्राउझर पुन्हा नीट चालावा यासाठी तुमच्या सेटिंग्ज रिस्टोअर आणि एक्स्टेंशन बंद करू शकते.</translation> -<translation id="3610776674893128619">हार्ड ड्राइव्ह मिटवा आणि Chromium OS इंस्टॉल करा</translation> <translation id="3639635944603682591">या व्यक्तीचा ब्राउझिंग डेटा या डिव्हाइसवरून हटवला जाईल. डेटा रीकव्हर करण्यासाठी, Chromium वर <ph name="USER_EMAIL" /> म्हणून साइन इन करा.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium चे नवीन अपडेट उपलब्ध आहे आणि तुम्ही ते पुन्हा लाँच करताच लागू केले जाईल.}=1{Chromium चे नवीन अपडेट उपलब्ध आहे आणि तुम्ही ते पुन्हा लाँच करताच लागू केले जाईल. तुमची गुप्त विंडो पुन्हा उघडणार नाही.}other{Chromium चे नवीन अपडेट उपलब्ध आहे आणि तुम्ही ते पुन्हा लाँच करताच लागू केले जाईल. तुमच्या # गुप्त विंडो पुन्हा उघडणार नाहीत.}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" /> वरून तुमच्या Android फोनवर नंबर पाठवण्यासाठी, दोन्ही डिव्हाइसवर Chromium मध्ये साइन इन करा.</translation> @@ -164,15 +164,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> धोकादायक आहे, त्यामुळे Chromium ने ते अवरोधित केले आहे.</translation> <translation id="6134968993075716475">सुरक्षित ब्राउझिंग बंद आहे. Chromium ते सुरू करण्याची शिफारस करते.</translation> <translation id="6145820983052037069">तुम्ही Chromium प्रोफाइलदरम्यान येथे स्विच करू शकता</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />आम्ही Chromium OS इंस्टॉल करण्यासाठी तयार आहोत! तुम्ही पुढे सुरू ठेवल्यानंतर: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />फाइल, डेटा आणि तुमची सध्याची ऑपरेटिंग सिस्टम मिटवली जाईल. - <ph name="LIST_ITEM" />Chromium OS इंस्टॉल केले जाईल. - <ph name="LIST_ITEM" />इंस्टॉलेशन पूर्ण झाल्यानंतर, तुमचे डिव्हाइस एकदा बंद होईल. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />एक शेवटचा रिमाइंडर: इंस्टॉलेशन तुमची संपूर्ण हार्ड ड्राइव्ह मिटवेल. कृपया तुमच्यासाठी महत्त्वाच्या असलेल्या डेटाचा तुम्ही बॅकअप घेतला असल्याची खात्री करा.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />इंस्टॉलेशन सुरू झाल्यावर ते रद्द करता येऊ शकत नाही.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">तुम्ही तुमच्या <ph name="TARGET_DEVICE_NAME" /> वर Chromium मध्ये साइन इन केले असल्याची खात्री करा आणि त्यानंतर पुन्हा पाठवून पहा.</translation> <translation id="6212496753309875659">या कॉंप्युटरवर आधीपासून Chromium ची अगदी अलीकडील आवृत्ती आहे. सॉफ्टवेअर काम करत नसल्यास, कृपया Chromium अनइंस्टॉल करा आणि पुन्हा प्रयत्न करा.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium आता पुन्हा लाँच होईल}=1{Chromium एका सेकंदामध्ये पुन्हा लाँच होईल}other{Chromium # सेकंदांमध्ये पुन्हा लाँच होईल}}</translation> @@ -190,7 +181,6 @@ <translation id="6434250628340475518">Chromium OS सिस्टम</translation> <translation id="6455857529632101747">Chromium प्रोफाइलमध्ये स्वागत आहे</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium १ सेकंदात रीस्टार्ट होईल}other{Chromium # सेकंदांत रीस्टार्ट होईल}}</translation> -<translation id="646620589868199210">Chromium OS इंस्टॉल करण्यासाठी तयार आहे</translation> <translation id="6475912303565314141">तुम्ही Chromium सुरू करता तेव्हा कोणते पृष्ठ दर्शविले जाते हेदेखील हे नियंत्रित करते.</translation> <translation id="6510925080656968729">Chromium अनइंस्टॉल करा</translation> <translation id="6542839706527980775">प्रत्येक प्रोफाइलमध्ये तिची स्वतःची Chromium माहिती असते जसे की, बुकमार्क, इतिहास, पासवर्ड आणि आणखी बरेच काही</translation>
diff --git a/chrome/app/resources/chromium_strings_ms.xtb b/chrome/app/resources/chromium_strings_ms.xtb index 9ee504f3..3e5cb2b 100644 --- a/chrome/app/resources/chromium_strings_ms.xtb +++ b/chrome/app/resources/chromium_strings_ms.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> boleh digunakan untuk beralih antara profil Chromium</translation> <translation id="3509308970982693815">Sila tutup semua tetingkap Chromium dan cuba lagi.</translation> <translation id="3575459661164320785">Terdapat perisian yang berbahaya pada komputer anda. Chromium boleh mengalih keluar perisian tersebut, memulihkan tetapan anda dan melumpuhkan sambungan supaya penyemak imbas anda dapat berfungsi seperti biasa semula.</translation> -<translation id="3610776674893128619">Padamkan Pemacu Keras & Pasang Chromium OS</translation> <translation id="3639635944603682591">Data semakan imbas orang ini akan dipadamkan daripada peranti ini. Untuk memulihkan data itu, log masuk ke Chromium sebagai <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Kemas kini baharu tersedia untuk Chromium dan akan digunakan sebaik sahaja anda melancarkan semula Chromium.}=1{Kemas kini baharu tersedia untuk Chromium dan akan digunakan sebaik sahaja anda melancarkan semula Chromium. Tetingkap Inkognito anda tidak dapat dibuka semula.}other{Kemas kini baharu tersedia untuk Chromium dan akan digunakan sebaik sahaja anda melancarkan semula Chromium. # tetingkap Inkognito anda tidak dapat dibuka semula.}}</translation> <translation id="3651803019964686660">Untuk menghantar nombor daripada <ph name="ORIGIN" /> ke telefon Android anda, log masuk ke Chromium pada kedua-dua peranti.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> berbahaya, jadi Chromium telah menyekat fail itu.</translation> <translation id="6134968993075716475">Penyemakan Imbas Selamat dimatikan. Chromium mengesyorkan agar ciri ini dihidupkan.</translation> <translation id="6145820983052037069">Anda boleh beralih antara profil Chromium di sini</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Kami sudah bersedia untuk memasang Chromium OS! Sebaik sahaja anda meneruskan: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Fail, data dan sistem pengendalian semasa anda akan dipadamkan. - <ph name="LIST_ITEM" />Chromium OS akan dipasang. - <ph name="LIST_ITEM" />Peranti anda akan dimatikan sebaik sahaja pemasangan selesai. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Satu peringatan terakhir: pemasangan akan memadamkan seluruh pemacu keras anda. Sila pastikan anda telah menyandarkan sebarang data yang penting bagi anda.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Sebaik sahaja dimulakan, pemasangan tidak boleh dibatalkan.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Pastikan anda telah log masuk ke Chromium pada <ph name="TARGET_DEVICE_NAME" /> anda, kemudian cuba hantar lagi.</translation> <translation id="6212496753309875659">Komputer ini telah mempunyai versi Chromium yang lebih baharu. Jika perisian tidak berfungsi, sila nyahpasang Chromium dan cuba lagi.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium akan dilancarkan semula sekarang}=1{Chromium akan dilancarkan semula dalam masa sesaat}other{Chromium akan dilancarkan semula dalam masa # saat}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">Sistem OS Chromium</translation> <translation id="6455857529632101747">Selamat datang ke profil Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium akan dimulakan semula dalam 1 saat}other{Chromium akan dimulakan semula dalam # saat}}</translation> -<translation id="646620589868199210">Sedia untuk memasang Chromium OS</translation> <translation id="6475912303565314141">Sambungan turut mengawal halaman yang ditunjukkan apabila anda memulakan Chromium.</translation> <translation id="6510925080656968729">Nyahpasang Chromium</translation> <translation id="6542839706527980775">Setiap profil menyimpan maklumat Chromium profil itu sendiri seperti penanda halaman, sejarah, kata laluan dan pelbagai lagi</translation>
diff --git a/chrome/app/resources/chromium_strings_my.xtb b/chrome/app/resources/chromium_strings_my.xtb index ee01eab..dabdf4a 100644 --- a/chrome/app/resources/chromium_strings_my.xtb +++ b/chrome/app/resources/chromium_strings_my.xtb
@@ -85,7 +85,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> သည် Chromium ပရိုဖိုင်များအကြား ပြောင်းပေးနိုင်သည်</translation> <translation id="3509308970982693815">ကျေးဇူးပြု၍ Chromium ၐင်းဒိုးများကို ပိတ်ပြီး ထပ်စမ်းပါ။</translation> <translation id="3575459661164320785">သင့်ကွန်ပျူတာတွင် အန္တရာယ်ရှိသောဆော့ဖ်ဝဲ ရှိနေသည်။ Chromium သည် ၎င်းကို ဖယ်ရှားခြင်း၊ သင်၏ ဆက်တင်များ ပြန်ယူခြင်းနှင့် ဘရောင်ဇာ ပုံမှန်အတိုင်း ပြန်လည်အသုံးပြုနိုင်ရန် နောက်ဆက်တွဲများ ပိတ်ခြင်းတို့ကို ပြုလုပ်နိုင်ပါသည်။</translation> -<translation id="3610776674893128619">ဟတ်ဒရိုက် ဒေတာဖျက်ပြီး Chromium OS ထည့်သွင်းရန်</translation> <translation id="3639635944603682591">ဤပုဂ္ဂိုလ်၏ ကြည့်ရှုမှုဒေတာများကို ဤကိရိယာမှနေ၍ ဖျက်လိုက်ပါမည်။ ဒေတာကို ပြန်လည်ရယူရန် <ph name="USER_EMAIL" />အဖြစ် Chromium သို့ လက်မှတ်ထိုးဝင်ပါ။</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium အတွက် အပ်ဒိတ်အသစ်ရနိုင်ပြီဖြစ်ပြီး ပြန်ဖွင့်လိုက်သည်နှင့် ထည့်သွင်းသွားပါမည်။}=1{Chromium အတွက် အပ်ဒိတ်အသစ်ရနိုင်ပြီဖြစ်ပြီး ပြန်ဖွင့်လိုက်သည်နှင့် ထည့်သွင်းသွားပါမည်။ သင်၏ရုပ်ဖျက် ဝင်ဒိုးကို ပြန်ဖွင့်မည် မဟုတ်ပါ။}other{Chromium အတွက် အပ်ဒိတ်အသစ်ရနိုင်ပြီဖြစ်ပြီး ပြန်ဖွင့်လိုက်သည်နှင့် ထည့်သွင်းသွားပါမည်။ သင်၏ရုပ်ဖျက် ဝင်ဒိုး # ခုကို ပြန်ဖွင့်မည် မဟုတ်ပါ။}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" /> မှ သင်၏ Android ဖုန်းသို့ နံပါတ်တစ်ခုပို့ရန် စက်နှစ်ခုလုံးတွင် Chromium သို့ လက်မှတ်ထိုးဝင်ပါ။</translation> @@ -168,15 +167,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> သည် အန္တရာယ်ရှိသောကြောင့် Chromium က ၎င်းကို ပိတ်ဆို့ထားပါသည်။</translation> <translation id="6134968993075716475">'လုံခြုံစွာ ကြည့်ရှုခြင်း' ပိတ်ထားသည်။ ၎င်းကိုဖွင့်ရန် Chromium က အကြံပြုပါသည်။</translation> <translation id="6145820983052037069">ဤနေရာတွင် Chromium ပရိုဖိုင်များအကြား ပြောင်းနိုင်သည်</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Chromium OS ထည့်သွင်းရန် အသင့်ဖြစ်ပါပြီ။ ရှေ့ဆက်သောအခါ- - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ဖိုင်များ၊ ဒေတာနှင့် သင်၏လက်ရှိ လည်ပတ်သည့်စနစ်ကို ဖျက်လိုက်ပါမည်။ - <ph name="LIST_ITEM" />Chromium OS ထည့်သွင်းပါမည်။ - <ph name="LIST_ITEM" />ထည့်သွင်းမှုပြီးသောအခါ သင်၏စက် အပြီးပိတ်သွားပါမည်။ - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />နောက်ဆုံး သတိပေးချက်- ထည့်သွင်းမှုသည် သင့်ဟတ်ဒရိုက်ဗ်တစ်ခုလုံးကို ဖျက်လိုက်ပါမည်။ အရေးကြီးသောဒေတာကို အရန်သိမ်းထားကြောင်း သေချာပါစေ။<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ထည့်သွင်းမှုစတင်သောအခါ ၎င်းကို ပယ်ဖျက်၍မရပါ။<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">သင်၏ <ph name="TARGET_DEVICE_NAME" /> တွင် Chromium သို့ လက်မှတ်ထိုးဝင်ထားကြောင်း သေချာစေပြီး ထပ်ပို့ကြည့်ပါ။</translation> <translation id="6212496753309875659">ဒီကွန်ပျူတာ ထဲမှာ ပိုပြီး နောက်ကျသော Chromium ဗားရှင်း ရှိနေပါပြီ။ ဆော့ဝဲ အလုပ်မလုပ်လျှင်၊ ကျေးဇူးပြုပြီး Chromium ကို ဖြုတ်လိုက်ပြီး ထပ်စမ်းကြည့်ပါ။</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium ကို ယခု ပြန်လည်စတင်ပါမည်}=1{Chromium ကို ၁ စက္ကန့်အကြာတွင် ပြန်လည်စတင်ပါမည်}other{Chromium ကို # စက္ကန့်အကြာတွင် ပြန်လည်စတင်ပါမည်}}</translation> @@ -194,7 +184,6 @@ <translation id="6434250628340475518">Chromium OS စနစ်</translation> <translation id="6455857529632101747">Chromium ပရိုဖိုင်များမှ ကြိုဆိုပါသည်</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium သည် ၁ စက္ကန့်အတွင်း ပြန်လည်စတင်ပါမည်}other{Chromium သည် # စက္ကန့်အတွင်း ပြန်လည်စတင်ပါမည်}}</translation> -<translation id="646620589868199210">Chromium OS ထည့်သွင်းရန် အသင့်ဖြစ်ပါပြီ</translation> <translation id="6475912303565314141">၎င်းသည် Chromium စချိန်မှာ ဘယ် စာမျက်နှာ ပြရမည်ကိုပါ ထိန်းချုပ်သည်။</translation> <translation id="6510925080656968729">Chromium ဖြုတ်ရန်</translation> <translation id="6542839706527980775">ပရိုဖိုင်တစ်ခုစီတွင် လိပ်စာများ၊ မှတ်တမ်း၊ စကားဝှက်များ စသည်တို့ကဲ့သို့ ၎င်း၏သီးခြား Chromium အချက်အလက်များ ပါဝင်သည်</translation>
diff --git a/chrome/app/resources/chromium_strings_ne.xtb b/chrome/app/resources/chromium_strings_ne.xtb index 5877ed2..23728fd 100644 --- a/chrome/app/resources/chromium_strings_ne.xtb +++ b/chrome/app/resources/chromium_strings_ne.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931">तपाईं <ph name="SHORTCUT" /> थिचेर Chromium मा एक प्रोफाइलबाट अर्को प्रोफाइलमा जान सक्नुहुन्छ</translation> <translation id="3509308970982693815">कृपया सबै Chromium सन्झ्यालहरू बन्द गर्नुहोस् र पुन: प्रयास गर्नुहोस्।</translation> <translation id="3575459661164320785">तपाईंको कम्प्युटरमा हानिकारक सफ्टवेयर छ। Chromium ले यसलाई हटाउन, तपाईंका सेटिङहरू पुनर्स्थापना गर्न र तपाईंको ब्राउजरलाई फेरि सामान्य ढङ्गले काम गर्ने बनाउन विस्तारहरू सक्षम पार्न सक्छ।</translation> -<translation id="3610776674893128619">हार्ड ड्राइभमा भएका डेटा मेटाउनुहोस् र Chromium OS इन्स्टल गर्नुहोस्</translation> <translation id="3639635944603682591">यस डिभाइसबाट यो व्यक्तिको ब्राउजिङ डेटा मेटाइने छ। उक्त डेटा पुनः प्राप्त गर्न <ph name="USER_EMAIL" /> का रूपमा Chromium मा साइन इन गर्नुहोस्।</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium को नयाँ अद्यावधिक उपलब्ध छ र तपाईंले Chromium पुनः सुरु गर्ने बित्तिकै यो अद्यावधिक लागू हुने छ।}=1{Chromium को नयाँ अद्यावधिक उपलब्ध छ र तपाईंले Chromium पुनः सुरु गर्ने बित्तिकै यो अद्यावधिक लागू हुने छ। तपाईंको इन्कोग्निटो विन्डो पुनः खुल्ने छैन।}other{Chromium को नयाँ अद्यावधिक उपलब्ध छ र तपाईंले Chromium पुनः सुरु गर्ने बित्तिकै यो अद्यावधिक लागू हुने छ। तपाईंका # वटा इन्कोग्निटो विन्डो पुनः खुल्ने छैनन्।}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" /> बाट आफ्नो Android फोनमा कुनै नम्बर पठाउन दुवै यन्त्रमा Chromium मा साइन इन गर्नुहोस्।</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> खतरनाक छ, त्यसैले Chromium ले यसमाथि रोक लगाएको छ।</translation> <translation id="6134968993075716475">सुरक्षित ब्राउजिङ निष्क्रिय छ। Chromium ले यो सेवा सक्रिय गर्न सिफारिस गर्छ।</translation> <translation id="6145820983052037069">तपाईं यहाँबाट Chromium मा रहेको एक प्रोफाइलबाट अर्को प्रोफाइलमा जान सक्नुहुन्छ</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />अब Chromium OS इन्स्टल गर्न सकिन्छ! इन्स्टल गर्ने प्रक्रिया थालेपछि: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />फाइल, डेटा र हालको अपरेटिङ सिस्टम मेटिने छ। - <ph name="LIST_ITEM" />Chromium OS इन्स्टल हुने छ। - <ph name="LIST_ITEM" />इन्स्टल गर्ने प्रक्रिया पूरा भएपछि तपाईंको डिभाइस सट डाउन हुने छ। - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />अन्तिम चेतावनी: तपाईंले इन्स्टल गर्नुभयो भने तपाईंको हार्ड ड्राइभमा भएका सबै डेटा मेटिने छन्। कृपया तपाईंले आफ्ना सबै महत्त्वपूर्ण डेटा ब्याकअप गरिसक्नुभएको छ भन्ने कुरा सुनिश्चित गर्नुहोस्।<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />इन्स्टल गर्ने प्रक्रिया थालिसकेपछि उक्त प्रक्रिया रद्द गर्न मिल्दैन।<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">तपाईंले आफ्नो <ph name="TARGET_DEVICE_NAME" /> मा Chromium मा साइन इन गर्नुभएको छ भन्ने कुरा सुनिश्चित गर्नुहोस् अनि फेरि पठाउनुहोस्।</translation> <translation id="6212496753309875659">यो कम्प्युटरमा पहिले नै Chromium को अझ हालैको संस्करण छ। यदि सफ्टवेयरले काम गरिरहेको छैन भने, कृपया Chromium को स्थापना हटाएर पुन: प्रयास गर्नुहोस्।</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium अब पुनः सुरु हुने छ}=1{Chromium १ सेकेन्डमा पुनः सुरु हुने छ}other{Chromium # सेकेन्डमा पुनः सुरु हुने छ}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">Chromium OS प्रणाली</translation> <translation id="6455857529632101747">Chromium का प्रोफाइलमा तपाईंलाई स्वागत छ</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium १ सेकेन्डमा पुनः सुरु हुने छ}other{Chromium # सेकेन्डमा पुनः सुरु हुने छ}}</translation> -<translation id="646620589868199210">अब Chromium OS इन्स्टल गर्न सकिन्छ</translation> <translation id="6475912303565314141">तपाइँले क्रोमियम सुरु गर्दा कुन पृष्ठ देखाउँछ भनेर पनि यसले नियन्त्रण गर्छ।</translation> <translation id="6510925080656968729">Chromium को स्थापना हटाउनुहोस्</translation> <translation id="6542839706527980775">हरेक प्रोफाइलका आफ्नै बुकमार्क, इतिहास, पासवर्डलगायत Chromium का सबै जानकारी हुन्छन्</translation>
diff --git a/chrome/app/resources/chromium_strings_nl.xtb b/chrome/app/resources/chromium_strings_nl.xtb index 6155570..1bd612e 100644 --- a/chrome/app/resources/chromium_strings_nl.xtb +++ b/chrome/app/resources/chromium_strings_nl.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> kan schakelen tussen Chromium-profielen</translation> <translation id="3509308970982693815">Sluit alle Chromium-vensters en probeer het opnieuw.</translation> <translation id="3575459661164320785">Je hebt schadelijke software op je computer. Chromium kan deze verwijderen, je instellingen herstellen en extensies uitzetten, zodat je browser weer normaal werkt.</translation> -<translation id="3610776674893128619">Harde schijf wissen en Chromium OS installeren</translation> <translation id="3639635944603682591">De browsegegevens van deze persoon worden verwijderd van dit apparaat. Als je de gegevens wilt herstellen, log je in bij Chromium als <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Er is een nieuwe update voor Chromium beschikbaar die wordt uitgevoerd zodra je het programma opnieuw start.}=1{Er is een nieuwe update voor Chromium beschikbaar die wordt uitgevoerd zodra je het programma opnieuw start. Je incognitovenster kan niet opnieuw worden geopend.}other{Er is een nieuwe update voor Chromium beschikbaar die wordt uitgevoerd zodra je het programma opnieuw start. Je # incognitovensters kunnen niet opnieuw worden geopend.}}</translation> <translation id="3651803019964686660">Als je een nummer vanaf <ph name="ORIGIN" /> naar je Android-telefoon wilt sturen, log je in bij Chromium op beide apparaten.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> is gevaarlijk en is daarom door Chromium geblokkeerd.</translation> <translation id="6134968993075716475">Safe Browsing staat uit. Chromium raadt je aan deze functie aan te zetten.</translation> <translation id="6145820983052037069">Je kunt hier schakelen tussen verschillende Chromium-profielen</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Je kunt Chromium OS installeren. Als je doorgaat, gebeurt het volgende: -<ph name="BEGIN_LIST" /> -<ph name="LIST_ITEM" />Bestanden, gegevens en je huidige besturingssysteem worden gewist. - <ph name="LIST_ITEM" />Chromium OS wordt geïnstalleerd. - <ph name="LIST_ITEM" />Je apparaat gaat uit nadat de installatie is afgerond. - <ph name="END_LIST" /> -<ph name="END_PARAGRAPH1" /> -<ph name="BEGIN_PARAGRAPH2" />Een laatste herinnering: tijdens de installatie wordt de hele harde schijf gewist. Zorg dat je een back-up hebt gemaakt van belangrijke gegevens.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Nadat de installatie is gestart, kun je deze niet meer annuleren.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Zorg dat je bent ingelogd bij Chromium op je <ph name="TARGET_DEVICE_NAME" /> en probeer opnieuw te sturen.</translation> <translation id="6212496753309875659">Deze computer beschikt al over een recentere versie van Chromium. Als de software niet werkt, moet je Chromium verwijderen en het opnieuw proberen.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium wordt nu opnieuw gestart}=1{Chromium wordt over één seconde opnieuw gestart}other{Chromium wordt over # seconden opnieuw gestart}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Chromium OS-systeem</translation> <translation id="6455857529632101747">Welkom bij Chromium-profielen</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium wordt over één seconde opnieuw gestart}other{Chromium wordt over # seconden opnieuw gestart}}</translation> -<translation id="646620589868199210">Klaar om Chromium OS te installeren</translation> <translation id="6475912303565314141">Hiermee wordt ook gecontroleerd welke pagina wordt getoond wanneer je Chromium start.</translation> <translation id="6510925080656968729">Chromium verwijderen</translation> <translation id="6542839706527980775">Elk profiel heeft eigen Chromium-informatie, zoals bookmarks, geschiedenis en wachtwoorden</translation>
diff --git a/chrome/app/resources/chromium_strings_no.xtb b/chrome/app/resources/chromium_strings_no.xtb index 0528413..0eaaa245 100644 --- a/chrome/app/resources/chromium_strings_no.xtb +++ b/chrome/app/resources/chromium_strings_no.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931">Bruk <ph name="SHORTCUT" /> til å bytte mellom Chromium-profiler</translation> <translation id="3509308970982693815">Lukk alle Chromium-vinduer og prøv på nytt.</translation> <translation id="3575459661164320785">Det finnes skadelig programvare på datamaskinen din. Chromium kan fjerne den, gjenopprette innstillingene dine og deaktivere utvidelser for å få nettleseren til å fungere som normalt igjen.</translation> -<translation id="3610776674893128619">Tøm harddisken og installer Chromium OS</translation> <translation id="3639635944603682591">Denne personens nettlesingsdata slettes fra denne enheten. For å gjenopprette dataene, logg på Chromium som <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{En ny oppdatering for Chromium er tilgjengelig og tas i bruk når du starter Chromium på nytt.}=1{En ny oppdatering for Chromium er tilgjengelig og tas i bruk når du starter Chromium på nytt. Inkognitovinduet ditt blir ikke gjenåpnet.}other{En ny oppdatering for Chromium er tilgjengelig og tas i bruk når du starter Chromium på nytt. De # inkognitovinduene dine blir ikke gjenåpnet.}}</translation> <translation id="3651803019964686660">For å sende numre fra <ph name="ORIGIN" /> til Android-telefonen din, logg på Chromium på begge enhetene.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> er farlig, så Chromium har blokkert den.</translation> <translation id="6134968993075716475">Safe Browsing er slått av. Chromium anbefaler at du slår det på.</translation> <translation id="6145820983052037069">Du kan bytte mellom Chromium-profiler her</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Vi er klare til å installere Chromium OS! Når du fortsetter, skjer følgende: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Filer, data, og det nåværende operativsystemet ditt blir slettet. - <ph name="LIST_ITEM" />Chromium OS blir installert. - <ph name="LIST_ITEM" />Enheten din slår seg av når installasjonen er fullført. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Én siste påminnelse: Installasjonen kommer til å tømme hele harddisken din. Forsikre deg om at du har sikkerhetskopiert eventuelle data du bryr deg om.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Når installasjonen er startet, kan den ikke avbrytes.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Sørg for at du er logget på Chromium på <ph name="TARGET_DEVICE_NAME" />, og prøv å sende på nytt.</translation> <translation id="6212496753309875659">Denne datamaskinen har allerede en nyere versjon av Chromium. Hvis programvaren ikke fungerer, må du avinstallere Chromium og prøve på nytt.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium startes på nytt nå}=1{Chromium startes på nytt om 1 sekund}other{Chromium startes på nytt om # sekunder}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">Chromium OS</translation> <translation id="6455857529632101747">Velkommen til Chromium-profiler</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium startes på nytt om 1 sekund}other{Chromium startes på nytt om # sekunder}}</translation> -<translation id="646620589868199210">Klar til å installere Chromium OS</translation> <translation id="6475912303565314141">Den styrer også hvilken side som vises når du starter Chromium.</translation> <translation id="6510925080656968729">Avinstaller Chromium</translation> <translation id="6542839706527980775">Hver profil har sin egen Chromium-informasjon, som bokmerker, logg, passord med mer</translation>
diff --git a/chrome/app/resources/chromium_strings_or.xtb b/chrome/app/resources/chromium_strings_or.xtb index f8c7f8e..f44a096 100644 --- a/chrome/app/resources/chromium_strings_or.xtb +++ b/chrome/app/resources/chromium_strings_or.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> ବ୍ୟବହାର କରି Chromium ପ୍ରୋଫାଇଲଗୁଡ଼ିକ ମଧ୍ୟରେ ସ୍ୱିଚ୍ କରାଯାଇପାରିବ</translation> <translation id="3509308970982693815">ଦୟାକରି ସମସ୍ତ Chrome ୱିଣ୍ଡୋଗୁଡିକୁ ବନ୍ଦ କରନ୍ତୁ ଏବଂ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation> <translation id="3575459661164320785">ଆପଣଙ୍କର କମ୍ପ୍ୟୁଟର୍ରେ କ୍ଷତିକାରକ ସଫ୍ଟୱେୟାର୍ ଅଛି। Chromium ଏହାକୁ କାଢ଼ି ଦେଇପାରିବ, ଆପଣଙ୍କର ସେଟିଂସ୍କୁ ରିଷ୍ଟୋର୍ କରିପାରିବ ଏବଂ ଆପଣଙ୍କର ବ୍ରାଉଜର୍ ସାମାନ୍ୟରୂପେ ପୁଣି କାମ କରିବା ନିମନ୍ତେ ଏକ୍ସଟେନ୍ସନ୍କୁ ଅକ୍ଷମ କରିଦେଇପାରିବ।</translation> -<translation id="3610776674893128619">ହାର୍ଡ ଡ୍ରାଇଭର ଡାଟା ଖାଲି କରି Chromium OS ଇନଷ୍ଟଲ୍ କରନ୍ତୁ</translation> <translation id="3639635944603682591">ଏହି ବ୍ୟକ୍ତିଙ୍କର ବ୍ରାଉଜିଂ ଡାଟା ଏହି ଡିଭାଇସ୍ରୁ ଡିଲିଟ୍ କରାଯିବ। ଡାଟା ପୁନରୁଦ୍ଧାର କରିବାକୁ, <ph name="USER_EMAIL" /> ଭାବରେ Chromiumରେ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ।</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium ପାଇଁ ଏକ ନୂଆ ଅପ୍ଡେଟ୍ ଉପଲବ୍ଧ ଅଛି ଏବଂ ଆପଣ ପୁଣି ଥରେ ଲଞ୍ଚ କରିବା କ୍ଷଣି ଲାଗୁ ହୋଇଯିବ।}=1{Chromium ପାଇଁ ଏକ ନୂଆ ଅପ୍ଡେଟ୍ ଉପଲବ୍ଧ ଅଛି ଏବଂ ଆପଣ ପୁଣି ଥରେ ଲଞ୍ଚ କରିବା କ୍ଷଣି ଲାଗୁ ହୋଇଯିବ। ଆପଣଙ୍କର ଇନ୍କଗ୍ନିଟୋ ୱିଣ୍ଡୋ ପୁଣି ଖୋଲିବ ନାହିଁ।}other{Chromium ପାଇଁ ଏକ ନୂଆ ଅପ୍ଡେଟ୍ ଉପଲବ୍ଧ ଅଛି ଏବଂ ଆପଣ ପୁଣି ଥରେ ଲଞ୍ଚ କରିବା କ୍ଷଣି ଲାଗୁ ହୋଇଯିବ। ଆପଣଙ୍କର #ଟି ଇନ୍କଗ୍ନିଟୋ ୱିଣ୍ଡୋ ପୁଣି ଖୋଲିବ ନାହିଁ।}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" />ରୁ ଆପଣଙ୍କ Android ଫୋନକୁ ଏକ ନମ୍ବର ପଠାଇବାକୁ, ଉଭୟ ଡିଭାଇସରେ Chromiumରେ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ।</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> ବିପଜ୍ଜନକ ଅଟେ, ତେଣୁ Chromium ଏହାକୁ ବ୍ଲକ୍ କରିଛି।</translation> <translation id="6134968993075716475">ସେଫ୍ ବ୍ରାଉଜିଂ ବନ୍ଦ ଅଛି। Chromium ଏହାକୁ ଚାଲୁ କରିବାକୁ ସୁପାରିଶ କରେ।</translation> <translation id="6145820983052037069">ଏଠାରେ ଆପଣ Chromium ପ୍ରୋଫାଇଲଗୁଡ଼ିକ ମଧ୍ୟରେ ସ୍ୱିଚ୍ କରିପାରିବେ</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />ଆମେ Chromium OS ଇନଷ୍ଟଲ୍ କରିବାକୁ ପ୍ରସ୍ତୁତ! ଆପଣ ଆଗକୁ ବଢ଼ିବା ପରେ: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ଫାଇଲ୍, ଡାଟା ଏବଂ ଆପଣଙ୍କ ବର୍ତ୍ତମାନର ଅପରେଟିଂ ସିଷ୍ଟମକୁ ଖାଲି କରାଯିବ। - <ph name="LIST_ITEM" />Chromium OS ଇନଷ୍ଟଲ୍ କରାଯିବ। - <ph name="LIST_ITEM" />ଇନଷ୍ଟଲେସନ୍ ପ୍ରକ୍ରିୟା ସମ୍ପୂର୍ଣ୍ଣ ହେବା ପରେ ଆପଣଙ୍କ ଡିଭାଇସଟି ବନ୍ଦ ହୋଇଯିବ। - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />ଶେଷ ଥର ପାଇଁ ରିମାଇଣ୍ଡର୍: ଇନଷ୍ଟଲ୍ କଲେ ଆପଣଙ୍କ ହାର୍ଡ ଡ୍ରାଇଭର ସମସ୍ତ ଡାଟାକୁ ଖାଲି କରାଯିବ। ଆପଣ ଆପଣଙ୍କ ସମସ୍ତ ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ ଡାଟାର ବ୍ୟାକଅପ୍ ନେଇଛନ୍ତି ବୋଲି ସୁନିଶ୍ଚିତ କରନ୍ତୁ।<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ଥରେ ଇନଷ୍ଟଲେସନ୍ ଆରମ୍ଭ ହେଲେ ଏହାକୁ ବାତିଲ୍ କରାଯାଇପାରିବ ନାହିଁ।<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">ଆପଣ ଆପଣଙ୍କ <ph name="TARGET_DEVICE_NAME" />ରେ Chromiumରେ ସାଇନ୍ ଇନ୍ କରିଥିବା ନିଶ୍ଚିତ କରନ୍ତୁ ଏବଂ ତା'ପରେ ପୁଣି ପଠାଇବାକୁ ଚେଷ୍ଟା କରନ୍ତୁ।</translation> <translation id="6212496753309875659">ଏହି କମ୍ପ୍ୟୁଟର୍ରେ ପୂର୍ବରୁ Chromiumର ସବୁଠାରୁ ନିକଟତମ ସଂସ୍କରଣ ଅଛି। ଯଦି ସଫ୍ଟୱେର୍ଟି କାମ କରୁନାହିଁ, ତେବେ Chromiumକୁ ଅନ୍ଇନ୍ଷ୍ଟଲ୍ କରି ପୁଣିଥରେ ଚେଷ୍ଟା କରନ୍ତୁ।</translation> <translation id="6219195342503754812">{0,plural, =0{ବର୍ତ୍ତମାନ Chromium ପୁଣି ଲଞ୍ଚ ହେବ}=1{1 ସେକେଣ୍ଡରେ Chromium ପୁଣି ଲଞ୍ଚ ହେବ}other{# ସେକେଣ୍ଡରେ Chromium ପୁଣି ଲଞ୍ଚ ହେବ}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Chromium OS ସିଷ୍ଟମ୍</translation> <translation id="6455857529632101747">Chromium ପ୍ରୋଫାଇଲକୁ ସ୍ୱାଗତ</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{1 ସେକେଣ୍ଡ ମଧ୍ୟରେ Chromium ରିଷ୍ଟାର୍ଟ ହେବ}other{# ସେକେଣ୍ଡ ମଧ୍ୟରେ Chromium ରିଷ୍ଟାର୍ଟ ହେବ}}</translation> -<translation id="646620589868199210">Chromium OS ଇନଷ୍ଟଲ୍ କରିବା ପାଇଁ ପ୍ରସ୍ତୁତ</translation> <translation id="6475912303565314141">ଯେତେବେଳେ ଆପଣ Chromium ଆରମ୍ଭ କରନ୍ତି, ସେତେବେଳେ କେଉଁ ପୃଷ୍ଠା ଦେଖାଯିବ ତାହା ମଧ୍ୟ ନିୟନ୍ତ୍ରଣ କରେ।</translation> <translation id="6510925080656968729">Chromium ଅନ୍ଇନ୍ଷ୍ଟଲ୍ କରନ୍ତୁ</translation> <translation id="6542839706527980775">ପ୍ରତ୍ୟେକ ପ୍ରୋଫାଇଲରେ ବୁକମାର୍କ, ଇତିହାସ, ପାସୱାର୍ଡ ଏବଂ ଆହୁରି ଅନେକ କିଛି ପରି ତା'ର ନିଜସ୍ୱ Chromium ସୂଚନା ଥାଏ</translation>
diff --git a/chrome/app/resources/chromium_strings_pa.xtb b/chrome/app/resources/chromium_strings_pa.xtb index fa2a648..f53c15d 100644 --- a/chrome/app/resources/chromium_strings_pa.xtb +++ b/chrome/app/resources/chromium_strings_pa.xtb
@@ -16,6 +16,7 @@ <translation id="1524282610922162960">ਕੋਈ Chromium ਟੈਬ ਸਾਂਝੀ ਕਰੋ</translation> <translation id="1553461853655228091">Chromium ਨੂੰ ਤੁਹਾਡੇ ਆਲੇ-ਦੁਆਲੇ ਦਾ 3D ਨਕਸ਼ਾ ਬਣਾਉਣ ਵਾਸਤੇ ਤੁਹਾਡੇ ਕੈਮਰੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਲਈ ਇਜਾਜ਼ਤ ਦੀ ਲੋੜ ਹੈ</translation> <translation id="1607715478322902680">{COUNT,plural, =0{ਤੁਹਾਡਾ ਪ੍ਰਸ਼ਾਸਕ ਚਾਹੁੰਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਅੱਪਡੇਟ ਲਾਗੂ ਕਰਨ ਲਈ Chromium ਨੂੰ ਮੁੜ-ਲਾਂਚ ਕਰੋ}=1{ਤੁਹਾਡਾ ਪ੍ਰਸ਼ਾਸਕ ਚਾਹੁੰਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਅੱਪਡੇਟ ਲਾਗੂ ਕਰਨ ਲਈ Chromium ਨੂੰ ਮੁੜ-ਲਾਂਚ ਕਰੋ। ਤੁਹਾਡੀ ਇਨਕੋਗਨਿਟੋ ਵਿੰਡੋ ਦੁਬਾਰਾ ਨਹੀਂ ਖੁੱਲ੍ਹੇਗੀ।}other{ਤੁਹਾਡਾ ਪ੍ਰਸ਼ਾਸਕ ਚਾਹੁੰਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਅੱਪਡੇਟ ਲਾਗੂ ਕਰਨ ਲਈ Chromium ਨੂੰ ਮੁੜ-ਲਾਂਚ ਕਰੋ। ਤੁਹਾਡੀਆਂ # ਇਨਕੋਗਨਿਟੋ ਵਿੰਡੋ ਦੁਬਾਰਾ ਨਹੀਂ ਖੁੱਲ੍ਹਣਗੀਆਂ।}}</translation> +<translation id="1667812772085710766">ਜਦੋਂ ਤੁਸੀਂ Chromium ਨੂੰ ਬੰਦ ਕਰਦੇ ਹੋ, ਤਾਂ ਇਹ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਤੁਹਾਡੇ ਵੱਲੋਂ ਦੇਖੇ ਗਏ ਪੰਨਿਆਂ ਤੋਂ ਕੁਕੀਜ਼ ਅਤੇ ਸਾਈਟ ਡਾਟਾ ਨੂੰ ਮਿਟਾ ਦਿੰਦਾ ਹੈ</translation> <translation id="1708666629004767631">Chromium ਦਾ ਇੱਕ ਨਵਾਂ, ਵੱਧ ਸੁਰੱਖਿਅਤ ਵਰਜਨ ਉਪਲਬਧ ਹੈ।</translation> <translation id="1774152462503052664">ਆਓ ਪਿਛੋਕੜ ਵਿੱਚ Chromium ਚਲਾਈਏ</translation> <translation id="1779356040007214683">Chromium ਨੂੰ ਵੱਧ ਸੁਰੱਖਿਅਤ ਬਣਾਉਣ ਲਈ, ਅਸੀਂ ਕੁਝ ਐਕਸਟੈਂਸ਼ਨਾਂ ਅਸਮਰਥਿਤ ਕੀਤੀਆਂ ਹਨ, ਜੋ <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> ਵਿੱਚ ਸੂਚੀਬੱਧ ਨਹੀਂ ਹਨ ਅਤੇ ਤੁਹਾਡੀ ਜਾਣਕਾਰੀ ਤੋਂ ਬਿਨਾਂ ਜੋੜੀਆਂ ਗਈਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ।</translation> @@ -83,7 +84,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> Chromium ਪ੍ਰੋਫਾਈਲਾਂ ਵਿਚਾਲੇ ਅਦਲਾ-ਬਦਲੀ ਕਰ ਸਕਦਾ ਹੈ।</translation> <translation id="3509308970982693815">ਕਿਰਪਾ ਕਰਕੇ ਸਾਰੀਆਂ Chromium windows ਬੰਦ ਕਰੋ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> <translation id="3575459661164320785">ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ ਵਿੱਚ ਹਾਨੀਕਾਰਕ ਸਾਫ਼ਟਵੇਅਰ ਹੈ। Chromium ਇਸਨੂੰ ਹਟਾ ਸਕਦਾ ਹੈ, ਤੁਹਾਡੀਆਂ ਸੈਟਿੰਗਾਂ ਮੁੜ-ਬਹਾਲ ਕਰ ਸਕਦਾ ਹੈ ਅਤੇ ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ਰ ਦੇ ਦੁਬਾਰਾ ਆਮ ਵਾਂਗ ਕੰਮ ਕਰਨ ਲਈ ਐਕਸਟੈਂਸ਼ਨਾਂ ਬੰਦ ਕਰ ਸਕਦਾ ਹੈ।</translation> -<translation id="3610776674893128619">ਹਾਰਡ ਡਰਾਈਵ ਮਿਟਾਓ ਅਤੇ Chromium OS ਨੂੰ ਸਥਾਪਤ ਕਰੋ</translation> <translation id="3639635944603682591">ਇਸ ਵਿਅਕਤੀ ਦਾ ਬ੍ਰਾਊਜ਼ਿੰਗ ਡਾਟਾ ਇਸ ਡੀਵਾਈਸ ਤੋਂ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਡਾਟਾ ਮੁੜ-ਹਾਸਲ ਕਰਨ ਲਈ, Chromium ਵਿੱਚ <ph name="USER_EMAIL" /> ਵਜੋਂ ਸਾਈਨ-ਇਨ ਕਰੋ।</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium ਲਈ ਇੱਕ ਨਵਾਂ ਅੱਪਡੇਟ ਉਪਲਬਧ ਹੈ ਅਤੇ ਤੁਹਾਡੇ ਵੱਲੋਂ ਮੁੜ-ਲਾਂਚ ਕਰਨ ਦੇ ਨਾਲ ਹੀ ਅੱਪਡੇਟ ਲਾਗੂ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ।}=1{Chromium ਲਈ ਇੱਕ ਨਵਾਂ ਅੱਪਡੇਟ ਉਪਲਬਧ ਹੈ ਅਤੇ ਤੁਹਾਡੇ ਵੱਲੋਂ ਮੁੜ-ਲਾਂਚ ਕਰਨ ਦੇ ਨਾਲ ਹੀ ਅੱਪਡੇਟ ਲਾਗੂ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਤੁਹਾਡੀ ਇਨਕੋਗਨਿਟੋ ਵਿੰਡੋ ਦੁਬਾਰਾ ਨਹੀਂ ਖੁੱਲ੍ਹੇਗੀ।}other{Chromium ਲਈ ਇੱਕ ਨਵਾਂ ਅੱਪਡੇਟ ਉਪਲਬਧ ਹੈ ਅਤੇ ਤੁਹਾਡੇ ਵੱਲੋਂ ਮੁੜ-ਲਾਂਚ ਕਰਨ ਦੇ ਨਾਲ ਹੀ ਅੱਪਡੇਟ ਲਾਗੂ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਤੁਹਾਡੀਆਂ # ਇਨਕੋਗਨਿਟੋ ਵਿੰਡੋ ਦੁਬਾਰਾ ਨਹੀਂ ਖੁੱਲ੍ਹਣਗੀਆਂ।}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" /> ਤੋਂ ਆਪਣੇ Android ਫ਼ੋਨ 'ਤੇ ਨੰਬਰ ਭੇਜਣ ਲਈ, ਦੋਵੇਂ ਡੀਵਾਈਸਾਂ 'ਤੇ Chromium ਵਿੱਚ ਸਾਈਨ-ਇਨ ਕਰੋ।</translation> @@ -165,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> ਖਤਰਨਾਕ ਹੈ, ਇਸ ਲਈ Chromium ਨੇ ਇਸਨੂੰ ਬਲੌਕ ਕਰ ਦਿੱਤਾ ਹੈ।</translation> <translation id="6134968993075716475">ਸੁਰੱਖਿਅਤ ਬ੍ਰਾਊਜ਼ਿੰਗ ਬੰਦ ਹੈ। Chromium ਇਸਨੂੰ ਚਾਲੂ ਕਰਨ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕਰਦਾ ਹੈ।</translation> <translation id="6145820983052037069">ਤੁਸੀਂ ਇੱਥੇ Chromium ਪ੍ਰੋਫਾਈਲਾਂ ਵਿਚਾਲੇ ਅਦਲਾ-ਬਦਲੀ ਕਰ ਸਕਦੇ ਹੋ</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />ਅਸੀਂ Chromium OS ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਲਈ ਤਿਆਰ ਹਾਂ! ਤੁਹਾਡੇ ਵੱਲੋਂ ਅੱਗੇ ਵੱਧ ਜਾਣ 'ਤੇ: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ਫ਼ਾਈਲਾਂ, ਡਾਟਾ ਅਤੇ ਤੁਹਾਡਾ ਮੋਜੂਦਾ ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ। - <ph name="LIST_ITEM" />Chromium OS ਸਥਾਪਤ ਕੀਤਾ ਜਾਵੇਗਾ। - <ph name="LIST_ITEM" />ਸਥਾਪਨਾ ਪੂਰੀ ਹੋਣ 'ਤੇ ਤੁਹਾਡਾ ਡੀਵਾਈਸ ਬੰਦ ਹੋ ਜਾਵੇਗਾ। - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />ਇੱਕ ਆਖਰੀ ਰਿਮਾਈਂਡਰ: ਸਥਾਪਨਾ ਤੁਹਾਡੀ ਹਾਰਡ ਡਰਾਈਵ ਦੇ ਪੂਰੇ ਡਾਟੇ ਨੂੰ ਮਿਟਾ ਦੇਵੇਗੀ। ਕਿਰਪਾ ਕਰਕੇ ਪੱਕਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਆਪਣੇ ਮਹੱਤਵਪੂਰਨ ਡਾਟਾ ਦਾ ਬੈਕਅੱਪ ਲਿਆ ਹੈ।<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ਇੱਕ ਵਾਰ ਸਥਾਪਨਾ ਸ਼ੁਰੂ ਹੋਣ 'ਤੇ, ਇਸ ਨੂੰ ਰੱਦ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">ਪੱਕਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਆਪਣੇ <ph name="TARGET_DEVICE_NAME" /> 'ਤੇ Chromium ਵਿੱਚ ਸਾਈਨ-ਇਨ ਕੀਤਾ ਹੋਇਆ ਹੈ ਅਤੇ ਫਿਰ ਦੁਬਾਰਾ ਭੇਜਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> <translation id="6212496753309875659">ਇਸ ਕੰਪਿਊਟਰ ਵਿੱਚ ਪਹਿਲਾਂ ਹੀ Chromium ਦਾ ਇੱਕ ਬਿਲਕੁਲ ਨਵਾਂ ਵਰਜਨ ਹੈ। ਜੇਕਰ ਸਾਫ਼ਟਵੇਅਰ ਕੰਮ ਨਹੀਂ ਕਰ ਰਿਹਾ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ Chromium ਨੂੰ ਅਣਸਥਾਪਤ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium ਹੁਣੇ ਮੁੜ-ਲਾਂਚ ਹੋਵੇਗਾ}=1{Chromium 1 ਸਕਿੰਟ ਵਿੱਚ ਮੁੜ-ਲਾਂਚ ਹੋਵੇਗਾ}other{Chromium # ਸਕਿੰਟਾਂ ਵਿੱਚ ਮੁੜ-ਲਾਂਚ ਹੋਵੇਗਾ}}</translation> @@ -191,7 +182,6 @@ <translation id="6434250628340475518">Chromium OS ਸਿਸਟਮ</translation> <translation id="6455857529632101747">Chromium ਪ੍ਰੋਫਾਈਲਾਂ ਵਿੱਚ ਜੀ ਆਇਆਂ ਨੂੰ</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 ਸਕਿੰਟ ਵਿੱਚ ਮੁੜ-ਚਾਲੂ ਹੋਵੇਗਾ}one{Chromium # ਸਕਿੰਟ ਵਿੱਚ ਮੁੜ-ਚਾਲੂ ਹੋਵੇਗਾ}other{Chromium # ਸਕਿੰਟਾਂ ਵਿੱਚ ਮੁੜ-ਚਾਲੂ ਹੋਵੇਗਾ}}</translation> -<translation id="646620589868199210">Chromium OS ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਲਈ ਤਿਆਰ</translation> <translation id="6475912303565314141">ਇਹ ਇਸਤੇ ਵੀ ਨਿਯੰਤਰਣ ਪਾਉਂਦਾ ਹੈ ਕਿ ਕਿਹੜਾ ਸਫ਼ਾ ਦਿਖਾਇਆ ਜਾਂਦਾ ਹੈ ਜਦੋਂ ਤੁਸੀਂ Chromium ਚਾਲੂ ਕਰਦੇ ਹੋ।</translation> <translation id="6510925080656968729">Chromium ਨੂੰ ਅਣਸਥਾਪਤ ਕਰੋ</translation> <translation id="6542839706527980775">ਹਰੇਕ ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ ਆਪਣੀ Chromium ਜਾਣਕਾਰੀ ਹੁੰਦੀ ਹੈ ਜਿਵੇਂ ਕਿ ਬੁੱਕਮਾਰਕ, ਇਤਿਹਾਸ, ਪਾਸਵਰਡ ਅਤੇ ਹੋਰ ਬਹੁਤ ਕੁਝ</translation>
diff --git a/chrome/app/resources/chromium_strings_pl.xtb b/chrome/app/resources/chromium_strings_pl.xtb index a4c5062f..10f8653 100644 --- a/chrome/app/resources/chromium_strings_pl.xtb +++ b/chrome/app/resources/chromium_strings_pl.xtb
@@ -80,7 +80,6 @@ <translation id="3497319089134299931">Profile Chromium przełącza skrót <ph name="SHORTCUT" /></translation> <translation id="3509308970982693815">Zamknij wszystkie okna Chromium i spróbuj ponownie.</translation> <translation id="3575459661164320785">Masz na komputerze szkodliwe oprogramowanie. Chromium może je usunąć, przywrócić Twoje ustawienia i wyłączyć rozszerzenia, by przeglądarka znów działała normalnie.</translation> -<translation id="3610776674893128619">Wyczyść dysk twardy i zainstaluj system operacyjny Chromium</translation> <translation id="3639635944603682591">Dane przeglądania tej osoby zostaną usunięte z tego urządzenia. Aby je odzyskać, zaloguj się w Chromium jako <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Dostępna jest aktualizacja Chromium, która zostanie zastosowana natychmiast po ponownym uruchomieniu aplikacji.}=1{Dostępna jest aktualizacja Chromium, która zostanie zastosowana natychmiast po ponownym uruchomieniu aplikacji. Okno incognito nie otworzy się ponownie.}few{Dostępna jest aktualizacja Chromium, która zostanie zastosowana natychmiast po ponownym uruchomieniu aplikacji. # okna incognito nie otworzą się ponownie.}many{Dostępna jest aktualizacja Chromium, która zostanie zastosowana natychmiast po ponownym uruchomieniu aplikacji. # okien incognito nie otworzy się ponownie.}other{Dostępna jest aktualizacja Chromium, która zostanie zastosowana natychmiast po ponownym uruchomieniu aplikacji. # okna incognito nie otworzy się ponownie.}}</translation> <translation id="3651803019964686660">Aby wysłać numer z <ph name="ORIGIN" /> na swój telefon z Androidem, zaloguj się w Chromium na obu urządzeniach.</translation> @@ -162,15 +161,6 @@ <translation id="6129621093834146363">Plik <ph name="FILE_NAME" /> jest niebezpieczny, dlatego został zablokowany przez Chromium.</translation> <translation id="6134968993075716475">Bezpieczne przeglądanie jest wyłączone. Chromium zaleca jego włączenie.</translation> <translation id="6145820983052037069">Tu możesz przełączać się między profilami Chromium</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Możemy zainstalować system operacyjny Chromium. Jeśli przejdziesz dalej: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />pliki, dane i bieżący system operacyjny zostaną usunięte; - <ph name="LIST_ITEM" />zostanie zainstalowany system operacyjny Chromium; - <ph name="LIST_ITEM" />po zakończeniu instalacji urządzenie się wyłączy. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Ostatnie przypomnienie: instalacja wykasuje wszystkie dane z dysku twardego. Upewnij się, że masz kopię zapasową wszystkich ważnych danych.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Rozpoczętej instalacji nie będzie można anulować.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Najpierw zaloguj się w Chromium na swoim urządzeniu <ph name="TARGET_DEVICE_NAME" />, a potem ponów próbę wysyłania.</translation> <translation id="6212496753309875659">Na tym komputerze jest już zainstalowana nowsza wersja Chromium. Jeśli program nie działa, odinstaluj go i spróbuj ponownie.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium uruchomi się ponownie teraz}=1{Chromium uruchomi się ponownie za 1 sekundę}few{Chromium uruchomi się ponownie za # sekundy}many{Chromium uruchomi się ponownie za # sekund}other{Chromium uruchomi się ponownie za # sekundy}}</translation> @@ -188,7 +178,6 @@ <translation id="6434250628340475518">System operacyjny Chromium</translation> <translation id="6455857529632101747">Witamy w profilach Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium uruchomi się ponownie za sekundę}few{Chromium uruchomi się ponownie za # sekundy}many{Chromium uruchomi się ponownie za # sekund}other{Chromium uruchomi się ponownie za # sekundy}}</translation> -<translation id="646620589868199210">Możesz zainstalować system operacyjny Chromium</translation> <translation id="6475912303565314141">Kontroluje także to, jaka strona wyświetla się po uruchomieniu Chromium.</translation> <translation id="6510925080656968729">Odinstaluj Chromium</translation> <translation id="6542839706527980775">Każdy profil zawiera własne dane Chromium, takie jak zakładki, historia, hasła i inne</translation>
diff --git a/chrome/app/resources/chromium_strings_pt-BR.xtb b/chrome/app/resources/chromium_strings_pt-BR.xtb index 51eae884..39d2349bd 100644 --- a/chrome/app/resources/chromium_strings_pt-BR.xtb +++ b/chrome/app/resources/chromium_strings_pt-BR.xtb
@@ -80,7 +80,6 @@ <translation id="3497319089134299931">O atalho <ph name="SHORTCUT" /> permite alternar entre os perfis do Chromium</translation> <translation id="3509308970982693815">Feche todas as janelas do Chromium e tente novamente.</translation> <translation id="3575459661164320785">Há um software nocivo no seu computador. O Chromium pode removê-lo, restaurar as configurações e desativar as extensões para que o navegador volte a funcionar normalmente.</translation> -<translation id="3610776674893128619">Apagar o disco rígido e instalar o Chromium OS</translation> <translation id="3639635944603682591">Os dados de navegação dessa pessoa serão excluídos deste dispositivo. Para recuperar os dados, faça login no Chromium como <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Uma nova atualização está disponível para o Chromium e será feita assim que você reiniciá-lo.}=1{Uma nova atualização está disponível para o Chromium e será feita assim que você reiniciá-lo. Sua janela anônima não será aberta novamente.}one{Uma nova atualização está disponível para o Chromium e será feita assim que você reiniciá-lo. Sua janela anônima não será aberta novamente.}other{Uma nova atualização está disponível para o Chromium e será feita assim que você reiniciá-lo. Suas # janelas anônimas não serão abertas novamente.}}</translation> <translation id="3651803019964686660">Para enviar um número de <ph name="ORIGIN" /> ao seu smartphone Android, faça login no Chromium nos dois dispositivos.</translation> @@ -162,15 +161,6 @@ <translation id="6129621093834146363">O arquivo <ph name="FILE_NAME" /> é perigoso. Por isso ele foi bloqueado pelo Chromium.</translation> <translation id="6134968993075716475">O "Navegação segura" está desativado. O Chromium recomenda ativá-lo.</translation> <translation id="6145820983052037069">Aqui, você pode alternar entre os perfis do Chromium</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Vamos começar a instalação. Nas próximas etapas: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />todos os arquivos, dados e o sistema operacional serão excluídos; - <ph name="LIST_ITEM" />o Chromium OS será instalado; - <ph name="LIST_ITEM" />o dispositivo será desligado quando a instalação for concluída. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Último lembrete: a instalação apagará todo o seu disco rígido. Confira se você fez backup dos dados importantes.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Depois de iniciada, a instalação não pode ser cancelada.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Verifique se sua conta está conectada ao Chromium no <ph name="TARGET_DEVICE_NAME" /> e tente fazer o envio novamente.</translation> <translation id="6212496753309875659">Este computador já tem uma versão mais recente do Chromium. Se o software não estiver funcionando, desinstale o Chromium e tente novamente.</translation> <translation id="6219195342503754812">{0,plural, =0{O Chromium será reiniciado agora}=1{O Chromium será reiniciado em 1 segundo}one{O Chromium será reiniciado em # segundo}other{O Chromium será reiniciado em # segundos}}</translation> @@ -188,7 +178,6 @@ <translation id="6434250628340475518">Sistema Chromium OS</translation> <translation id="6455857529632101747">Conheça os perfis do Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{O Chromium será reiniciado em 1 segundo}one{O Chromium será reiniciado em # segundo}other{O Chromium será reiniciado em # segundos}}</translation> -<translation id="646620589868199210">Tudo pronto para instalar o Chromium OS</translation> <translation id="6475912303565314141">Controla também qual página deve ser exibida quando você inicia o Chromium.</translation> <translation id="6510925080656968729">Desinstalar Chromium</translation> <translation id="6542839706527980775">Cada perfil armazena as próprias informações do Chromium, como favoritos, histórico, senhas, entre outras</translation>
diff --git a/chrome/app/resources/chromium_strings_pt-PT.xtb b/chrome/app/resources/chromium_strings_pt-PT.xtb index b257df5..9322d408 100644 --- a/chrome/app/resources/chromium_strings_pt-PT.xtb +++ b/chrome/app/resources/chromium_strings_pt-PT.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931">O atalho <ph name="SHORTCUT" /> permite alternar entre perfis do Chromium</translation> <translation id="3509308970982693815">Feche todas as janelas do Chromium e tente novamente.</translation> <translation id="3575459661164320785">Existe software prejudicial no seu computador. O Chromium pode removê-lo, restaurar as suas definições e desativar as extensões para que o navegador volte a funcionar normalmente.</translation> -<translation id="3610776674893128619">Apagar disco rígido e instalar SO Chromium</translation> <translation id="3639635944603682591">Os dados de navegação desta pessoa serão eliminados deste dispositivo. Para recuperar os dados, inicie sessão no Chromium como <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Está disponível uma atualização para o Chromium que será aplicada logo que o reinicie.}=1{Está disponível uma atualização para o Chromium que será aplicada logo que o reinicie. Não é possível reabrir a sua janela de navegação anónima.}other{Está disponível uma atualização para o Chromium que será aplicada logo que o reinicie. Não é possível reabrir as suas # janelas de navegação anónima.}}</translation> <translation id="3651803019964686660">Para enviar um número de <ph name="ORIGIN" /> para o seu telemóvel Android, inicie sessão no Chromium em ambos os dispositivos.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> é perigoso, por isso o Chromium bloqueou-o.</translation> <translation id="6134968993075716475">A Navegação segura está desativada. O Chromium recomenda que a ative.</translation> <translation id="6145820983052037069">Pode alternar entre perfis do Chromium aqui</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Estamos prontos para instalar o SO Chromium! Se continuar: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Os ficheiros, os dados e o seu sistema operativo atual serão apagados. - <ph name="LIST_ITEM" />O SO Chromium será instalado. - <ph name="LIST_ITEM" />O seu dispositivo irá encerrar quando a instalação estiver concluída. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Só mais um lembrete: a instalação apaga todo o seu disco rígido. Certifique-se de que tem uma cópia de segurança dos dados importantes.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Não pode cancelar a instalação depois de a iniciar.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Certifique-se de que tem sessão iniciada no Chromium no seu <ph name="TARGET_DEVICE_NAME" /> e, em seguida, tente enviar novamente.</translation> <translation id="6212496753309875659">Este computador já tem uma versão mais recente do Chromium. Se o software não estiver a funcionar, desinstale o Chromium e tente novamente.</translation> <translation id="6219195342503754812">{0,plural, =0{O Chromium será reiniciado agora}=1{O Chromium será reiniciado dentro de 1 segundo}other{O Chromium será reiniciado dentro de # segundos}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">Sistema Chromium OS</translation> <translation id="6455857529632101747">Damos-lhe as boas-vindas aos perfis do Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{O Chromium será reiniciado dentro de 1 segundo}other{O Chromium será reiniciado dentro de # segundos}}</translation> -<translation id="646620589868199210">A postos para instalar o SO Chromium</translation> <translation id="6475912303565314141">Também controla a página apresentada quando inicia o Chromium.</translation> <translation id="6510925080656968729">Desinstalar o Chromium</translation> <translation id="6542839706527980775">Cada perfil possui as suas próprias informações do Chromium, como marcadores, histórico, palavras-passe e muito mais.</translation>
diff --git a/chrome/app/resources/chromium_strings_ro.xtb b/chrome/app/resources/chromium_strings_ro.xtb index 9e3c5b6..f8cc2824 100644 --- a/chrome/app/resources/chromium_strings_ro.xtb +++ b/chrome/app/resources/chromium_strings_ro.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> poate comuta între profilurile Chromium</translation> <translation id="3509308970982693815">Închideți toate ferestrele Chromium și încercați din nou.</translation> <translation id="3575459661164320785">Ai software dăunător pe computer. Chromium poate să îl elimine, să restabilească setările și să dezactiveze extensiile pentru ca browserul să funcționeze normal din nou.</translation> -<translation id="3610776674893128619">Șterge datele de pe hard disk și instalează sistemul de operare Chromium</translation> <translation id="3639635944603682591">Datele de navigare ale acestei persoane vor fi șterse de pe dispozitiv. Pentru a recupera datele, conectează-te la Chromium ca <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Este disponibilă o nouă actualizare pentru Chromium, iar aceasta va fi aplicată după ce îl relansezi.}=1{Este disponibilă o nouă actualizare pentru Chromium, iar aceasta va fi aplicată după ce îl relansezi. Fereastra incognito nu se va mai deschide.}few{Este disponibilă o nouă actualizare pentru Chromium, iar aceasta va fi aplicată după ce îl relansezi. Cele # ferestre incognito nu se vor mai deschide.}other{Este disponibilă o nouă actualizare pentru Chromium, iar aceasta va fi aplicată după ce îl relansezi. Cele # de ferestre incognito nu se vor mai deschide.}}</translation> <translation id="3651803019964686660">Pentru a trimite un număr de pe <ph name="ORIGIN" /> pe telefonul Android, conectează-te la Chromium pe ambele dispozitive.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> este periculos, așadar Chromium l-a blocat.</translation> <translation id="6134968993075716475">Navigarea sigură este dezactivată. Chromium îți recomandă s-o activezi.</translation> <translation id="6145820983052037069">Aici poți comuta între profilurile Chromium</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Suntem gata să instalăm sistemul de operare Chromium! Dacă alegi să continui: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />fișierele, datele și sistemul de operare actual vor fi șterse; - <ph name="LIST_ITEM" />se va instala sistemul de operare Chromium; - <ph name="LIST_ITEM" />dispozitivul se va închide după finalizarea instalării. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Un ultim memento: instalarea va șterge toate datele de pe hard disk. Asigură-te că ai făcut backup datelor pe care vrei să le păstrezi.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Odată ce începe instalarea, nu o poți anula.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Asigură-te că te-ai conectat la Chromium pe <ph name="TARGET_DEVICE_NAME" /> și încearcă din nou să trimiți.</translation> <translation id="6212496753309875659">Acest computer are deja o versiune mai recentă de Chromium. Dacă software-ul nu funcționează, dezinstalați Chromium și încercați din nou.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium se va relansa acum}=1{Chromium se va relansa într-o secundă}few{Chromium se va relansa în # secunde}other{Chromium se va relansa în # de secunde}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">Sistemul de operare Chromium</translation> <translation id="6455857529632101747">Bun venit la profilurile Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium va reporni într-o secundă}few{Chromium va reporni în # secunde}other{Chromium va reporni în # de secunde}}</translation> -<translation id="646620589868199210">Ești gata să instalezi sistemul de operare Chromium</translation> <translation id="6475912303565314141">Stabilește și ce pagină se afișează când porniți Chromium.</translation> <translation id="6510925080656968729">Dezinstalați Chromium</translation> <translation id="6542839706527980775">Fiecare profil conține propriile informații Chromium, cum ar fi marcaje, istoric, parole și altele</translation>
diff --git a/chrome/app/resources/chromium_strings_ru.xtb b/chrome/app/resources/chromium_strings_ru.xtb index 130f71e..4fcbd6d 100644 --- a/chrome/app/resources/chromium_strings_ru.xtb +++ b/chrome/app/resources/chromium_strings_ru.xtb
@@ -80,7 +80,6 @@ <translation id="3497319089134299931">Переключиться на другой профиль Chromium можно с помощью сочетания клавиш <ph name="SHORTCUT" /></translation> <translation id="3509308970982693815">Закройте все окна Chromium и повторите попытку снова.</translation> <translation id="3575459661164320785">На компьютере обнаружено вредоносное ПО. Chromium может удалить его, восстановить настройки и отключить расширения. Это вернет браузер в обычное состояние.</translation> -<translation id="3610776674893128619">Удалить все данные с жесткого диска и установить Chromium OS</translation> <translation id="3639635944603682591">Данные о работе этого пользователя в браузере будут удалены с устройства. Чтобы восстановить их, войдите в Chromium как <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Для Chromium доступно обновление. Оно будет установлено при перезапуске браузера.}=1{Для Chromium доступно обновление. Оно будет установлено при перезапуске браузера. Окно в режиме инкогнито не будет открыто повторно.}one{Для Chromium доступно обновление. Оно будет установлено при перезапуске браузера. # окно в режиме инкогнито не будет открыто повторно.}few{Для Chromium доступно обновление. Оно будет установлено при перезапуске браузера. # окна в режиме инкогнито не будут открыты повторно.}many{Для Chromium доступно обновление. Оно будет установлено при перезапуске браузера. # окон в режиме инкогнито не будут открыты повторно.}other{Для Chromium доступно обновление. Оно будет установлено при перезапуске браузера. # окна в режиме инкогнито не будут открыты повторно.}}</translation> <translation id="3651803019964686660">Чтобы отправить номер с сайта <ph name="ORIGIN" /> на свой телефон Android, войдите в Chromium на обоих устройствах.</translation> @@ -162,15 +161,6 @@ <translation id="6129621093834146363">Chromium заблокировал файл <ph name="FILE_NAME" /> как опасный.</translation> <translation id="6134968993075716475">Безопасный просмотр отключен. Chromium рекомендует включить его.</translation> <translation id="6145820983052037069">Здесь можно переключиться на другой профиль Chromium</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Вы можете приступить к установке Chromium OS. Когда вы запустите ее, произойдет следующее: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Файлы, данные и текущая операционная система будут удалены. - <ph name="LIST_ITEM" />Будет установлена система Chromium OS. - <ph name="LIST_ITEM" />По окончании установки устройство будет выключено. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Ещё раз обращаем ваше внимание на то, что при установке с жесткого диска будет удалена вся информация. Убедитесь, что вы сохранили резервные копии нужных данных.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Установку нельзя будет отменить.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Убедитесь, что вы вошли в Chromium на устройстве <ph name="TARGET_DEVICE_NAME" />, и попробуйте повторить отправку.</translation> <translation id="6212496753309875659">На этом компьютере установлена актуальная версия Chromium. Если программа не работает, удалите Chromium и повторите попытку.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium перезапускается}=1{Chromium перезапустится через 1 секунду}one{Chromium перезапустится через # секунду}few{Chromium перезапустится через # секунды}many{Chromium перезапустится через # секунд}other{Chromium перезапустится через # секунды}}</translation> @@ -188,7 +178,6 @@ <translation id="6434250628340475518">Chromium OS</translation> <translation id="6455857529632101747">Представляем профили Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium перезапустится через 1 секунду}one{Chromium перезапустится через # секунду}few{Chromium перезапустится через # секунды}many{Chromium перезапустится через # секунд}other{Chromium перезапустится через # секунды}}</translation> -<translation id="646620589868199210">Устройство готово к установке Chromium OS</translation> <translation id="6475912303565314141">Кроме того, расширение изменило стартовую страницу Chromium.</translation> <translation id="6510925080656968729">Удаление Chromium</translation> <translation id="6542839706527980775">В каждом профиле отдельно хранятся данные пользователей Chromium, такие как закладки, история просмотров и пароли.</translation>
diff --git a/chrome/app/resources/chromium_strings_si.xtb b/chrome/app/resources/chromium_strings_si.xtb index debf03a..341ac67 100644 --- a/chrome/app/resources/chromium_strings_si.xtb +++ b/chrome/app/resources/chromium_strings_si.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> හට Chromium පැතිකඩවල් අතර මාරු විය හැකිය</translation> <translation id="3509308970982693815">කරුණාකර සියලු Chromium කවුළු වසා නැවත උත්සාහ කරන්න.</translation> <translation id="3575459661164320785">ඔබගේ පරිගණකයෙහි හානිකර මෘදුකාංග ඇත. ඔබේ බ්රවුසරය නැවතත් සාමාන්ය පරිදි ක්රියා කරවීමට, Chromium හට එය ඉවත් කිරීම, ඔබේ සැකසීම් ප්රතිසාධන කිරීම, සහ දිගු අබල කිරීම කළ හැක.</translation> -<translation id="3610776674893128619">දෘඪ තැටිය මකන්න සහ Chromium OS ස්ථාපනය කරන්න</translation> <translation id="3639635944603682591">මෙම පුද්ගලයාගේ බ්රවුස් කිරීමේ දත්ත මෙම උපාංගයෙන් මකනු ලැබේ. දත්ත ප්රතිසාධන කිරීමට, <ph name="USER_EMAIL" /> ලෙස Chromium එකට පුරන්න.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium සඳහා නව යාවත්කාලීනයක් ලබා ගත හැකි අතර ඔබ යළි දියත් කරන විගස යොදනු ලැබේ.}=1{Chromium සඳහා නව යාවත්කාලීනයක් ලබා ගත හැකි අතර ඔබ යළි දියත් කරන විගස යොදනු ලැබේ. ඔබේ අප්රසිද්ධ කවුළුව යළි විවෘත නොවෙයි.}one{Chromium සඳහා නව යාවත්කාලීනයක් ලබා ගත හැකි අතර ඔබ යළි දියත් කරන විගස යොදනු ලැබේ. ඔබේ අප්රසිද්ධ කවුළු # යළි විවෘත නොවෙයි.}other{Chromium සඳහා නව යාවත්කාලීනයක් ලබා ගත හැකි අතර ඔබ යළි දියත් කරන විගස යොදනු ලැබේ. ඔබේ අප්රසිද්ධ කවුළු # යළි විවෘත නොවෙයි.}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" /> වෙතින් ඔබගේ Android දුරකථනයට අංකයක් යැවීමට, උපාංග දෙකෙහිම Chromium වෙත පුරන්න.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> අනතුරුදායකයි, එම නිසා Chromium එය අවහිර කර ඇත.</translation> <translation id="6134968993075716475">සුරක්ෂිත පිරික්සුම ක්රියාවිරහිතයි. එය ක්රියාත්මක කිරීමට Chromium නිර්දේශ කරයි.</translation> <translation id="6145820983052037069">ඔබට මෙහිදී Chromium පැතිකඩවල් අතර මාරු විය හැකිය</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />අපි Chromium OS ස්ථාපනය කිරීමට සූදානම්ය! ඔබ ඉදිරියට ගිය විට: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ගොනු, දත්ත සහ ඔබගේ වර්තමාන මෙහෙයුම් පද්ධතිය මකනු ඇත. - <ph name="LIST_ITEM" />Chromium OS ස්ථාපනය කරනු ඇත. - <ph name="LIST_ITEM" />ස්ථාපනය අවසන් වූ පසු ඔබගේ උපාංගය වසා දමනු ඇත. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />අවසන් එක් මතක් කිරීමක්: ස්ථාපනය ඔබගේ සම්පූර්ණ දෘඪ තැටිය මකනු ඇත. කරුණාකර ඔබ උපස්ථ කිරීමට සැලකිලිමත් වන කිනම් හෝ දත්ත ඇති බවට සහතික කර ගන්න.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ස්ථාපනය ආරම්භ වූ පසු එය අවලංගු කළ නොහැකිය.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">ඔබ ඔබගේ <ph name="TARGET_DEVICE_NAME" /> හි Chromium වෙත පුරා ඇති බව සහතික කර ගෙන අනතුරුව නැවත යැවීමට උත්සාහ කරන්න.</translation> <translation id="6212496753309875659">මෙම පරිගණකය සතුව දැනටමත් නව Chromium සංස්කරණයක් පවතී. මෘදුකාංගය ක්රියා නොකරයි නම් කරුණාකර Chromium ඉවත්කර නැවත උත්සහ කරන්න.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium දැන් යළි දියත් වෙයි}=1{Chromium 1 තත්පරයකින් යළි දියත් වෙයි}one{Chromium තත්පර # කින් යළි දියත් වෙයි}other{Chromium තත්පර # කින් යළි දියත් වෙයි}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Chromium OS පද්ධතිය</translation> <translation id="6455857529632101747">Chromium පැතිකඩවල් වෙත සාදරයෙන් පිළිගනිමු</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium තත්පර 1කින් යළි ඇරඹෙනු ඇත}one{Chromium තත්පර #කින් යළි ඇරඹෙනු ඇත}other{Chromium තත්පර #කින් යළි ඇරඹෙනු ඇත}}</translation> -<translation id="646620589868199210">Chromium OS ස්ථාපනය කිරීමට සූදානම්ය</translation> <translation id="6475912303565314141">ඔබ Chromium ආරම්භ කරන විට කුමන පිටුව පෙන්වන්නේද යන්නද එමගින් පාලනය කෙරේ.</translation> <translation id="6510925080656968729">Chromium අස්ථාපනය කරන්න</translation> <translation id="6542839706527980775">එක් එක් පැතිකඩ පිටුසන්, ඉතිහාසය, මුරපද සහ තවත් දේවල් වැනි එහිම Chromium තොරතුරු දරයි</translation>
diff --git a/chrome/app/resources/chromium_strings_sk.xtb b/chrome/app/resources/chromium_strings_sk.xtb index ae2b4bc..784a8f05 100644 --- a/chrome/app/resources/chromium_strings_sk.xtb +++ b/chrome/app/resources/chromium_strings_sk.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931">Skratkou <ph name="SHORTCUT" /> môžete prepínať profily prehliadača Chromium</translation> <translation id="3509308970982693815">Zatvorte všetky okná prehliadača Chromium a skúste to znova.</translation> <translation id="3575459661164320785">V počítači máte škodlivý softvér. Chromium ho môže odstrániť, obnoviť nastavenia a deaktivovať rozšírenia, aby prehliadač znova normálne fungoval.</translation> -<translation id="3610776674893128619">Vymazať pevný disk a nainštalovať Chromium OS</translation> <translation id="3639635944603682591">Dáta prehliadania tejto osoby sa odstránia z tohto zariadenia. Ak ich chcete obnoviť, prihláste sa do prehliadača Chromium ako <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{K dispozícii je aktualizácia pre Chromium, ktorá bude použitá po najbližšom novom spustení.}=1{K dispozícii je aktualizácia pre Chromium, ktorá bude použitá po najbližšom novom spustení. Vaše okno inkognito sa neotvorí.}few{K dispozícii je aktualizácia pre Chromium, ktorá bude použitá po najbližšom novom spustení. Vaše # okná inkognito sa neotvoria.}many{K dispozícii je aktualizácia pre Chromium, ktorá bude použitá po najbližšom novom spustení. Your # Incognito windows won't reopen.}other{K dispozícii je aktualizácia pre Chromium, ktorá bude použitá po najbližšom novom spustení. Vašich # okien inkognito sa neotvorí.}}</translation> <translation id="3651803019964686660">Ak chcete z webu <ph name="ORIGIN" /> odoslať číslo do svojho telefónu s Androidom, prihláste sa v oboch zariadeniach do prehliadača Chromium.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363">Súbor <ph name="FILE_NAME" /> je nebezpečný, a preto ho prehliadač Chromium zablokoval.</translation> <translation id="6134968993075716475">Bezpečné prehliadanie je vypnuté. Chromium ho odporúča zapnúť.</translation> <translation id="6145820983052037069">Tu môžete prepínať profily prehliadača Chromium</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Všetko je pripravené na inštaláciu systému Chromium OS. Keď začnete: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Súbory, údaje a aktuálny operačný systém budú vymazané. - <ph name="LIST_ITEM" />Bude nainštalovaný systém Chromium OS. - <ph name="LIST_ITEM" />Po dokončení inštalácie sa vaše zariadenie vypne. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Posledné pripomenutie: inštaláciou sa vymaže celý pevný disk. Skontrolujte, či máte všetky svoje dôležité údaje zálohované.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Po spustení sa inštalácia nedá zrušiť.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Skontrolujte, či ste sa v zariadení <ph name="TARGET_DEVICE_NAME" /> prihlásili do prehliadača Chromium, a potom to skúste odoslať znova.</translation> <translation id="6212496753309875659">Tento počítač už obsahuje novšiu verziu prehliadača Chromium. Ak softvér nefunguje, odinštalujte prehliadač Chromium a skúste to znova.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium sa teraz reštartuje}=1{Chromium sa reštartuje o 1 sekundu}few{Chromium sa reštartuje o # sekundy}many{Chromium sa reštartuje o # sekundy}other{Chromium sa reštartuje o # sekúnd}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Systém Chromium OS</translation> <translation id="6455857529632101747">Vitajte v profiloch prehliadača Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium sa reštartuje o 1 sekundu}few{Chromium sa reštartujte o # sekundy}many{Chromium sa reštartujte o # sekundy}other{Chromium sa reštartujte o # sekúnd}}</translation> -<translation id="646620589868199210">Inštalácia systému Chromium OS je pripravená</translation> <translation id="6475912303565314141">Tiež určuje, ktorá stránka sa zobrazí pri spustení prehliadača Chromium.</translation> <translation id="6510925080656968729">Odinštalovať Chromium</translation> <translation id="6542839706527980775">V každom profile sú uchované vlastné údaje prehliadača Chromium, ako sú záložky, história, heslá a ďalšie položky</translation>
diff --git a/chrome/app/resources/chromium_strings_sl.xtb b/chrome/app/resources/chromium_strings_sl.xtb index d54c35d..a4eff74a 100644 --- a/chrome/app/resources/chromium_strings_sl.xtb +++ b/chrome/app/resources/chromium_strings_sl.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931">Bližnjica <ph name="SHORTCUT" /> omogoča preklop med profili v Chromiumu</translation> <translation id="3509308970982693815">Zaprite vsa okna Chromiuma in poskusite znova.</translation> <translation id="3575459661164320785">V računalniku je nameščena škodljiva programska oprema. Chromium jo lahko odstrani, obnovi vaše nastavitve in onemogoči razširitve, da bo brskalnik spet normalno deloval.</translation> -<translation id="3610776674893128619">Izbriši trdi disk in namesti Chromium OS</translation> <translation id="3639635944603682591">Podatki brskanja te osebe bodo izbrisani iz te naprave. Če želite podatke obnoviti, se prijavite v Chromium kot <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Na voljo je nova posodobitev za Chromium, ki bo nameščena, takoj ko ga znova zaženete.}=1{Na voljo je nova posodobitev za Chromium, ki bo nameščena, takoj ko ga znova zaženete. Anonimno okno se ne bo znova odprlo.}one{Na voljo je nova posodobitev za Chromium, ki bo nameščena, takoj ko ga znova zaženete. # anonimno okno se ne bo znova odprlo.}two{Na voljo je nova posodobitev za Chromium, ki bo nameščena, takoj ko ga znova zaženete. # anonimni okni se ne bosta znova odprli.}few{Na voljo je nova posodobitev za Chromium, ki bo nameščena, takoj ko ga znova zaženete. # anonimna okna se ne bodo znova odprla.}other{Na voljo je nova posodobitev za Chromium, ki bo nameščena, takoj ko ga znova zaženete. # anonimnih oken se ne bo znova odprlo.}}</translation> <translation id="3651803019964686660">Če želite telefonsko številko iz <ph name="ORIGIN" /> poslati v telefon Android, se prijavite v Chromium v obeh napravah.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363">Datoteka <ph name="FILE_NAME" /> je nevarna, zato jo je Chromium blokiral.</translation> <translation id="6134968993075716475">Varno brskanje je izklopljeno. Chromium priporoča, da ga vklopite.</translation> <translation id="6145820983052037069">Med profili v Chromiumu lahko preklapljate tukaj</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Pripravljeni smo na namestitev sistema Chromium OS! Ko nadaljujete: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Datoteke, podatki in trenutni operacijski sistem bodo izbrisani. - <ph name="LIST_ITEM" />Nameščen bo sistem Chromium OS. - <ph name="LIST_ITEM" />Ko bo namestitev končana, se bo naprava izklopila. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Še zadnji opomnik: Z namestitvijo bo izbrisan celotni trdi disk. Poskrbite za varnostno kopijo pomembnih podatkov.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Ko se namestitev začne, je ni mogoče preklicati.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Preverite, ali ste v napravi <ph name="TARGET_DEVICE_NAME" /> prijavljeni v Chromium, nato poskusite znova poslati.</translation> <translation id="6212496753309875659">Ta računalnik že ima novejšo različico Chromiuma. Če programska oprema ne deluje, odstranite Chromium in poskusite znova.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium se bo zdaj znova zagnal}=1{Chromium se bo znova zagnal čez eno sekundo}one{Chromium se bo znova zagnal čez # sekundo}two{Chromium se bo znova zagnal čez # sekundi}few{Chromium se bo znova zagnal čez # sekunde}other{Chromium se bo znova zagnal čez # sekund}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Sistem OS Chromium</translation> <translation id="6455857529632101747">Pozdravljeni v profilih za Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium se bo znova zagnal čez 1 sekundo}one{Chromium se bo znova zagnal čez # sekundo}two{Chromium se bo znova zagnal čez # sekundi}few{Chromium se bo znova zagnal čez # sekunde}other{Chromium se bo znova zagnal čez # sekund}}</translation> -<translation id="646620589868199210">Pripravljeno za namestitev sistema Chromium OS</translation> <translation id="6475912303565314141">Določa tudi, katera stran je prikazana, ko zaženete Chromium.</translation> <translation id="6510925080656968729">Odstranitev Chromiuma</translation> <translation id="6542839706527980775">Vsak profil ima svoje podatke v Chromiumu, kot so zaznamki, zgodovina, gesla in drugo.</translation>
diff --git a/chrome/app/resources/chromium_strings_sq.xtb b/chrome/app/resources/chromium_strings_sq.xtb index 32efcda..14eb417 100644 --- a/chrome/app/resources/chromium_strings_sq.xtb +++ b/chrome/app/resources/chromium_strings_sq.xtb
@@ -16,6 +16,7 @@ <translation id="1524282610922162960">Ndaj një skedë të Chromium</translation> <translation id="1553461853655228091">Chromium ka nevojë për leje për t'u qasur te kamera jote për të krijuar një hartë 3D të ambientit tënd rrethues</translation> <translation id="1607715478322902680">{COUNT,plural, =0{Administratori yt kërkon që të hapësh përsëri Chromium për të zbatuar këtë përditësim}=1{Administratori yt kërkon që të hapësh përsëri Chromium për të zbatuar këtë përditësim Dritarja jote "e fshehtë" nuk do të rihapet.}other{Administratori yt kërkon që të hapësh përsëri Chromium për të zbatuar këtë përditësim # dritaret e tua "të fshehta" nuk do të rihapen.}}</translation> +<translation id="1667812772085710766">Kur mbyll Chromium, ai i pastron automatikisht kukit dhe të dhënat e sajteve nga faqet që viziton</translation> <translation id="1708666629004767631">Ofrohet një version i ri më i sigurt i Chromium.</translation> <translation id="1774152462503052664">Lejo që Chromium të ekzekutohet në sfond</translation> <translation id="1779356040007214683">Për ta bërë më të sigurt Chromium, çaktivizuam disa shtesa që nuk janë të listuara në <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> dhe që mund të jenë shtuar pa dijeninë tënde.</translation> @@ -83,7 +84,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> mund të kalojë nga një profil i Chromium te një tjetër</translation> <translation id="3509308970982693815">Mbyll të gjitha dritaret e Chromium dhe provo sërish.</translation> <translation id="3575459661164320785">Ka një softuer keqdashës në kompjuterin tënd. Chromium mund ta heqë atë, të restaurojë cilësimet e tua dhe të çaktivizojë shtesat për të bërë që shfletuesi yt të punojë përsëri si normalisht.</translation> -<translation id="3610776674893128619">Spastro diskun e ngurtë dhe instalo Chromium OS</translation> <translation id="3639635944603682591">Të dhënat e shfletimit të këtij personi do të fshihen nga kjo pajisje. Për të rikuperuar të dhënat, identifikohu në Chromium si <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Ka një përditësim të ri për Chromium dhe do të zbatohet sapo ta rinisësh.}=1{Ka një përditësim të ri për Chromium dhe do të zbatohet sapo ta rinisësh. Dritarja jote "e fshehtë" nuk do të rihapet.}other{Ka një përditësim të ri për Chromium dhe do të zbatohet sapo ta rinisësh. # dritaret e tua "të fshehta" nuk do të rihapen.}}</translation> <translation id="3651803019964686660">Për të dërguar një numër nga <ph name="ORIGIN" /> te telefoni yt Android, identifikohu në Chromium në të dyja pajisjet.</translation> @@ -165,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> është i rrezikshëm, prandaj Chromium e ka bllokuar.</translation> <translation id="6134968993075716475">"Shfletimi i sigurt" është joaktiv. Chromium rekomandon aktivizimin e tij.</translation> <translation id="6145820983052037069">Këtu mund të kalosh nga një profil i Chromium te një tjetër</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Jemi gati për instalimin e Chromium OS! Pasi të vazhdosh: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Skedarët, të dhënat dhe sistemi yt operativ do të fshihen. - <ph name="LIST_ITEM" />Chromium OS do të instalohet. - <ph name="LIST_ITEM" />Pajisja jote do të fiket pasi të përfundojë instalimi. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Një rikujtim i fundit: instalimi do të fshijë të gjithë diskun tënd të ngurtë. Sigurohu që t'i rezervosh të dhënat e rëndësishme për ty.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Pasi të fillojë instalimi, nuk mund të anulohet.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Sigurohu që të jesh identifikuar në Chromium në pajisjen tënde <ph name="TARGET_DEVICE_NAME" /> dhe më pas provo ta dërgosh përsëri.</translation> <translation id="6212496753309875659">Ky kompjuter e ka tashmë një version më të ri të Chromium. Nëse softueri nuk punon, çinstaloje Chromium dhe provo përsëri.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium do të hapet përsëri tani}=1{Chromium do të hapet përsëri për 1 sekondë}other{Chromium do të hapet përsëri për # sekonda}}</translation> @@ -191,7 +182,6 @@ <translation id="6434250628340475518">Sistemi i Chromium OS</translation> <translation id="6455857529632101747">Mirë se vjen në profilet e Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium do të riniset për 1 sekondë}other{Chromium do të riniset për # sekonda}}</translation> -<translation id="646620589868199210">Gati për të instaluar Chromium OS</translation> <translation id="6475912303565314141">Gjithashtu kontrollon se cila faqe shfaqet kur fillon Chromium</translation> <translation id="6510925080656968729">Çinstaloje Chromium</translation> <translation id="6542839706527980775">Secili profil duhet të zotërojë informacionin e vet të Chromium, si: faqeshënuesit, historikun, fjalëkalimet etj.</translation>
diff --git a/chrome/app/resources/chromium_strings_sr-Latn.xtb b/chrome/app/resources/chromium_strings_sr-Latn.xtb index 99364da..9e590f4 100644 --- a/chrome/app/resources/chromium_strings_sr-Latn.xtb +++ b/chrome/app/resources/chromium_strings_sr-Latn.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931">Pomoću prečice <ph name="SHORTCUT" /> možete da prelazite sa jednog Chromium profila na drugi</translation> <translation id="3509308970982693815">Zatvorite sve Chromium prozore i pokušajte ponovo.</translation> <translation id="3575459661164320785">Na računaru postoji štetan softver. Chromium može da ga ukloni, vrati podešavanja i onemogući dodatke da bi pregledač mogao ponovo da radi uobičajeno.</translation> -<translation id="3610776674893128619">Obriši podatke sa hard-diska i instaliraj Chromium OS</translation> <translation id="3639635944603682591">Podaci pregledanja ove osobe će biti izbrisani sa ovog uređaja. Da biste vratili podatke, prijavite se u Chromium kao <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Novo ažuriranje za Chromium je dostupno i primeniće se čim ga ponovo pokrenete.}=1{Novo ažuriranje za Chromium je dostupno i primeniće se čim ga ponovo pokrenete. Prozor bez arhiviranja se neće ponovo otvoriti.}one{Novo ažuriranje za Chromium je dostupno i primeniće se čim ga ponovo pokrenete. # prozor bez arhiviranja se neće ponovo otvoriti.}few{Novo ažuriranje za Chromium je dostupno i primeniće se čim ga ponovo pokrenete. # prozora bez arhiviranja se neće ponovo otvoriti.}other{Novo ažuriranje za Chromium je dostupno i primeniće se čim ga ponovo pokrenete. # prozora bez arhiviranja se neće ponovo otvoriti.}}</translation> <translation id="3651803019964686660">Da biste poslali broj sa <ph name="ORIGIN" /> na Android telefon, prijavite se u Chromium na oba uređaja.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363">Datoteka <ph name="FILE_NAME" /> je opasna, pa ju je Chromium blokirao.</translation> <translation id="6134968993075716475">Bezbedno pregledanje je isključeno. Chromium preporučuje da ga uključite.</translation> <translation id="6145820983052037069">Ovde možete da prelazite sa jednog Chromium profila na drugi</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Spremni smo da instaliramo Chromium OS! Kad nastavite: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Fajlovi, podaci i trenutni operativni sistem će biti obrisani. - <ph name="LIST_ITEM" />Biće instaliran Chromium OS. - <ph name="LIST_ITEM" />Uređaj će se isključiti kad se instalacija završi. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Poslednji put vas podsećamo: instalacija će obrisati kompletne podatke sa hard-diska. Uverite se da imate rezervnu kopiju svih podataka koji su vam važni.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Kad instalacija počne, ne može da se otkaže.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Uverite se da ste prijavljeni u Chromium na uređaju <ph name="TARGET_DEVICE_NAME" /> i probajte da pošaljete ponovo.</translation> <translation id="6212496753309875659">Ovaj računar već ima noviju verziju Chromium-a. Ako softver ne funkcioniše, deinstalirajte Chromium i pokušajte ponovo.</translation> <translation id="6219195342503754812">{0,plural, =0{Ponovo ćemo pokrenuti Chromium}=1{Ponovo ćemo pokrenuti Chromium za 1 sekundu}one{Ponovo ćemo pokrenuti Chromium za # sekundu}few{Ponovo ćemo pokrenuti Chromium za # sekunde}other{Ponovo ćemo pokrenuti Chromium za # sekundi}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Sistem Chromium OS</translation> <translation id="6455857529632101747">Dobro došli u Chromium profile</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium će se restartovati za 1 sekundu}one{Chromium će se restartovati za # sekundu}few{Chromium će se restartovati za # sekunde}other{Chromium će se restartovati za # sekundi}}</translation> -<translation id="646620589868199210">Sve je spremno za instaliranje Chromium OS-a</translation> <translation id="6475912303565314141">Kontroliše i stranicu koja se prikazuje kada pokrenete Chromium.</translation> <translation id="6510925080656968729">Deinstaliraj Chromium</translation> <translation id="6542839706527980775">Svaki profil zadržava sopstvene Chromium podatke, poput obeleživača, istorije, lozinki i drugog sadržaja</translation>
diff --git a/chrome/app/resources/chromium_strings_sr.xtb b/chrome/app/resources/chromium_strings_sr.xtb index de455a3..3206500 100644 --- a/chrome/app/resources/chromium_strings_sr.xtb +++ b/chrome/app/resources/chromium_strings_sr.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931">Помоћу пречице <ph name="SHORTCUT" /> можете да прелазите са једног Chromium профила на други</translation> <translation id="3509308970982693815">Затворите све Chromium прозоре и покушајте поново.</translation> <translation id="3575459661164320785">На рачунару постоји штетан софтвер. Chromium може да га уклони, врати подешавања и онемогући додатке да би прегледач могао поново да ради уобичајено.</translation> -<translation id="3610776674893128619">Обриши податке са хард-диска и инсталирај Chromium ОС</translation> <translation id="3639635944603682591">Подаци прегледања ове особе ће бити избрисани са овог уређаја. Да бисте вратили податке, пријавите се у Chromium као <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Ново ажурирање за Chromium је доступно и примениће се чим га поново покренете.}=1{Ново ажурирање за Chromium је доступно и примениће се чим га поново покренете. Прозор без архивирања се неће поново отворити.}one{Ново ажурирање за Chromium је доступно и примениће се чим га поново покренете. # прозор без архивирања се неће поново отворити.}few{Ново ажурирање за Chromium је доступно и примениће се чим га поново покренете. # прозора без архивирања се неће поново отворити.}other{Ново ажурирање за Chromium је доступно и примениће се чим га поново покренете. # прозора без архивирања се неће поново отворити.}}</translation> <translation id="3651803019964686660">Да бисте послали број са <ph name="ORIGIN" /> на Android телефон, пријавите се у Chromium на оба уређаја.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363">Датотека <ph name="FILE_NAME" /> је опасна, па ју је Chromium блокирао.</translation> <translation id="6134968993075716475">Безбедно прегледање је искључено. Chromium препоручује да га укључите.</translation> <translation id="6145820983052037069">Овде можете да прелазите са једног Chromium профила на други</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Спремни смо да инсталирамо Chromium ОС! Кад наставите: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Фајлови, подаци и тренутни оперативни систем ће бити обрисани. - <ph name="LIST_ITEM" />Биће инсталиран Chromium ОС. - <ph name="LIST_ITEM" />Уређај ће се искључити кад се инсталација заврши. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Последњи пут вас подсећамо: инсталација ће обрисати комплетне податке са хард-диска. Уверите се да имате резервну копију свих података који су вам важни.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Кад инсталација почне, не може да се откаже.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Уверите се да сте пријављени у Chromium на уређају <ph name="TARGET_DEVICE_NAME" /> и пробајте да пошаљете поново.</translation> <translation id="6212496753309875659">Овај рачунар већ има новију верзију Chromium-а. Ако софтвер не функционише, деинсталирајте Chromium и покушајте поново.</translation> <translation id="6219195342503754812">{0,plural, =0{Поново ћемо покренути Chromium}=1{Поново ћемо покренути Chromium за 1 секунду}one{Поново ћемо покренути Chromium за # секунду}few{Поново ћемо покренути Chromium за # секунде}other{Поново ћемо покренути Chromium за # секунди}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Систем Chromium ОС</translation> <translation id="6455857529632101747">Добро дошли у Chromium профиле</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium ће се рестартовати за 1 секунду}one{Chromium ће се рестартовати за # секунду}few{Chromium ће се рестартовати за # секунде}other{Chromium ће се рестартовати за # секунди}}</translation> -<translation id="646620589868199210">Све је спремно за инсталирање Chromium ОС-а</translation> <translation id="6475912303565314141">Контролише и страницу која се приказује када покренете Chromium.</translation> <translation id="6510925080656968729">Деинсталирај Chromium</translation> <translation id="6542839706527980775">Сваки профил задржава сопствене Chromium податке, попут обележивача, историје, лозинки и другог садржаја</translation>
diff --git a/chrome/app/resources/chromium_strings_sv.xtb b/chrome/app/resources/chromium_strings_sv.xtb index 1f46887..df8a64a 100644 --- a/chrome/app/resources/chromium_strings_sv.xtb +++ b/chrome/app/resources/chromium_strings_sv.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931">Du kan använda <ph name="SHORTCUT" /> för att byta mellan Chromium-profiler</translation> <translation id="3509308970982693815">Stäng alla Chromium-fönster och försök igen.</translation> <translation id="3575459661164320785">Det finns skadlig programvara på datorn. Den skadliga programvaran kan tas bort, inställningarna återställas och tillägg inaktiveras så att webbläsaren fungerar som den ska igen.</translation> -<translation id="3610776674893128619">Rensa hårddisken och installera Chromium OS</translation> <translation id="3639635944603682591">Den här personens webbläsardata tas bort från enheten. Logga in i Chromium som <ph name="USER_EMAIL" /> om du vill återställa data.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Det finns en ny Chromium-uppdatering som tillämpas så snart du startar om.}=1{Det finns en ny Chromium-uppdatering som tillämpas så snart du startar om. Inkognitofönstret öppnas inte igen.}other{Det finns en ny Chromium-uppdatering som tillämpas så snart du startar om. De # inkognitofönstren öppnas inte igen.}}</translation> <translation id="3651803019964686660">Logga in på Chromium på båda enheterna om du vill skicka ett nummer från <ph name="ORIGIN" /> till Android-telefonen.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> är skadlig och har blockerats av Chromium.</translation> <translation id="6134968993075716475">Säker webbsökning har inaktiverats. Du rekommenderas att aktivera funktionen i Chromium.</translation> <translation id="6145820983052037069">Du kan byta mellan Chromium-profiler här</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Vi är redo att installera Chromium OS. När du fortsätter sker följande: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Filer, data och ditt nuvarande operativsystem rensas. - <ph name="LIST_ITEM" />Chromium OS installeras. - <ph name="LIST_ITEM" />Enheten stängs av när installationen har slutförts. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />En sista påminnelse: installationen rensar hårddisken fullständigt. Se till att du har säkerhetskopierat all data som du vill behålla.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />När installationen har påbörjats går den inte att avbryta.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Se till att du är inloggad i Chromium på <ph name="TARGET_DEVICE_NAME" /> och försök skicka igen.</translation> <translation id="6212496753309875659">Det finns redan en nyare version av Chromium på den här datorn. Avinstallera Chromium och försök igen om programvaran inte fungerar.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium startas om nu}=1{Om en sekund startas Chromium om}other{Om # sekunder startas Chromium om}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Chromium OS-system</translation> <translation id="6455857529632101747">Välkommen till Chromium-profiler</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium startas om om en sekund}other{Chromium startas om om # sekunder}}</translation> -<translation id="646620589868199210">Redo att installera Chromium OS</translation> <translation id="6475912303565314141">Det styr också vilken sida som visas när du startar Chromium.</translation> <translation id="6510925080656968729">Avinstallera Chromium</translation> <translation id="6542839706527980775">I alla profiler sparas egen Chromium-information som bokmärken, historik, lösenord och annat</translation>
diff --git a/chrome/app/resources/chromium_strings_sw.xtb b/chrome/app/resources/chromium_strings_sw.xtb index 964b546..153d783a 100644 --- a/chrome/app/resources/chromium_strings_sw.xtb +++ b/chrome/app/resources/chromium_strings_sw.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931">Unaweza kubonyeza <ph name="SHORTCUT" /> ili ubadilishe kati ya wasifu mmoja wa Chromium na mwingine</translation> <translation id="3509308970982693815">Tafadhali funga madirisha yote ya Chromium na ujaribu tena.</translation> <translation id="3575459661164320785">Kuna programu hatari kwenye kompyuta yako. Chromium inaweza kuiondoa, kurejesha mipangilio yako na kuzima viendelezi ili kufanya kivinjari chako kifanye kazi tena kama kawaida.</translation> -<translation id="3610776674893128619">Futa Data Yote Kwenye Diski Kuu na Usakinishe Chromium OS</translation> <translation id="3639635944603682591">Data ya kuvinjari ya mtu huyu itafutwa kwenye kifaa hiki. Ili kurejesha data, ingia katika Chromium ukitumia <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Sasisho jipya la Chromium linapatikana na litaanza kutumika pindi utakapofungua tena.}=1{Sasisho jipya la Chromium linapatikana na litaanza kutumika pindi utakapofungua tena. Haitafungua upya dirisha fiche.}other{Sasisho jipya la Chromium linapatikana na litaanza kutumika pindi utakapofungua tena. Haitafungua upya madirisha # fiche.}}</translation> <translation id="3651803019964686660">Ili uweze kutuma nambari kwa simu yako ya Android kutoka <ph name="ORIGIN" />, ingia katika akaunti kwenye Chromium ukitumia vifaa vyote viwili.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> ni hatari, kwa hivyo Chromium imeizuia.</translation> <translation id="6134968993075716475">Kipengele cha Kuvinjari Salama kimezimwa. Chromium inapendekeza ukiwashe.</translation> <translation id="6145820983052037069">Unaweza kubadilisha kati ya wasifu mmoja wa Chromium na mwingine hapa</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Tuko tayari kusakinisha Chromium OS! Ukiendelea: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Faili, data na mfumo wa uendeshaji unaotumia sasa utafutwa. - <ph name="LIST_ITEM" />Chromium OS itasakinishwa. - <ph name="LIST_ITEM" />Kifaa chako kitazimwa usakinishaji ukikamilika. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Kikumbusho cha mwisho: hatua ya usakinishaji itafuta data yote kwenye diski yako kuu. Tafadhali hakikisha kwamba umehifadhi nakala ya data yoyote muhimu.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Usakinishaji ukianza hauwezi kughairiwa.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Hakikisha kwamba umeingia katika akaunti kwenye Chromium kwa kutumia <ph name="TARGET_DEVICE_NAME" /> yako kisha ujaribu kutuma tena.</translation> <translation id="6212496753309875659">Kompyuta hii tayari ina toleo la hivi punde la Chromium. Ikiwa programu haifanyikazi, tafadhali ondoa Chromium kisha ujaribu tena.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium itafunguka upya hivi sasa}=1{Chromium itafunguka upya ndani ya sekunde 1}other{Chromium itafunguka upya ndani ya sekunde #}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Mfumo wa Uendeshaji wa Chromium</translation> <translation id="6455857529632101747">Karibu kwenye kipengele cha wasifu kwenye Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium itazimika na kuwaka tena baada ya sekunde 1}other{Chromium itazimika na kuwaka tena baada ya sekunde #}}</translation> -<translation id="646620589868199210">Tuko tayari kusakinisha Chromium OS</translation> <translation id="6475912303565314141">Pia inadhibiti ukurasa unaoonyeshwa unapoanzisha Chromium.</translation> <translation id="6510925080656968729">Ondoa Chromium</translation> <translation id="6542839706527980775">Kila wasifu una maelezo yake ya Chromium kama vile alamisho, historia, manenosiri na mengine</translation>
diff --git a/chrome/app/resources/chromium_strings_ta.xtb b/chrome/app/resources/chromium_strings_ta.xtb index 7bb1dea7..3ed83d7 100644 --- a/chrome/app/resources/chromium_strings_ta.xtb +++ b/chrome/app/resources/chromium_strings_ta.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> விசைகளை அழுத்தி Chromium சுயவிவரங்களுக்கு இடையே மாறலாம்</translation> <translation id="3509308970982693815">அனைத்து Chromium சாளரங்களையும் மூடி, பின்னர் முயலவும்.</translation> <translation id="3575459661164320785">உங்கள் கம்ப்யூட்டரில் தீங்கிழைக்கும் மென்பொருள் உள்ளது. உங்கள் உலாவி மீண்டும் வழக்கம் போல வேலை செய்ய, Chromium அதை அகற்றி, உங்கள் அமைப்புகளை மீட்டமைத்து, நீட்டிப்புகளை முடக்கும்.</translation> -<translation id="3610776674893128619">ஹார்டு டிரைவில் இருக்கும் தரவை அழித்துவிட்டு Chromium OSஸை நிறுவுக</translation> <translation id="3639635944603682591">இவருடைய உலாவிய தரவு இந்தச் சாதனத்திலிருந்து நீக்கப்படும். தரவை மீட்டெடுக்க, Chromiumமில் <ph name="USER_EMAIL" /> ஆக உள்நுழையவும்.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromiumமின் புதிய புதுப்பிப்பு உள்ளது, மீண்டும் தொடங்கும்போது அது பயன்படுத்தப்படும்.}=1{Chromiumமின் புதிய புதுப்பிப்பு உள்ளது, மீண்டும் தொடங்கும்போது அது பயன்படுத்தப்படும். உங்கள் மறைநிலை சாளரம் மீண்டும் திறக்காது.}other{Chromiumமின் புதிய புதுப்பிப்பு உள்ளது, மீண்டும் தொடங்கும்போது அது பயன்படுத்தப்படும். உங்கள் # மறைநிலை சாளரங்கள் மீண்டும் திறக்காது.}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" /> என்ற தளத்தில் இருந்து உங்கள் Android மொபைலுக்கு ஓர் எண்ணை அனுப்ப, இரு சாதனங்களிலும் Chromiumமில் உள்நுழையுங்கள்.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> ஆபத்தானது என்பதால் Chromium அதைத் தடுத்துள்ளது.</translation> <translation id="6134968993075716475">’பாதுகாப்பு உலாவல்‘ அம்சம் முடக்கப்பட்டுள்ளது. அதை இயக்குமாறு Chromium பரிந்துரைக்கிறது.</translation> <translation id="6145820983052037069">இங்கே Chromium சுயவிவரங்களுக்கு இடையே மாறலாம்</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Chromium OSஸை நிறுவத் தயாராக உள்ளோம்! நிறுவத் தொடங்கினால்: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ஃபைல்கள், தரவு, தற்போதைய ஆப்ரேட்டிங் சிஸ்டம் ஆகியவை அழிக்கப்படும். - <ph name="LIST_ITEM" />Chromium OS நிறுவப்படும். - <ph name="LIST_ITEM" />நிறுவியதும் உங்கள் சாதனம் ஷட் டவுன் செய்யப்படும். - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />இறுதியாக ஒரு நினைவூட்டல்: இதை நிறுவினால் உங்கள் ஹார்டு டிரைவில் இருக்கும் தரவு அனைத்தும் அழிக்கப்படும். எனவே, உங்கள் தரவைக் காப்புப் பிரதி எடுத்துவிட்டீர்கள் என்பதை உறுதிசெய்துகொள்ளவும்.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />நிறுவத் தொடங்கினால் இதை ரத்துசெய்ய முடியாது.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">உங்கள் <ph name="TARGET_DEVICE_NAME" /> சாதனத்தின் மூலம் Chromiumமில் உள்நுழைந்திருப்பதை உறுதிசெய்துகொண்டு மீண்டும் அனுப்ப முயலவும்.</translation> <translation id="6212496753309875659">இந்தக் கம்ப்யூட்டரில் ஏற்கனவே Chromiumமின் மிகச் சமீபத்திய பதிப்பு உள்ளது. மென்பொருள் இயங்கவில்லை எனில் Chromiumமை நிறுவல் நீக்கி, பின்னர் முயலவும்.</translation> <translation id="6219195342503754812">{0,plural, =0{இப்போது Chromium மீண்டும் தொடங்கும்}=1{ஒரு வினாடியில் Chromium மீண்டும் தொடங்கும்}other{# வினாடிகளில் Chromium மீண்டும் தொடங்கும்}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">Chromium OS சிஸ்டம்</translation> <translation id="6455857529632101747">Chromium சுயவிவரங்களுக்கு வரவேற்கிறோம்</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 வினாடியில் மீண்டும் தொடங்கும்}other{Chromium # வினாடிகளில் மீண்டும் தொடங்கும்}}</translation> -<translation id="646620589868199210">Chromium OSஸை நிறுவத் தயாரா?</translation> <translation id="6475912303565314141">Chromium ஐத் தொடங்கும்போது காண்பிக்கப்படும் பக்கத்தையும் இது கட்டுப்படுத்துகிறது.</translation> <translation id="6510925080656968729">Chromium ஐ நிறுவல் நீக்கு</translation> <translation id="6542839706527980775">புக்மார்க்குகள், இதுவரையான செயல்பாடுகள், கடவுச்சொற்கள் போன்ற Chromium தகவல்கள் ஒவ்வொரு சுயவிவரத்திற்கும் தனித்தனியாக இருக்கும்</translation>
diff --git a/chrome/app/resources/chromium_strings_te.xtb b/chrome/app/resources/chromium_strings_te.xtb index 492f405..7079e7b 100644 --- a/chrome/app/resources/chromium_strings_te.xtb +++ b/chrome/app/resources/chromium_strings_te.xtb
@@ -14,6 +14,7 @@ <translation id="1524282610922162960">Chromium ట్యాబ్ను షేర్ చేయండి</translation> <translation id="1553461853655228091">మీ పరిసరాల 3D మ్యాప్ను సృష్టించడానికి Chromiumకు మీ కెమెరాను యాక్సెస్ చేసే అనుమతి కావాలి</translation> <translation id="1607715478322902680">{COUNT,plural, =0{అప్డేట్ను వర్తింపజేయడం కోసం మీరు Chromiumను పునఃప్రారంభించాలని మీ నిర్వాహకుడు కోరుతున్నారు}=1{అప్డేట్ను వర్తింపజేయడం కోసం మీరు Chromiumను పునఃప్రారంభించాలని మీ నిర్వాహకుడు కోరుతున్నారు. మీ అజ్ఞాత విండో మళ్లీ తెరవబడదు.}other{అప్డేట్ను వర్తింపజేయడం కోసం మీరు Chromiumను పునఃప్రారంభించాలని మీ నిర్వాహకుడు కోరుతున్నారు. మీ # అజ్ఞాత విండోలు మళ్లీ తెరవబడవు.}}</translation> +<translation id="1667812772085710766">మీరు Chromiumను మూసివేసినప్పుడు, మీరు వెళ్లిన పేజీల నుండి ఆటోమేటిక్గా కుక్కీలు, సైట్ డేటాను క్లియర్ చేస్తుంది</translation> <translation id="1708666629004767631">Chromium యొక్క కొత్త సురక్షితమైన వెర్షన్ అందుబాటులో ఉంది.</translation> <translation id="1774152462503052664">నేపథ్యంలో Chromiumని అమలు చేయడానికి అనుమతించు</translation> <translation id="1779356040007214683">Chromiumను సురక్షితం చేయడానికి, మేము <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />లో లిస్ట్ చేయబడని మరియు మీకు తెలియకుండానే జోడించబడిన కొన్ని ఎక్స్టెన్షన్లను నిలిపివేసాము.</translation> @@ -79,7 +80,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> Chromium ప్రొఫైల్ల మధ్య స్విచ్ చేయగలదు</translation> <translation id="3509308970982693815">దయచేసి అన్ని Chromium విండోలను మూసివేసి, మళ్లీ ప్రయత్నించండి.</translation> <translation id="3575459661164320785">మీ కంప్యూటర్లో మీ భద్రతకు హాని కలిగించే సాఫ్ట్వేర్ ఉంది. మీ బ్రౌజర్ని మళ్లీ సాధారణంగా పని చేసేలా చేయడానికి Chromium దానిని తీసివేసి, మీ సెట్టింగ్లను పునరుద్ధరించి, ఎక్స్టెన్షన్లను నిలిపివేయగలదు.</translation> -<translation id="3610776674893128619">హార్డ్ డ్రైవ్ను ఫ్యాక్టరీ రీసెట్ చేసి, Chromium OSను ఇన్స్టాల్ చేయండి</translation> <translation id="3639635944603682591">ఈ వ్యక్తి బ్రౌజింగ్ డేటా ఈ పరికరం నుండి తొలగించబడుతుంది. డేటాను పునరుద్ధరించడానికి, <ph name="USER_EMAIL" />గా Chromiumకు సైన్ ఇన్ చేయండి.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromiumకు కొత్త అప్డేట్ అందుబాటులో ఉంది, మీరు పునఃప్రారంభించిన వెంటనే వర్తింపజేయబడుతుంది.}=1{Chromiumకు కొత్త అప్డేట్ అందుబాటులో ఉంది, మీరు పునఃప్రారంభించిన వెంటనే వర్తింపజేయబడుతుంది. మీ అజ్ఞాత విండో మళ్లీ తెరవబడదు.}other{Chromiumకు కొత్త అప్డేట్ అందుబాటులో ఉంది, మీరు పునఃప్రారంభించిన వెంటనే వర్తింపజేయబడుతుంది. మీ # అజ్ఞాత విండోలు మళ్లీ తెరవబడవు.}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" /> నుండి మీ Android ఫోన్కు నంబర్ను పంపడానికి, రెండు పరికరాలలోని Chromiumకు సైన్ ఇన్ చేయండి.</translation> @@ -161,15 +161,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> హానికరం, కావున Chromium దాన్ని బ్లాక్ చేసింది.</translation> <translation id="6134968993075716475">సురక్షిత బ్రౌజింగ్ ఆఫ్ చేయబడింది. దాన్ని ఆన్ చేయమని Chromium సిఫార్సు చేస్తోంది.</translation> <translation id="6145820983052037069">మీరు ఇక్కడ Chromium ప్రొఫైల్ల మధ్య స్విచ్ అవ్వవచ్చు</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />మేము Chromium OSను ఇన్స్టాల్ చేయడానికి సిద్ధంగా ఉన్నాము! ఒకసారి మీరు ప్రారంభించిన తర్వాత: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ఫైళ్లు, డేటా, అలాగే మీ ప్రస్తుత ఆపరేటింగ్ సిస్టమ్ ఫ్యాక్టరీ రీసెట్ అవుతాయి. - <ph name="LIST_ITEM" />Chromium OS ఇన్స్టాల్ అవుతుంది. - <ph name="LIST_ITEM" />ఇన్స్టాలేషన్ పూర్తి అయిన తర్వాత మీ పరికరం షట్ డౌన్ అవుతుంది. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />ఒక చివరి రిమైండర్: ఇన్స్టాలేషన్ అనేది మీ మొత్తం హార్డ్ డ్రైవ్ను ఫ్యాక్టరీ రీసెట్ చేస్తుంది. మీకు కావాలనుకునే డేటాను దయచేసి బ్యాకప్ చేసుకొనేలా చూసుకోండి.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ఇన్స్టాలేషన్ ఒకసారి ప్రారంభం అయిన తర్వాత దాన్ని రద్దు చేయలేరు.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">మీ <ph name="TARGET_DEVICE_NAME" />లో మీరు Chromiumకు సైన్ ఇన్ చేశారని నిర్ధారించుకుని, ఆపై మళ్లీ పంపడానికి ట్రై చేయండి.</translation> <translation id="6212496753309875659">ఈ కంప్యూటర్లో ఇప్పటికే మరింత తాజాదైన Chromium వెర్షన్ ఉంది. సాఫ్ట్వేర్ పని చేయకపోతే, దయచేసి Chromiumను అన్ఇన్స్టాల్ చేసి, మళ్లీ ప్రయత్నించండి.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium ఇప్పుడు తిరిగి ప్రారంభించబడుతుంది}=1{1 సెకనులో Chromium తిరిగి ప్రారంభించబడుతుంది}other{# సెకన్లలో Chromium తిరిగి ప్రారంభించబడుతుంది}}</translation> @@ -187,7 +178,6 @@ <translation id="6434250628340475518">Chromium OS సిస్టమ్</translation> <translation id="6455857529632101747">Chromium ప్రొఫైల్లకు స్వాగతం</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 సెకనులో పునఃప్రారంభమవుతుంది}other{Chromium # సెకన్లలో పునఃప్రారంభమవుతుంది}}</translation> -<translation id="646620589868199210">Chromium OSను ఇన్స్టాల్ చేయడానికి సిద్ధంగా ఉన్నారు</translation> <translation id="6475912303565314141">ఇది మీరు Chromiumని ప్రారంభించేటప్పుడు చూపబడే పేజీని కూడా నియంత్రిస్తుంది.</translation> <translation id="6510925080656968729">Chromiumను అన్ఇన్స్టాల్ చేయి</translation> <translation id="6542839706527980775">ప్రతి ప్రొఫైల్లో బుక్మార్క్లు, హిస్టరీ, పాస్వర్డ్లు లాంటి దాని సొంత Chromium సమాచారం ఉంటుంది</translation>
diff --git a/chrome/app/resources/chromium_strings_th.xtb b/chrome/app/resources/chromium_strings_th.xtb index 5741cfd9..7140166 100644 --- a/chrome/app/resources/chromium_strings_th.xtb +++ b/chrome/app/resources/chromium_strings_th.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> จะสลับไปมาระหว่างโปรไฟล์ Chromium ได้</translation> <translation id="3509308970982693815">โปรดปิดหน้าต่าง Chromium ทั้งหมดแล้วลองอีกครั้ง</translation> <translation id="3575459661164320785">มีซอฟต์แวร์อันตรายในคอมพิวเตอร์ของคุณ Chromium ช่วยนำซอฟต์แวร์ดังกล่าวออก คืนการตั้งค่า และปิดใช้ส่วนขยายให้คุณได้ เพื่อให้เบราว์เซอร์กลับมาทำงานเป็นปกติอีกครั้ง</translation> -<translation id="3610776674893128619">ลบฮาร์ดไดรฟ์และติดตั้ง Chromium OS</translation> <translation id="3639635944603682591">ระบบจะลบข้อมูลการท่องเว็บของบุคคลนี้ออกจากอุปกรณ์นี้ หากต้องการกู้ข้อมูลคืน ให้ลงชื่อเข้าใช้ Chromium ในชื่อ <ph name="USER_EMAIL" /></translation> <translation id="364817392622123556">{COUNT,plural, =0{อัปเดตใหม่ของ Chromium พร้อมให้ใช้งานแล้วและระบบจะใช้อัปเดตดังกล่าวเมื่อคุณเปิด Chromium ขึ้นมาใหม่}=1{อัปเดตใหม่ของ Chromium พร้อมให้ใช้งานแล้วและระบบจะใช้อัปเดตดังกล่าวเมื่อคุณเปิด Chromium ขึ้นมาใหม่ หน้าต่างที่ไม่ระบุตัวตนจะไม่เปิดให้อีก}other{อัปเดตใหม่ของ Chromium พร้อมให้ใช้งานแล้วและระบบจะใช้อัปเดตดังกล่าวเมื่อคุณเปิด Chromium ขึ้นมาใหม่ หน้าต่างที่ไม่ระบุตัวตนจำนวน # หน้าต่างจะไม่เปิดให้อีก}}</translation> <translation id="3651803019964686660">หากต้องการส่งหมายเลขจาก <ph name="ORIGIN" /> ไปยังโทรศัพท์ Android ให้ลงชื่อเข้าใช้ Chromium ในอุปกรณ์ทั้งสองเครื่อง</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> เป็นอันตราย Chromium จึงบล็อกไว้</translation> <translation id="6134968993075716475">Google Safe Browsing ปิดอยู่ Chromium ขอแนะนำให้เปิด</translation> <translation id="6145820983052037069">คุณสลับไปมาระหว่างโปรไฟล์ Chromium ได้ที่นี่</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />เราพร้อมติดตั้ง Chromium OS แล้ว เมื่อคุณดำเนินการต่อจะเกิดสิ่งต่อไปนี้ - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ไฟล์ ข้อมูล และระบบปฏิบัติการปัจจุบันจะถูกลบ - <ph name="LIST_ITEM" />ระบบจะติดตั้ง Chromium OS - <ph name="LIST_ITEM" />อุปกรณ์จะปิดเมื่อการติดตั้งเสร็จสมบูรณ์ - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />การช่วยเตือนครั้งสุดท้าย: การติดตั้งจะลบฮาร์ดไดรฟ์ทั้งหมด โปรดตรวจสอบว่าคุณสำรองข้อมูลที่สำคัญแล้ว<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />เมื่อเริ่มการติดตั้งแล้วจะยกเลิกไม่ได้<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">ตรวจสอบว่าคุณลงชื่อเข้าใช้ Chromium ใน <ph name="TARGET_DEVICE_NAME" /> แล้วลองส่งอีกครั้ง</translation> <translation id="6212496753309875659">คอมพิวเตอร์เครื่องนี้ติดตั้ง Chromium รุ่นที่ใหม่กว่าอยู่แล้ว ถ้าซอฟต์แวร์ไม่ทำงาน โปรดถอนการติดตั้ง Chromium และลองอีกครั้ง</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium จะเปิดขึ้นมาใหม่ตอนนี้}=1{Chromium จะเปิดขึ้นมาใหม่ใน 1 วินาที}other{Chromium จะเปิดขึ้นมาใหม่ใน # วินาที}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">ระบบ Chromium OS</translation> <translation id="6455857529632101747">ยินดีต้อนรับสู่โปรไฟล์ Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium จะรีสตาร์ทใน 1 วินาที}other{Chromium จะรีสตาร์ทใน # วินาที}}</translation> -<translation id="646620589868199210">พร้อมติดตั้ง Chromium OS แล้ว</translation> <translation id="6475912303565314141">อีกทั้งยังควบคุมหน้าที่จะแสดงเมื่อคุณเปิด Chromium ด้วย</translation> <translation id="6510925080656968729">ถอนการติดตั้ง Chromium</translation> <translation id="6542839706527980775">แต่ละโปรไฟล์จะเก็บข้อมูล Chromium ของตัวเอง เช่น บุ๊กมาร์ก ประวัติการเข้าชม รหัสผ่าน และอื่นๆ</translation>
diff --git a/chrome/app/resources/chromium_strings_tr.xtb b/chrome/app/resources/chromium_strings_tr.xtb index 01454718..c3be6eba 100644 --- a/chrome/app/resources/chromium_strings_tr.xtb +++ b/chrome/app/resources/chromium_strings_tr.xtb
@@ -80,7 +80,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" />, Chromium profilleri arasında geçiş yapabilir</translation> <translation id="3509308970982693815">Lütfen tüm Chromium pencerelerini kapatıp tekrar deneyin.</translation> <translation id="3575459661164320785">Bilgisayarınızda zararlı yazılım var. Chromium, tarayıcınızın tekrar normal şekilde çalışmasını sağlamak için bunu kaldırabilir, ayarlarınızı geri yükleyebilir ve uzantıları devre dışı bırakabilir.</translation> -<translation id="3610776674893128619">Sabit Diski Sil ve Chromium OS'i Yükle</translation> <translation id="3639635944603682591">Bu kullanıcının tarama verileri bu cihazdan silinecektir. Verileri kurtarmak için Chromium'da <ph name="USER_EMAIL" /> olarak oturum açın.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium için yeni bir güncelleme var. Yeniden başlattığınızda güncelleme hemen uygulanacaktır.}=1{Chromium için yeni bir güncelleme var. Yeniden başlattığınızda güncelleme hemen uygulanacaktır. Gizli pencereniz yeniden açılmayacak.}other{Chromium için yeni bir güncelleme var. Yeniden başlattığınızda güncelleme hemen uygulanacaktır. # Gizli pencereniz yeniden açılmayacak.}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" /> sitesinden Android telefonunuza numara göndermek için iki cihazdan da Chromium'da oturum açın.</translation> @@ -162,15 +161,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> tehlikeli olduğu için Chromium tarafından engellendi.</translation> <translation id="6134968993075716475">Güvenli Tarama kapalı. Chromium bunun açılmasını öneriyor.</translation> <translation id="6145820983052037069">Chromium profilleri arasında burada geçiş yapabilirsiniz</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Chromium OS'i yüklemeye hazırız. Devam ettiğinizde: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Dosyalar, veriler ve mevcut işletim sisteminiz silinecek. - <ph name="LIST_ITEM" />Chromium OS yüklenecek. - <ph name="LIST_ITEM" />Yükleme tamamlandığında cihazınız kapanacak. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Son bir hatırlatma: Yükleme işlemi, sabit diskinizin tamamını silecek. Lütfen sizin için önemli olan tüm verileri yedeklediğinizden emin olun.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Yükleme işlemi, başladıktan sonra iptal edilemez.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177"><ph name="TARGET_DEVICE_NAME" /> cihazınızdan Chromium'da oturum açtığınızdan emin olup tekrar göndermeyi deneyin.</translation> <translation id="6212496753309875659">Bu bilgisayarda Chromium'un daha yeni bir sürümü de var. Yazılım çalışmıyorsa, Chromium'u kaldırın ve tekrar deneyin.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium şimdi yeniden başlatılacak}=1{Chromium 1 saniye içinde yeniden başlatılacak}other{Chromium # saniye içinde yeniden başlatılacak}}</translation> @@ -188,7 +178,6 @@ <translation id="6434250628340475518">Chromium OS Sistemi</translation> <translation id="6455857529632101747">Chromium profillerine hoş geldiniz</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 saniye içinde yeniden başlatılacak}other{Chromium # saniye içinde yeniden başlatılacak}}</translation> -<translation id="646620589868199210">Chromium OS'i yüklemeye hazır mısınız?</translation> <translation id="6475912303565314141">Ayrıca, Chromium'u başlattığınızda gösterilecek sayfayı da denetler.</translation> <translation id="6510925080656968729">Chromium'u Kaldır</translation> <translation id="6542839706527980775">Her profil; yer işaretleri, geçmiş, şifreler ve benzeri gibi kendi Chromium bilgilerini içerir</translation>
diff --git a/chrome/app/resources/chromium_strings_uk.xtb b/chrome/app/resources/chromium_strings_uk.xtb index d77720f..f926592f 100644 --- a/chrome/app/resources/chromium_strings_uk.xtb +++ b/chrome/app/resources/chromium_strings_uk.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931">Комбінація клавіш <ph name="SHORTCUT" /> перемикає профілі Chromium</translation> <translation id="3509308970982693815">Закрийте всі вікна Chromium і повторіть спробу.</translation> <translation id="3575459661164320785">Виявлено шкідливе програмне забезпечення на вашому комп’ютері. Chromium може видалити його, відновити налаштування та вимкнути розширення, щоб веб-переглядач знову працював належним чином.</translation> -<translation id="3610776674893128619">Видалити всі дані жорсткого диска й установити Chromium OS</translation> <translation id="3639635944603682591">Дані веб-перегляду користувача буде видалено з цього пристрою. Щоб відновити їх, увійдіть в обліковий запис Chromium як <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Доступне оновлення Chromium, його буде застосовано відразу після перезапуску.}=1{Доступне оновлення Chromium, його буде застосовано відразу після перезапуску. Вікно в режимі анонімного перегляду не відновиться й не відкриється знову.}one{Доступне оновлення Chromium, його буде застосовано відразу після перезапуску. # вікно в режимі анонімного перегляду не відновиться й не відкриється знову.}few{Доступне оновлення Chromium, його буде застосовано відразу після перезапуску. # вікна в режимі анонімного перегляду не відновляться й не відкриються знову.}many{Доступне оновлення Chromium, його буде застосовано відразу після перезапуску. # вікон в режимі анонімного перегляду не відновляться й не відкриються знову.}other{Доступне оновлення Chromium, його буде застосовано відразу після перезапуску. # вікна в режимі анонімного перегляду не відновиться й не відкриється знову.}}</translation> <translation id="3651803019964686660">Щоб надіслати номер із сайту <ph name="ORIGIN" /> на телефон Android, увійдіть у Chromium на обох пристроях.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363">Файл <ph name="FILE_NAME" /> небезпечний, тому Chromium заблокував його.</translation> <translation id="6134968993075716475">Безпечний перегляд вимкнено. Chromium радить увімкнути його.</translation> <translation id="6145820983052037069">Тут можна перемикати профілі Chromium</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Chromium OS уже можна встановити. Коли ви продовжите: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />усі файли, дані та поточну операційну систему буде видалено з пристрою; - <ph name="LIST_ITEM" />буде встановлено Chromium OS; - <ph name="LIST_ITEM" />після завершення встановлення пристрій завершить роботу. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Останнє нагадування: під час встановлення всі дані жорсткого диска буде видалено. Переконайтеся, що ви маєте резервну копію всіх важливих даних.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Коли встановлення розпочнеться, його не можна буде скасувати.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Переконайтеся, що ви ввійшли в Chromium на пристрої <ph name="TARGET_DEVICE_NAME" />, і повторіть спробу.</translation> <translation id="6212496753309875659">На цьому комп’ютері вже встановлено новішу версію Chromium. Якщо програмне забезпечення не працює, видаліть Chromium і повторіть спробу.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium перезапуститься зараз}=1{Chromium перезапуститься через 1 секунду}one{Chromium перезапуститься через # секунду}few{Chromium перезапуститься через # секунди}many{Chromium перезапуститься через # секунд}other{Chromium перезапуститься через # секунди}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">ОС Chromium</translation> <translation id="6455857529632101747">Представляємо профілі Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium перезапуститься через 1 секунду}one{Chromium перезапуститься через # секунду}few{Chromium перезапуститься через # секунди}many{Chromium перезапуститься через # секунд}other{Chromium перезапуститься через # секунди}}</translation> -<translation id="646620589868199210">Chromium OS можна встановити</translation> <translation id="6475912303565314141">Також указує сторінку, яка відкривається під час запуску Chromium.</translation> <translation id="6510925080656968729">Видалити Chromium</translation> <translation id="6542839706527980775">У кожному профілі Chromium зберігається власна інформація, як-от закладки, історія, паролі тощо</translation>
diff --git a/chrome/app/resources/chromium_strings_ur.xtb b/chrome/app/resources/chromium_strings_ur.xtb index 75f1953..14f1528 100644 --- a/chrome/app/resources/chromium_strings_ur.xtb +++ b/chrome/app/resources/chromium_strings_ur.xtb
@@ -16,6 +16,7 @@ <translation id="1524282610922162960">ایک Chromium ٹیب کا اشتراک کریں</translation> <translation id="1553461853655228091">پنے اطراف کا 3D نقشہ تخلیق کرنے کی خاطر Chromium کو آپ کے کیمرے تک رسائی کی اجازت درکار ہے</translation> <translation id="1607715478322902680">{COUNT,plural, =0{آپ کے منتظم کا مطالبہ ہے کہ آپ اپ ڈیٹ کو لاگو کرنے کیلئے Chromium کو بند کر کے دوبارہ چلائیں}=1{آپ کے منتظم کا مطالبہ ہے کہ آپ اپ ڈیٹ کو لاگو کرنے کیلئے Chromium کو بند کر کے دوبارہ چلائیں۔ آپ کی پوشیدگی ونڈو دوبارہ نہیں کھلے گی۔}other{آپ کے منتظم کا مطالبہ ہے کہ آپ اپ ڈیٹ کو لاگو کرنے کیلئے Chromium کو بند کر کے دوبارہ چلائیں۔ آپ کی # پوشیدگی ونڈوز دوبارہ نہیں کھلیں گی۔}}</translation> +<translation id="1667812772085710766">جب آپ Chromium کو بند کرتے ہیں تو یہ خودکار طور پر آپ کے ملاحظہ کردہ صفحات سے کوکیز اور سائٹ کے ڈیٹا کو صاف کرتا ہے</translation> <translation id="1708666629004767631">Chromium کا ایک نیا، محفوظ تر ورژن دستیاب ہے۔</translation> <translation id="1774152462503052664">Chromium کو پس منظر میں چلنے دیں</translation> <translation id="1779356040007214683">Chromium کو محفوظ تر بنانے کیلئے، ہم نے کچھ ایکسٹینشنز کو غیر فعال کر دیا ہے جو <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> میں مندرج نہیں ہیں اور ہو سکتا ہے ان کو آپ کے علم کے بغیر شامل کیا گیا ہو۔</translation> @@ -83,7 +84,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> سے Chromium پروفائل کے درمیان سوئچ کیا جا سکتا ہے</translation> <translation id="3509308970982693815">براہ کرم سبھی Chromium ونڈوز بند کریں اور دوبارہ کوشش کریں۔</translation> <translation id="3575459661164320785">آپ کے کمپیوٹر میں نقصان دہ سافٹ ویئر ہے۔ Chromium اسے ہٹا کر آپ کی ترتیبات بحال اور ایکسٹینشنز کو غیر فعال کر سکتا ہے تاکہ آپ کا براؤزر دوبارہ حسب معمول کام کر سکے۔</translation> -<translation id="3610776674893128619">ہارڈ ڈرائیو مٹائیں اور Chromium OS انسٹال کریں</translation> <translation id="3639635944603682591">اس شخص کا براؤزنگ ڈیٹا اس آلے سے حذف کر دیا جائے گا۔ ڈیٹا بحال کرنے کیلئے، Chromium میں بطور <ph name="USER_EMAIL" /> سائن ان کریں۔</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium کیلئے ایک نیا اپ ڈیٹ دستیاب ہے اور جیسے ہی آپ اسے بند کر کے دوبارہ چلائیں گے اسے لاگو کر دیا جائے گا۔}=1{Chromium کیلئے ایک نیا اپ ڈیٹ دستیاب ہے اور جیسے ہی آپ اسے بند کر کے دوبارہ چلائیں گے اسے لاگو کر دیا جائے گا۔ آپ کی پوشیدگی ونڈو دوبارہ نہیں کھلے گی۔}other{Chromium کیلئے ایک نیا اپ ڈیٹ دستیاب ہے اور جیسے ہی آپ اسے بند کر کے دوبارہ چلائیں گے اسے لاگو کر دیا جائے گا۔ آپ کی # پوشیدگی ونڈوز دوبارہ نہیں کھلیں گی۔}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" /> سے اپنے Android فون پر نمبر بھیجنے کے لئے دونوں آلات پر Chromium میں سائن ان کریں۔</translation> @@ -165,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> خطرناک ہے، اس لیے Chromium نے اسے مسدود کر دیا ہے۔</translation> <translation id="6134968993075716475">محفوظ براؤزنگ آف ہے۔ Chromium اسے آن کرنے کی تجویز کرتا ہے۔</translation> <translation id="6145820983052037069">آپ یہاں Chromium پروفائلز کے درمیان سوئچ کر سکتے ہیں</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />ہم Chromium OS انسٹال کرنے کیلئے تیار ہیں! ایک بار آپ کے آگے بڑھنے پر: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />فائلز، ڈیٹا اور آپ کا موجودہ آپریٹنگ سسٹم مٹ جائے گا۔ - <ph name="LIST_ITEM" />Chromium OS انسٹال کیا جائے گا۔ - <ph name="LIST_ITEM" />انسٹالیشن مکمل ہونے کے بعد آپ کا آلہ بند ہو جائے گا۔ - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />ایک آخری یاد دہانی: انسٹالرشن آپ کی ہارڈ ڈرائیو کو مکمل طور پر مٹا دے گی۔ براہ کرم یقینی بنائیں کہ آپ کے پاس کوئی بھی ڈیٹا ہے جس کی آپ کو بیک اپ کرنے کی فکر ہے۔<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ایک بار انسٹالیشن شروع ہو جانے کے بعد اسے منسوخ نہیں کیا جا سکتا۔<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">یقینی بنائیں کہ آپ اپنے <ph name="TARGET_DEVICE_NAME" /> پر Chromium میں سائن ان ہیں اور پھر دوبارہ بھیج کر دیکھیں۔</translation> <translation id="6212496753309875659">اس کمپیوٹر پر Chromium کا ایک مزید حالیہ ورژن پہلے سے ہے۔ اگر سافٹ ویئر کام نہیں کر رہا ہے تو براہ کرم Chromium کو ان انسٹال کریں اور دوبارہ کوشش کریں۔</translation> <translation id="6219195342503754812">{0,plural, =0{ابھی Chromium دوبارہ لانچ ہوگا}=1{1 سیکنڈ میں Chromium دوبارہ لانچ ہوگا}other{# سیکنڈ میں Chromium دوبارہ لانچ ہوگا}}</translation> @@ -191,7 +182,6 @@ <translation id="6434250628340475518">Chromium OS سسٹم</translation> <translation id="6455857529632101747">Chromium کی پروفائلز میں خوش آمدید</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{1 سیکنڈ میں Chromium دوبارہ شروع ہو جائے گا}other{# سیکنڈ میں Chromium دوبارہ شروع ہو جائے گا}}</translation> -<translation id="646620589868199210">Chromium OS انسٹال کرنے کیلئے تیار ہیں</translation> <translation id="6475912303565314141">یہ اس کو بھی کنٹرول کرتا ہے جب آپ Chromium کو اسٹارٹ کرتے ہیں تو کون سا صفحہ دکھایا جاتا ہے۔</translation> <translation id="6510925080656968729">Chromium اَن انسٹال کریں</translation> <translation id="6542839706527980775">ہر پروفائل میں بُک مارکس، سرگزشت اور پاس ورڈز وغیرہ جیسی Chromium کی اپنی ذاتی معلومات ہوتی ہے</translation>
diff --git a/chrome/app/resources/chromium_strings_uz.xtb b/chrome/app/resources/chromium_strings_uz.xtb index c343cb13..af52403 100644 --- a/chrome/app/resources/chromium_strings_uz.xtb +++ b/chrome/app/resources/chromium_strings_uz.xtb
@@ -80,7 +80,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> Chromium profillarini almashtira oladi</translation> <translation id="3509308970982693815">Barcha Chromium oynalarini yoping va qaytadan urinib ko‘ring.</translation> <translation id="3575459661164320785">Kompyuteringizda zararli dasturlar topildi. Chromium uni tozalab, sozlamalarni qayta tiklashi, kengaytmalarni oʻchirib qoʻyishi mumkin.</translation> -<translation id="3610776674893128619">Diskni tozalash va Chromium OS tizimini oʻrnatish</translation> <translation id="3639635944603682591">Bu foydalanuvchi brauzerining tarixi ushbu qurilmadan butunlay tozalanadi. Axborotlarni tiklash uchun brauzerga <ph name="USER_EMAIL" /> sifatida kiring.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium uchun yangilanish mavjud va brauzer qayta ishga tushirilganda oʻrnatiladi.}=1{Chromium uchun yangilanish mavjud va brauzer qayta ishga tushirilganda oʻrnatiladi. Inkognito oynalar qayta ochilmaydi.}other{Chromium uchun yangilanish mavjud va brauzer qayta ishga tushirilganda oʻrnatiladi. # ta inkognito oyna qayta ochilmaydi.}}</translation> <translation id="3651803019964686660"><ph name="ORIGIN" /> orqali Android telefoningizga raqam yuborish uchun ikkala qurilmada Chromium hisobingizga kiring.</translation> @@ -162,15 +161,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> xavfli edi, shuning uchun u Chromium tomonidan bloklandi.</translation> <translation id="6134968993075716475">Saytlarni xavfsiz kezish yoniq emas. Chromium uni yoqishingizni tavsiya qiladi.</translation> <translation id="6145820983052037069">Bu yerda Chromium profillarini almashtirish mumkin</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Chromium OS tizimini oʻrnatishga tayyormiz! Boshlashingiz bilan: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Fayllar, maʼlumotlar va joriy operatsion tizimingiz tozalanadi. - <ph name="LIST_ITEM" />Chromium OS oʻrnatiladi. - <ph name="LIST_ITEM" />Oʻrnatish yakunida qurilmangiz oʻchiriladi. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Oxirgi eslatma: oʻrnatishda qattiq diskdagi barcha maʼlumotlar oʻchirib tashlanadi. Kerakli axborotlarni zaxiralashga ulgurganingizni yaxshilab tekshiring.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Oʻrnatish boshlanganidan keyin uni bekor qilish imkonsiz.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177"><ph name="TARGET_DEVICE_NAME" /> qurilmangizda Chromium hisobingizga kiring va keyin qaytadan yuborishga urining.</translation> <translation id="6212496753309875659">Bu kompyuterda allaqachon Chromium‘ning so‘nggi versiyasi o‘rnatilgan. Agar dastur ishlamayotgan bo‘lsa, uni o‘chirib qaytadan o‘rnatib ko‘ring.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium hozir qayta ishga tushadi}=1{Chromium 1 soniyadan keyin qayta ishga tushadi}other{Chromium # soniyadan keyin qayta ishga tushadi}}</translation> @@ -188,7 +178,6 @@ <translation id="6434250628340475518">Chromium OS tizimi</translation> <translation id="6455857529632101747">Chromium profillariga xush kelibsiz</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 soniyada qayta ishga tushiriladi}other{Chromium # soniyada qayta ishga tushiriladi}}</translation> -<translation id="646620589868199210">Chromium OS oʻrnatilishga tayyor</translation> <translation id="6475912303565314141">Bundan tashqari, kengaytma Chromium bosh sahifasini o‘zgarib qo‘ydi.</translation> <translation id="6510925080656968729">Chromium’ni o‘chirib tashlash</translation> <translation id="6542839706527980775">Har bir profilda bukmark, tarix va parol kabi Chromium axboroti saqlanadi</translation>
diff --git a/chrome/app/resources/chromium_strings_vi.xtb b/chrome/app/resources/chromium_strings_vi.xtb index c6cb12d..90f6d4ca 100644 --- a/chrome/app/resources/chromium_strings_vi.xtb +++ b/chrome/app/resources/chromium_strings_vi.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931">Phím tắt <ph name="SHORTCUT" /> có thể giúp chuyển đổi giữa các hồ sơ trên Chromium</translation> <translation id="3509308970982693815">Hãy đóng tất cả cửa sổ Chromium và thử lại.</translation> <translation id="3575459661164320785">Máy tính của bạn có phần mềm độc hại. Chromium có thể xóa phần mềm này, khôi phục các tùy chọn cài đặt của bạn và tắt tiện ích để giúp trình duyệt hoạt động lại bình thường.</translation> -<translation id="3610776674893128619">Xóa ổ cứng và cài đặt Chromium OS</translation> <translation id="3639635944603682591">Dữ liệu duyệt web của người này sẽ bị xóa khỏi thiết bị này. Để khôi phục dữ liệu, hãy đăng nhập vào Chromium bằng <ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Đã có bản cập nhật Chromium mới và bản cập nhật này sẽ áp dụng ngay khi bạn chạy lại Chromium.}=1{Đã có bản cập nhật Chromium mới và bản cập nhật này sẽ áp dụng ngay khi bạn chạy lại Chromium. Cửa sổ ẩn danh của bạn sẽ không mở lại.}other{Đã có bản cập nhật Chromium mới và bản cập nhật này sẽ áp dụng ngay khi bạn chạy lại Chromium. # cửa sổ ẩn danh của bạn sẽ không mở lại.}}</translation> <translation id="3651803019964686660">Để gửi số điện thoại từ <ph name="ORIGIN" /> đến điện thoại Android của bạn, hãy đăng nhập vào Chromium trên cả hai thiết bị.</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> nguy hiểm, do đó Chromium đã chặn tệp.</translation> <translation id="6134968993075716475">Tính năng Duyệt web an toàn đang tắt. Bạn nên bật tính năng này trên Chromium.</translation> <translation id="6145820983052037069">Bạn có thể chuyển đổi giữa các hồ sơ trên Chromium tại đây</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Chúng tôi đã sẵn sàng cài đặt Chromium OS! Một khi bạn tiếp tục: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Các tệp, dữ liệu và hệ điều hành hiện tại của bạn sẽ bị xóa. - <ph name="LIST_ITEM" />Chromium OS sẽ được cài đặt. - <ph name="LIST_ITEM" />Thiết bị của bạn sẽ tắt sau khi quá trình cài đặt hoàn tất. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Lời nhắc cuối cùng: quá trình cài đặt sẽ xóa toàn bộ ổ cứng của bạn. Hãy chắc chắn rằng bạn đã sao lưu mọi dữ liệu quan trọng.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Quá trình cài đặt không thể hủy được một khi đã bắt đầu.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Đảm bảo bạn đã đăng nhập vào Chromium trên <ph name="TARGET_DEVICE_NAME" /> của mình rồi thử gửi lại.</translation> <translation id="6212496753309875659">Máy tính này đã có phiên bản Chromium mới hơn. Nếu phần mềm không hoạt động, hãy gỡ cài đặt Chromium và thử lại.</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium sẽ khởi động lại ngay bây giờ}=1{Chromium sẽ khởi động lại sau 1 giây}other{Chromium sẽ khởi động lại sau # giây}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">Hệ thống Chromium OS</translation> <translation id="6455857529632101747">Chào mừng bạn đến với hồ sơ trên Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium sẽ khởi động lại sau 1 giây}other{Chromium sẽ khởi động lại sau # giây}}</translation> -<translation id="646620589868199210">Sẵn sàng cài đặt Chromium OS</translation> <translation id="6475912303565314141">Tiện ích này cũng điều khiển trang nào được hiển thị khi bạn khởi động Chromium.</translation> <translation id="6510925080656968729">Gỡ cài đặt Chromium</translation> <translation id="6542839706527980775">Mỗi hồ sơ đều có thông tin riêng trên Chromium, chẳng hạn như dấu trang, các trang web đã truy cập, mật khẩu và nhiều thông tin khác</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-CN.xtb b/chrome/app/resources/chromium_strings_zh-CN.xtb index 19dc60d..5ffe3bc 100644 --- a/chrome/app/resources/chromium_strings_zh-CN.xtb +++ b/chrome/app/resources/chromium_strings_zh-CN.xtb
@@ -81,7 +81,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> 可用于切换 Chromium 个人资料</translation> <translation id="3509308970982693815">请关闭所有 Chromium 窗口并重试。</translation> <translation id="3575459661164320785">您的计算机上存在有害软件。Chromium 可以移除该软件、恢复您的设置并停用扩展程序,以确保您的浏览器能够重新正常运行。</translation> -<translation id="3610776674893128619">清除硬盘数据并安装 Chromium 操作系统</translation> <translation id="3639635944603682591">系统将会从此设备上删除该用户的浏览数据。要想恢复这些数据,请以“<ph name="USER_EMAIL" />”的身份登录 Chromium。</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium 有一项新的可用更新;一旦您重新启动,系统即会应用这项更新。}=1{Chromium 有一项新的可用更新;一旦您重新启动,系统即会应用这项更新。您的无痕式窗口不会重新打开。}other{Chromium 有一项新的可用更新;一旦您重新启动,系统即会应用这项更新。您的 # 个无痕式窗口不会重新打开。}}</translation> <translation id="3651803019964686660">若要从 <ph name="ORIGIN" /> 向您的 Android 手机发送电话号码,请在这两部设备上分别登录 Chromium。</translation> @@ -163,15 +162,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> 存在危险,因此 Chromium 已将其拦截。</translation> <translation id="6134968993075716475">“安全浏览”功能已关闭。Chromium 建议开启此功能。</translation> <translation id="6145820983052037069">您可在此处切换 Chromium 个人资料</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />我们已准备就绪,可以安装 Chromium 操作系统了!一旦您继续操作: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />系统会清除文件、数据和您目前使用的操作系统。 - <ph name="LIST_ITEM" />系统会安装 Chromium 操作系统。 - <ph name="LIST_ITEM" />您的设备会在安装完毕后关机。 - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />最后请注意:安装流程会清除您的整个硬盘中的数据。请确保您已妥善地备份了所有重要数据。<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />安装流程一旦开始就无法取消。<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">请确保您已在“<ph name="TARGET_DEVICE_NAME" />”上登录 Chromium,然后再次尝试发送。</translation> <translation id="6212496753309875659">此计算机已安装了更高版本的 Chromium。如果软件无法正常运行,请卸载 Chromium 并重试。</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium 将立即重新启动}=1{Chromium 将在 1 秒后重新启动}other{Chromium 将在 # 秒后重新启动}}</translation> @@ -189,7 +179,6 @@ <translation id="6434250628340475518">Chromium 操作系统</translation> <translation id="6455857529632101747">欢迎使用 Chromium 个人资料</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 将在 1 秒后重新启动}other{Chromium 将在 # 秒后重新启动}}</translation> -<translation id="646620589868199210">一切就绪,可以安装 Chromium 操作系统了</translation> <translation id="6475912303565314141">它还能够控制Chromium启动后显示的页面。</translation> <translation id="6510925080656968729">卸载 Chromium</translation> <translation id="6542839706527980775">每份个人资料均包含自己的 Chromium 信息,例如书签、历史记录、密码等等</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-HK.xtb b/chrome/app/resources/chromium_strings_zh-HK.xtb index 6685373..a514229 100644 --- a/chrome/app/resources/chromium_strings_zh-HK.xtb +++ b/chrome/app/resources/chromium_strings_zh-HK.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> 可以切換唔同嘅 Chromium 設定檔</translation> <translation id="3509308970982693815">請關閉所有 Chromium 視窗,然後再試一次。</translation> <translation id="3575459661164320785">在您的電腦上發現有害軟件。Chromium 可移除該軟件、復原設定及停用擴充程式,讓瀏覽器恢復正常運作。</translation> -<translation id="3610776674893128619">清除硬碟資料並安裝 Chromium 作業系統</translation> <translation id="3639635944603682591">此使用者的瀏覽資料將從裝置上刪除。如要復原資料,請以「<ph name="USER_EMAIL" />」身分登入 Chromium。</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium 有可用的更新,重新啟動後即可套用。}=1{Chromium 有可用的更新,重新啟動後即可套用。您的無痕式視窗不會重新開啟。}other{Chromium 有可用的更新,重新啟動後即可套用。您的 # 個無痕式視窗不會重新開啟。}}</translation> <translation id="3651803019964686660">如要將號碼從 <ph name="ORIGIN" /> 傳送至 Android 手機,請在這兩部裝置上登入 Chromium。</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> 不安全,因此 Chromium 已封鎖此檔案。</translation> <translation id="6134968993075716475">「安全瀏覽」功能已停用。Chromium 建議啟用此功能。</translation> <translation id="6145820983052037069">您可在此處切換不同的 Chromium 設定檔</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />我們已準備好安裝 Chromium 作業系統!一旦繼續執行: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />系統會清除您的檔案、資料和目前的作業系統。 - <ph name="LIST_ITEM" />系統將會安裝 Chromium 作業系統。 - <ph name="LIST_ITEM" />您的裝置會在安裝完成後關機。 - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />最後請注意,安裝程序會清除整個硬碟的資料。請確認重要資料皆已完成備份。<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />安裝程序開始後就無法取消。<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">請確認您已在 <ph name="TARGET_DEVICE_NAME" /> 上登入 Chromium,然後再傳送一次。</translation> <translation id="6212496753309875659">這部電腦已安裝較新的 Chromium 版本。如果軟件無法工作,請解除安裝 Chromium,然後再試一次。</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium 將立即重新啟動}=1{Chromium 將於 1 秒後重新啟動}other{Chromium 將於 # 秒後重新啟動}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Chromium 作業系統</translation> <translation id="6455857529632101747">歡迎使用 Chromium 設定檔</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 將於 1 秒後重新啟動}other{Chromium 將於 # 秒後重新啟動}}</translation> -<translation id="646620589868199210">現在可以安裝 Chromium 作業系統了</translation> <translation id="6475912303565314141">這個擴充功能也會管制您啟動 Chromium 時所顯示的網頁。</translation> <translation id="6510925080656968729">解除安裝 Chromium</translation> <translation id="6542839706527980775">每個設定檔都會保存本身專屬的 Chromium 資料,例如書籤、記錄、密碼等</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-TW.xtb b/chrome/app/resources/chromium_strings_zh-TW.xtb index d629503..e59a3e4 100644 --- a/chrome/app/resources/chromium_strings_zh-TW.xtb +++ b/chrome/app/resources/chromium_strings_zh-TW.xtb
@@ -82,7 +82,6 @@ <translation id="3497319089134299931"><ph name="SHORTCUT" /> 可以切換不同的 Chromium 設定檔</translation> <translation id="3509308970982693815">請關閉所有 Chromium 視窗,然後再試一次。</translation> <translation id="3575459661164320785">你的電腦安裝了有害軟體。Chromium 可以移除該軟體、復原設定及停用擴充功能,讓你的瀏覽器恢復正常運作。</translation> -<translation id="3610776674893128619">清除硬碟資料並安裝 Chromium OS</translation> <translation id="3639635944603682591">這位使用者的瀏覽資料將從這個裝置上刪除。如要還原資料,請使用 <ph name="USER_EMAIL" /> 登入 Chromium。</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium 有可用的更新,重新啟動後即可套用。}=1{Chromium 有可用的更新,重新啟動後即可套用。你的無痕式視窗不會重新開啟。}other{Chromium 有可用的更新,重新啟動後即可套用。你的 # 個無痕式視窗不會重新開啟。}}</translation> <translation id="3651803019964686660">如要將號碼從 <ph name="ORIGIN" /> 傳送到 Android 手機,請在這兩部裝置上登入 Chromium。</translation> @@ -164,15 +163,6 @@ <translation id="6129621093834146363"><ph name="FILE_NAME" /> 並不安全,因此遭到 Chromium 封鎖。</translation> <translation id="6134968993075716475">安全瀏覽功能已停用。Chromium 建議啟用這項功能。</translation> <translation id="6145820983052037069">你可以在這裡切換不同的 Chromium 設定檔</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Chromium OS 安裝程序已就緒!一旦繼續執行: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />系統會清除你的檔案、資料和目前的作業系統。 - <ph name="LIST_ITEM" />Chromium OS 將進行安裝。 - <ph name="LIST_ITEM" />你的裝置會在安裝完成後關機。 - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />最後請注意,安裝程序會清除整個硬碟的資料。請確認重要資料皆已完成備份。<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />安裝程序開始後就無法取消。<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">請確認你已在「<ph name="TARGET_DEVICE_NAME" />」上登入 Chromium,然後再傳送一次。</translation> <translation id="6212496753309875659">這台電腦已安裝較新的 Chromium 版本。如果軟體無法順利運作,請解除安裝 Chromium,然後再試一次。</translation> <translation id="6219195342503754812">{0,plural, =0{Chromium 將立即重新啟動}=1{Chromium 將在 1 秒後重新啟動}other{Chromium 將在 # 秒後重新啟動}}</translation> @@ -190,7 +180,6 @@ <translation id="6434250628340475518">Chromium 作業系統</translation> <translation id="6455857529632101747">歡迎使用 Chromium 設定檔</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 將於 1 秒後重新啟動}other{Chromium 將於 # 秒後重新啟動}}</translation> -<translation id="646620589868199210">現在可以安裝 Chromium OS 了</translation> <translation id="6475912303565314141">這個擴充功能也會控管你啟動 Chromium 時所顯示的網頁。</translation> <translation id="6510925080656968729">解除安裝 Chromium</translation> <translation id="6542839706527980775">每個設定檔都有獨立專屬的 Chromium 資訊,例如書籤、歷史記錄和密碼等等</translation>
diff --git a/chrome/app/resources/chromium_strings_zu.xtb b/chrome/app/resources/chromium_strings_zu.xtb index 7fcba66..dd605ce 100644 --- a/chrome/app/resources/chromium_strings_zu.xtb +++ b/chrome/app/resources/chromium_strings_zu.xtb
@@ -84,7 +84,6 @@ <translation id="3497319089134299931">I-<ph name="SHORTCUT" /> ingashintsha phakathi kwamaphrofayela we-Chromium</translation> <translation id="3509308970982693815">Sicela uvale wonke amawindi we-Chromium uphinde uzame futhi.</translation> <translation id="3575459661164320785">Kunesofthiwe eyingozi kwikhompyutha yakho. I-Chromium ingayisusa, ibuyise izilungiselelo zakho, futhi ikhubaze izandiso ukwenza isiphequluli sakho sisebenze kahle futhi.</translation> -<translation id="3610776674893128619">Sula Okuphakelayo futhi Ufake i-Chromium OS</translation> <translation id="3639635944603682591">Idatha yokuphequlula yalo muntu izosuswa kusukela kule divayisi. Ukuze uphinde uthole idatha, ngena ngemvume ku-Chromium njengo-<ph name="USER_EMAIL" />.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Isibuyekezo esisha se-Chromium siyatholakala futhi sizosetshenziswa maduze ngemuva kokuthi uqalise kabusha.}=1{Isibuyekezo esisha se-Chromium siyatholakala futhi sizosetshenziswa maduze ngemuva kokuthi uqalise kabusha. Iwindi lakho le-Incognito ngeke liphinde livuleke.}one{Isibuyekezo esisha se-Chromium siyatholakala futhi sizosetshenziswa maduze ngemuva kokuthi uqalise kabusha. Amawindi akho angu-# e-Incognito ngeke aze aphinde avuleke.}other{Isibuyekezo esisha se-Chromium siyatholakala futhi sizosetshenziswa maduze ngemuva kokuthi uqalise kabusha. Amawindi akho angu-# e-Incognito ngeke aze aphinde avuleke.}}</translation> <translation id="3651803019964686660">Ukuze uthumele inombolo kusukela ku-<ph name="ORIGIN" /> kufoni yakho ye-Android, ngena ngemvume ku-Chromium kuwo womabili amadivayisi.</translation> @@ -166,15 +165,6 @@ <translation id="6129621093834146363">I-<ph name="FILE_NAME" /> iyingozi, ngakho-ke i-Chromium iyivimbile.</translation> <translation id="6134968993075716475">Ukuphequlula Okuphephile kuvaliwe. i-Chromium incoma ukuba kuvulwe.</translation> <translation id="6145820983052037069">Ungashintsha phakathi kwamaphrofayela we-Chromium lapha</translation> -<translation id="61577490437262925"><ph name="BEGIN_PARAGRAPH1" />Sikulungele ukufaka i-Chromium OS! Lapho usuqhubeka: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Amafayela, idatha, nesistimu yakho yokusebenza yamanje kuzosulwa. - <ph name="LIST_ITEM" />I-Chromium OS izofakwa. - <ph name="LIST_ITEM" />Idivayisi yakho izocisha lapho ukufaka sekuqedile. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Isikhumbuzi sokugcina: ukufaka kuzosula konke okuphakelayo kwakho. Sicela uqiniseke ukuthi idatha oyikhathalelayo yenziwe ikhophi yasenqolobaneni.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Lapho ukufaka kuqala akukwazi ukukhanselwa.<ph name="END_PARAGRAPH3" /></translation> <translation id="6183079672144801177">Yenza isiqinisekiso sokuthi ungene ngemvume ku-Chromium ku-<ph name="TARGET_DEVICE_NAME" /> yakho bese uzama ukuthumela futhi.</translation> <translation id="6212496753309875659">Le khompyutha isivele inenguqulo yakamuva kakhulu ye-Chromium. Uma isofthiwe ingasebenzi, sicela ukhiphe i-Chromium uphinde uzame futhi.</translation> <translation id="6219195342503754812">{0,plural, =0{I-Chromium izoqalisa kabusha manje}=1{I-Chromium izoqalisa kabusha kusekhondi elingu-1}one{I-Chromium izoqalisa kabusha kumasekhondi angu-#}other{I-Chromium izoqalisa kabusha kumasekhondi angu-#}}</translation> @@ -192,7 +182,6 @@ <translation id="6434250628340475518">Isistimu ye-Chromium OS</translation> <translation id="6455857529632101747">Siyakwamukela kumaphrofayela we-Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{I-Chromium izoqala kabusha kusekhondi elingu-1}one{I-Chromium izoqala kabusha kumasekhondi angu-#}other{I-Chromium izoqala kabusha kumasekhondi angu-#}}</translation> -<translation id="646620589868199210">Ikulungele ukufaka i-Chromium OS</translation> <translation id="6475912303565314141">Iphinde ilawule ukuthi iliphi ikhasi eliboniswa lapho uqala i-Chromium.</translation> <translation id="6510925080656968729">Khipha i-Chromium</translation> <translation id="6542839706527980775">Iphrofayela ngalinye linolwazi lwalo lwe-Chromium njengamabhukhimakhi, umlando, amaphasiwedi, nokuningi</translation>
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb index 8fda473..631b5af7 100644 --- a/chrome/app/resources/generated_resources_af.xtb +++ b/chrome/app/resources/generated_resources_af.xtb
@@ -7617,7 +7617,6 @@ <translation id="9121814364785106365">Maak as 'n vasgespelde oortjie oop</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> is onderbreek</translation> <translation id="9124003689441359348">Gestoorde wagwoorde sal hier verskyn</translation> -<translation id="9125387974662074614">Laat weet my wanneer Chrome klaar na skadelike sagteware gesoek het</translation> <translation id="9126149354162942022">Skermpyltjie se kleur</translation> <translation id="9128317794749765148">Kon nie opstelling voltooi nie</translation> <translation id="9128335130883257666">Maak instellingsbladsy vir <ph name="INPUT_METHOD_NAME" /> oop</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb index ada11422..15f282c 100644 --- a/chrome/app/resources/generated_resources_am.xtb +++ b/chrome/app/resources/generated_resources_am.xtb
@@ -7610,7 +7610,6 @@ <translation id="9121814364785106365">እንደተሰካ ትር ክፈት</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> ባለበት ቆሟል</translation> <translation id="9124003689441359348">የተቀመጡ የይለፍ ቃላትዎ እዚህ ይታያሉ</translation> -<translation id="9125387974662074614">Chrome ጎጂ ሶፍትዌሮችን መፈለግ ሲጨርስ አሳውቀኝ</translation> <translation id="9126149354162942022">የጠቋሚ ቀለም</translation> <translation id="9128317794749765148">ቅንብርን ማጠናቀቅ አልተቻለም</translation> <translation id="9128335130883257666">የ<ph name="INPUT_METHOD_NAME" /> ቅንብሮች ገጽን ይክፈቱ</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb index 8b802cb..80ce086 100644 --- a/chrome/app/resources/generated_resources_ar.xtb +++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -7607,7 +7607,6 @@ <translation id="9121814364785106365">فتح كعلامة تبويب مثبتة</translation> <translation id="9122176249172999202">تم إيقاف <ph name="IDS_SHORT_PRODUCT_NAME" /> مؤقتًا</translation> <translation id="9124003689441359348">ستظهر هنا كلمات المرور المحفوظة</translation> -<translation id="9125387974662074614">إبلاغي عند انتهاء Chrome من البحث عن البرامج الضارَّة</translation> <translation id="9126149354162942022">لون المؤشر</translation> <translation id="9128317794749765148">تعذّر إكمال الإعداد</translation> <translation id="9128335130883257666">يُرجى الانتقال إلى صفحة إعدادات <ph name="INPUT_METHOD_NAME" />.</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb index 4a51e02..f8773e2e 100644 --- a/chrome/app/resources/generated_resources_as.xtb +++ b/chrome/app/resources/generated_resources_as.xtb
@@ -7596,7 +7596,6 @@ <translation id="9121814364785106365">পিন কৰি থোৱা টেব হিচাপে খোলক</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> পজ কৰা হৈছে</translation> <translation id="9124003689441359348">ছেভ কৰি থোৱা পাছৱৰ্ডসমূহ ইয়াত দেখা যাব</translation> -<translation id="9125387974662074614">Chromeএ ক্ষতিকাৰক ছফ্টৱেৰ আছেনে নাই পৰীক্ষা কৰি শেষ কৰিলে মোক জাননী দিয়ক</translation> <translation id="9126149354162942022">কাৰ্ছৰৰ ৰং</translation> <translation id="9128317794749765148">ছেট আপ সম্পূৰ্ণ কৰিব পৰা নগ’ল</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" />ৰ ছেটিঙৰ পৃষ্ঠাখন খোলক</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb index 2f9f55b..e0f84f9 100644 --- a/chrome/app/resources/generated_resources_az.xtb +++ b/chrome/app/resources/generated_resources_az.xtb
@@ -7591,7 +7591,6 @@ <translation id="9121814364785106365">Sancılmış tab olaraq açın</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> fasilədədir</translation> <translation id="9124003689441359348">Yadda saxlanmış parollar burada görünəcək</translation> -<translation id="9125387974662074614">Chrome zərərli proqram axtarışını bitirdikdə mənə bildirin</translation> <translation id="9126149354162942022">Kursor rəngi</translation> <translation id="9128317794749765148">Quraşdırma tamamlanmadı</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" /> üçün ayarlar səhifəsini açın</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb index 35f536d9..479922bc 100644 --- a/chrome/app/resources/generated_resources_be.xtb +++ b/chrome/app/resources/generated_resources_be.xtb
@@ -7599,7 +7599,6 @@ <translation id="9121814364785106365">Адкрыць у замацаванай укладцы</translation> <translation id="9122176249172999202">Работа праграмы "<ph name="IDS_SHORT_PRODUCT_NAME" />" прыпынена</translation> <translation id="9124003689441359348">Захаваныя паролі з'явяцца тут</translation> -<translation id="9125387974662074614">Паведаміць, калі браўзер Chrome скончыць праверку на наяўнасць шкоднага праграмнага забеспячэння</translation> <translation id="9126149354162942022">Колер курсора</translation> <translation id="9128317794749765148">Не ўдалося завяршыць наладку</translation> <translation id="9128335130883257666">Адкрыць старонку налад для метаду ўводу "<ph name="INPUT_METHOD_NAME" />"</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb index 353d065..e6eada7 100644 --- a/chrome/app/resources/generated_resources_bg.xtb +++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -7615,7 +7615,6 @@ <translation id="9121814364785106365">Отваряне като фиксиран раздел</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> е на пауза</translation> <translation id="9124003689441359348">Тук ще се покажат запазените пароли</translation> -<translation id="9125387974662074614">Извеждане на известие, когато Chrome завърши търсенето на опасен софтуер</translation> <translation id="9126149354162942022">Цвят на курсора</translation> <translation id="9128317794749765148">Настройването не можа да бъде завършено</translation> <translation id="9128335130883257666">Отваряне на страницата с настройки за <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb index 1dcdac1..e87117f5 100644 --- a/chrome/app/resources/generated_resources_bn.xtb +++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -7613,7 +7613,6 @@ <translation id="9121814364785106365">পিন করা ট্যাব হিসেবে খুলুন</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> পজ করা আছে</translation> <translation id="9124003689441359348">সংরক্ষিত পাসওয়ার্ডগুলি এখানে দেখা যাবে</translation> -<translation id="9125387974662074614">আমাকে জানান যখন Chrome ক্ষতিকারক সফ্টওয়্যার সার্চ করা সম্পূর্ণ করে ফেলবে</translation> <translation id="9126149354162942022">কার্সরের রঙ</translation> <translation id="9128317794749765148">সেট-আপ করা যায়নি</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" />-এর সেটিংস পৃষ্ঠা খুলুন</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb index 656f2c9..42aac02 100644 --- a/chrome/app/resources/generated_resources_bs.xtb +++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -7617,7 +7617,6 @@ <translation id="9121814364785106365">Otvori kao zakačenu karticu</translation> <translation id="9122176249172999202">Aplikacija <ph name="IDS_SHORT_PRODUCT_NAME" /> je pauzirana</translation> <translation id="9124003689441359348">Sačuvane lozinke će se prikazati ovdje</translation> -<translation id="9125387974662074614">Pošalji obavještenje kada Chrome završi s pretraživanjem štetnog softvera</translation> <translation id="9126149354162942022">Boja kursora</translation> <translation id="9128317794749765148">Postavljanje nije dovršeno</translation> <translation id="9128335130883257666">Otvaranje stranice postavki za način unosa <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb index 2448f6e0..54ac2ab 100644 --- a/chrome/app/resources/generated_resources_ca.xtb +++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -7602,7 +7602,6 @@ <translation id="9121814364785106365">Obre-ho com a pestanya reduïda</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> està en pausa</translation> <translation id="9124003689441359348">Les contrasenyes desades es mostraran aquí</translation> -<translation id="9125387974662074614">Envia'm una notificació quan Chrome hagi acabat de cercar programari nociu</translation> <translation id="9126149354162942022">Color del cursor</translation> <translation id="9128317794749765148">No s'ha pogut completar la configuració</translation> <translation id="9128335130883257666">Obre la pàgina de configuració per a <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb index 4e9e32d..828a6a0 100644 --- a/chrome/app/resources/generated_resources_cs.xtb +++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -7600,7 +7600,6 @@ <translation id="9121814364785106365">Otevřít jako připnutou kartu</translation> <translation id="9122176249172999202">Prohlížeč <ph name="IDS_SHORT_PRODUCT_NAME" /> je pozastaven</translation> <translation id="9124003689441359348">Zde se zobrazí uložená hesla</translation> -<translation id="9125387974662074614">Upozorněte mě, až Chrome dokončí vyhledávání škodlivého softwaru</translation> <translation id="9126149354162942022">Barva kurzoru</translation> <translation id="9128317794749765148">Instalaci nebylo možné dokončit</translation> <translation id="9128335130883257666">Otevřít stránku nastavení <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb index 48a31b7f..323a513 100644 --- a/chrome/app/resources/generated_resources_da.xtb +++ b/chrome/app/resources/generated_resources_da.xtb
@@ -7619,7 +7619,6 @@ <translation id="9121814364785106365">Åbn som fastgjort fane</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> er sat på pause</translation> <translation id="9124003689441359348">Dine gemte adgangskoder vises her</translation> -<translation id="9125387974662074614">Underret mig, når Chrome er færdig med at søge efter skadelig software</translation> <translation id="9126149354162942022">Markørfarve</translation> <translation id="9128317794749765148">Konfigurationen kunne ikke gennemføres</translation> <translation id="9128335130883257666">Åbn indstillingssiden for <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb index 3d523d9..d06582b 100644 --- a/chrome/app/resources/generated_resources_de.xtb +++ b/chrome/app/resources/generated_resources_de.xtb
@@ -7595,7 +7595,6 @@ <translation id="9121814364785106365">In angepinntem Tab öffnen</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> pausiert</translation> <translation id="9124003689441359348">Hier werden gespeicherte Passwörter angezeigt</translation> -<translation id="9125387974662074614">Benachrichtigen, wenn Chrome die Suche nach schädlicher Software beendet hat</translation> <translation id="9126149354162942022">Cursorfarbe</translation> <translation id="9128317794749765148">Einrichtung nicht abgeschlossen</translation> <translation id="9128335130883257666">Einstellungen für <ph name="INPUT_METHOD_NAME" /> aufrufen</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb index dc104e6..b532f71 100644 --- a/chrome/app/resources/generated_resources_el.xtb +++ b/chrome/app/resources/generated_resources_el.xtb
@@ -7616,7 +7616,6 @@ <translation id="9121814364785106365">Άνοιγμα ως καρφιτσωμένης καρτέλας</translation> <translation id="9122176249172999202">Η εφαρμογή <ph name="IDS_SHORT_PRODUCT_NAME" /> τέθηκε σε παύση</translation> <translation id="9124003689441359348">Οι αποθηκευμένοι κωδικοί πρόσβασής σας θα εμφανίζονται εδώ</translation> -<translation id="9125387974662074614">Να ειδοποιηθώ όταν το Chrome ολοκληρώσει την αναζήτηση για επιβλαβές λογισμικό</translation> <translation id="9126149354162942022">Χρώμα δείκτη</translation> <translation id="9128317794749765148">Δεν ήταν δυνατή η ολοκλήρωση της ρύθμισης</translation> <translation id="9128335130883257666">Άνοιγμα σελίδας ρυθμίσεων για <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb index 6364e87..455f48f 100644 --- a/chrome/app/resources/generated_resources_en-GB.xtb +++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -7617,7 +7617,6 @@ <translation id="9121814364785106365">Open as pinned tab</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> is paused</translation> <translation id="9124003689441359348">Saved passwords will appear here</translation> -<translation id="9125387974662074614">Notify me when Chrome has finished searching for harmful software</translation> <translation id="9126149354162942022">Cursor colour</translation> <translation id="9128317794749765148">Setup couldn't complete</translation> <translation id="9128335130883257666">Open settings page for <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb index bf9bd43..80db0d0 100644 --- a/chrome/app/resources/generated_resources_es-419.xtb +++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -2196,7 +2196,7 @@ <translation id="3305661444342691068">Abrir PDF en vista previa</translation> <translation id="3308116878371095290">Se impidió que esta página configure cookies.</translation> <translation id="3308134619352333507">Ocultar botón</translation> -<translation id="3308681281309926497">Los sitios que visitas podrán seguir recordando tu información hasta que cierres Chrome.</translation> +<translation id="3308681281309926497">Los sitios que visites seguirán recordando tu información hasta que cierres Chrome.</translation> <translation id="3308738399950580893">anuncios</translation> <translation id="3308852433423051161">Cargando el Asistente de Google…</translation> <translation id="3309330461362844500">ID del perfil del certificado</translation> @@ -3898,7 +3898,7 @@ <translation id="5157635116769074044">Fijar esta página a la pantalla de inicio…</translation> <translation id="5159094275429367735">Configurar Crostini</translation> <translation id="5159419673777902220">Tu padre o madre inhabilitaron los permisos de extensiones</translation> -<translation id="5159643365935452998">Revisar el borrado de datos automático</translation> +<translation id="5159643365935452998">Revisar el borrado automático de datos</translation> <translation id="5160634252433617617">Teclado físico</translation> <translation id="5160857336552977725">Accede a tu <ph name="DEVICE_TYPE" />.</translation> <translation id="5161251470972801814">Dispositivos USB de <ph name="VENDOR_NAME" /></translation> @@ -7598,7 +7598,6 @@ <translation id="9121814364785106365">Abrir como pestaña anclada</translation> <translation id="9122176249172999202">Se pausó <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="9124003689441359348">Las contraseñas guardadas aparecerán aquí</translation> -<translation id="9125387974662074614">Notificarme cuando Chrome termine de buscar software dañino</translation> <translation id="9126149354162942022">Color del cursor</translation> <translation id="9128317794749765148">No se completó la configuración</translation> <translation id="9128335130883257666">Abrir la página de configuración para <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb index c34476e3..d0229452 100644 --- a/chrome/app/resources/generated_resources_es.xtb +++ b/chrome/app/resources/generated_resources_es.xtb
@@ -7600,7 +7600,6 @@ <translation id="9121814364785106365">Abrir como pestaña fija</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> está en pausa</translation> <translation id="9124003689441359348">Las contraseñas guardadas aparecerán aquí</translation> -<translation id="9125387974662074614">Notificarme cuando Chrome haya terminado de buscar software dañino</translation> <translation id="9126149354162942022">Color del cursor</translation> <translation id="9128317794749765148">No se ha podido completar la configuración</translation> <translation id="9128335130883257666">Abrir página de configuración de <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb index 14a7d5e..5ee95ab 100644 --- a/chrome/app/resources/generated_resources_et.xtb +++ b/chrome/app/resources/generated_resources_et.xtb
@@ -7607,7 +7607,6 @@ <translation id="9121814364785106365">Ava kinnitatud vahelehel</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> on peatatud</translation> <translation id="9124003689441359348">Salvestatud paroolid kuvatakse siin</translation> -<translation id="9125387974662074614">Teavita mind, kui Chrome on lõpetanud kahjuliku tarkvara otsimise</translation> <translation id="9126149354162942022">Kursori värv</translation> <translation id="9128317794749765148">Seadistust ei õnnestunud lõpule viia</translation> <translation id="9128335130883257666">Sisestusmeetodi <ph name="INPUT_METHOD_NAME" /> seadete lehe avamine</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb index 6e0dc705..6d91a8c8 100644 --- a/chrome/app/resources/generated_resources_eu.xtb +++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -7597,7 +7597,6 @@ <translation id="9121814364785106365">Ireki fitxa ainguratu gisa</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> pausatuta dago</translation> <translation id="9124003689441359348">Hemen agertuko dira gordetako pasahitzak</translation> -<translation id="9125387974662074614">Jaso jakinarazpen bat Chrome-k software kaltegarria bilatzen amaitzen duenean</translation> <translation id="9126149354162942022">Kurtsorearen kolorea</translation> <translation id="9128317794749765148">Ezin izan da osatu konfigurazioa</translation> <translation id="9128335130883257666">Ireki <ph name="INPUT_METHOD_NAME" /> idazketa-metodoaren ezarpenen orria</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb index 2ba881d..0d36ef7 100644 --- a/chrome/app/resources/generated_resources_fa.xtb +++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -7615,7 +7615,6 @@ <translation id="9121814364785106365">باز کردن بهعنوان برگه الصاق شده</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> متوقف شده است</translation> <translation id="9124003689441359348">گذرواژههای ذخیرهشده در اینجا ظاهر خواهند شد</translation> -<translation id="9125387974662074614">وقتی جستجوی Chrome برای نرمافزارهای مضر بهپایان رسید به من اطلاع داده شود</translation> <translation id="9126149354162942022">رنگ نشانگر</translation> <translation id="9128317794749765148">راهاندازی تکمیل نشد</translation> <translation id="9128335130883257666">باز کردن صفحه تنظیمات برای <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb index 816b33e..7e3f7c2 100644 --- a/chrome/app/resources/generated_resources_fi.xtb +++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -7612,7 +7612,6 @@ <translation id="9121814364785106365">Avaa kiinnitetyllä välilehdellä</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> on keskeytetty</translation> <translation id="9124003689441359348">Tässä näytetään tallennetut salasanasi.</translation> -<translation id="9125387974662074614">Ilmoita minulle, kun haittaohjelmien etsintä Chromessa on valmis</translation> <translation id="9126149354162942022">Kohdistimen väri</translation> <translation id="9128317794749765148">Määritystä ei voitu suorittaa loppuun</translation> <translation id="9128335130883257666">Avaa asetussivu: <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb index c146a3a..b6a72f93 100644 --- a/chrome/app/resources/generated_resources_fil.xtb +++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -7621,7 +7621,6 @@ <translation id="9121814364785106365">Binuksan bilang na-pin na tab</translation> <translation id="9122176249172999202">Naka-pause ang <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="9124003689441359348">Lalabas dito ang mga na-save na password</translation> -<translation id="9125387974662074614">Abisuhan ako kapag tapos na ang Chrome sa paghahanap ng mapaminsalang software</translation> <translation id="9126149354162942022">Kulay ng cursor</translation> <translation id="9128317794749765148">Hindi makumpleto ang pag-set up</translation> <translation id="9128335130883257666">Buksan ang page ng mga setting para sa <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb index c52f56b1..c5291da 100644 --- a/chrome/app/resources/generated_resources_fr-CA.xtb +++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -7603,7 +7603,6 @@ <translation id="9121814364785106365">Ouvrir dans un onglet épinglé</translation> <translation id="9122176249172999202">L'application <ph name="IDS_SHORT_PRODUCT_NAME" /> est interrompue</translation> <translation id="9124003689441359348">Les mots de passe enregistrés s'afficheront ici</translation> -<translation id="9125387974662074614">M'informer quand Chrome a fini de vérifier la présence de logiciels nuisibles</translation> <translation id="9126149354162942022">Couleur du curseur</translation> <translation id="9128317794749765148">Impossible de terminer la configuration</translation> <translation id="9128335130883257666">Accéder à la page des paramètres pour <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb index ef3e4ac7..c8b957f 100644 --- a/chrome/app/resources/generated_resources_fr.xtb +++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -2200,7 +2200,7 @@ <translation id="3305661444342691068">Ouvrir le PDF dans Aperçu</translation> <translation id="3308116878371095290">Le stockage des cookies n'est pas autorisé pour cette page.</translation> <translation id="3308134619352333507">Masquer le bouton</translation> -<translation id="3308681281309926497">Les sites que vous consultez peuvent toujours mémoriser vos informations tant que vous ne fermez pas Chrome</translation> +<translation id="3308681281309926497">Les sites que vous consultez peuvent garder vos informations en mémoire tant que vous ne fermez pas Chrome</translation> <translation id="3308738399950580893">annonces</translation> <translation id="3308852433423051161">Chargement de l'Assistant Google…</translation> <translation id="3309330461362844500">ID du profil du certificat</translation> @@ -2754,7 +2754,7 @@ <translation id="3873423927483480833">Afficher les codes</translation> <translation id="3873915545594852654">Un problème est survenu avec ARC++.</translation> <translation id="3874164307099183178">Activer l'Assistant Google</translation> -<translation id="3875815154304214043"><ph name="APP_NAME" /> est configurée pour s'ouvrir dans un nouvel onglet de navigateur. Les liens compatibles s'ouvriront aussi dans le navigateur. <ph name="BEGIN_LINK_LEARN_MORE" />En savoir plus<ph name="END_LINK_LEARN_MORE" /></translation> +<translation id="3875815154304214043"><ph name="APP_NAME" /> est configuré pour s'ouvrir dans un nouvel onglet de navigateur. Les liens compatibles s'ouvriront aussi dans le navigateur. <ph name="BEGIN_LINK_LEARN_MORE" />En savoir plus<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3877075909000773256">Paramètres du Partage à proximité pour l'appareil de <ph name="USER_NAME" /> dans le compte <ph name="USER_EMAIL" />.</translation> <translation id="3879748587602334249">Gestionnaire de téléchargement</translation> <translation id="3882165008614329320">Vidéo existante filmée avec la caméra ou lue à partir d'un fichier</translation> @@ -7604,7 +7604,6 @@ <translation id="9121814364785106365">Ouvrir dans un onglet épinglé</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> mis en pause</translation> <translation id="9124003689441359348">Les mots de passe enregistrés s'afficheront ici</translation> -<translation id="9125387974662074614">M'avertir lorsque Chrome a terminé de rechercher les logiciels malveillants</translation> <translation id="9126149354162942022">Couleur du curseur</translation> <translation id="9128317794749765148">Impossible de terminer la configuration</translation> <translation id="9128335130883257666">Accéder aux paramètres pour "<ph name="INPUT_METHOD_NAME" />"</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb index da83ddec..49f07227 100644 --- a/chrome/app/resources/generated_resources_gl.xtb +++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -7597,7 +7597,6 @@ <translation id="9121814364785106365">Abrir como pestana fixada</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> púxose en pausa</translation> <translation id="9124003689441359348">Os contrasinais gardados aparecerán aquí</translation> -<translation id="9125387974662074614">Avisarme cando Chrome remate de buscar software daniño</translation> <translation id="9126149354162942022">Cor do cursor</translation> <translation id="9128317794749765148">Non se puido completar a configuración</translation> <translation id="9128335130883257666">Abrir páxina de configuración de <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb index ca19d95..eb41d482 100644 --- a/chrome/app/resources/generated_resources_gu.xtb +++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -2197,6 +2197,7 @@ <translation id="3305661444342691068">PDFને પ્રીવ્યૂમાં ખોલો</translation> <translation id="3308116878371095290">આ પૃષ્ઠને કૂકીઝ સેટ કરવાથી અટકાવવામાં આવ્યું હતું.</translation> <translation id="3308134619352333507">બટન છુપાવો</translation> +<translation id="3308681281309926497">તમે Chrome બંધ કરો ત્યાં સુધી તમે જે પણ સાઇટની મુલાકાત લો, તે તમારી માહિતી યાદ રાખી શકે છે</translation> <translation id="3308738399950580893">જાહેરાતો</translation> <translation id="3308852433423051161">Google સહાયક લોડ કરી રહ્યાં છીએ...</translation> <translation id="3309330461362844500">પ્રમાણપત્ર પ્રોફાઇલનું ID</translation> @@ -2750,6 +2751,7 @@ <translation id="3873423927483480833">પિન બતાવો</translation> <translation id="3873915545594852654">ARC++માં સમસ્યા આવી.</translation> <translation id="3874164307099183178">Google Assistant ચાલુ કરો</translation> +<translation id="3875815154304214043"><ph name="APP_NAME" />ને બ્રાઉઝરની નવી ટૅબમાં ખૂલવા માટે સેટ કરવામાં આવી છે, સંબંધિત લિંક પણ બ્રાઉઝરમાં ખૂલશે. <ph name="BEGIN_LINK_LEARN_MORE" />વધુ જાણો<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3877075909000773256"><ph name="USER_NAME" />ના ડિવાઇસ માટે નજીકના શેર સેટિંગ, <ph name="USER_EMAIL" /> એકાઉન્ટ હેઠળ શેર કરવામાં આવી રહ્યાં છે.</translation> <translation id="3879748587602334249">ડાઉનલોડ મેનેજર</translation> <translation id="3882165008614329320">કૅમેરા અથવા ફાઇલમાંથી અસ્તિત્વમાં છે તે વીડિયો</translation> @@ -3897,6 +3899,7 @@ <translation id="5157635116769074044">પ્રારંભ સ્ક્રીન પર આ પૃષ્ઠ પિન કરો...</translation> <translation id="5159094275429367735">Crostiniનું સેટઅપ કરો</translation> <translation id="5159419673777902220">તમારા માતાપિતાએ એક્સ્ટેન્શનની પરવાનગીઓ બંધ કરી દીધી છે</translation> +<translation id="5159643365935452998">ડેટા ઑટોમૅટિક રીતે સાફ કરવાની પ્રક્રિયાનો રિવ્યૂ કરો</translation> <translation id="5160634252433617617">વાસ્તવિક કીબોર્ડ</translation> <translation id="5160857336552977725">તમારા <ph name="DEVICE_TYPE" /> પર સાઇન ઇન કરો</translation> <translation id="5161251470972801814"><ph name="VENDOR_NAME" />ના USB ડિવાઇસ</translation> @@ -4461,6 +4464,7 @@ <translation id="5790651917470750848">પોર્ટ ફૉરવર્ડ પહેલેથી જ અસ્તિત્વમાં છે</translation> <translation id="5792728279623964091">કૃપા કરીને તમારા પાવર બટન પર ટૅપ કરો</translation> <translation id="5793339252089865437">જો તમે તમારા મોબાઇલ નેટવર્ક પરથી અપડેટ ડાઉનલોડ કરો છો, તો આના કારણે વધારાનો શુલ્ક વસૂલવામાં આવી શકે છે.</translation> +<translation id="5794034487966529952">ડેસ્ક <ph name="DESK_TITLE" />માં <ph name="NUM_BROWSERS" /> બ્રાઉઝર વિન્ડો ખુલ્લી છે</translation> <translation id="5794414402486823030">હંમેશા સિસ્ટમ દર્શક સાથે ખોલો</translation> <translation id="5794700615121138172">Linuxએ શેર કરેલા ફોલ્ડરો</translation> <translation id="5794786537412027208">બધી Chrome એપ્લિકેશન્સને છોડી દો</translation> @@ -7592,7 +7596,6 @@ <translation id="9121814364785106365">પિન કરેલા ટૅબ તરીકે ખોલો</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> થોભાવ્યું છે</translation> <translation id="9124003689441359348">સાચવેલા પાસવર્ડ અહીં દેખાશે</translation> -<translation id="9125387974662074614">જ્યારે Chrome હાનિકારક સૉફ્ટવેરની શોધ પૂરી કરી લે, પછી મને નોટિફિકેશન મોકલો</translation> <translation id="9126149354162942022">કર્સરનો રંગ</translation> <translation id="9128317794749765148">સેટઅપ પૂર્ણ ન થઈ શક્યું</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" /> માટેનું સેટિંગ પેજ ખોલો</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb index c69d910..63b73ae 100644 --- a/chrome/app/resources/generated_resources_hi.xtb +++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -7615,7 +7615,6 @@ <translation id="9121814364785106365">छोटे टैब के रूप में खोलें</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> को रोका गया</translation> <translation id="9124003689441359348">सहेजे गए पासवर्ड यहां दिखाई देंगे</translation> -<translation id="9125387974662074614">जब Chrome, नुकसान पहुंचाने वाले सॉफ़्टवेयर की जांच पूरी कर ले, तो मुझे सूचना दें</translation> <translation id="9126149354162942022">कर्सर का रंग</translation> <translation id="9128317794749765148">सेटअप पूरा नहीं हो सका</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" /> की सेटिंग वाला पेज खोलें</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb index b3fb7f65..b00c1a1 100644 --- a/chrome/app/resources/generated_resources_hr.xtb +++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -7603,7 +7603,6 @@ <translation id="9121814364785106365">Otvori kao pričvršćenu karticu</translation> <translation id="9122176249172999202">Preglednik <ph name="IDS_SHORT_PRODUCT_NAME" /> je pauziran</translation> <translation id="9124003689441359348">Ovdje će se pojaviti spremljene zaporke</translation> -<translation id="9125387974662074614">Pošalji mi obavijest kad Chrome završi s traženjem štetnog softvera</translation> <translation id="9126149354162942022">Boja pokazivača</translation> <translation id="9128317794749765148">Postavljanje nije dovršeno</translation> <translation id="9128335130883257666">Otvorite stranicu postavki za <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb index e1e8d4f..e5a25751 100644 --- a/chrome/app/resources/generated_resources_hu.xtb +++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -7615,7 +7615,6 @@ <translation id="9121814364785106365">Megnyitás rögzített lapként</translation> <translation id="9122176249172999202">A(z) <ph name="IDS_SHORT_PRODUCT_NAME" /> szünetel</translation> <translation id="9124003689441359348">A mentett jelszavak itt jelennek meg</translation> -<translation id="9125387974662074614">Értesítést kérek, ha a Chrome befejezte a kártékony szoftverek keresését</translation> <translation id="9126149354162942022">Kurzor színe</translation> <translation id="9128317794749765148">Nem sikerült a beállítás befejezése</translation> <translation id="9128335130883257666">Beállítási oldal megnyitása a következőhöz: <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb index 6fb663e..0096a0f 100644 --- a/chrome/app/resources/generated_resources_hy.xtb +++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -7603,7 +7603,6 @@ <translation id="9121814364785106365">Բացել որպես ամրացված ներդիր</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> հավելվածի աշխատանքը դադարեցված է</translation> <translation id="9124003689441359348">Պահված գաղտնաբառերը կցուցադրվեն այստեղ</translation> -<translation id="9125387974662074614">Ծանուցել ինձ, երբ Chrome-ն ավարտի վնասաբեր ծրագրերի որոնումը</translation> <translation id="9126149354162942022">Նշորդի գույնը</translation> <translation id="9128317794749765148">Կարգավորումը չհաջողվեց ավարտել</translation> <translation id="9128335130883257666">Բացել «<ph name="INPUT_METHOD_NAME" />» ներածման մեթոդի կարգավորումները</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb index c1d7b97..c611c27 100644 --- a/chrome/app/resources/generated_resources_id.xtb +++ b/chrome/app/resources/generated_resources_id.xtb
@@ -7617,7 +7617,6 @@ <translation id="9121814364785106365">Buka sebagai tab terpasang</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> dijeda</translation> <translation id="9124003689441359348">Sandi yang disimpan akan muncul di sini</translation> -<translation id="9125387974662074614">Beri tahu saya saat Chrome selesai memindai software berbahaya</translation> <translation id="9126149354162942022">Warna kursor</translation> <translation id="9128317794749765148">Tidak dapat menyelesaikan penyiapan</translation> <translation id="9128335130883257666">Buka halaman setelan untuk <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb index 0ea40e22..ff87d7b2 100644 --- a/chrome/app/resources/generated_resources_is.xtb +++ b/chrome/app/resources/generated_resources_is.xtb
@@ -7617,7 +7617,6 @@ <translation id="9121814364785106365">Opna sem fastan flipa</translation> <translation id="9122176249172999202">Hlé hefur verið gert á <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="9124003689441359348">Vistuð aðgangsorð birtast hér</translation> -<translation id="9125387974662074614">Tilkynna mér þegar Chrome hefur lokið leit að skaðlegum hugbúnaði</translation> <translation id="9126149354162942022">Litur bendils</translation> <translation id="9128317794749765148">Ekki tókst að ljúka við uppsetningu</translation> <translation id="9128335130883257666">Opna stillingasíðu fyrir <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb index d019466..674a502 100644 --- a/chrome/app/resources/generated_resources_it.xtb +++ b/chrome/app/resources/generated_resources_it.xtb
@@ -7601,7 +7601,6 @@ <translation id="9121814364785106365">Apri in una scheda bloccata</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> in sospeso</translation> <translation id="9124003689441359348">Le password salvate verranno visualizzate qui</translation> -<translation id="9125387974662074614">Inviami una notifica quando Chrome ha terminato la ricerca di software dannoso</translation> <translation id="9126149354162942022">Colore cursore</translation> <translation id="9128317794749765148">Impossibile completare la configurazione</translation> <translation id="9128335130883257666">Apri la pagina di impostazioni relativa a <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb index 000c121..5c354eca 100644 --- a/chrome/app/resources/generated_resources_iw.xtb +++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -2214,7 +2214,7 @@ <translation id="3305661444342691068">פתיחת PDF בתצוגה מקדימה</translation> <translation id="3308116878371095290">לא ניתן להגדיר קובצי Cookie לדף זה.</translation> <translation id="3308134619352333507">לחצן 'הסתרה'</translation> -<translation id="3308681281309926497">האתרים שבהם ביקרת יכולים בכל זאת לזכור את הפרטים שלך עד לסגירת דפדפן Chrome</translation> +<translation id="3308681281309926497">האתרים שבהם ביקרת ישמרו את המידע לגביך עד לסגירת Chrome</translation> <translation id="3308738399950580893">מודעות</translation> <translation id="3308852433423051161">טעינת Google Assistant מתבצעת...</translation> <translation id="3309330461362844500">מזהה פרופיל האישור</translation> @@ -2768,7 +2768,7 @@ <translation id="3873423927483480833">הצגת קודי אימות</translation> <translation id="3873915545594852654">התרחשה בעיה הקשורה ל-ARC++.</translation> <translation id="3874164307099183178">הפעלת Google Assistant</translation> -<translation id="3875815154304214043">האפליקציה <ph name="APP_NAME" /> הוגדרה כך שתיפתח בכרטיסייה חדשה בדפדפן. גם קישורים נתמכים ייפתחו בדפדפן. <ph name="BEGIN_LINK_LEARN_MORE" />למידע נוסף<ph name="END_LINK_LEARN_MORE" /></translation> +<translation id="3875815154304214043">האפליקציה <ph name="APP_NAME" /> הוגדרה כך שתיפתח בכרטיסייה חדשה בדפדפן. גם הקישורים הנתמכים ייפתחו בדפדפן. <ph name="BEGIN_LINK_LEARN_MORE" />למידע נוסף<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3877075909000773256">הגדרות שיתוף בקרבת מקום למכשיר של <ph name="USER_NAME" />. השיתוף יתבצע בשם <ph name="USER_EMAIL" />.</translation> <translation id="3879748587602334249">מנהל ההורדות</translation> <translation id="3882165008614329320">סרטון קיים ממצלמה או מקובץ</translation> @@ -3917,7 +3917,7 @@ <translation id="5157635116769074044">הצמדה של הדף למסך הפתיחה…</translation> <translation id="5159094275429367735">הגדרת Crostini</translation> <translation id="5159419673777902220">ההרשאות של התוסף הושבתו על ידי ההורה שלך</translation> -<translation id="5159643365935452998">בדיקת ההגדרות של ניקוי הנתונים האוטומטי</translation> +<translation id="5159643365935452998">בדיקת ההגדרות של מחיקת הנתונים האוטומטית</translation> <translation id="5160634252433617617">מקלדת פיזית</translation> <translation id="5160857336552977725">יש להיכנס אל ה-<ph name="DEVICE_TYPE" /></translation> <translation id="5161251470972801814">התקני USB של <ph name="VENDOR_NAME" /></translation> @@ -7620,7 +7620,6 @@ <translation id="9121814364785106365">פתיחה ככרטיסייה מוצמדת</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> הושהה</translation> <translation id="9124003689441359348">כאן יופיעו הסיסמאות ששמרת</translation> -<translation id="9125387974662074614">אני רוצה לקבל הודעה כש-Chrome יסיים לחפש תוכנות מזיקות</translation> <translation id="9126149354162942022">צבע הסמן</translation> <translation id="9128317794749765148">לא ניתן היה להשלים את ההגדרה</translation> <translation id="9128335130883257666">פתיחת דף ההגדרות של <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb index 2639585..6318420 100644 --- a/chrome/app/resources/generated_resources_ja.xtb +++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -7599,7 +7599,6 @@ <translation id="9121814364785106365">固定されたタブとして開く</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> は一時停止中</translation> <translation id="9124003689441359348">保存したパスワードがここに表示されます</translation> -<translation id="9125387974662074614">Chrome で有害なソフトウェアの検索が完了したときに通知を受け取る</translation> <translation id="9126149354162942022">カーソルの色</translation> <translation id="9128317794749765148">セットアップを完了できませんでした</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" /> の設定ページを開く</translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb index 029fcc4..acfe482 100644 --- a/chrome/app/resources/generated_resources_ka.xtb +++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -7599,7 +7599,6 @@ <translation id="9121814364785106365">გახსნა ჩამაგრებული ჩანართის სახით</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> დაპაუზებულია</translation> <translation id="9124003689441359348">შენახული პაროლები აქ გამოჩნდება</translation> -<translation id="9125387974662074614">შეტყობინება Chrome-ის მიერ საზიანო პროგრამული უზრუნველყოფის ძიების დასრულების შესახებ</translation> <translation id="9126149354162942022">კურსორის ფერი</translation> <translation id="9128317794749765148">დაყენება ვერ შესრულდა</translation> <translation id="9128335130883257666">პარამეტრების გვერდის გახსნა შემდეგისთვის: <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb index 7331031e3..0e5f1e2 100644 --- a/chrome/app/resources/generated_resources_kk.xtb +++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -2195,7 +2195,7 @@ <translation id="3305661444342691068">PDF файлын алдын ала қарау қолданбасында ашу</translation> <translation id="3308116878371095290">Бұл бетке cookie файлдарын орнатуға тыйым салынды.</translation> <translation id="3308134619352333507">Түймені жасыру</translation> -<translation id="3308681281309926497">Сіз кіретін сайттар Chrome жабылмағанша ақпараттарыңызды есте сақтауы мүмкін.</translation> +<translation id="3308681281309926497">Кірген сайттар ақпаратыңызды Chrome жабылғанша есте сақтап тұрады.</translation> <translation id="3308738399950580893">жарнамалар</translation> <translation id="3308852433423051161">Google Assistant жүктелуде…</translation> <translation id="3309330461362844500">Сертификат профилінің идентификаторы</translation> @@ -7595,7 +7595,6 @@ <translation id="9121814364785106365">Бекітілген қойынды ретінде ашу</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> кідіртілді</translation> <translation id="9124003689441359348">Сақталған құпия сөздер мына жерге шығады</translation> -<translation id="9125387974662074614">Chrome компьютерде зиянды бағдарламалық құралдарды іздеп болғасын маған хабарландыру келсін.</translation> <translation id="9126149354162942022">Көрсеткі түсі</translation> <translation id="9128317794749765148">Реттеу аяқталмады</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" /> енгізу әдісіне арналған параметрлер бетін ашу</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb index 71ea1e4a..5403415d 100644 --- a/chrome/app/resources/generated_resources_km.xtb +++ b/chrome/app/resources/generated_resources_km.xtb
@@ -7616,7 +7616,6 @@ <translation id="9121814364785106365">បើកជាផ្ទាំងដែលបានដៅ</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> ត្រូវបានផ្អាក</translation> <translation id="9124003689441359348">ពាក្យសម្ងាត់ដែលបានរក្សាទុកនឹងបង្ហាញនៅទីនេះ</translation> -<translation id="9125387974662074614">ជូនដំណឹងដល់ខ្ញុំ នៅពេល Chrome បានបញ្ចប់ការស្វែងរកកម្មវិធីបង្កគ្រោះថ្នាក់</translation> <translation id="9126149354162942022">ពណ៌ទស្សន៍ទ្រនិច</translation> <translation id="9128317794749765148">មិនអាចបញ្ចប់ការរៀបចំបានទេ</translation> <translation id="9128335130883257666">បើកទំព័រការកំណត់សម្រាប់ <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb index 5db3566..d10d08e 100644 --- a/chrome/app/resources/generated_resources_kn.xtb +++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -7609,7 +7609,6 @@ <translation id="9121814364785106365">ಪಿನ್ ಮಾಡಿದ ಟ್ಯಾಬ್ ಆಗಿ ತೆರೆ</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> ಅನ್ನು ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ</translation> <translation id="9124003689441359348">ಉಳಿಸಲಾದ ಪಾಸ್ವರ್ಡ್ಗಳು ಇಲ್ಲಿ ಗೋಚರಿಸುತ್ತವೆ</translation> -<translation id="9125387974662074614">Chrome ಹಾನಿಕಾರಕ ಸಾಫ್ಟ್ವೇರ್ಗಾಗಿ ಹುಡುಕಾಟ ಮಾಡಿದ ನಂತರ, ನನಗೆ ಸೂಚಿಸಿ</translation> <translation id="9126149354162942022">ಕರ್ಸರ್ನ ಬಣ್ಣ</translation> <translation id="9128317794749765148">ಸೆಟಪ್ ಮಾಡುವಿಕೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" /> ಗಾಗಿ ಸೆಟ್ಟಿಂಗ್ಗಳ ಪುಟವನ್ನು ತೆರೆಯಿರಿ</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb index 3fa76ae09..238fae3 100644 --- a/chrome/app/resources/generated_resources_ko.xtb +++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -7614,7 +7614,6 @@ <translation id="9121814364785106365">고정 탭으로 열기</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" />이(가) 일시중지됨</translation> <translation id="9124003689441359348">저장한 비밀번호가 여기에 표시됩니다.</translation> -<translation id="9125387974662074614">Chrome에서 유해 소프트웨어 검색을 완료하면 알림</translation> <translation id="9126149354162942022">커서 색상</translation> <translation id="9128317794749765148">설정을 완료할 수 없음</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" />의 설정 페이지 열기</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb index cbabbfea..14d26d28 100644 --- a/chrome/app/resources/generated_resources_ky.xtb +++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -7616,7 +7616,6 @@ <translation id="9121814364785106365">Кадалган өтмөк катары ачуу</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> тындырылды</translation> <translation id="9124003689441359348">Сакталган сырсөздөр бул жерде көрүнөт</translation> -<translation id="9125387974662074614">Chrome зыяндуу программаларды издеп бүткөндө, мага кабарлансын</translation> <translation id="9126149354162942022">Курсордун түсү</translation> <translation id="9128317794749765148">Жөндөө аягына чыккан жок</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" /> жөндөөлөрүнүн барагын ачуу</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb index f4bb901b..b08ee70 100644 --- a/chrome/app/resources/generated_resources_lo.xtb +++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -7612,7 +7612,6 @@ <translation id="9121814364785106365">ເປີດເປັນແຖບປັກໝຸດແລ້ວ</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> ຖືກຢຸດໄວ້ຊົ່ວຄາວ</translation> <translation id="9124003689441359348">ລະຫັດຜ່ານທີ່ບັນທຶກໄວ້ຈະປາກົດຢູ່ບ່ອນນີ້</translation> -<translation id="9125387974662074614">ແຈ້ງບອກຂ້ອຍເມື່ອ Chrome ສຳເລັດການຊອກຫາຊອບແວອັນຕະລາຍ</translation> <translation id="9126149354162942022">ສີເຄີເຊີ</translation> <translation id="9128317794749765148">ບໍ່ສາມາດເຮັດສຳເລັດການຕັ້ງຄ່າໄດ້</translation> <translation id="9128335130883257666">ເປີດໜ້າການຕັ້ງຄ່າສຳລັບ <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb index cd7a5cf..80ffc7f 100644 --- a/chrome/app/resources/generated_resources_lt.xtb +++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -7624,7 +7624,6 @@ <translation id="9121814364785106365">Atidaryti kaip susegtą skirtuką</translation> <translation id="9122176249172999202">„<ph name="IDS_SHORT_PRODUCT_NAME" />“ pristabdyta</translation> <translation id="9124003689441359348">Išsaugoti slaptažodžiai bus rodomi čia</translation> -<translation id="9125387974662074614">Informuoti mane, kai „Chrome“ baigs ieškoti žalingos programinės įrangos</translation> <translation id="9126149354162942022">Žymeklio spalva</translation> <translation id="9128317794749765148">Nepavyko užbaigti nustatymo proceso</translation> <translation id="9128335130883257666">Atidaryti nustatymų puslapį, skirtą <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb index 57af546..8e4adbc 100644 --- a/chrome/app/resources/generated_resources_lv.xtb +++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -7603,7 +7603,6 @@ <translation id="9121814364785106365">Atvērt kā piespraustu cilni</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> darbība ir apturēta</translation> <translation id="9124003689441359348">Šeit tiks parādītas saglabātās paroles.</translation> -<translation id="9125387974662074614">Paziņot man, kad pārlūks Chrome ir beidzis meklēt nevēlamu programmatūru</translation> <translation id="9126149354162942022">Kursora krāsa</translation> <translation id="9128317794749765148">Nevarēja pabeigt iestatīšanu</translation> <translation id="9128335130883257666">Atvērt ievades metodes “<ph name="INPUT_METHOD_NAME" />” iestatījumu lapu</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb index 70687ced..9c289c1 100644 --- a/chrome/app/resources/generated_resources_mk.xtb +++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -7621,7 +7621,6 @@ <translation id="9121814364785106365">Отвори како прикачена картичка</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> е на пауза</translation> <translation id="9124003689441359348">Зачуваните лозинки ќе се појават тука</translation> -<translation id="9125387974662074614">Извести ме кога Chrome ќе заврши со пребарување штетен софтвер</translation> <translation id="9126149354162942022">Боја на курсор</translation> <translation id="9128317794749765148">Поставувањето не може да се заврши</translation> <translation id="9128335130883257666">Отворете ја страницата со поставки за <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb index 74ebb78..641352bc 100644 --- a/chrome/app/resources/generated_resources_ml.xtb +++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -7599,7 +7599,6 @@ <translation id="9121814364785106365">പിന് ചെയ്ത ടാബായി തുറക്കുക</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> താൽക്കാലികമായി നിർത്തി</translation> <translation id="9124003689441359348">സംരക്ഷിച്ച പാസ്വേഡുകൾ ഇവിടെ ദൃശ്യമാകും</translation> -<translation id="9125387974662074614">ദോഷകരമായ സോഫ്റ്റ്വെയർ കണ്ടെത്താനുള്ള തിരയൽ Chrome പൂർത്തിയാക്കുമ്പോൾ എന്നെ അറിയിക്കുക</translation> <translation id="9126149354162942022">കഴ്സറിന്റെ നിറം</translation> <translation id="9128317794749765148">സജ്ജീകരണം പൂർത്തിയാക്കാനായില്ല</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" /> എന്നതിനുള്ള ക്രമീകരണ പേജ് തുറക്കുക</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb index 40fa3a8..2b1b5970 100644 --- a/chrome/app/resources/generated_resources_mn.xtb +++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -7607,7 +7607,6 @@ <translation id="9121814364785106365">Тусгайлан сонгосон цонх хэлбэрээр нээх</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" />-г түр зогсоосон</translation> <translation id="9124003689441359348">Хадгалсан нууц үг энд харагдана</translation> -<translation id="9125387974662074614">Chrome-г хортой программ хангамж хайж дууссаны дараа надад мэдэгдэнэ үү</translation> <translation id="9126149354162942022">Курсорын өнгө</translation> <translation id="9128317794749765148">Тохируулгыг дуусгаж чадсангүй</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" />-н тохиргооны хуудсыг нээнэ үү</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb index 84cb34f8..5c3198d 100644 --- a/chrome/app/resources/generated_resources_mr.xtb +++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -2213,6 +2213,7 @@ <translation id="3305661444342691068">पूर्वावलोकनात पीडीएफ उघडा</translation> <translation id="3308116878371095290">हे पृष्ठ कुकीज सेट करण्यापासून प्रतिबंधित केलेले होते.</translation> <translation id="3308134619352333507">बटण लपवा</translation> +<translation id="3308681281309926497">तुम्ही भेट देत असलेल्या साइट तुम्ही Chrome बंद करेपर्यंत तुमची माहिती लक्षात ठेवू शकतात</translation> <translation id="3308738399950580893">जाहिराती</translation> <translation id="3308852433423051161">Google साहाय्यक लोड करत आहे...</translation> <translation id="3309330461362844500">सर्टिफिकेट प्रोफाइल आयडी</translation> @@ -2766,6 +2767,7 @@ <translation id="3873423927483480833">पिन दाखवा</translation> <translation id="3873915545594852654">ARC++ ला समस्या आली.</translation> <translation id="3874164307099183178">Google Assistant सुरू करा</translation> +<translation id="3875815154304214043"><ph name="APP_NAME" /> हे नवीन ब्राउझर टॅबमध्ये उघडण्यासाठी सेट केले आहे, सपोर्ट असलेल्या लिंकदेखील ब्राउझरमध्ये उघडतील. <ph name="BEGIN_LINK_LEARN_MORE" />अधिक जाणून घ्या<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3877075909000773256"><ph name="USER_NAME" /> च्या डिव्हाइससाठी Nearby सह शेअरिंग सेटिंग्ज. या शेअरिंगसाठी <ph name="USER_EMAIL" /> खाते वापरत आहे.</translation> <translation id="3879748587602334249">डाउनलोड व्यवस्थापक</translation> <translation id="3882165008614329320">कॅमेरा किंवा फाइलवरून सद्य व्हिडिओ</translation> @@ -3912,6 +3914,7 @@ <translation id="5157635116769074044">हे पृष्ठ सुरू स्क्रीनवर पिन करा...</translation> <translation id="5159094275429367735">Crostini सेट करा</translation> <translation id="5159419673777902220">तुमच्या पालकाने एक्स्टेंशन परवानग्या बंद केल्या आहेत</translation> +<translation id="5159643365935452998">आपोआप डेटा क्लिअरिंगचे पुनरावलोकन करा</translation> <translation id="5160634252433617617">वास्तविक कीबोर्ड</translation> <translation id="5160857336552977725">आपल्या <ph name="DEVICE_TYPE" /> वर साइन इन करा</translation> <translation id="5161251470972801814"><ph name="VENDOR_NAME" /> कडील USB डिव्हाइस</translation> @@ -4475,6 +4478,7 @@ <translation id="5790651917470750848">पोर्ट फॉरवर्ड आधीपासून अस्तित्वात आहे</translation> <translation id="5792728279623964091">कृपया तुमच्या पॉवर बटणावर टॅप करा</translation> <translation id="5793339252089865437">तुम्ही तुमच्या मोबाइल नेटवर्कवरून अपडेट डाउनलोड केल्यास, याचा परिणाम म्हणून अतिरिक्त शुल्क आकारले जाऊ शकते.</translation> +<translation id="5794034487966529952">डेस्क <ph name="DESK_TITLE" /> वर <ph name="NUM_BROWSERS" /> ब्राउझर विंडो सुरू आहेत</translation> <translation id="5794414402486823030">नेहमी सिस्टम दर्शकासह उघडा</translation> <translation id="5794700615121138172">Linux ने शेअर केलेले फोल्डर</translation> <translation id="5794786537412027208">सर्व Chrome Apps मधून बाहेर पडा</translation> @@ -7610,7 +7614,6 @@ <translation id="9121814364785106365">पिन केलेला टॅब म्हणून उघडा</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> थांबवले आहे</translation> <translation id="9124003689441359348">सेव्ह केलेले पासवर्ड येथे दिसून येतील</translation> -<translation id="9125387974662074614">Chrome हे हानिकारक सॉफ्टवेअर शोधणे पूर्ण करते तेव्हा मला सूचित करा</translation> <translation id="9126149354162942022">कर्सर रंग</translation> <translation id="9128317794749765148">सेट करणे पूर्ण करू शकलो नाही</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" /> साठी सेटिंग्ज पेज उघडा</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb index 03c17e49..97cc146 100644 --- a/chrome/app/resources/generated_resources_ms.xtb +++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -7618,7 +7618,6 @@ <translation id="9121814364785106365">Buka sebagai tab dipin</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> dijeda</translation> <translation id="9124003689441359348">Kata laluan yang disimpan akan kelihatan di sini</translation> -<translation id="9125387974662074614">Beritahu saya apabila Chrome sudah selesai mencari perisian berbahaya</translation> <translation id="9126149354162942022">Warna kursor</translation> <translation id="9128317794749765148">Persediaan tidak dapat diselesaikan</translation> <translation id="9128335130883257666">Buka halaman tetapan untuk <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb index ab6e91bc..b2c944cf 100644 --- a/chrome/app/resources/generated_resources_my.xtb +++ b/chrome/app/resources/generated_resources_my.xtb
@@ -7611,7 +7611,6 @@ <translation id="9121814364785106365">ပင်ထိုးထား တဘ် အဖြစ် ဖွင့်ရန်</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> ကို ခေတ္တရပ်ထားသည်</translation> <translation id="9124003689441359348">သိမ်းဆည်းထားသော စကားဝှက်များကို ဤနေရာတွင် တွေ့ရပါမည်</translation> -<translation id="9125387974662074614">Chrome က အန္တရာယ်ဆော့ဖ်ဝဲကို ရှာဖွေ၍ပြီးသောအခါ အကြောင်းကြားရန်</translation> <translation id="9126149354162942022">ကာဆာအရောင်</translation> <translation id="9128317794749765148">စနစ်ထည့်သွင်းမှုကို အပြီးသတ်၍မရပါ</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" /> အတွက် ဆက်တင်များစာမျက်နှာကို ဖွင့်ပေးသည်</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb index 9966791..ff87289 100644 --- a/chrome/app/resources/generated_resources_ne.xtb +++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -7596,7 +7596,6 @@ <translation id="9121814364785106365">छापिएको ट्याबको रूपमा खोल्नुहोस्</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> पज गरिएको छ</translation> <translation id="9124003689441359348">सुरक्षित गरिएका पासवर्डहरू यहाँ देखिनेछन्</translation> -<translation id="9125387974662074614">Chrome ले हानिकारक सफ्टवेयर खोज्ने कार्य पूरा गरिसकेपछि मलाई सूचित गरियोस्</translation> <translation id="9126149354162942022">कर्सरको रङ</translation> <translation id="9128317794749765148">सेटअप सम्पन्न हुन सकेन</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" /> को सेटिङ पृष्ठ खोल्नुहोस्</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb index b4049d3..02e08df 100644 --- a/chrome/app/resources/generated_resources_nl.xtb +++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -7597,7 +7597,6 @@ <translation id="9121814364785106365">Openen als vastgezet tabblad</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> is onderbroken</translation> <translation id="9124003689441359348">Opgeslagen wachtwoorden zie je hier</translation> -<translation id="9125387974662074614">Melding laten zien als Chrome klaar is met zoeken naar schadelijke software</translation> <translation id="9126149354162942022">Kleur van cursor</translation> <translation id="9128317794749765148">Installatie is niet voltooid</translation> <translation id="9128335130883257666">Instellingenpagina openen voor <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb index f1e1399c1..d59fbca9 100644 --- a/chrome/app/resources/generated_resources_no.xtb +++ b/chrome/app/resources/generated_resources_no.xtb
@@ -7607,7 +7607,6 @@ <translation id="9121814364785106365">Åpne som festet fane</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> er satt på pause</translation> <translation id="9124003689441359348">Lagrede passord vises her</translation> -<translation id="9125387974662074614">Varsle meg når Chrome er ferdig med å søke etter skadelig programvare</translation> <translation id="9126149354162942022">Markørfarge</translation> <translation id="9128317794749765148">Kunne ikke fullføre konfigureringen</translation> <translation id="9128335130883257666">Åpne innstillingssiden for <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb index bc02fe8..a64ec7b 100644 --- a/chrome/app/resources/generated_resources_or.xtb +++ b/chrome/app/resources/generated_resources_or.xtb
@@ -7598,7 +7598,6 @@ <translation id="9121814364785106365">ଏକ ପିନ୍ କରାଯାଇଥିବା ଟାବ୍ରୂପେ ଖୋଲନ୍ତୁ</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" />କୁ ବିରତ କରାଯାଇଛି</translation> <translation id="9124003689441359348">ସେଭ୍ ଥିବା ପାସ୍ୱର୍ଡ ଏଠାରେ ଦେଖାଯିବ।</translation> -<translation id="9125387974662074614">Chrome କ୍ଷତିକାରକ ସଫ୍ଟୱେର୍ ପାଇଁ ଯାଞ୍ଚ ସମ୍ପୂର୍ଣ୍ଣ କଲେ ମୋତେ ସୂଚିତ କରନ୍ତୁ</translation> <translation id="9126149354162942022">କର୍ସରର ରଙ୍ଗ</translation> <translation id="9128317794749765148">ସେଟ୍ଅପ୍ ସମ୍ପୂର୍ଣ୍ଣ କରାଯାଇ ପାରିଲା ନାହିଁ</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" /> ପାଇଁ ସେଟିଂସ୍ ପୃଷ୍ଠା ଖୋଲନ୍ତୁ</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb index 154b0f8..a167ab65 100644 --- a/chrome/app/resources/generated_resources_pa.xtb +++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -2214,6 +2214,7 @@ <translation id="3305661444342691068">ਪ੍ਰੀਵਿਊ ਵਿੱਚ PDF ਖੋਲ੍ਹੋ</translation> <translation id="3308116878371095290">ਇਸ ਸਫ਼ੇ ਨੂੰ ਕੁਕੀਜ਼ ਸੈਟ ਕਰਨ ਤੋਂ ਰੋਕਿਆ ਗਿਆ ਸੀ।</translation> <translation id="3308134619352333507">ਬਟਨ ਲੁਕਾਓ</translation> +<translation id="3308681281309926497">ਜਿਨ੍ਹਾਂ ਸਾਈਟਾਂ 'ਤੇ ਤੁਸੀਂ ਜਾਂਦੇ ਹੋ ਉਹ ਤੁਹਾਡੀ ਜਾਣਕਾਰੀ ਨੂੰ ਉਦੋਂ ਤੱਕ ਯਾਦ ਰੱਖ ਸਕਦੀਆਂ ਹਨ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ Chrome ਨੂੰ ਬੰਦ ਨਹੀਂ ਕਰਦੇ</translation> <translation id="3308738399950580893">ਵਿਗਿਆਪਨ</translation> <translation id="3308852433423051161">Google Assistant ਲੋਡ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ...</translation> <translation id="3309330461362844500">ਪ੍ਰਮਾਣ-ਪੱਤਰ ਵਾਲੀ ਪ੍ਰੋਫਾਈਲ ਆਈਡੀ</translation> @@ -2767,6 +2768,7 @@ <translation id="3873423927483480833">ਪਿੰਨਾਂ ਦਿਖਾਓ</translation> <translation id="3873915545594852654">ARC++ ਵਿੱਚ ਕੋਈ ਸਮੱਸਿਆ ਆਈ।</translation> <translation id="3874164307099183178">Google Assistant ਨੂੰ ਚਾਲੂ ਕਰੋ</translation> +<translation id="3875815154304214043"><ph name="APP_NAME" /> ਕਿਸੇ ਨਵੀਂ ਬ੍ਰਾਊਜ਼ਰ ਟੈਬ ਵਿੱਚ ਖੋਲ੍ਹੇ ਜਾਣ ਲਈ ਤਿਆਰ ਹੈ, ਸਹਾਇਤਾ ਲਈ ਲਿੰਕ ਵੀ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਹੀ ਖੁੱਲ੍ਹਣਗੇ। <ph name="BEGIN_LINK_LEARN_MORE" />ਹੋਰ ਜਾਣੋ<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3877075909000773256"><ph name="USER_NAME" /> ਦੇ ਡੀਵਾਈਸ ਲਈ 'ਨਜ਼ਦੀਕੀ ਸਾਂਝ' ਸੈਟਿੰਗਾਂ ਨੂੰ, <ph name="USER_EMAIL" /> ਖਾਤੇ ਦੇ ਅਧੀਨ ਸਾਂਝਾ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।</translation> <translation id="3879748587602334249">ਡਾਊਨਲੋਡ ਪ੍ਰਬੰਧਕ</translation> <translation id="3882165008614329320">ਕੈਮਰੇ ਜਾਂ ਫ਼ਾਈਲ ਤੋਂ ਮੌਜੂਦਾ ਵੀਡੀਓ</translation> @@ -3915,6 +3917,7 @@ <translation id="5157635116769074044">ਸਟਾਰਟ ਸਕ੍ਰੀਨ ਲਈ ਇਹ ਸਫ਼ਾ ਪਿਨ ਕਰੋ...</translation> <translation id="5159094275429367735">Crostini ਦਾ ਸੈੱਟਅੱਪ ਕਰੋ</translation> <translation id="5159419673777902220">ਤੁਹਾਡੇ ਮਾਂ-ਪਿਓ ਨੇ ਐਕਸਟੈਂਸ਼ਨ ਸੰਬੰਧੀ ਇਜਾਜ਼ਤਾਂ ਨੂੰ ਬੰਦ ਕਰ ਦਿੱਤਾ ਹੈ</translation> +<translation id="5159643365935452998">ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਡਾਟਾ ਕਲੀਅਰ ਕਰਨ ਦੀ ਸਮੀਖਿਆ ਕਰੋ</translation> <translation id="5160634252433617617">ਭੌਤਿਕ ਕੀ-ਬੋਰਡ</translation> <translation id="5160857336552977725">ਆਪਣੇ <ph name="DEVICE_TYPE" /> 'ਤੇ ਸਾਈਨ-ਇਨ ਕਰੋ</translation> <translation id="5161251470972801814"><ph name="VENDOR_NAME" /> ਦੇ USB ਡੀਵਾਈਸ</translation> @@ -4478,6 +4481,7 @@ <translation id="5790651917470750848">ਪੋਰਟ ਫਾਰਵਰਡ ਪਹਿਲਾਂ ਤੋਂ ਹੀ ਮੌਜੂਦ ਹੈ</translation> <translation id="5792728279623964091">ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਪਾਵਰ ਬਟਨ 'ਤੇ ਟੈਪ ਕਰੋ</translation> <translation id="5793339252089865437">ਜੇਕਰ ਤੁਸੀਂ ਆਪਣੇ ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ 'ਤੇ ਅੱਪਡੇਟ ਡਾਊਨਲੋਡ ਕਰਦੇ ਹੋ, ਤਾਂ ਵਾਧੂ ਖਰਚੇ ਲਏ ਜਾ ਸਕਦੇ ਹਨ।</translation> +<translation id="5794034487966529952">ਡੈਸਕ <ph name="DESK_TITLE" /> ਵਿੱਚ <ph name="NUM_BROWSERS" /> ਬ੍ਰਾਊਜ਼ਰ ਵਿੰਡੋਆਂ ਖੁੱਲ੍ਹੀਆਂ ਹਨ</translation> <translation id="5794414402486823030">ਹਮੇਸ਼ਾਂ ਸਿਸਟਮ ਵਿਊਅਰ ਨਾਲ ਖੋਲ੍ਹੋ</translation> <translation id="5794700615121138172">Linux ਸਾਂਝੇ ਕੀਤੇ ਫੋਲਡਰ</translation> <translation id="5794786537412027208">ਸਾਰੀਆਂ Chrome ਐਪਾਂ ਛੱਡੋ</translation> @@ -7613,7 +7617,6 @@ <translation id="9121814364785106365">ਪਿੰਨ ਕੀਤੀ ਟੈਬ ਦੇ ਤੌਰ ਤੇ ਖੋਲ੍ਹੋ</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> ਰੋਕਿਆ ਗਿਆ</translation> <translation id="9124003689441359348">ਰੱਖਿਅਤ ਕੀਤੇ ਪਾਸਵਰਡ ਇੱਥੇ ਵਿਖਾਈ ਦੇਣਗੇ</translation> -<translation id="9125387974662074614">ਜਦੋਂ Chrome ਹਾਨੀਕਾਰਕ ਸਾਫ਼ਟਵੇਅਰ ਦੀ ਖੋਜ ਪੂਰੀ ਕਰ ਲਵੇ, ਤਾਂ ਮੈਨੂੰ ਸੂਚਿਤ ਕਰੋ</translation> <translation id="9126149354162942022">ਕਰਸਰ ਦਾ ਰੰਗ</translation> <translation id="9128317794749765148">ਸੈੱਟਅੱਪ ਪੂਰਾ ਨਹੀਂ ਹੋ ਸਕਿਆ</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" /> ਲਈ ਸੈਟਿੰਗਾਂ ਪੰਨਾ ਖੋਲ੍ਹੋ</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb index 0811363..110190b 100644 --- a/chrome/app/resources/generated_resources_pl.xtb +++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -7597,7 +7597,6 @@ <translation id="9121814364785106365">Otwórz jako przypiętą kartę</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> – wstrzymano</translation> <translation id="9124003689441359348">Tutaj pojawią się zapisane hasła</translation> -<translation id="9125387974662074614">Powiadom mnie, gdy Chrome skończy sprawdzać komputer pod kątem szkodliwego oprogramowania</translation> <translation id="9126149354162942022">Kolor kursora</translation> <translation id="9128317794749765148">Nie udało się ukończyć konfiguracji</translation> <translation id="9128335130883257666">Otwórz stronę ustawień metody wprowadzania: <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb index dfeacbc4..3c0d794 100644 --- a/chrome/app/resources/generated_resources_pt-BR.xtb +++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -7621,7 +7621,6 @@ <translation id="9121814364785106365">Abrir como guia fixada</translation> <translation id="9122176249172999202">O <ph name="IDS_SHORT_PRODUCT_NAME" /> está pausado</translation> <translation id="9124003689441359348">As senhas salvas aparecerão aqui</translation> -<translation id="9125387974662074614">Enviar uma notificação quando o Chrome terminar de procurar softwares nocivos</translation> <translation id="9126149354162942022">Cor do cursor</translation> <translation id="9128317794749765148">Não foi possível concluir a configuração</translation> <translation id="9128335130883257666">Abrir página de configurações de <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb index 068729e..a95fc30 100644 --- a/chrome/app/resources/generated_resources_pt-PT.xtb +++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -7603,7 +7603,6 @@ <translation id="9121814364785106365">Abrir como separador fixo</translation> <translation id="9122176249172999202">O <ph name="IDS_SHORT_PRODUCT_NAME" /> foi colocado em pausa</translation> <translation id="9124003689441359348">As palavras-passe guardadas aparecem aqui</translation> -<translation id="9125387974662074614">Notificar-me quando o Chrome tiver terminado a pesquisa de software prejudicial</translation> <translation id="9126149354162942022">Cor do cursor</translation> <translation id="9128317794749765148">Não foi possível concluir a configuração</translation> <translation id="9128335130883257666">Abrir página de definições para <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb index 2938c16..c63570f 100644 --- a/chrome/app/resources/generated_resources_ro.xtb +++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -7601,7 +7601,6 @@ <translation id="9121814364785106365">Deschide ca filă fixată</translation> <translation id="9122176249172999202">Aplicația <ph name="IDS_SHORT_PRODUCT_NAME" /> este întreruptă</translation> <translation id="9124003689441359348">Parolele salvate vor fi afișate aici</translation> -<translation id="9125387974662074614">Anunță-mă când Chrome termină de căutat software dăunător</translation> <translation id="9126149354162942022">Culoarea cursorului</translation> <translation id="9128317794749765148">Nu s-a putut finaliza configurarea</translation> <translation id="9128335130883257666">Deschide pagina de setări pentru <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb index 607c3e2..3e6568d 100644 --- a/chrome/app/resources/generated_resources_ru.xtb +++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -7603,7 +7603,6 @@ <translation id="9121814364785106365">Открыть в закрепленной вкладке</translation> <translation id="9122176249172999202">Работа приложения "<ph name="IDS_SHORT_PRODUCT_NAME" />" приостановлена</translation> <translation id="9124003689441359348">Здесь появятся сохраненные пароли</translation> -<translation id="9125387974662074614">Получить уведомление об окончании проверки на наличие вредоносного ПО</translation> <translation id="9126149354162942022">Цвет курсора</translation> <translation id="9128317794749765148">Не удалось завершить установку</translation> <translation id="9128335130883257666">Открыть страницу настроек для способа ввода "<ph name="INPUT_METHOD_NAME" />"</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb index c2f487f..2ec56c4 100644 --- a/chrome/app/resources/generated_resources_si.xtb +++ b/chrome/app/resources/generated_resources_si.xtb
@@ -7600,7 +7600,6 @@ <translation id="9121814364785106365">රැඳවූ ටැබයක් ලෙස විවෘත කරන්න</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> විරාම කෙරේ</translation> <translation id="9124003689441359348">සුරැකි මුරපද මෙහි දිස් වනු ඇත</translation> -<translation id="9125387974662074614">Chrome හානිකර මෘදුකාංග සඳහා සෙවීම අවසන් කළ විට මට දන්වන්න</translation> <translation id="9126149354162942022">කර්සරයේ වර්ණය</translation> <translation id="9128317794749765148">සැකසීම සම්පූර්ණ කළ නොහැකි විය</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" /> සඳහා සැකසීම් පිටුව විවෘත කරන්න</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb index c64db27c..df693182 100644 --- a/chrome/app/resources/generated_resources_sk.xtb +++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -7604,7 +7604,6 @@ <translation id="9121814364785106365">Otvoriť ako pevnú kartu</translation> <translation id="9122176249172999202">Aplikácia <ph name="IDS_SHORT_PRODUCT_NAME" /> je pozastavená</translation> <translation id="9124003689441359348">Tu sa zobrazia uložené heslá</translation> -<translation id="9125387974662074614">Upozorňovať ma, keď Chrome dokončí vyhľadávanie škodlivého softvéru</translation> <translation id="9126149354162942022">Farba kurzora</translation> <translation id="9128317794749765148">Nastavenie sa nepodarilo dokončiť</translation> <translation id="9128335130883257666">Otvoriť nastavenia stránky pre <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb index 988e9b5..3987da39 100644 --- a/chrome/app/resources/generated_resources_sl.xtb +++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -7625,7 +7625,6 @@ <translation id="9121814364785106365">Odpri na pripetem zavihku</translation> <translation id="9122176249172999202">Aplikacija <ph name="IDS_SHORT_PRODUCT_NAME" /> je začasno zaustavljena</translation> <translation id="9124003689441359348">Shranjena gesla bodo prikazana tukaj</translation> -<translation id="9125387974662074614">Obvesti me, ko Chrome neha iskati škodljivo programsko opremo.</translation> <translation id="9126149354162942022">Barva kazalca</translation> <translation id="9128317794749765148">Nastavitve ni bilo mogoče dokončati</translation> <translation id="9128335130883257666">Odpiranje strani z nastavitvami za način vnosa <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb index 9ba1df1..9a46698 100644 --- a/chrome/app/resources/generated_resources_sq.xtb +++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -2196,6 +2196,7 @@ <translation id="3305661444342691068">Hap PDF-në në pamjen paraprake</translation> <translation id="3308116878371095290">Kjo faqe u parandalua që të vendosë kuki.</translation> <translation id="3308134619352333507">Fshihe butonin</translation> +<translation id="3308681281309926497">Sajtet që viziton mund t'i kujtojnë përsëri informacionet e tua derisa ta mbyllësh Chrome</translation> <translation id="3308738399950580893">reklamat</translation> <translation id="3308852433423051161">Po ngarkon "Asistentin e Google"...</translation> <translation id="3309330461362844500">ID-ja e profilit të certifikatës</translation> @@ -2749,6 +2750,7 @@ <translation id="3873423927483480833">Shfaq kodet PIN</translation> <translation id="3873915545594852654">Ndodhi një problem me ARC++.</translation> <translation id="3874164307099183178">Aktivizo "Asistentin e Google"</translation> +<translation id="3875815154304214043"><ph name="APP_NAME" /> është caktuar të hapet në një skedë të re shfletuesi. Lidhjet e mbështetura do të hapen gjithashtu në shfletues. <ph name="BEGIN_LINK_LEARN_MORE" />Mëso më shumë<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3877075909000773256">Cilësimet e "Ndarjes në afërsi" për pajisjen e <ph name="USER_NAME" />, e cila ndan nën llogarinë <ph name="USER_EMAIL" />.</translation> <translation id="3879748587602334249">Menaxheri i shkarkimeve</translation> <translation id="3882165008614329320">Video ekzistuese nga kamera ose skedari</translation> @@ -3896,6 +3898,7 @@ <translation id="5157635116769074044">Gozhdoje këtë faqe në ekranin e nisje...</translation> <translation id="5159094275429367735">Konfiguro Crostini</translation> <translation id="5159419673777902220">Prindi yt ka çaktivizuar lejet e shtesës</translation> +<translation id="5159643365935452998">Rishiko pastrimin automatik të të dhënave</translation> <translation id="5160634252433617617">Tastiera fizike</translation> <translation id="5160857336552977725">Identifikohu në <ph name="DEVICE_TYPE" /></translation> <translation id="5161251470972801814">Pajisjet USB nga <ph name="VENDOR_NAME" /></translation> @@ -4459,6 +4462,7 @@ <translation id="5790651917470750848">Porta transferuese ekziston tashmë</translation> <translation id="5792728279623964091">Trokit te butoni i energjisë</translation> <translation id="5793339252089865437">Nëse e shkarkon përditësimin nëpërmjet rrjetit celular, kjo mund të shkaktojë tarifa të tepërta.</translation> +<translation id="5794034487966529952">Tavolina e punës "<ph name="DESK_TITLE" />" ka <ph name="NUM_BROWSERS" /> dritare të shfletuesit të hapura</translation> <translation id="5794414402486823030">Gjithmonë hape me shikuesin e sistemit</translation> <translation id="5794700615121138172">Skedarët e ndarë të Linux</translation> <translation id="5794786537412027208">Dil nga të gjitha aplikacionet e Chrome</translation> @@ -7591,7 +7595,6 @@ <translation id="9121814364785106365">Hap si skedë të gozhduar</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> është vendosur në pauzë</translation> <translation id="9124003689441359348">Fjalëkalimet e ruajtura do të shfaqen këtu</translation> -<translation id="9125387974662074614">Më njofto kur Chrome të ketë përfunduar kërkimin për softuerë të dëmshëm</translation> <translation id="9126149354162942022">Ngjyra e kursorit</translation> <translation id="9128317794749765148">Konfigurimi nuk mund të përfundonte</translation> <translation id="9128335130883257666">Hap faqen e cilësimeve për <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb index 9e38bfb5..6993d8b1 100644 --- a/chrome/app/resources/generated_resources_sr-Latn.xtb +++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -7602,7 +7602,6 @@ <translation id="9121814364785106365">Otvori kao zakačenu karticu</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> – pauzirano</translation> <translation id="9124003689441359348">Sačuvane lozinke će se pojaviti ovde</translation> -<translation id="9125387974662074614">Obavesti me kada Chrome završi traženje štetnog softvera</translation> <translation id="9126149354162942022">Boja kursora</translation> <translation id="9128317794749765148">Podešavanje nije dovršeno</translation> <translation id="9128335130883257666">Otvorite stranicu podešavanja za <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb index 0850d04..45624df03 100644 --- a/chrome/app/resources/generated_resources_sr.xtb +++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -7602,7 +7602,6 @@ <translation id="9121814364785106365">Отвори као закачену картицу</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> – паузирано</translation> <translation id="9124003689441359348">Сачуване лозинке ће се појавити овде</translation> -<translation id="9125387974662074614">Обавести ме када Chrome заврши тражење штетног софтвера</translation> <translation id="9126149354162942022">Боја курсора</translation> <translation id="9128317794749765148">Подешавање није довршено</translation> <translation id="9128335130883257666">Отворите страницу подешавања за <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb index cd72e0c..82b0463 100644 --- a/chrome/app/resources/generated_resources_sv.xtb +++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -7617,7 +7617,6 @@ <translation id="9121814364785106365">Öppna som en fast flik</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> har pausats</translation> <translation id="9124003689441359348">Sparade lösenord visas här</translation> -<translation id="9125387974662074614">Avisera mig när Chrome har sökt klart efter skadlig programvara</translation> <translation id="9126149354162942022">Textmarkörfärg</translation> <translation id="9128317794749765148">Det gick inte att slutföra konfigurationen</translation> <translation id="9128335130883257666">Öppna inställningssidan för <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb index 761af76..aa77064 100644 --- a/chrome/app/resources/generated_resources_sw.xtb +++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -7613,7 +7613,6 @@ <translation id="9121814364785106365">Fungua kama kichupo kilichobanwa</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> imesimamishwa</translation> <translation id="9124003689441359348">Manenosiri yaliyohifadhiwa yataonekana hapa</translation> -<translation id="9125387974662074614">Niarifu Chrome inapomaliza kutafuta programu hatari</translation> <translation id="9126149354162942022">Rangi ya kiteuzi</translation> <translation id="9128317794749765148">Imeshindwa kukamilisha shughuli ya kusakinisha</translation> <translation id="9128335130883257666">Fungua ukurasa wa mipangilio ya <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb index c2d759c..962c0183 100644 --- a/chrome/app/resources/generated_resources_ta.xtb +++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -2768,7 +2768,7 @@ <translation id="3873423927483480833">பின்களைக் காட்டும்</translation> <translation id="3873915545594852654">ARC++ல் ஒரு சிக்கல் ஏற்பட்டது.</translation> <translation id="3874164307099183178">Google Assistantடை இயக்கு</translation> -<translation id="3875815154304214043"><ph name="APP_NAME" /> புதிய உலாவிப் பிரிவில் திறக்கும்படி அமைத்துள்ளீர்கள், ஆதரிக்கப்படும் இணைப்புகளும் உலாவியில் திறக்கப்படும். <ph name="BEGIN_LINK_LEARN_MORE" />மேலும் அறிக<ph name="END_LINK_LEARN_MORE" /></translation> +<translation id="3875815154304214043"><ph name="APP_NAME" /> புதிய உலாவிப் பக்கத்தில் திறக்கும்படி அமைத்துள்ளீர்கள், ஆதரிக்கப்படும் இணைப்புகளும் உலாவியில் திறக்கப்படும். <ph name="BEGIN_LINK_LEARN_MORE" />மேலும் அறிக<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3877075909000773256"><ph name="USER_NAME" /> இன் சாதனத்திற்கான அருகிலுள்ளவற்றுடன் பகிர்தல் அமைப்புகள், <ph name="USER_EMAIL" /> ஆகப் பகிர்கிறது.</translation> <translation id="3879748587602334249">பதிவிறக்க நிர்வாகி</translation> <translation id="3882165008614329320">கேமரா அல்லது கோப்பிலிருக்கும் வீடியோ</translation> @@ -6801,7 +6801,7 @@ <translation id="8249615410597138718">உங்கள் சாதனங்களுக்கு அனுப்புதல்</translation> <translation id="8249672078237421304">நான் படிக்கும் மொழியில் இல்லாத பக்கங்களை மொழிபெயர்ப்பதற்கான விருப்பத்தை வழங்கு</translation> <translation id="8251441930213048644">இப்போது ரெஃப்ரெஷ் செய்</translation> -<translation id="8251578425305135684">சிறு படம் நீக்கப்பட்டது.</translation> +<translation id="8251578425305135684">சிறுபடம் நீக்கப்பட்டது.</translation> <translation id="825238165904109940">முழு URLகளை எப்போதும் காட்டு</translation> <translation id="8252569384384439529">பதிவேற்றுகிறது...</translation> <translation id="8253198102038551905">நெட்வொர்க் பண்புகளைப் பெற '+'ஐக் கிளிக் செய்யவும்</translation> @@ -7618,7 +7618,6 @@ <translation id="9121814364785106365">பொருத்திய தாவலாகத் திற</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> இடைநிறுத்தப்பட்டது</translation> <translation id="9124003689441359348">சேமித்த கடவுச்சொற்கள் இங்கே தோன்றும்</translation> -<translation id="9125387974662074614">தீங்கிழைக்கும் மென்பொருள் உள்ளதா என Chrome தேடி முடித்ததும் எனக்குத் தெரியப்படுத்து</translation> <translation id="9126149354162942022">கர்சர் வண்ணம்</translation> <translation id="9128317794749765148">அமைவை நிறைவுசெய்ய இயலவில்லை</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" /> உள்ளீட்டு முறைக்கான அமைப்புகள் பக்கத்தைத் திறக்கும்</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb index a38f394..b4c5688 100644 --- a/chrome/app/resources/generated_resources_te.xtb +++ b/chrome/app/resources/generated_resources_te.xtb
@@ -2213,6 +2213,7 @@ <translation id="3305661444342691068">PDFను ప్రివ్యూలో తెరువు</translation> <translation id="3308116878371095290">కుక్కీలను సెట్ చేయడం నుండి ఈ పేజీ నిరోధించబడింది.</translation> <translation id="3308134619352333507">బటన్ను దాచు</translation> +<translation id="3308681281309926497">మీరు Chromeను మూసివేసే వరకు మీరు వెళ్లిన సైట్లలో మీ సమాచారం ఉంటుంది</translation> <translation id="3308738399950580893">యాడ్లు</translation> <translation id="3308852433423051161">Google సహాయకం లోడ్ అవుతోంది...</translation> <translation id="3309330461362844500">సర్టిఫికెట్ ప్రొఫైల్ ID</translation> @@ -2766,6 +2767,7 @@ <translation id="3873423927483480833">పిన్లను చూపుతుంది</translation> <translation id="3873915545594852654">ARC++కి సంబంధించి ఒక సమస్య సంభవించింది.</translation> <translation id="3874164307099183178">Google Assistantను ఆన్ చేయండి</translation> +<translation id="3875815154304214043"><ph name="APP_NAME" /> కొత్త బ్రౌజర్ ట్యాబ్లో తెరవడానికి సెట్ చేయబడింది, అదే బ్రౌజర్లో సపోర్ట్ చేసే లింక్లు కూడా తెరవబడతాయి. <ph name="BEGIN_LINK_LEARN_MORE" />మరింత తెలుసుకోండి<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3877075909000773256"><ph name="USER_NAME" /> పరికరం కోసం సమీప షేర్ సెట్టింగ్లు, <ph name="USER_EMAIL" /> ఖాతా ద్వారా షేర్ చేయబడుతున్నాయి.</translation> <translation id="3879748587602334249">డౌన్లోడ్ మేనేజర్</translation> <translation id="3882165008614329320">కెమెరా లేదా ఫైల్లో ఇప్పటికే ఉన్న వీడియో</translation> @@ -3914,6 +3916,7 @@ <translation id="5157635116769074044">ఈ పేజీని ప్రారంభ స్క్రీన్కు పిన్ చేయి...</translation> <translation id="5159094275429367735">Crostiniని సెటప్ చేయి</translation> <translation id="5159419673777902220">ఎక్స్టెన్షన్ అనుమతులను మీ తల్లి/తండ్రి డిజేబుల్ చేశారు</translation> +<translation id="5159643365935452998">ఆటోమేటిక్ డేటా క్లియరింగ్ను రివ్యూ చేయండి</translation> <translation id="5160634252433617617">భౌతిక కీబోర్డ్</translation> <translation id="5160857336552977725">మీ <ph name="DEVICE_TYPE" />కు సైన్ ఇన్ చేయండి</translation> <translation id="5161251470972801814"><ph name="VENDOR_NAME" /> నుండి USB పరికరాలు</translation> @@ -4477,6 +4480,7 @@ <translation id="5790651917470750848">పోర్ట్ ఫార్వర్డ్ ఇప్పటికే ఉంది</translation> <translation id="5792728279623964091">దయచేసి మీ పవర్ బటన్పై నొక్కండి</translation> <translation id="5793339252089865437">మీరు మీ మొబైల్ నెట్వర్క్ ద్వారా అప్డేట్ని డౌన్లోడ్ చేసినట్లయితే, అధిక ఛార్జ్లు చెల్లించాల్సి రావచ్చు.</translation> +<translation id="5794034487966529952"><ph name="DESK_TITLE" /> డెస్క్లో <ph name="NUM_BROWSERS" /> బ్రౌజర్ విండోలు తెరిచి ఉన్నాయి</translation> <translation id="5794414402486823030">ఎల్లప్పుడూ సిస్టమ్ వ్యూయర్తో తెరువు</translation> <translation id="5794700615121138172">Linux షేర్ చేసిన ఫోల్డర్లు</translation> <translation id="5794786537412027208">అన్ని Chrome యాప్ల నుండి నిష్క్రమించు</translation> @@ -7608,7 +7612,6 @@ <translation id="9121814364785106365">పిన్ చేసిన టాబ్ లాగా తెరువు</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> పాజ్ చేయబడింది</translation> <translation id="9124003689441359348">సేవ్ చేసిన పాస్వర్డ్లు ఇక్కడ కనిపిస్తాయి</translation> -<translation id="9125387974662074614">హానికరమైన సాఫ్ట్వేర్ కోసం Chrome సెర్చ్ చేయడం ముగిశాక నాకు తెలియజేయి</translation> <translation id="9126149354162942022">కర్సర్ రంగు</translation> <translation id="9128317794749765148">సెటప్ను పూర్తి చేయలేకపోయింది</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" /> కోసం సెట్టింగ్ల పేజీని తెరవండి</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb index 9cf90922..b1d410df 100644 --- a/chrome/app/resources/generated_resources_th.xtb +++ b/chrome/app/resources/generated_resources_th.xtb
@@ -7597,7 +7597,6 @@ <translation id="9121814364785106365">เปิดเป็นแท็บที่ปักหมุดไว้</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> หยุดชั่วคราว</translation> <translation id="9124003689441359348">รหัสผ่านที่บันทึกไว้จะแสดงที่นี่</translation> -<translation id="9125387974662074614">แจ้งเตือนฉันเมื่อ Chrome ค้นหาซอฟต์แวร์ที่เป็นอันตรายเสร็จแล้ว</translation> <translation id="9126149354162942022">สีของเคอร์เซอร์</translation> <translation id="9128317794749765148">ตั้งค่าไม่สำเร็จ</translation> <translation id="9128335130883257666">เปิดหน้าการตั้งค่าของ<ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb index f04b22d..2cf524c 100644 --- a/chrome/app/resources/generated_resources_tr.xtb +++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -7598,7 +7598,6 @@ <translation id="9121814364785106365">İğnelenmiş sekme olarak aç</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> duraklatıldı</translation> <translation id="9124003689441359348">Kayıtlı şifreleriniz burada görünür</translation> -<translation id="9125387974662074614">Chrome zararlı yazılım aramayı tamamladığında haber ver</translation> <translation id="9126149354162942022">İmleç rengi</translation> <translation id="9128317794749765148">Kurulum tamamlanamadı</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" /> için ayarlar sayfasını aç</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb index 82150f0..1613176 100644 --- a/chrome/app/resources/generated_resources_uk.xtb +++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -7623,7 +7623,6 @@ <translation id="9121814364785106365">Відкрити як закріплену вкладку</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" />: призупинено</translation> <translation id="9124003689441359348">Тут відображатимуться збережені паролі</translation> -<translation id="9125387974662074614">Сповістити мене, коли Chrome завершить пошук шкідливого програмного забезпечення</translation> <translation id="9126149354162942022">Колір курсора</translation> <translation id="9128317794749765148">Не вдалося завершити встановлення</translation> <translation id="9128335130883257666">Відкрити сторінку налаштувань методу введення "<ph name="INPUT_METHOD_NAME" />"</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb index abbf5ba..5094a62 100644 --- a/chrome/app/resources/generated_resources_ur.xtb +++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -2198,6 +2198,7 @@ <translation id="3305661444342691068">PDF کو پیش منظر میں کھولیں</translation> <translation id="3308116878371095290">اس صفحہ کو کوکیز سیٹ کرنے سے روک دیا گیا تھا۔</translation> <translation id="3308134619352333507">چھپائیں بٹن</translation> +<translation id="3308681281309926497">سائٹس جنہیں آپ ملاحظہ کرتے ہیں اب بھی آپ کی معلومات کو یاد رکھ سکتی ہیں جب تک کہ آپ Chrome کو بند نہ کریں</translation> <translation id="3308738399950580893">اشتہارات</translation> <translation id="3308852433423051161">Google اسسٹنٹ لوڈ ہو رہا ہے...</translation> <translation id="3309330461362844500">سرٹیفیکیٹ پروفائل کی ID</translation> @@ -2751,6 +2752,7 @@ <translation id="3873423927483480833">PINs دکھائیں</translation> <translation id="3873915545594852654">++ARC کے ساتھ ایک مسئلہ پیش آگیا۔</translation> <translation id="3874164307099183178">Google اسسٹنٹ آن کریں</translation> +<translation id="3875815154304214043"><ph name="APP_NAME" /> نئے براؤزر ٹیب میں کھلنے کیلئے سیٹ ہے، سپورٹ کردہ لنکس بھی براؤزر میں کھلیں گے۔ <ph name="BEGIN_LINK_LEARN_MORE" />مزید جانیں<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3877075909000773256"><ph name="USER_EMAIL" /> اکاؤنٹ کے تحت اشتراک کرتے ہوئے <ph name="USER_NAME" /> کے آلہ کیلئے قریبی آلات کے ساتھ اشتراک کی ترتیبات۔</translation> <translation id="3879748587602334249">ڈاؤن لوڈ مینیجر</translation> <translation id="3882165008614329320">کیمرے یا فائل سے لی گئی موجودہ ویڈیو</translation> @@ -3898,6 +3900,7 @@ <translation id="5157635116769074044">اسکرین شروع کرنے کیلئے اس صفحہ کو پن کریں…</translation> <translation id="5159094275429367735">Crostini سیٹ اپ کریں</translation> <translation id="5159419673777902220">آپ کے والد/والدہ نے ایکسٹینشن کی اجازتیں غیر فعال کر دی ہیں</translation> +<translation id="5159643365935452998">خودکار ڈیٹا کلیئرنگ کا جائزہ لیں</translation> <translation id="5160634252433617617">فزیکل کی بورڈ</translation> <translation id="5160857336552977725">اپنے <ph name="DEVICE_TYPE" /> میں سائن ان کریں</translation> <translation id="5161251470972801814"><ph name="VENDOR_NAME" /> کی جانب سے USB آلات</translation> @@ -4461,6 +4464,7 @@ <translation id="5790651917470750848">پورٹ فارورڈ پہلے سے ہی دستیاب ہے</translation> <translation id="5792728279623964091">براہ کرم اپنے پاور بٹن پر تھپتھپائیں</translation> <translation id="5793339252089865437">اگر آپ اپنے موبائل نیٹ ورک پر اپ ڈیٹ ڈاؤن لوڈ کرتے ہیں تو زیادہ معاوضہ دینا پڑ سکتا ہے۔</translation> +<translation id="5794034487966529952">ڈیسک <ph name="DESK_TITLE" /> میں <ph name="NUM_BROWSERS" /> براؤزر ونڈوز کھلی ہیں</translation> <translation id="5794414402486823030">ہمیشہ سسٹم ویور کے ساتھ کھولیں</translation> <translation id="5794700615121138172">Linux کے اشتراک کردہ فولڈرز</translation> <translation id="5794786537412027208">سبھی Chrome ایپس چھوڑ دیں</translation> @@ -7593,7 +7597,6 @@ <translation id="9121814364785106365">پن کردہ ٹیب کے بطور کھولیں</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> موقوف ہے</translation> <translation id="9124003689441359348">محفوظ کردہ پاس ورڈز یہاں ظاہر ہوں گے</translation> -<translation id="9125387974662074614">Chrome کے نقصان دہ سافٹ ویئر تلاش کر لینے پر مجھے اطلاع دیں</translation> <translation id="9126149354162942022">کرسر کا رنگ</translation> <translation id="9128317794749765148">سیٹ اپ مکمل نہیں ہو سکا</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" /> کیلئے ترتیبات کا صفحہ کھولیں</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb index 8835ff2..affad81 100644 --- a/chrome/app/resources/generated_resources_uz.xtb +++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -7603,7 +7603,6 @@ <translation id="9121814364785106365">Qadalgan ichki oyna sifatida ochish</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> pauza qilindi</translation> <translation id="9124003689441359348">Saqlangan parollar shu yerda turadi</translation> -<translation id="9125387974662074614">Chrome kompyuterda zararli dasturlar borligini aniqlashni yakunlaganda menga xabar qilinsin</translation> <translation id="9126149354162942022">Kursor rangi</translation> <translation id="9128317794749765148">Oxirigacha sozlanmadi</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" /> uchun sahifa sozlamalarini ochish</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb index 16c09ac..a4460ec 100644 --- a/chrome/app/resources/generated_resources_vi.xtb +++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -7617,7 +7617,6 @@ <translation id="9121814364785106365">Mở dưới dạng thẻ được ghim</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> đã bị tạm dừng</translation> <translation id="9124003689441359348">Mật khẩu đã lưu của bạn sẽ xuất hiện ở đây</translation> -<translation id="9125387974662074614">Thông báo cho tôi khi Chrome hoàn tất quá trình tìm kiếm phần mềm gây hại</translation> <translation id="9126149354162942022">Màu con trỏ</translation> <translation id="9128317794749765148">Không thể hoàn tất quá trình thiết lập</translation> <translation id="9128335130883257666">Mở trang cài đặt cho <ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb index dbccfde..3b040c58 100644 --- a/chrome/app/resources/generated_resources_zh-CN.xtb +++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -7591,7 +7591,6 @@ <translation id="9121814364785106365">在固定标签页中打开</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" />已被暂停</translation> <translation id="9124003689441359348">已保存的密码将显示在这里</translation> -<translation id="9125387974662074614">在 Chrome 完成有害软件检查时通知我</translation> <translation id="9126149354162942022">光标颜色</translation> <translation id="9128317794749765148">无法完成设置</translation> <translation id="9128335130883257666">打开<ph name="INPUT_METHOD_NAME" />的“设置”页面</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb index 13d360f..e299ad1 100644 --- a/chrome/app/resources/generated_resources_zh-HK.xtb +++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -7616,7 +7616,6 @@ <translation id="9121814364785106365">在固定分頁中開啟</translation> <translation id="9122176249172999202">「<ph name="IDS_SHORT_PRODUCT_NAME" />」已暫停</translation> <translation id="9124003689441359348">已儲存的密碼將會在這裡顯示</translation> -<translation id="9125387974662074614">在 Chrome 完成搜尋有害軟件後通知我</translation> <translation id="9126149354162942022">游標顏色</translation> <translation id="9128317794749765148">無法完成設定</translation> <translation id="9128335130883257666">打開<ph name="INPUT_METHOD_NAME" />嘅設定頁面</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb index c3ceed5..4231ec9 100644 --- a/chrome/app/resources/generated_resources_zh-TW.xtb +++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -7600,7 +7600,6 @@ <translation id="9121814364785106365">在固定分頁中開啟</translation> <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> 已暫停</translation> <translation id="9124003689441359348">你所儲存的密碼會顯示在這裡</translation> -<translation id="9125387974662074614">當 Chrome 搜尋有害的軟體完成後通知我</translation> <translation id="9126149354162942022">游標顏色</translation> <translation id="9128317794749765148">無法完成設定</translation> <translation id="9128335130883257666">開啟<ph name="INPUT_METHOD_NAME" />的設定頁面</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb index d6c255d..c4154a8 100644 --- a/chrome/app/resources/generated_resources_zu.xtb +++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -7618,7 +7618,6 @@ <translation id="9121814364785106365">Vula njengethebhu ephiniwe</translation> <translation id="9122176249172999202">I-<ph name="IDS_SHORT_PRODUCT_NAME" /> iphunyuziwe</translation> <translation id="9124003689441359348">Amaphasiwedi alondoloziwe azovela lapha</translation> -<translation id="9125387974662074614">Ngazise lapho i-Chrome isiqedile ukusetha isofthiwe eyingozi</translation> <translation id="9126149354162942022">Umbala we-cursor</translation> <translation id="9128317794749765148">Ukusetha akukwazanga ukuqedelelwa</translation> <translation id="9128335130883257666">Vula ikhasi lamasethingi le-<ph name="INPUT_METHOD_NAME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_af.xtb b/chrome/app/resources/google_chrome_strings_af.xtb index bea2a5a..c3bbe54 100644 --- a/chrome/app/resources/google_chrome_strings_af.xtb +++ b/chrome/app/resources/google_chrome_strings_af.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">Chrome het toestemming nodig om toegang te kry tot jou kamera en mikrofoon vir hierdie werf</translation> <translation id="234869673307233423">Chrome kan nie jou wagwoorde nagaan nie. Probeer later weer.</translation> <translation id="235650106824528204">Enige Chrome-data wat tydens die gebruik van hierdie profiel gegenereer word (soos die skepping van boekmerke, geskiedenis, wagwoorde, en ander instellings) kan deur die werkprofieladministrateur verwyder word. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Vee hardeskyf uit en installeer Chrome-bedryfstelsel</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Ons is gereed om Chrome-bedryfstelsel te installeer! Sodra jy voortgaan: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Sal lêers, data en jou huidige bedryfstelsel uitgevee word. - <ph name="LIST_ITEM" />Sal Chrome-bedryfstelsel geïnstalleer word. - <ph name="LIST_ITEM" />Sal jou toestel afskakel wanneer installasie afgehandel is. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Een laaste onthounota: Installasie sal jou hele hardeskyf uitvee. Maak asseblief seker dat alle data wat vir jou belangrik is, gerugsteun is.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Installasie kan nie gekanselleer word nadat dit begin is nie.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome kon nie jou data sinkroniseer nie, omdat sinkronisering nie vir jou domein beskikbaar is nie.</translation> <translation id="2467438592969358367">Google Chrome wil jou wagwoorde uitvoer. Tik jou Windows-wagwoord in om dit toe te laat.</translation> <translation id="2485422356828889247">Deïnstalleer</translation> @@ -224,7 +214,6 @@ <translation id="6418662306461808273">Skakel oor na bestaande Chrome-profiel?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS-stelsel</translation> -<translation id="664235759707825982">Gereed om Chrome-bedryfstelsel te installeer</translation> <translation id="6676384891291319759">Gaan by die internet in</translation> <translation id="6679975945624592337">Laat Google Chrome in die agtergrond loop</translation> <translation id="6739177684496155661">Gaan voort in 'n nuwe Chrome-profiel?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_am.xtb b/chrome/app/resources/google_chrome_strings_am.xtb index cb99bd7..2364d21a 100644 --- a/chrome/app/resources/google_chrome_strings_am.xtb +++ b/chrome/app/resources/google_chrome_strings_am.xtb
@@ -59,16 +59,6 @@ <translation id="2348335408836342058">Chrome ለዚህ ጣቢያ የእርስዎን ካሜራ እና ማይክሮፎን ለመድረስ ፈቃድ ያስፈልገዋል</translation> <translation id="234869673307233423">Chrome የእርስዎን የይለፍ ቃላት መፈተሽ አይችልም። ቆይተው እንደገና ይሞክሩ።</translation> <translation id="235650106824528204">ይህን መገለጫ በሚጠቀሙበት ጊዜ የመነጨ ማንኛውም የChrome ውሂብ (እንደ የዕልባቶች፣ ታሪክ፣ የይለፍ ቃላት እና ሌሎች ቅንብሮች መፈጠር ያለ) በስራ መገለጫ አስተዳዳሪው ሊወገድ ይችላል። <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">ደረቅ አንጻፊን ደምስስ እና Chrome OSን ጫን</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Chrome OSን ለመጫን ዝግጁ ነን! አንድ ጊዜ ከቀጠሉ በኋላ፦ - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ፋይሎች፣ ውሂብ እና አሁን ያለው የእርስዎ ሥርዓተ ክወና ይደመሰሳሉ። - <ph name="LIST_ITEM" />Chrome OS ይጫናል። - <ph name="LIST_ITEM" />አንዴ ጭነቱ ከተጠናቀቀ በኋላ የእርስዎ መሣሪያ ይዘጋል። - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />አንድ የመጨረሻ ማስታወሻ፦ መጫን ሙሉውን የእርስዎ ደረቅ አንጻፊ ይደመስሳል። እባክዎ የሚጨነቁለት የማንኛውም ውሂብ በምትኬ መቀመጡን ያረጋግጡ።<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />አንዴ መጫን ከተጀመረ በኋላ ሊሰረዝ አይችልም።<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">ማመሳሰል ለጎራዎ ስለማይገኝ Google Chrome ውሂብዎን ማመሳሰል አልቻለም።</translation> <translation id="2467438592969358367">Google Chrome የእርስዎን የይለፍ ቃላት ወደ ውጭ መላክ ይፈልጋል። ይህንን ለመፍቀድ የWindows የይለፍ ቃልዎን ይተይቡ።</translation> <translation id="2485422356828889247">አራግፍ</translation> @@ -222,7 +212,6 @@ <translation id="6418662306461808273">ወደ ነባር የChrome መገለጫ ይቀየር?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome ግንባታ</translation> <translation id="6568793831116033768">የChrome OS ሥርዓት</translation> -<translation id="664235759707825982">Chrome OSን ለመጫን ዝግጁ</translation> <translation id="6676384891291319759">በይነመረብን ተዳረስ</translation> <translation id="6679975945624592337">Google Chrome ጀርባ ውስጥ ይሂድ</translation> <translation id="6739177684496155661">በአዲሱ የChrome መገለጫ ውስጥ ይቀጥል?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ar.xtb b/chrome/app/resources/google_chrome_strings_ar.xtb index 2bbe3456..93ba72e 100644 --- a/chrome/app/resources/google_chrome_strings_ar.xtb +++ b/chrome/app/resources/google_chrome_strings_ar.xtb
@@ -58,16 +58,6 @@ <translation id="2348335408836342058">يحتاج Chrome إلى إذن للوصول إلى الكاميرا والميكروفون من أجل الموقع الإلكتروني هذا.</translation> <translation id="234869673307233423">يتعذّر على Chrome التحقّق من كلمات المرور. يُرجى إعادة المحاولة.</translation> <translation id="235650106824528204">يمكن لمشرف الملف الشخصي للعمل إزالة أي بيانات مرتبطة بمتصفِّح Chrome والتي يتم إنشاؤها أثناء استخدام هذا الملف الشخصي (مثل إنشاء الإشارات المرجعية والسجلّ وكلمات المرور والإعدادات الأخرى).<ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">محو بيانات محرك الأقراص الثابتة وتثبيت نظام التشغيل Chrome</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />نحن جاهزون لتثبيت نظام التشغيل Chrome. عند الاستمرار في عملية التثبيت: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />سيتم محو الملفات والبيانات ونظام التشغيل الحالي. - <ph name="LIST_ITEM" />سيتم تثبيت نظام التشغيل Chrome. - <ph name="LIST_ITEM" />سيتم إيقاف تشغيل الجهاز عند اكتمال التثبيت. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />تذكير أخير: ستؤدي عملية التثبيت إلى محو بيانات محرك الأقراص الثابتة بالكامل. يُرجى التأكّد من احتفاظك بنسخة احتياطية من أي بيانات ضرورية.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />عند بدء عملية التثبيت، لا يمكن إلغاؤها.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">تعذر على Google Chrome مزامنة البيانات نظرًا لأن المزامنة غير متاحة في نطاقك.</translation> <translation id="2467438592969358367">يرغب Google Chrome في تصدير كلمات مرورك، لذا يُرجى كتابة كلمة مرور Windows للسماح بذلك.</translation> <translation id="2485422356828889247">إزالة التثبيت</translation> @@ -220,7 +210,6 @@ <translation id="6418662306461808273">هل تريد الانتقال إلى ملف شخصي حالي على Chrome؟</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - إصدار قناة مطوري البرامج من Google Chrome</translation> <translation id="6568793831116033768">نظام التشغيل Chrome</translation> -<translation id="664235759707825982">نحن جاهزون لتثبيت نظام التشغيل Chrome</translation> <translation id="6676384891291319759">الدخول إلى الإنترنت</translation> <translation id="6679975945624592337">السماح بتشغيل Google Chrome في الخلفية</translation> <translation id="6739177684496155661">هل تريد المتابعة باستخدام ملف شخصي جديد على Chrome؟</translation>
diff --git a/chrome/app/resources/google_chrome_strings_as.xtb b/chrome/app/resources/google_chrome_strings_as.xtb index 975cc41c..288c82c 100644 --- a/chrome/app/resources/google_chrome_strings_as.xtb +++ b/chrome/app/resources/google_chrome_strings_as.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">এই ছাইটটোত আপোনাৰ কেমেৰা আৰু মাইক্ৰ’ফ’ন এক্সেছ কৰিবলৈ Chromeক অনুমতিৰ আৱশ্যক</translation> <translation id="234869673307233423">Chromeএ আপোনাৰ পাছৱর্ডসমূহ পৰীক্ষা কৰিব নোৱাৰে। পাছত আকৌ চেষ্টা কৰক।</translation> <translation id="235650106824528204">কৰ্মস্থানৰ প্ৰ’ফাইলৰ প্ৰশাসকে এই প্ৰ’ফাইলৰ ব্যৱহাৰৰ সময়ত সৃষ্টি হোৱা যিকোনো Chrome ডেটা (যেনে, বুকমাৰ্কৰ সৃষ্টি, ইতিহাস, পাছৱৰ্ড আৰু অন্য ছেটিং) আঁতৰাব পাৰে। <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">হাৰ্ড ড্ৰাইভটো মচি Chrome OS ইনষ্টল কৰক</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />আমি Chrome OS ইনষ্টল কৰিবলৈ সাজু! আপুনি আগবাঢ়িলে: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ফাইল, ডেটা আৰু আপোনাৰ বৰ্তমানৰ অপাৰেটিং ছিষ্টেমটো মচা হ’ব। - <ph name="LIST_ITEM" />Chrome OS ইনষ্টল কৰা হ’ব। - <ph name="LIST_ITEM" />ইনষ্টল কৰাটো সম্পূৰ্ণ হ’লে আপোনাৰ ডিভাইচটো শ্বাট ডাউন হ’ব। - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />অন্তিম ৰিমাইণ্ডাৰ: ইনষ্টল কৰাটোৱে আপোনাৰ গোটেই হাৰ্ড ড্ৰাইভটো মচিব। অনুগ্ৰহ কৰি আপুনি গুৰুত্বপূৰ্ণ বুলি বিবেচনা কৰা যিকোনো ডেটাৰ বেক আপ লোৱাটো নিশ্চিত কৰক।<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ইনষ্টল কৰাটো আৰম্ভ হ’লে ইয়াক বাতিল কৰিব নোৱাৰি।<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">আপোনাৰ ড’মেইনত ছিংক কৰা সুবিধাটো নাই বাবে Google Chromeএ আপোনাৰ ডেটা ছিংক কৰিব নোৱাৰে।</translation> <translation id="2467438592969358367">Google Chromeএ আপোনাৰ পাছৱর্ডসমূহ ৰপ্তানি কৰিব খোজে। এই কার্যৰ বাবে অনুমতি দিবলৈ আপোনাৰ Windowsৰ পাছৱর্ড দিয়ক।</translation> <translation id="2485422356828889247">আনইনষ্টল কৰক</translation> @@ -223,7 +213,6 @@ <translation id="6418662306461808273">পূৰ্বে থকা Chrome প্ৰ'ফাইললৈ যাবনে?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS ছিষ্টেম</translation> -<translation id="664235759707825982">ইনষ্টল কৰিবলৈ সাজু Chrome OS</translation> <translation id="6676384891291319759">ইণ্টাৰনেট এক্সেছ কৰক</translation> <translation id="6679975945624592337">Google Chromeক নেপথ্যত চলিবলৈ দিয়ক</translation> <translation id="6739177684496155661">এটা নতুন Chrome প্ৰ'ফাইলত অব্যাহত ৰাখিবনে?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_az.xtb b/chrome/app/resources/google_chrome_strings_az.xtb index 25a5459..1a9685042 100644 --- a/chrome/app/resources/google_chrome_strings_az.xtb +++ b/chrome/app/resources/google_chrome_strings_az.xtb
@@ -57,16 +57,6 @@ <translation id="2348335408836342058">Chrome bu sayt üçün kamera və mikrofona giriş tələb edir</translation> <translation id="234869673307233423">Chrome parollarınızı yoxlaya bilmir. Sonra yenidən cəhd edin.</translation> <translation id="235650106824528204">Bu profilin istifadəsi zamanı yaranan hər hansı bir Chrome datası (əlfəcinlər, tarixçələr, parolların yaradılması və digər ayarlar kimi) iş profili administratoru tərəfindən silinə bilər. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Sərt Diski Silin və Chrome OS'i quraşdırın</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Chrome OS'i quraşdırmağa hazırıq! Başladıqda: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Fayllar, data və cari əməliyyat sisteminiz silinəcək. - <ph name="LIST_ITEM" />Chrome OS quraşdırılacaq. - <ph name="LIST_ITEM" />Quraşdırma başa çatdıqdan sonra cihazınız sönəcək. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Son xatırlatma: quraşdırma nəticəsində sərt diskdəki bütün data silinəcək. Lazımlı bütün datanı yedəkləyin.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Quraşdırma başladıqdan sonra ləğv edilə bilməz.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome datanızı sinxronizasiya edə bilmədi, çünki sinxronizasiya domeniniz üçün əlçatan deyil.</translation> <translation id="2467438592969358367">Google Chrome parolları eksport etmək istəyir. Buna icazə vermək üçün Windows parolunuzu yazın.</translation> <translation id="2485422356828889247">Sistemdən silin</translation> @@ -219,7 +209,6 @@ <translation id="6418662306461808273">Mövcud Chrome profilinə keçirilsin?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS sistemi</translation> -<translation id="664235759707825982">Chrome OS'i quraşdırmağa hazırıq</translation> <translation id="6676384891291319759">İnternet</translation> <translation id="6679975945624592337">Google Chrome'a Arxa Fonda İşləməyə İcazə Verin</translation> <translation id="6739177684496155661">Yeni Chrome profilində davam edilsin?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_be.xtb b/chrome/app/resources/google_chrome_strings_be.xtb index 8006c98..3aafb45 100644 --- a/chrome/app/resources/google_chrome_strings_be.xtb +++ b/chrome/app/resources/google_chrome_strings_be.xtb
@@ -59,16 +59,6 @@ <translation id="2348335408836342058">Chrome запытвае дазвол на доступ да вашай камеры і мікрафона для гэтага сайта</translation> <translation id="234869673307233423">Браўзеру Chrome не ўдаецца праверыць паролі. Паўтарыце спробу пазней.</translation> <translation id="235650106824528204">Любыя даныя Chrome, створаныя пры выкарыстанні гэтага профілю (напрыклад, закладкі, гісторыя, паролі і іншыя налады), могуць быць выдалены адміністратарам працоўнага профілю. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Сцерці даныя на цвёрдым дыску і ўсталяваць Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Цяпер можна ўсталёўваць Chrome OS! Пасля запуску ўсталявання адбудзецца наступнае: -<ph name="BEGIN_LIST" /> -<ph name="LIST_ITEM" />Файлы, даныя і бягучая аперацыйная сістэма будуць сцёрты. - <ph name="LIST_ITEM" />Будзе ўсталявана аперацыйная сістэма Chrome OS. - <ph name="LIST_ITEM" />Пасля заканчэння працэсу ўсталявання прылада завершыць працу. - <ph name="END_LIST" /> -<ph name="END_PARAGRAPH1" /> -<ph name="BEGIN_PARAGRAPH2" />Яшчэ раз напамінаем, што пры ўсталяванні ўсе даныя на цвёрдым дыску будуць сцёрты. Упэўніцеся, што вы маеце іх рэзервовую копію.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Пасля таго як усталяванне пачнецца, працэс нельга будзе скасаваць.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Браўзеру Google Chrome не ўдалося сінхранізаваць даныя: для вашага дамена сінхранізацыя недаступная.</translation> <translation id="2467438592969358367">Google Chrome запытвае дазвол на экспартаванне вашых пароляў. Каб дазволіць гэта, увядзіце пароль Windows.</translation> <translation id="2485422356828889247">Выдаліць</translation> @@ -223,7 +213,6 @@ <translation id="6418662306461808273">Пераключыцца на існуючы профіль Chrome?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" />: Google Chrome для распрацоўшчыкаў</translation> <translation id="6568793831116033768">Сістэма Chrome OS</translation> -<translation id="664235759707825982">Вы гатовыя да ўсталявання Chrome OS?</translation> <translation id="6676384891291319759">Доступ у інтэрнэт</translation> <translation id="6679975945624592337">Дазволіць браўзеру Google Chrome працаваць у фонавым рэжыме</translation> <translation id="6739177684496155661">Працягнуць працу ў новым профілі Chrome?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bg.xtb b/chrome/app/resources/google_chrome_strings_bg.xtb index afa69d5..c41eb03 100644 --- a/chrome/app/resources/google_chrome_strings_bg.xtb +++ b/chrome/app/resources/google_chrome_strings_bg.xtb
@@ -58,16 +58,6 @@ <translation id="2348335408836342058">Chrome се нуждае от разрешение за достъп до камерата и микрофона ви за този сайт</translation> <translation id="234869673307233423">Chrome не може да провери паролите ви. Опитайте пак по-късно.</translation> <translation id="235650106824528204">Данните в Chrome, които са генерирани при използването на този служебен потребителски профил (напр. създаването на отметки, историята, паролите и други настройки), могат да бъдат премахнати от администратора му. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Изтриване на твърдия диск и инсталиране на Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Готови сме да инсталираме Chrome OS! Когато продължите: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />файловете, данните и текущата ви операционна система ще бъдат изтрити; - <ph name="LIST_ITEM" />Chrome OS ще бъде инсталирана; - <ph name="LIST_ITEM" />устройството ви ще се изключи след завършване на инсталирането. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Последно напомняне: при инсталирането целият ви твърд диск ще бъде изтрит. Уверете се, че имате резервно копие на всичките си важни данни.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />След като инсталирането започне, не може да бъде отменено.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome не можа да синхронизира данните ви, защото синхронизирането не е налице за домейна ви.</translation> <translation id="2467438592969358367">Google Chrome иска да експортира паролите ви. За да разрешите това, въведете паролата си за Windows.</translation> <translation id="2485422356828889247">Деинсталиране</translation> @@ -217,7 +207,6 @@ <translation id="6418662306461808273">Искате ли да превключите към съществуващ потребителски профил в Chrome?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6568793831116033768">Система Chrome OS</translation> -<translation id="664235759707825982">Chrome OS е готова за инсталиране</translation> <translation id="6676384891291319759">Достъп до интернет</translation> <translation id="6679975945624592337">Разрешаване на Google Chrome да се изпълнява на заден план</translation> <translation id="6739177684496155661">Искате ли да продължите с нов потребителски профил в Chrome?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bn.xtb b/chrome/app/resources/google_chrome_strings_bn.xtb index c4f215d..d115655 100644 --- a/chrome/app/resources/google_chrome_strings_bn.xtb +++ b/chrome/app/resources/google_chrome_strings_bn.xtb
@@ -58,16 +58,6 @@ <translation id="2348335408836342058">এই সাইটটির জন্য Chrome কে আপনার ক্যামেরা এবং মাইক্রোফোনে অ্যাক্সেস দিতে হবে</translation> <translation id="234869673307233423">Chrome আপনার পাসওয়ার্ড চেক করতে পারছে না। পরে আবার চেষ্টা করুন।</translation> <translation id="235650106824528204">এই প্রোফাইল ব্যবহার করার সময় জেনারেট হওয়া Chrome ডেটা (যেমন বুকমার্ক, ইতিহাস, পাসওয়ার্ড ও অন্যান্য সেটিংস) অফিস প্রোফাইল অ্যাডমিনিস্ট্রেটর মুছে দিতে পারেন। <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">হার্ড ড্রাইভের ডেটা মুছে ফেলে Chrome OS ইনস্টল করুন</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />আমরা Chrome OS ইনস্টল করার জন্য প্রস্তুত! একবার শুরু করে ফেললে: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />সব ফাইল, ডেটা ও আপনার বর্তমান অপারেটিং সিস্টেম মুছে যাবে। - <ph name="LIST_ITEM" />Chrome OS ইনস্টল করা হবে। - <ph name="LIST_ITEM" />ইনস্টল করা হয়ে গেলে আপনার ডিভাইস বন্ধ হয়ে যাবে। - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />শেষ বারের মতো রিমাইন্ডার: ইনস্টল করা হলে আপনার হার্ড ড্রাইভের সমস্ত ডেটা মুছে যাবে। দরকারি সমস্ত ডেটার ব্যাক-আপ নেওয়া হয়েছে কিনা দেখে নিন।<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ইনস্টল করা একবার শুরু হয়ে গেলে আর বন্ধ করা যাবে না।<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">আপনার ডোমেনে সিঙ্ক উপলভ্য না থাকার কারণে Google Chrome সিঙ্ক করতে পারেনি৷</translation> <translation id="2467438592969358367">Google Chrome আপনার পাসওয়ার্ড এক্সপোর্ট করতে চাইছে। অনুমতি দিতে Windows এর পাসওয়ার্ড টাইপ করুন।</translation> <translation id="2485422356828889247">আনইনস্টল</translation> @@ -219,7 +209,6 @@ <translation id="6418662306461808273">বর্তমান Chrome প্রোফাইলে পাল্টাতে চান?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS সিস্টেম</translation> -<translation id="664235759707825982">Chrome OS ইনস্টলের জন্য প্রস্তুত</translation> <translation id="6676384891291319759">ইন্টারনেটটি অ্যাক্সেস করুন</translation> <translation id="6679975945624592337">Google Chrome-কে ব্যাকগ্রাউন্ডে চলতে দিন</translation> <translation id="6739177684496155661">নতুন Chrome প্রোফাইলে কাজ চালিয়ে যেতে চান?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bs.xtb b/chrome/app/resources/google_chrome_strings_bs.xtb index dbeee1e9..d11ab7ef 100644 --- a/chrome/app/resources/google_chrome_strings_bs.xtb +++ b/chrome/app/resources/google_chrome_strings_bs.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">Chromeu treba odobrenje za pristup vašoj kameri i mikrofonu na ovoj web lokaciji</translation> <translation id="234869673307233423">Chrome ne može provjeravati vaše lozinke. Pokušajte ponovo kasnije.</translation> <translation id="235650106824528204">Administrator radnog profila može ukloniti bilo koje podatke Chromea koji se generiraju tokom korištenja ovog profila (naprimjer kreiranje oznaka, historije, lozinki i drugih postavki). <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Potpuno izbriši tvrdi disk i instaliraj Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Spremni smo instalirati Chrome OS! Kada nastavite: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Izbrisat će se fajlovi, podaci i vaš trenutni operativni sistem. - <ph name="LIST_ITEM" />Chrome OS će se instalirati. - <ph name="LIST_ITEM" />Vaš uređaj će se isključiti kada se instalacija završi. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Još jednom podsjećamo: prilikom instaliranja će se potpuno izbrisati vaš cijeli tvrdi disk. Provjerite jeste li napravili sigurnosnu kopiju podataka koji su vam bitni.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Kada instalacija započne, ne možete je otkazati.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome ne može sinhronizirati vaše podatke jer sinhronizacija nije dostupna za vašu domenu.</translation> <translation id="2467438592969358367">Google Chrome želi izvesti vaše lozinke. Unesite svoju lozinku za Windows da ovo omogućite.</translation> <translation id="2485422356828889247">Deinstaliraj</translation> @@ -222,7 +212,6 @@ <translation id="6418662306461808273">Želite li se prebaciti na postojeći Chrome profil?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6568793831116033768">Sistem Chrome OS</translation> -<translation id="664235759707825982">Spremni ste instalirati Chrome OS</translation> <translation id="6676384891291319759">Pristupite internetu</translation> <translation id="6679975945624592337">Neka Google Chrome radi u pozadini</translation> <translation id="6739177684496155661">Želite li nastaviti na novi Chrome profil?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ca.xtb b/chrome/app/resources/google_chrome_strings_ca.xtb index 81dad884..8a271e32 100644 --- a/chrome/app/resources/google_chrome_strings_ca.xtb +++ b/chrome/app/resources/google_chrome_strings_ca.xtb
@@ -56,16 +56,6 @@ <translation id="2348335408836342058">Per visitar aquest lloc web, Chrome necessita permís per accedir a la càmera i al micròfon</translation> <translation id="234869673307233423">Chrome no pot comprovar les teves contrasenyes. Torna-ho a provar més tard.</translation> <translation id="235650106824528204">L'administrador del perfil de treball pot suprimir qualsevol dada de Chrome que es generi durant l'ús d'aquest perfil, com ara les adreces d'interès, l'historial, les contrasenyes i altres opcions de configuració. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Esborra la unitat de disc dur i instal·la Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Estem a punt per instal·lar Chrome OS. Quan continuïs: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />S'esborraran els fitxers, les dades i el sistema operatiu actual. - <ph name="LIST_ITEM" />S'instal·larà Chrome OS. - <ph name="LIST_ITEM" />S'apagarà el dispositiu quan es completi la instal·lació. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Un últim recordatori: la instal·lació esborrarà tota la unitat de disc dur. Assegura't que hagis fet una còpia de seguretat de les dades que vols conservar.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Un cop comenci la instal·lació, no es pondrà cancel·lar.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome no ha pogut sincronitzar les dades perquè la sincronització no està disponible per al vostre domini.</translation> <translation id="2467438592969358367">Google Chrome vol exportar les teves contrasenyes. Escriu la contrasenya de Windows per permetre-ho.</translation> <translation id="2485422356828889247">Desinstal·la</translation> @@ -215,7 +205,6 @@ <translation id="6418662306461808273">Vols canviar al perfil de Chrome existent?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Sistema Chrome OS</translation> -<translation id="664235759707825982">A punt per instal·lar Chrome OS</translation> <translation id="6676384891291319759">Accedeix a Internet</translation> <translation id="6679975945624592337">Permet que Google Chrome s'executi en segon pla</translation> <translation id="6739177684496155661">Vols continuar en un perfil de Chrome nou?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_cs.xtb b/chrome/app/resources/google_chrome_strings_cs.xtb index ceacbee3..1c9c73d 100644 --- a/chrome/app/resources/google_chrome_strings_cs.xtb +++ b/chrome/app/resources/google_chrome_strings_cs.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">Chrome pro tento web potřebuje oprávnění k přístupu k fotoaparátu a mikrofonu</translation> <translation id="234869673307233423">Chrome nemůže zkontrolovat vaše hesla. Zkuste to později.</translation> <translation id="235650106824528204">Veškerá data prohlížeče Chrome vygenerovaná během používání tohoto profilu (jako je vytvoření záložek, historie, hesel a další nastavení) může administrátor pracovního profilu odstranit. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Vymazat pevný disk a nainstalovat Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Jsme připraveni nainstalovat systém Chrome OS. Pokud budete pokračovat: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Budou vymazány soubory, data a váš současný operační systém. - <ph name="LIST_ITEM" />Nainstaluje se systém Chrome OS. - <ph name="LIST_ITEM" />Po dokončení instalace se zařízení vypne. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Ještě poslední připomenutí: Při instalaci bude zcela vymazán pevný disk. Zkontrolujte si, zda máte všechna důležitá data zálohovaná.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Po spuštění již instalaci nelze zrušit.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome nemohl synchronizovat vaše data, protože Synchronizace ve vaší doméně není k dispozici.</translation> <translation id="2467438592969358367">Google Chrome chce exportovat vaše hesla. Tato akce vyžaduje zadání hesla systému Windows.</translation> <translation id="2485422356828889247">Odinstalovat</translation> @@ -223,7 +213,6 @@ <translation id="6418662306461808273">Přepnout na stávající profil Chrome?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6568793831116033768">Systém Chrome OS</translation> -<translation id="664235759707825982">Jsme připraveni nainstalovat Chrome OS</translation> <translation id="6676384891291319759">Přístup k internetu</translation> <translation id="6679975945624592337">Nechat Google Chrome běžet na pozadí</translation> <translation id="6739177684496155661">Pokračovat v novém profilu Chrome?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_da.xtb b/chrome/app/resources/google_chrome_strings_da.xtb index 4235e34..25be49f0 100644 --- a/chrome/app/resources/google_chrome_strings_da.xtb +++ b/chrome/app/resources/google_chrome_strings_da.xtb
@@ -56,16 +56,6 @@ <translation id="2348335408836342058">Chrome skal have tilladelse til at bruge dit kamera og din mikrofon på dette website</translation> <translation id="234869673307233423">Chrome kan ikke tjekke dine adgangskoder. Prøv igen senere.</translation> <translation id="235650106824528204">Alle Chrome-data, der genereres ved brug af denne profil (f.eks. oprettelse af bogmærker, historik, adgangskoder og andre indstillinger) kan fjernes af arbejdsprofilens administrator. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Ryd harddisk, og installer Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Vi er klar til at installere Chrome OS. Når du fortsætter, sker følgende: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Filer, data og dit aktuelle operativsystem ryddes. - <ph name="LIST_ITEM" />Chrome OS installeres. - <ph name="LIST_ITEM" />Din enhed slukker, når installationen er gennemført. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />En sidste påmindelse: Når du installerer, ryddes hele din harddisk. Sørg for, at du har sikkerhedskopieret alle dine vigtigste data.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Når installationen er gået i gang, kan den ikke annulleres.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome kunne ikke synkronisere dine data, fordi synkronisering ikke er tilgængelig for dit domæne.</translation> <translation id="2467438592969358367">Google Chrome anmoder om at eksportere dine adgangskoder. Angiv din Windows-adgangskode for at tillade dette.</translation> <translation id="2485422356828889247">Afinstaller</translation> @@ -216,7 +206,6 @@ <translation id="6418662306461808273">Vil du skifte til den eksisterende Chrome-profil?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome for udviklere</translation> <translation id="6568793831116033768">Chrome OS-system</translation> -<translation id="664235759707825982">Chrome OS er klar til at blive installeret</translation> <translation id="6676384891291319759">Få adgang til internettet</translation> <translation id="6679975945624592337">Lad Google Chrome køre i baggrunden</translation> <translation id="6739177684496155661">Vil du fortsætte på en ny Chrome-profil?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_de.xtb b/chrome/app/resources/google_chrome_strings_de.xtb index 39fc37d..7f879d6c 100644 --- a/chrome/app/resources/google_chrome_strings_de.xtb +++ b/chrome/app/resources/google_chrome_strings_de.xtb
@@ -56,16 +56,6 @@ <translation id="2348335408836342058">Chrome benötigt für diese Website die Berechtigung, auf Ihre Kamera und Ihr Mikrofon zuzugreifen</translation> <translation id="234869673307233423">Chrome kann Ihre Passwörter nicht prüfen. Versuchen Sie es später noch einmal.</translation> <translation id="235650106824528204">Alle Chrome-Daten, die während der Nutzung dieses Profils erstellt werden, wie Lesezeichen, Verlauf, Passwörter und andere Einstellungen, können vom Administrator des Arbeitsprofils entfernt werden. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Festplatte löschen & Chrome OS installieren</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Wir sind bereit, Chrome OS zu installieren. Sobald Sie fortfahren, passiert Folgendes: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Dateien, Daten und Ihr aktuelles Betriebssystem werden gelöscht. - <ph name="LIST_ITEM" />Chrome OS wird installiert. - <ph name="LIST_ITEM" />Ihr Gerät wird heruntergefahren, sobald die Installation abgeschlossen ist. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Eine letzte Erinnerung: Durch die Installation wird Ihre gesamte Festplatte gelöscht. Kontrollieren Sie daher noch einmal, ob Sie alle wichtigen Daten gesichert haben.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Sobald die Installation gestartet wurde, kann sie nicht mehr abgebrochen werden.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome konnte Ihre Daten nicht synchronisieren, da die Synchronisierung für Ihre Domain nicht zur Verfügung steht.</translation> <translation id="2467438592969358367">Google Chrome möchte Ihre Passwörter exportieren. Wenn Sie dies zulassen möchten, geben Sie Ihr Windows-Passwort ein.</translation> <translation id="2485422356828889247">Deinstallieren</translation> @@ -215,7 +205,6 @@ <translation id="6418662306461808273">Zu bestehendem Chrome-Profil wechseln?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS-System</translation> -<translation id="664235759707825982">Bereit für die Installation von Chrome OS</translation> <translation id="6676384891291319759">Internetzugriff</translation> <translation id="6679975945624592337">Google Chrome im Hintergrund ausführen</translation> <translation id="6739177684496155661">Mit einem neuen Chrome-Profil fortfahren?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_el.xtb b/chrome/app/resources/google_chrome_strings_el.xtb index 3e0278c..13a32a8c 100644 --- a/chrome/app/resources/google_chrome_strings_el.xtb +++ b/chrome/app/resources/google_chrome_strings_el.xtb
@@ -58,16 +58,6 @@ <translation id="2348335408836342058">Το Chrome χρειάζεται άδεια, για να αποκτήσει πρόσβαση στην κάμερα και στο μικρόφωνο για αυτόν τον ιστότοπο</translation> <translation id="234869673307233423">Το Chrome δεν μπορεί να ελέγξει τους κωδικούς πρόσβασής σας. Δοκιμάστε ξανά αργότερα.</translation> <translation id="235650106824528204">Τυχόν δεδομένα Chrome που δημιουργούνται κατά τη χρήση αυτού του προφίλ (όπως η δημιουργία σελιδοδεικτών, ιστορικού, κωδικών πρόσβασης και άλλων ρυθμίσεων) μπορούν να καταργηθούν από τον διαχειριστή του προφίλ εργασίας. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Διαγραφή σκληρού δίσκου και εγκατάσταση του Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Είμαστε έτοιμοι να εγκαταστήσουμε το Chrome OS! Εάν προχωρήσετε στο επόμενο βήμα: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Τα αρχεία, τα δεδομένα και το τρέχον λειτουργικό σύστημα θα διαγραφούν. - <ph name="LIST_ITEM" />Θα εγκατασταθεί το Chrome OS. - <ph name="LIST_ITEM" />Η συσκευή σας θα απενεργοποιηθεί όταν ολοκληρωθεί η εγκατάσταση. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Μια τελευταία υπενθύμιση: Η εγκατάσταση θα διαγράψει όλα τα περιεχόμενα του σκληρού δίσκου σας. Βεβαιωθείτε ότι έχετε δημιουργήσει αντίγραφα ασφαλείας των δεδομένων που σας ενδιαφέρουν.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Όταν η εγκατάσταση ξεκινήσει, δεν είναι δυνατή η ακύρωσή της.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Το Google Chrome δεν κατάφερε να συγχρονίσει τα δεδομένα σας επειδή ο συγχρονισμός δεν είναι διαθέσιμος για τον τομέα σας.</translation> <translation id="2467438592969358367">Το Google Chrome θέλει να εξαγάγει τους κωδικούς πρόσβασής σας. Για να το επιτρέψετε αυτό, πληκτρολογήστε τον κωδικό πρόσβασης για τα Windows.</translation> <translation id="2485422356828889247">Απεγκατάσταση</translation> @@ -220,7 +210,6 @@ <translation id="6418662306461808273">Εναλλαγή σε υπάρχον προφίλ Chrome;</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Σύστημα Chrome OS</translation> -<translation id="664235759707825982">Έτοιμοι για εγκατάσταση του Chrome OS</translation> <translation id="6676384891291319759">Πρόσβαση στο Διαδίκτυο</translation> <translation id="6679975945624592337">Να επιτρέπεται στο Google Chrome να εκτελείται στο παρασκήνιο</translation> <translation id="6739177684496155661">Συνέχεια σε νέο προφίλ Chrome;</translation>
diff --git a/chrome/app/resources/google_chrome_strings_en-GB.xtb b/chrome/app/resources/google_chrome_strings_en-GB.xtb index 1589b2b..72ff2aeb 100644 --- a/chrome/app/resources/google_chrome_strings_en-GB.xtb +++ b/chrome/app/resources/google_chrome_strings_en-GB.xtb
@@ -59,16 +59,6 @@ <translation id="2348335408836342058">Chrome needs permission to access your camera and microphone for this site</translation> <translation id="234869673307233423">Chrome can't check your passwords. Try again later.</translation> <translation id="235650106824528204">Any Chrome data that is generated during the use of this profile (such as the creation of bookmarks, history, passwords and other settings) can be removed by the work profile administrator. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Erase hard drive and install Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />We’re ready to install Chrome OS! Once you proceed: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Files, data and your current operating system will be erased. - <ph name="LIST_ITEM" />Chrome OS will be installed. - <ph name="LIST_ITEM" />Your device will shut down once the installation is complete. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />One last reminder: installation will erase your entire hard drive. Please make sure that you have any data that you care about backed up.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Once installation starts it cannot be cancelled.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome could not sync your data because Sync is not available for your domain.</translation> <translation id="2467438592969358367">Google Chrome wants to export your passwords. Type your Windows password to allow this.</translation> <translation id="2485422356828889247">Uninstall</translation> @@ -223,7 +213,6 @@ <translation id="6418662306461808273">Switch to existing Chrome profile?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS system</translation> -<translation id="664235759707825982">Ready to install Chrome OS</translation> <translation id="6676384891291319759">Access the Internet</translation> <translation id="6679975945624592337">Let Google Chrome Run in the Background</translation> <translation id="6739177684496155661">Continue in a new Chrome profile?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_es-419.xtb b/chrome/app/resources/google_chrome_strings_es-419.xtb index 7512108..6f7bb27 100644 --- a/chrome/app/resources/google_chrome_strings_es-419.xtb +++ b/chrome/app/resources/google_chrome_strings_es-419.xtb
@@ -56,16 +56,6 @@ <translation id="2348335408836342058">Chrome necesita permiso para acceder a tu cámara y micrófono para este sitio</translation> <translation id="234869673307233423">Chrome no puede revisar las contraseñas. Vuelve a intentarlo más tarde.</translation> <translation id="235650106824528204">El administrador del perfil de trabajo puede quitar cualquier dato de Chrome que se genere durante el uso de este perfil (como la creación de favoritos, un historial, contraseñas y otras opciones de configuración). <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Borrar el disco duro e instalar Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />¡Todo listo para instalar Chrome OS! Si continúas, sucederá lo siguiente: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Se borrarán los archivos, los datos y tu sistema operativo actual. - <ph name="LIST_ITEM" />Se instalará Chrome OS. - <ph name="LIST_ITEM" />Cuando se complete la instalación, se apagará el dispositivo. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Un último recordatorio: la instalación borrará tu disco duro completo. Asegúrate de haber creado una copia de seguridad de todos los datos que consideres importantes.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Una vez que comienza la instalación, no puede cancelarse.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome no pudo sincronizar los datos porque la sincronización no está disponible para el dominio.</translation> <translation id="2467438592969358367">Google Chrome desea exportar tus contraseñas. Para permitirlo, ingresa tu contraseña de Windows.</translation> <translation id="2485422356828889247">Desinstalación</translation> @@ -216,7 +206,6 @@ <translation id="6418662306461808273">¿Deseas cambiar a un perfil existente de Chrome?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" />: Versión para desarrolladores de Google Chrome</translation> <translation id="6568793831116033768">Sistema de Chrome OS</translation> -<translation id="664235759707825982">Todo listo para instalar Chrome OS</translation> <translation id="6676384891291319759">Acceder a Internet</translation> <translation id="6679975945624592337">Permitir que Google Chrome se ejecute en segundo plano</translation> <translation id="6739177684496155661">¿Deseas continuar en un nuevo perfil de Chrome?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_es.xtb b/chrome/app/resources/google_chrome_strings_es.xtb index b71bd9ed..ea25596 100644 --- a/chrome/app/resources/google_chrome_strings_es.xtb +++ b/chrome/app/resources/google_chrome_strings_es.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">Chrome necesita permiso para acceder a la cámara y al micrófono en este sitio web</translation> <translation id="234869673307233423">Chrome no puede comprobar tus contraseñas. Vuelve a intentarlo más tarde.</translation> <translation id="235650106824528204">El administrador del perfil de trabajo puede quitar cualquier dato de Chrome generado durante el uso de este perfil, como los marcadores, el historial, las contraseñas y otros ajustes. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Borrar disco duro e instalar Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />¡Estamos listos para instalar Chrome OS! Cuando continúes: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Se eliminarán los archivos, los datos y tu sistema operativo actual. - <ph name="LIST_ITEM" />Se instalará Chrome OS. - <ph name="LIST_ITEM" />Tu dispositivo se apagará cuando se complete la instalación. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Un último recordatorio: la instalación borrará todo tu disco duro. Asegúrate de tener una copia de seguridad de los datos importantes.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />La instalación no se puede cancelar una vez que empiece.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome no ha podido sincronizar los datos porque la función de sincronización no está disponible para tu dominio.</translation> <translation id="2467438592969358367">Google Chrome quiere exportar tus contraseñas. Escribe tu contraseña de Windows para permitirlo.</translation> <translation id="2485422356828889247">Desinstalar</translation> @@ -224,7 +214,6 @@ <translation id="6418662306461808273">¿Cambiar a un perfil de Chrome?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> ‑ Google Chrome Dev</translation> <translation id="6568793831116033768">Sistema Chrome OS</translation> -<translation id="664235759707825982">Todo listo para instalar Chrome OS</translation> <translation id="6676384891291319759">Accede a Internet.</translation> <translation id="6679975945624592337">Permitir que Google Chrome se ejecute en segundo plano</translation> <translation id="6739177684496155661">¿Continuar en un nuevo perfil de Chrome?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_et.xtb b/chrome/app/resources/google_chrome_strings_et.xtb index 65fc8390..001700c 100644 --- a/chrome/app/resources/google_chrome_strings_et.xtb +++ b/chrome/app/resources/google_chrome_strings_et.xtb
@@ -57,16 +57,6 @@ <translation id="2348335408836342058">Chrome vajab selle saidi puhul luba, et teie kaamerale ja mikrofonile juurde pääseda</translation> <translation id="234869673307233423">Chrome ei saa teie paroole kontrollida. Proovige hiljem uuesti.</translation> <translation id="235650106824528204">Kõik Chrome'i andmed, mis luuakse selle profiili kasutamise ajal (nt järjehoidjad, ajalugu, paroolid ja muud seaded), saab tööprofiili administraator eemaldada. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Tühjenda kõvaketas ja installi Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Oleme Chrome OS-i installimiseks valmis! Jätkamisel toimub järgmine. - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Kustutatakse failid, andmed ja praegune operatsioonisüsteem. - <ph name="LIST_ITEM" />Installitakse Chrome OS. - <ph name="LIST_ITEM" />Kui installimine on lõpetatud, lülitub teie seade välja. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Viimane meeldetuletus: installimisel tühjendatakse kogu kõvaketas. Veenduge, et oleksite kõik olulised andmed varundanud.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Pärast alustamist ei saa installimist tühistada.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome ei saa teie andmeid sünkroonida, sest sünkroonimine pole teie domeenil saadaval.</translation> <translation id="2467438592969358367">Google Chrome soovib teie paroole eksportida. Selle lubamiseks sisestage oma Windowsi parool.</translation> <translation id="2485422356828889247">Desinstalli</translation> @@ -219,7 +209,6 @@ <translation id="6418662306461808273">Kas lülituda olemasolevale Chrome'i profiilile?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS-i süsteem</translation> -<translation id="664235759707825982">Chrome OS-i installimiseks valmis</translation> <translation id="6676384891291319759">Pääs Internetti</translation> <translation id="6679975945624592337">Luba Google Chrome'il taustal töötada</translation> <translation id="6739177684496155661">Kas jätkata uuel Chrome'i profiilil?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_eu.xtb b/chrome/app/resources/google_chrome_strings_eu.xtb index 8f47dde..708e8ff 100644 --- a/chrome/app/resources/google_chrome_strings_eu.xtb +++ b/chrome/app/resources/google_chrome_strings_eu.xtb
@@ -59,16 +59,6 @@ <translation id="2348335408836342058">Chrome-k webgune honen izenean kamera eta mikrofonoa atzitzeko baimena behar du</translation> <translation id="234869673307233423">Chrome-k ezin ditu egiaztatu pasahitzak. Saiatu geroago.</translation> <translation id="235650106824528204">Laneko profilaren administratzaileak kendu egin ditzake profil hau erabiltzean sortutako Chrome-ko datuak (adibidez, sortutako laster-markak, historia, pasahitzak eta bestelako ezarpenak). <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Ezabatu disko gogorreko eduki guztia eta instalatu Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Prest gaude Chrome OS instalatzeko. Aurrera egiten duzunean: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Fitxategi, datu eta une honetan darabilzun sistema eragileko eduki guztia ezabatuko da. - <ph name="LIST_ITEM" />Chrome OS instalatuko da. - <ph name="LIST_ITEM" />Gailua itzali egingo da instalazio-prozesua amaitzean. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Azken abisua: Chrome OS instalatuz gero, ezabatu egingo da disko gogor osoko eduki guztia. Ziurtatu gorde nahi dituzun datuen babeskopia egin duzula.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Instalazio-prozesua hasiz gero, ezin da bertan behera utzi.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome-k ezin izan ditu sinkronizatu zure datuak, sinkronizazioa ez dagoelako erabilgarri zure domeinuan.</translation> <translation id="2467438592969358367">Google Chrome-k pasahitzak esportatu nahi ditu. Hori baimentzeko, idatzi Windows pasahitza.</translation> <translation id="2485422356828889247">Desinstalatu</translation> @@ -223,7 +213,6 @@ <translation id="6418662306461808273">Lehendik dagoen Chrome-ko profilera aldatu nahi duzu?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS sistema</translation> -<translation id="664235759707825982">Chrome OS instalatzeko prest dago</translation> <translation id="6676384891291319759">Sartu Interneten</translation> <translation id="6679975945624592337">Onartu Google Chrome atzeko planoan abiaraztea</translation> <translation id="6739177684496155661">Chrome-eko beste profil batean egin nahi duzu aurrera?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fa.xtb b/chrome/app/resources/google_chrome_strings_fa.xtb index 57966dd..ac3998f 100644 --- a/chrome/app/resources/google_chrome_strings_fa.xtb +++ b/chrome/app/resources/google_chrome_strings_fa.xtb
@@ -56,16 +56,6 @@ <translation id="2348335408836342058">Chrome برای این سایت به مجوز دسترسی به دوربین و میکروفون نیاز دارد</translation> <translation id="234869673307233423">Chrome نمیتواند گذرواژههایتان را بررسی کند. بعداً دوباره امتحان کنید.</translation> <translation id="235650106824528204">سرپرست نمایه کاری میتواند دادههای Chrome را که درطول استفاده از این نمایه ایجاد شدهاند (مثل ایجاد سابقه نشانکها، گذرواژهها، و دیگر تنظیمات) بردارد. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">پاک کردن دیسک سخت و نصب کردن Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />آمادهایم Chrome OS را نصب کنیم! اگر ادامه دهید: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />فایلها، دادهها، و سیستمعامل کنونی پاک خواهد شد. - <ph name="LIST_ITEM" />Chrome OS نصب خواهد شد. - <ph name="LIST_ITEM" />وقتی نصب تکمیل شود، دستگاهتان خاموش خواهد شد. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />آخرین یادآوری: درصورت نصب کردن، کل دیسک سخت پاک خواهد شد. لطفاً مطمئن شوید همه دادههای مهمتان را پشتیبانگیری کرده باشید.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />وقتی نصب شروع شود، نمیتوان آن را لغو کرد.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome قادر به همگامسازی دادههای شما نبود زیرا همگامسازی برای دامنه شما قابل دسترسی نیست.</translation> <translation id="2467438592969358367">Google Chrome میخواهد گذرواژههای شما را صادر کند. برای اجازه به این کار، گذرواژه Windows خود را تایپ کنید.</translation> <translation id="2485422356828889247">حذف نصب</translation> @@ -216,7 +206,6 @@ <translation id="6418662306461808273">به نمایه Chrome موجود میروید؟</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">سیستم Chrome OS</translation> -<translation id="664235759707825982">آماده برای نصب Chrome OS</translation> <translation id="6676384891291319759">دسترسی به اینترنت</translation> <translation id="6679975945624592337">اجازه به Google Chrome برای اجرا در پسزمینه</translation> <translation id="6739177684496155661">در نمایه جدیدی از Chrome ادامه میدهید؟</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fi.xtb b/chrome/app/resources/google_chrome_strings_fi.xtb index d2af881e..9ed01f95 100644 --- a/chrome/app/resources/google_chrome_strings_fi.xtb +++ b/chrome/app/resources/google_chrome_strings_fi.xtb
@@ -56,16 +56,6 @@ <translation id="2348335408836342058">Chrome tarvitsee oikeuden käyttää kameraasi ja mikrofoniasi tällä sivustolla.</translation> <translation id="234869673307233423">Chrome ei voi tarkistaa salasanojasi. Yritä myöhemmin uudelleen.</translation> <translation id="235650106824528204">Työprofiilin järjestelmänvalvoja voi poistaa tämän profiilin käytön aikana luotua Chrome-dataa (esim. kirjanmerkit, historia, salasanat ja muut asetukset). <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Tyhjennä kovalevy ja asenna Chrome-käyttöjärjestelmä</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Olemme valmiina asentamaan Chrome-käyttöjärjestelmän. Kun jatkat: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Tiedostot, data ja nykyinen käyttöjärjestelmäsi poistetaan. - <ph name="LIST_ITEM" />Chrome-käyttöjärjestelmä asennetaan. - <ph name="LIST_ITEM" />Laite sammuu, kun asennus on valmis. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Muista: asennus tyhjentää koko kovalevysi. Varmista, että olet varmuuskopioinut tärkeän datan.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Kun asennus on alkanut, sitä ei voi perua.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome ei voinut synkronoida tietoja, koska synkronointi ei ole käytettävissä verkkotunnuksessasi.</translation> <translation id="2467438592969358367">Google Chrome yrittää viedä salasanojasi tiedostoon. Salli tämä kirjoittamalla Windows-salasanasi.</translation> <translation id="2485422356828889247">Poista</translation> @@ -216,7 +206,6 @@ <translation id="6418662306461808273">Vaihdetaanko nykyiseen Chrome-profiiliin?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome-käyttöjärjestelmä</translation> -<translation id="664235759707825982">Valmiina asentamaan Chrome-käyttöjärjestelmän</translation> <translation id="6676384891291319759">Käytä internetiä</translation> <translation id="6679975945624592337">Jätä Google Chrome käyntiin taustalle</translation> <translation id="6739177684496155661">Jatketaanko uudessa Chrome-profiilissa?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fil.xtb b/chrome/app/resources/google_chrome_strings_fil.xtb index 89bc0ca..e57153e 100644 --- a/chrome/app/resources/google_chrome_strings_fil.xtb +++ b/chrome/app/resources/google_chrome_strings_fil.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">Kailangan ng Chrome ng pahintulot na i-access ang iyong camera at mikropono para sa site na ito</translation> <translation id="234869673307233423">Hindi masuri ng Chrome ang iyong mga password. Subukan ulit sa ibang pagkakataon.</translation> <translation id="235650106824528204">Puwedeng alisin ng administrator ng profile sa trabaho ang anumang data ng Chrome na nabuo sa panahon ng paggamit sa profile na ito (gaya ng paggawa ng mga bookmark, history, mga password, at iba pang setting). <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Burahin ang Hard Drive at I-install ang Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Handa na kaming i-install ang Chrome OS! Kapag nagpatuloy ka: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Mabubura ang mga file, data, at ang iyong kasalukuyang operating system. - <ph name="LIST_ITEM" />Mai-install ang Chrome OS. - <ph name="LIST_ITEM" />Magsha-shut down ang iyong device kapag nakumpleto na ang pag-install. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Huling paalala: mabubura ng pag-install ang buong hard drive mo. Pakitiyak na may back up na ang anumang data na mahalaga sa iyo.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Kapag nagsimula na ang pag-install, hindi na ito makakansela.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Hindi mai-sync ng Google Chrome ang iyong data dahil hindi available ang Pag-sync para sa iyong domain.</translation> <translation id="2467438592969358367">Gustong i-export ng Google Chrome ang iyong mga password. I-type ang password mo sa Windows para payagan ito.</translation> <translation id="2485422356828889247">I-uninstall</translation> @@ -224,7 +214,6 @@ <translation id="6418662306461808273">Lumipat sa kasalukuyang profile sa Chrome?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS system</translation> -<translation id="664235759707825982">Handa nang i-install ang Chrome OS</translation> <translation id="6676384891291319759">I-access ang Internet</translation> <translation id="6679975945624592337">Hayaang Tumakbo sa Background ang Google Chrome</translation> <translation id="6739177684496155661">Magpatuloy sa bagong profile sa Chrome?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fr-CA.xtb b/chrome/app/resources/google_chrome_strings_fr-CA.xtb index a0f4902a..2fb71b0 100644 --- a/chrome/app/resources/google_chrome_strings_fr-CA.xtb +++ b/chrome/app/resources/google_chrome_strings_fr-CA.xtb
@@ -59,16 +59,6 @@ <translation id="2348335408836342058">Chrome a besoin de votre autorisation pour accéder à votre appareil photo et à votre micro pour ce site</translation> <translation id="234869673307233423">Chrome ne peut pas vérifier vos mots de passe. Réessayez plus tard.</translation> <translation id="235650106824528204">L'administrateur du profil professionnel peut retirer toutes les données Chrome générées durant l'utilisation de ce profil (comme la création de favoris, l'historique, les mots de passe et d'autres paramètres). <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Effacer les données du disque dur et installer Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Nous sommes prêts à installer Chrome OS! Une fois que vous procédez à l'installation : - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />les fichiers, les données et votre système d'exploitation actuel seront effacés; - <ph name="LIST_ITEM" />Chrome OS sera installé; - <ph name="LIST_ITEM" />votre appareil s'éteindra une fois que celle-ci sera terminée. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Un dernier rappel : l'installation effacera l'ensemble des données présentes sur votre disque dur. Veuillez vous assurer que l'ensemble des données auxquelles vous tenez est sauvegardé.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Une fois que l'installation a commencé, elle ne peut pas être annulée.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome ne peut pas synchroniser vos données, car la synchronisation n'est pas offerte pour votre domaine.</translation> <translation id="2467438592969358367">Google Chrome veut exporter vos mots de passe. Pour autoriser cette action, entrez votre mot de passe Windows.</translation> <translation id="2485422356828889247">Désinstaller</translation> @@ -222,7 +212,6 @@ <translation id="6418662306461808273">Passer au profil Chrome existant?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome pour les concepteurs</translation> <translation id="6568793831116033768">Système Chrome OS</translation> -<translation id="664235759707825982">Prêt à installer Chrome OS</translation> <translation id="6676384891291319759">Accéder à Internet</translation> <translation id="6679975945624592337">Laisser Google Chrome s'exécuter en arrière-plan</translation> <translation id="6739177684496155661">Continuer avec un nouveau profil Chrome?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fr.xtb b/chrome/app/resources/google_chrome_strings_fr.xtb index 115289e..e136df46 100644 --- a/chrome/app/resources/google_chrome_strings_fr.xtb +++ b/chrome/app/resources/google_chrome_strings_fr.xtb
@@ -59,16 +59,6 @@ <translation id="2348335408836342058">Chrome a besoin de votre autorisation pour accéder à votre appareil photo et à votre micro pour ce site</translation> <translation id="234869673307233423">Chrome ne parvient pas à vérifier vos mots de passe. Réessayez plus tard.</translation> <translation id="235650106824528204">Toutes les données Chrome générées quand vous utilisez ce profil (comme la création de favoris, l'historique, les mots de passe etc.) peuvent être supprimées par l'administrateur du profil professionnel. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Effacer le disque dur et installer Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Nous sommes prêts à installer Chrome OS ! Si vous poursuivez : - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Les fichiers, les données et votre système d'exploitation actuel seront effacés. - <ph name="LIST_ITEM" />Chrome OS sera installé. - <ph name="LIST_ITEM" />Votre appareil s'éteindra une fois l'installation terminée. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Un dernier rappel : l'installation effacera la totalité de votre disque dur. Assurez-vous que toutes vos données importantes sont sauvegardées.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Une fois commencée, l'installation ne peut être annulée.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Impossible de synchroniser vos données dans Google Chrome, car la synchronisation n'est pas disponible pour votre domaine.</translation> <translation id="2467438592969358367">Google Chrome veut exporter vos mots de passe. Pour autoriser cette action, saisissez votre mot de passe Windows.</translation> <translation id="2485422356828889247">Désinstaller</translation> @@ -222,7 +212,6 @@ <translation id="6418662306461808273">Passer au profil Chrome existant ?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome pour les développeurs</translation> <translation id="6568793831116033768">Système Chrome OS</translation> -<translation id="664235759707825982">Chrome OS est prêt à être installé</translation> <translation id="6676384891291319759">Accéder à Internet</translation> <translation id="6679975945624592337">Laisser Google Chrome s'exécuter en arrière-plan</translation> <translation id="6739177684496155661">Continuer avec un nouveau profil Chrome ?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_gl.xtb b/chrome/app/resources/google_chrome_strings_gl.xtb index 5a7f5a9..35ce0fff 100644 --- a/chrome/app/resources/google_chrome_strings_gl.xtb +++ b/chrome/app/resources/google_chrome_strings_gl.xtb
@@ -59,16 +59,6 @@ <translation id="2348335408836342058">Chrome necesita permiso para acceder á cámara e ao micrófono neste sitio</translation> <translation id="234869673307233423">Chrome non puido comprobar os teus contrasinais. Téntao de novo máis tarde.</translation> <translation id="235650106824528204">O administrador do perfil de traballo pode quitar os datos de Chrome que se xeren durante o uso deste perfil (por exemplo, os marcadores, o historial, os contrasinais e outras opcións de configuración). <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Borrar unidade de disco duro e instalar Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Está todo listo para instalar Chrome OS! Ao continuar: -<ph name="BEGIN_LIST" /> -<ph name="LIST_ITEM" />Borraranse os ficheiros, os datos e o teu sistema operativo actual. - <ph name="LIST_ITEM" />Instalarase Chrome OS. - <ph name="LIST_ITEM" />O dispositivo apagarase en canto remate a instalación. - <ph name="END_LIST" /> -<ph name="END_PARAGRAPH1" /> -<ph name="BEGIN_PARAGRAPH2" />Non esquezas que coa instalación borrarase toda a unidade de disco duro. Asegúrate de ter unha copia de seguranza dos datos que sexan importantes.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />En canto se inicia a instalación non se pode cancelar.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome non puido sincronizar os teus datos porque a sincronización non está dispoñible para o teu dominio.</translation> <translation id="2467438592969358367">Google Chrome quere exportar os teus contrasinais. Escribe o teu contrasinal de Windows para permitir esta acción.</translation> <translation id="2485422356828889247">Desinstalar</translation> @@ -223,7 +213,6 @@ <translation id="6418662306461808273">Queres cambiar ao perfil existente de Chrome?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> (Google Chrome para programadores)</translation> <translation id="6568793831116033768">Sistema Chrome OS</translation> -<translation id="664235759707825982">Todo listo para instalar Chrome OS</translation> <translation id="6676384891291319759">Accede a Internet</translation> <translation id="6679975945624592337">Permitir que Google Chrome se execute en segundo plano</translation> <translation id="6739177684496155661">Queres continuar nun perfil de Chrome novo?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_gu.xtb b/chrome/app/resources/google_chrome_strings_gu.xtb index fab50c59..8b07d3c 100644 --- a/chrome/app/resources/google_chrome_strings_gu.xtb +++ b/chrome/app/resources/google_chrome_strings_gu.xtb
@@ -60,19 +60,10 @@ <translation id="2348335408836342058">Chromeને આ સાઇટ માટે તમારા કૅમેરા અને માઇક્રોફોનના ઍક્સેસની પરવાનગીની જરૂર પડે છે</translation> <translation id="234869673307233423">Chrome તમારા પાસવર્ડ ચેક કરી શકતું નથી. થોડા સમય પછી ફરી પ્રયાસ કરો.</translation> <translation id="235650106824528204">આ પ્રોફાઇલના ઉપયોગ (જેમકે બુકમાર્ક, ઇતિહાસ, પાસવર્ડ બનાવવા અને અન્ય સેટિંગ ગોઠવવા) દરમિયાન જનરેટ થયેલા કોઈપણ Chrome ડેટાને ઑફિસની પ્રોફાઇલના વ્યવસ્થાપક કાઢી નાખી શકે છે. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">હાર્ડ ડ્રાઇવનો ડેટા કાઢી નાખો અને Chrome OSને ઇન્સ્ટૉલ કરો</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />અમે Chrome OS ઇન્સ્ટૉલ કરવા માટે તૈયાર છીએ! તમે આગળ વધશો પછી: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ફાઇલો, ડેટા અને તમારી હાલની ઑપરેટિંગ સિસ્ટમ કાઢી નાખવામાં આવશે. - <ph name="LIST_ITEM" />Chrome OS ઇન્સ્ટૉલ કરવામાં આવશે. - <ph name="LIST_ITEM" />ઇન્સ્ટૉલેશન પૂર્ણ થઈ ગયા પછી, તમારું ડિવાઇસ શટ ડાઉન થઈ જશે. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />છેલ્લું રિમાઇન્ડર: ઇન્સ્ટૉલેશન કરવાથી, તમારી હાર્ડ ડ્રાઇવનો બધો ડેટા કાઢી નાખવામાં આવશે. કૃપા કરીને ખાતરી કરો કે તમે તમારા જરૂરી ડેટાનો બૅકઅપ લઈ લીધો છે.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />એકવાર ઇન્સ્ટૉલેશન શરૂ થયા પછી, તેને રદ કરી શકાશે નહીં.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome તમારા ડેટાને સમન્વયિત કરી શક્યું નથી કારણ કે તમારા ડોમેન માટે સમન્વયન ઉપલબ્ધ નથી.</translation> <translation id="2467438592969358367">Google Chrome તમારા પાસવર્ડની નિકાસ કરવા માગે છે. આને મંજૂરી આપવા માટે તમારો Windows પાસવર્ડ ટાઇપ કરો.</translation> <translation id="2485422356828889247">અનઇન્સ્ટૉલ કરો</translation> +<translation id="2518751521812750372">તમે જ્યારે Chrome બંધ કરો, ત્યારે તે ઑટોમૅટિક રીતે કુકી અને તમે મુલાકાત લીધેલા પેજમાંના સાઇટનો ડેટા સાફ કરે છે</translation> <translation id="2534507159460261402">Google Pay (Chrome પર કૉપિ કરેલ છે)</translation> <translation id="2574930892358684005"><ph name="EXISTING_USER" /> આ Chrome પ્રોફાઇલમાં પહેલેથી સાઇન ઇન છે. તમારું બ્રાઉઝિંગ અલગ રાખવા, Chrome તમારા માટે તમારી અલગ પ્રોફાઇલ બનાવી શકે છે.</translation> <translation id="2580411288591421699">હાલમાં ચાલી રહ્યું છે તે જ Google Chrome વર્ઝનને ઇન્સ્ટૉલ કરી શકાતું નથી. કૃપા કરીને Google Chrome બંધ કરો અને ફરીથી પ્રયાસ કરો.</translation> @@ -223,7 +214,6 @@ <translation id="6418662306461808273">વર્તમાન Chrome પ્રોફાઇલ પર સ્વિચ કરીએ?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS સિસ્ટમ</translation> -<translation id="664235759707825982">Chrome OS ઇન્સ્ટૉલ કરવા માટે તૈયાર છે</translation> <translation id="6676384891291319759">ઇંટરનેટ ઍક્સેસ કરો</translation> <translation id="6679975945624592337">Google Chromeને બૅકગ્રાઉન્ડમાં ચાલવા દો</translation> <translation id="6739177684496155661">નવી Chrome પ્રોફાઇલમાં બ્રાઉઝિંગ ચાલુ રાખીએ?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hi.xtb b/chrome/app/resources/google_chrome_strings_hi.xtb index 7093f0a..102543c 100644 --- a/chrome/app/resources/google_chrome_strings_hi.xtb +++ b/chrome/app/resources/google_chrome_strings_hi.xtb
@@ -56,16 +56,6 @@ <translation id="2348335408836342058">Chrome को इस साइट के लिए आपका कैमरा और माइक्रोफ़ोन एक्सेस करने की अनुमति चाहिए</translation> <translation id="234869673307233423">Chrome आपके पासवर्ड की जांच नहीं कर सकता. बाद में कोशिश करें.</translation> <translation id="235650106824528204">इस प्रोफ़ाइल का इस्तेमाल करने के दौरान Chrome में जनरेट किए गए किसी भी तरह के डेटा (जैसे कि बुकमार्क बनाना, इतिहास, पासवर्ड, और दूसरी सेटिंग) को वर्क प्रोफ़ाइल का एडमिन हटा सकता है. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">हार्ड ड्राइव के डेटा को हमेशा के लिए मिटाएं और Chrome OS को इंस्टॉल करें</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />हम Chrome OS को इंस्टॉल करने के लिए तैयार हैं! इंस्टॉल करना शुरू करने के बाद: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />फ़ाइलें, डेटा, और आपका मौजूदा ऑपरेटिंग सिस्टम हमेशा के लिए मिटा दिया जाएगा. - <ph name="LIST_ITEM" />Chrome OS इंस्टॉल हो जाएगा. - <ph name="LIST_ITEM" />इंस्टॉल होने के बाद, आपका डिवाइस शट डाउन हो जाएगा. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />आखिरी रिमाइंडर: इंस्टॉल करने से, आपकी हार्ड ड्राइव का सारा डेटा हमेशा के लिए मिटा दिया जाएगा. कृपया पक्का करें कि आपने अपने ज़रूरी डेटा का बैक अप लिया है.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />इंस्टॉल करना शुरू करने के बाद, रद्द नहीं किया जा सकता.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome आपका डेटा समन्वयित नहीं कर सका क्योंकि समन्वयन आपके डोमेन के लिए उपलब्ध नहीं है.</translation> <translation id="2467438592969358367">Google Chrome आपके पासवर्ड निर्यात करना चाहता है. इसकी मंज़ूरी देने के लिए अपना Windows पासवर्ड लिखें.</translation> <translation id="2485422356828889247">विस्थापित करें</translation> @@ -220,7 +210,6 @@ <translation id="6418662306461808273">क्या आप मौजूदा Chrome प्रोफ़ाइल में स्विच करना चाहते हैं?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome डेवलपर</translation> <translation id="6568793831116033768">Chrome OS सिस्टम</translation> -<translation id="664235759707825982">क्या आप Chrome OS को इंस्टॉल करने के लिए तैयार हैं</translation> <translation id="6676384891291319759">इंटरनेट एक्सेस करें</translation> <translation id="6679975945624592337">Google Chrome को बैकग्राउंड में चलने दें</translation> <translation id="6739177684496155661">क्या आप नई Chrome प्रोफ़ाइल में ब्राउज़िंग जारी रखना चाहते हैं?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hr.xtb b/chrome/app/resources/google_chrome_strings_hr.xtb index e2c1a22e..ece8652d0 100644 --- a/chrome/app/resources/google_chrome_strings_hr.xtb +++ b/chrome/app/resources/google_chrome_strings_hr.xtb
@@ -56,16 +56,6 @@ <translation id="2348335408836342058">Chrome treba dopuštenje za pristup kameri i mikrofonu za ovu web-lokaciju</translation> <translation id="234869673307233423">Chrome ne može provjeriti vaše zaporke. Pokušajte ponovno kasnije.</translation> <translation id="235650106824528204">Sve podatke iz Chromea koji se generiraju tijekom upotrebe ovog profila (primjerice izradom oznaka, povijesti, zaporki i drugih postavki) može ukloniti administrator poslovnog profila. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Izbriši tvrdi disk i instaliraj OS Chrome</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Spremni smo za instaliranje OS-a Chrome! Kad nastavite: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Izbrisat će se datoteke, podaci i vaš trenutačni operativni sustav. - <ph name="LIST_ITEM" />Instalirat će se OS Chrome. - <ph name="LIST_ITEM" />Vaš će se uređaj isključiti nakon dovršetka instalacije. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Još jednom podsjećamo: instalacijom se briše cijeli tvrdi disk. Provjerite imate li sigurnosnu kopiju svih važnih podataka.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Nakon što započne, instalacija se ne može otkazati.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome nije mogao sinkronizirati vaše podatke jer sinkronizacija nije dostupna za vašu domenu.</translation> <translation id="2467438592969358367">Google Chrome želi izvesti vaše zaporke. Upišite svoju zaporku za Windows da biste to dopustili.</translation> <translation id="2485422356828889247">Deinstaliraj</translation> @@ -216,7 +206,6 @@ <translation id="6418662306461808273">Želite li prijeći na postojeći profil u Chromeu?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6568793831116033768">OS Chrome</translation> -<translation id="664235759707825982">Spremni smo za instaliranje OS-a Chrome</translation> <translation id="6676384891291319759">Pristup Internetu</translation> <translation id="6679975945624592337">Neka Google Chrome radi u pozadini</translation> <translation id="6739177684496155661">Želite li nastaviti na novom profilu u Chromeu?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hu.xtb b/chrome/app/resources/google_chrome_strings_hu.xtb index 6c3b1d9..20680d7 100644 --- a/chrome/app/resources/google_chrome_strings_hu.xtb +++ b/chrome/app/resources/google_chrome_strings_hu.xtb
@@ -56,16 +56,6 @@ <translation id="2348335408836342058">A Chrome-nak engedélyre van szüksége ahhoz, hogy hozzáférjen a kamerához és a mikrofonhoz ennél a webhelynél</translation> <translation id="234869673307233423">A Chrome nem tudja ellenőrizni a jelszavait. Próbálkozzon később.</translation> <translation id="235650106824528204">A profil használata során generált összes Chrome-adatot (pl. könyvjelzőket, előzményeket, jelszavakat és egyéb beállításokat) eltávolíthatja a munkaprofil rendszergazdája. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Merevlemez törlése és a Chrome OS telepítése</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Készen állunk a Chrome OS telepítésére! A továbblépést követően: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />A fájlok, az adatok és az aktuális operációs rendszer törlődik. - <ph name="LIST_ITEM" />A Chrome OS telepítve lesz. - <ph name="LIST_ITEM" />Az eszköze kikapcsol a telepítés befejezése után. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Egy utolsó emlékeztető: a telepítéssel törlődik az egész merevlemez. Győződjön meg róla, hogy minden fontos adatról van biztonsági másolata<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Miután kezdetét vette a telepítés, már nem lehet megszakítani.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">A Google Chrome nem tudta szinkronizálni az adatait, mert a szinkronizálás nem érhető el az Ön domainjénél.</translation> <translation id="2467438592969358367">A Google Chrome exportálni szeretné a jelszavakat. Ennek engedélyezéséhez írja be Windows-jelszavát.</translation> <translation id="2485422356828889247">Eltávolítás</translation> @@ -215,7 +205,6 @@ <translation id="6418662306461808273">Szeretne meglévő Chrome-profilra váltani?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS rendszer</translation> -<translation id="664235759707825982">A Chrome OS készen áll a telepítésre</translation> <translation id="6676384891291319759">Internetelérés</translation> <translation id="6679975945624592337">A Google Chrome futhat a háttérben</translation> <translation id="6739177684496155661">Biztosan új Chrome-profilban folytatja?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hy.xtb b/chrome/app/resources/google_chrome_strings_hy.xtb index 4a069dc..ca9483f 100644 --- a/chrome/app/resources/google_chrome_strings_hy.xtb +++ b/chrome/app/resources/google_chrome_strings_hy.xtb
@@ -57,16 +57,6 @@ <translation id="2348335408836342058">Chrome-ին այս կայքի համար անհրաժեշտ է ձեր տեսախցիկն ու խոսափողը օգտագործելու թույլտվություն</translation> <translation id="234869673307233423">Chrome-ը չի կարող ստուգել ձեր գաղտնաբառերը։ Փորձեք ավելի ուշ։</translation> <translation id="235650106824528204">Աշխատանքային պրոֆիլի ադմինիստրատորը կարող է ջնջել Chrome-ի բոլոր տվյալները, որոնք ստեղծվում են այս պրոֆիլի օգտագործման ընթացքում (օրինակ՝ էջանիշներ, պատմություն, գաղտնաբառեր և այլ կարգավորումներ)։ <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Ջնջել բոլոր տվյալները կոշտ սկավառակից և տեղադրել Chrome OS-ը</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Մենք պատրաստ ենք տեղադրելու Chrome OS-ը։ Երբ գործարկեք այն՝ - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Ֆայլերը, տվյալները և ձեր ընթացիկ օպերացիոն համակարգը կջնջվեն։ - <ph name="LIST_ITEM" />Կտեղադրվի Chrome OS համակարգը։ - <ph name="LIST_ITEM" />Տեղադրման ավարտից հետո ձեր սարքը կվերգործարկվի։ - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Եվս մեկ վերջին հիշեցում. տեղադրման արդյունքում ձեր կոշտ սկավառակում առկա բոլոր տվյալները կջնջվեն։ Համոզվեք, որ պահուստավորել եք ձեզ անհրաժեշտ տվյալները։<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Հենց որ տեղադրումը սկսվի, այն հնարավոր չի լինի չեղարկել։<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome-ը չկարողացավ համաժամացնել ձեր տվյալները, քանի որ Sync ծառայությունը մատչելի չէ ձեր տիրույթի համար:</translation> <translation id="2467438592969358367">Google Chrome-ն ուզում է արտահանել ձեր գաղտնաբառերը: Թույլատրելու համար մուտքագրեք Windows-ի ձեր գաղտնաբառը:</translation> <translation id="2485422356828889247">Ապատեղադրել</translation> @@ -221,7 +211,6 @@ <translation id="6418662306461808273">Անցնե՞լ Chrome-ի առկա պրոֆիլ</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS համակարգ</translation> -<translation id="664235759707825982">Chrome OS-ը պատրաստ է տեղադրման</translation> <translation id="6676384891291319759">Մտնել համացանց</translation> <translation id="6679975945624592337">Թույլատրել Google Chrome-ին աշխատել ֆոնային ռեժիմում</translation> <translation id="6739177684496155661">Շարունակե՞լ Chrome-ի նոր պրոֆիլով</translation>
diff --git a/chrome/app/resources/google_chrome_strings_id.xtb b/chrome/app/resources/google_chrome_strings_id.xtb index 5bfab6579..dfc84acf 100644 --- a/chrome/app/resources/google_chrome_strings_id.xtb +++ b/chrome/app/resources/google_chrome_strings_id.xtb
@@ -56,16 +56,6 @@ <translation id="2348335408836342058">Chrome memerlukan izin akses ke kamera dan mikrofon untuk situs ini</translation> <translation id="234869673307233423">Chrome tidak dapat memeriksa sandi Anda. Coba lagi nanti.</translation> <translation id="235650106824528204">Data Chrome yang dibuat selama penggunaan profil ini (seperti pembuatan bookmark, histori, sandi, dan setelan lain) dapat dihapus oleh administrator profil kerja. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Hapus Hard Drive & Instal Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Kami siap menginstal Chrome OS. Setelah Anda melanjutkan: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />File, data, dan sistem operasi saat ini akan dihapus. - <ph name="LIST_ITEM" />Chrome OS akan diinstal. - <ph name="LIST_ITEM" />Perangkat Anda akan dimatikan setelah proses penginstalan selesai. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Pengingat terakhir: penginstalan akan menghapus seluruh data di hard drive. Pastikan Anda telah mencadangkan semua data penting.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Penginstalan tidak dapat dibatalkan setelah dimulai.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome tidak dapat menyinkronkan data Anda karena Sinkronisasi tidak tersedia untuk domain Anda.</translation> <translation id="2467438592969358367">Google Chrome ingin mengekspor sandi. Ketik sandi Windows Anda untuk mengizinkannya.</translation> <translation id="2485422356828889247">Uninstal</translation> @@ -216,7 +206,6 @@ <translation id="6418662306461808273">Beralih ke profil Chrome yang sudah ada?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Sistem Chrome OS</translation> -<translation id="664235759707825982">Siap menginstal Chrome OS</translation> <translation id="6676384891291319759">Akses Internet</translation> <translation id="6679975945624592337">Jalankan Google Chrome di Background</translation> <translation id="6739177684496155661">Lanjutkan di profil Chrome baru?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_is.xtb b/chrome/app/resources/google_chrome_strings_is.xtb index 5348fb0..85e24fe2 100644 --- a/chrome/app/resources/google_chrome_strings_is.xtb +++ b/chrome/app/resources/google_chrome_strings_is.xtb
@@ -59,16 +59,6 @@ <translation id="2348335408836342058">Chrome þarf leyfi til að nota myndavélina og hljóðnemann á þessu vefsvæði</translation> <translation id="234869673307233423">Chrome getur ekki athugað aðgangsorðin þín. Reyndu aftur síðar.</translation> <translation id="235650106824528204">Stjórnandi vinnuprófíla getur fjarlægt öll Chrome gögn sem verða til við notkun þessa prófíls (þ.m.t. bókamerki, feril, aðgangsorð og aðrar stillingar). <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Eyða af harða diskinum og setja upp Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Nú er allt tilbúið fyrir uppsetningu Chrome OS! Þegar þú heldur áfram: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Verður skrám, gögnum og núverandi stýrikerfi eytt. - <ph name="LIST_ITEM" />Chrome OS verður sett upp. - <ph name="LIST_ITEM" />Slökkt verður á tækinu þegar uppsetningunni lýkur. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Ein lokaáminning: uppsetningin mun eyða öllu af harða disknum. Vertu viss um að hafa tekið afrit af öllum gögnum sem þú vilt geyma.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Þegar uppsetningin hefst er ekki hægt að hætta við hana.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome gat ekki samstillt gögnin þín vegna þess að samstilling er ekki í boði fyrir lénið þitt.</translation> <translation id="2467438592969358367">Google Chrome vill flytja út aðgangsorðin þín. Sláðu inn Windows-aðgangsorðið þitt til að leyfa það.</translation> <translation id="2485422356828889247">Fjarlægja</translation> @@ -223,7 +213,6 @@ <translation id="6418662306461808273">Skipta yfir í Chrome prófíl sem er til?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS kerfi</translation> -<translation id="664235759707825982">Allt klárt fyrir uppsetningu Chrome OS</translation> <translation id="6676384891291319759">Aðgangur að internetinu</translation> <translation id="6679975945624592337">Leyfa Google Chrome að keyra í bakgrunni</translation> <translation id="6739177684496155661">Halda áfram á nýjum Chrome prófíl?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_it.xtb b/chrome/app/resources/google_chrome_strings_it.xtb index cfa539f..6e3924a 100644 --- a/chrome/app/resources/google_chrome_strings_it.xtb +++ b/chrome/app/resources/google_chrome_strings_it.xtb
@@ -55,16 +55,6 @@ <translation id="2348335408836342058">Per questo sito Chrome ha bisogno dell'autorizzazione ad accedere alla fotocamera e al microfono</translation> <translation id="234869673307233423">Chrome non può controllare le tue password. Riprova più tardi.</translation> <translation id="235650106824528204">Tutti i dati di Chrome generati durante l'utilizzo di questo profilo (come i preferiti, la cronologia, le password e altre impostazioni) possono essere rimossi dall'amministratore del profilo di lavoro. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Resetta il disco rigido e installa Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />È tutto pronto per l'installazione di Chrome OS. Se procedi: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Verranno cancellati i file, i dati e il sistema operativo corrente. - <ph name="LIST_ITEM" />Verrà installato Chrome OS. - <ph name="LIST_ITEM" />Il dispositivo si spegnerà al termine dell'installazione. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Un ultimo promemoria: l'installazione comporterà il reset di tutto il disco rigido. Assicurati di avere una copia di backup di tutti i dati importanti.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Non è possibile annullare l'installazione dopo averla avviata.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Impossibile sincronizzare i dati in Google Chrome perché la sincronizzazione non è disponibile per il tuo dominio.</translation> <translation id="2467438592969358367">Google Chrome vuole esportare le password. Per consentire l'esportazione, digita la tua password Windows.</translation> <translation id="2485422356828889247">Disinstalla</translation> @@ -214,7 +204,6 @@ <translation id="6418662306461808273">Vuoi passare a un profilo Chrome esistente?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome per gli sviluppatori</translation> <translation id="6568793831116033768">Sistema Chrome OS</translation> -<translation id="664235759707825982">È possibile installare Chrome OS</translation> <translation id="6676384891291319759">Accesso a Internet</translation> <translation id="6679975945624592337">Lascia Google Chrome in esecuzione in background</translation> <translation id="6739177684496155661">Vuoi continuare con un nuovo profilo Chrome?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_iw.xtb b/chrome/app/resources/google_chrome_strings_iw.xtb index 01777792..cd9679e39 100644 --- a/chrome/app/resources/google_chrome_strings_iw.xtb +++ b/chrome/app/resources/google_chrome_strings_iw.xtb
@@ -56,20 +56,10 @@ <translation id="2348335408836342058">Chrome זקוק להרשאת גישה אל המצלמה והמיקרופון בשביל האתר הזה</translation> <translation id="234869673307233423">Chrome לא יכול לבדוק את הסיסמאות שלך. כדאי לנסות שוב מאוחר יותר.</translation> <translation id="235650106824528204">המנהל של פרופיל העבודה יכול להסיר נתוני Chrome שמופקים בזמן השימוש בפרופיל (כמו יצירת סימניות, היסטוריה, סיסמאות והגדרות נוספות). <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">מחיקת הכונן הקשיח והתקנת Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />הכל מוכן להתקנת Chrome OS! לאחר ההתקדמות בתהליך ההתקנה: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />הקבצים, הנתונים ומערכת ההפעלה שלך יימחקו. - <ph name="LIST_ITEM" />תושלם ההתקנה של Chrome OS. - <ph name="LIST_ITEM" />המכשיר ייכבה לאחר השלמת ההתקנה. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />תזכורת בפעם האחרונה: ההתקנה תוביל למחיקת הכונן הקשיח במלואו. חשוב לוודא שגיבית את הנתונים שחשובים לך.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />אין אפשרות לבטל את ההתקנה לאחר שהחלה.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome לא הצליח לסנכרן את הנתונים שלך מפני שהסנכרון אינו זמין עבור הדומיין שלך.</translation> <translation id="2467438592969358367">Google Chrome רוצה לייצא את הסיסמאות שלך. יש להקליד את הסיסמה שלך ל-Windows כדי לאפשר זאת.</translation> <translation id="2485422356828889247">הסרת התקנה</translation> -<translation id="2518751521812750372">לאחר הסגירה של Chrome, קובצי cookie ונתונים מאתרים של הדפים שבהם ביקרת יימחקו באופן אוטומטי</translation> +<translation id="2518751521812750372">אחרי שסוגרים את Chrome, קובצי ה-cookie והנתונים מהדפים שבהם ביקרת יימחקו באופן אוטומטי</translation> <translation id="2534507159460261402">Google Pay (הועתק ל-Chrome)</translation> <translation id="2574930892358684005">המשתמש <ph name="EXISTING_USER" /> כבר מחובר לפרופיל Chrome הזה. כדי להפריד בין פעילויות גלישה, Chrome יכול ליצור עבורך פרופיל משלך.</translation> <translation id="2580411288591421699">אין אפשרות להתקין את אותה גרסת Google Chrome הפועלת כעת. יש לסגור את Google Chrome ולנסות שוב.</translation> @@ -216,7 +206,6 @@ <translation id="6418662306461808273">לעבור לפרופיל Chrome קיים?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome בגרסת פיתוח</translation> <translation id="6568793831116033768">מערכת Chrome OS</translation> -<translation id="664235759707825982">הכל מוכן להתקנת Chrome OS</translation> <translation id="6676384891291319759">גישה אל האינטרנט</translation> <translation id="6679975945624592337">Google Chrome יכול לפעול ברקע</translation> <translation id="6739177684496155661">להמשיך בפרופיל Chrome חדש?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ja.xtb b/chrome/app/resources/google_chrome_strings_ja.xtb index 1c82107..271a645 100644 --- a/chrome/app/resources/google_chrome_strings_ja.xtb +++ b/chrome/app/resources/google_chrome_strings_ja.xtb
@@ -55,16 +55,6 @@ <translation id="2348335408836342058">このサイトを利用するには、Chrome でカメラとマイクの使用を許可する必要があります</translation> <translation id="234869673307233423">Chrome でパスワードを確認できません。しばらくしてからもう一度お試しください。</translation> <translation id="235650106824528204">このプロファイルの使用中に生成された Chrome データ(ブックマーク、履歴、パスワード、他の設定など)は、仕事用プロファイルの管理者によって削除される場合があります。<ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">ハードドライブのデータを消去して Chrome OS をインストール</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Chrome OS をインストールする準備ができました。インストールを開始すると、次の処理が行われます。 - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ファイル、データ、現在のオペレーティング システムが消去されます。 - <ph name="LIST_ITEM" />Chrome OS がインストールされます。 - <ph name="LIST_ITEM" />インストールが完了するとデバイスがシャットダウンされます。 - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />重要: インストールすると、ハードドライブのデータはすべて消去されます。大切なデータがすべてバックアップされていることをご確認ください。<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />インストールを開始した後にキャンセルすることはできません。<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">お使いのドメインでは同期を利用できないため、Google Chrome はデータを同期できませんでした。</translation> <translation id="2467438592969358367">Google Chrome からパスワードをエクスポートするための許可を求められています。許可するには Windows のパスワードを入力してください。</translation> <translation id="2485422356828889247">アンインストール</translation> @@ -215,7 +205,6 @@ <translation id="6418662306461808273">既存の Chrome プロファイルに切り替えますか?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS システム</translation> -<translation id="664235759707825982">Chrome OS をインストールできます</translation> <translation id="6676384891291319759">インターネットにアクセス</translation> <translation id="6679975945624592337">Google Chrome をバックグラウンドで実行する</translation> <translation id="6739177684496155661">新しい Chrome プロファイルで続行しますか?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ka.xtb b/chrome/app/resources/google_chrome_strings_ka.xtb index 6b0cdb7..9898440 100644 --- a/chrome/app/resources/google_chrome_strings_ka.xtb +++ b/chrome/app/resources/google_chrome_strings_ka.xtb
@@ -59,16 +59,6 @@ <translation id="2348335408836342058">Chrome საჭიროებს თქვენს კამერასა და მიკროფონზე წვდომის ნებართვას ამ საიტისთვის</translation> <translation id="234869673307233423">Chrome ვერ ახერხებს პაროლების შემოწმებას. ცადეთ მოგვიანებით.</translation> <translation id="235650106824528204">ამ პროფილის გამოყენებისას შექმნილი Chrome მონაცემების (მაგ., შექმნილი სანიშნეების, ისტორიის, პაროლებისა და სხვა პარამეტრების) ამოშლა შეუძლია სამსახურის პროფილის ადმინისტრატორს. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">მყარი დისკის ამოშლა და Chrome OS-ის ინსტალაცია</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Chrome OS-ის ინსტალაციისთვის ყველაფერი მზადაა! გაგრძელების შემდეგ: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ფაილები, მონაცემები და თქვენი ამჟამინდელი ოპერაციული სისტემა ამოიშლება. - <ph name="LIST_ITEM" />დაინსტალირდება Chrome OS. - <ph name="LIST_ITEM" />ინსტალაციის დასრულების შემდეგ თქვენი მოწყობილობა გამოირთვება. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />ბოლოჯერ შეგახსენებთ, რომ ინსტალაცია მთლიანად ამოშლის თქვენს მყარ დისკს. დარწმუნდით, რომ თქვენთვის მნიშვნელოვანი მონაცემების სარეზერვო ასლი გაქვთ შექმნილი.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ინსტალაციის დაწყების შემდეგ მას ვეღარ გააუქმებთ.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome-მა ვერ დაასინქრონა თქვენი მონაცემები, რადგან სინქრონიზაცია არ არის ხელმისაწვდომი თქვენი დომენისთვის.</translation> <translation id="2467438592969358367">Google Chrome ითხოვს თქვენი პაროლების ექსპორტირებას. აღნიშნულის დასაშვებად აკრიფეთ თქვენი Windows-ის პაროლი.</translation> <translation id="2485422356828889247">დეინსტალაცია</translation> @@ -222,7 +212,6 @@ <translation id="6418662306461808273">გსურთ არსებულ Chrome პროფილზე გადართვა?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> — Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS სისტემა</translation> -<translation id="664235759707825982">Chrome OS-ის ინსტალაციისთვის ყველაფერი მზადაა</translation> <translation id="6676384891291319759">წვდომა ინტერნეტზე</translation> <translation id="6679975945624592337">Google Chrome-ისთვის ფონურ რეჟიმში მუშაობის დაშვება</translation> <translation id="6739177684496155661">გსურთ ახალ Chrome პროფილში გაგრძელება?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_kk.xtb b/chrome/app/resources/google_chrome_strings_kk.xtb index 3fe744f..e18c8a1 100644 --- a/chrome/app/resources/google_chrome_strings_kk.xtb +++ b/chrome/app/resources/google_chrome_strings_kk.xtb
@@ -59,20 +59,10 @@ <translation id="2348335408836342058">Chrome браузеріне бұл сайтта камераны және микрофонды пайдалану үшін рұқсат керек</translation> <translation id="234869673307233423">Chrome сіздің құпия сөздеріңізді тексере алмайды. Кейінірек қайталап көріңіз.</translation> <translation id="235650106824528204">Жұмыс профилінің әкімшісі осы профильді пайдалану кезінде құрылатын Chrome браузерінің кез келген дерегін (бетбелгілер, тарих, құпия сөздер жасау және басқа параметрлер сияқты) жоя алады. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Қатты дискіні тазарту және Chrome OS-ті орнату</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Chrome OS-ті орнатуға болады. Орнатуды бастаған жағдайда: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Файлдар, деректер және ағымдағы операциялық жүйе тазартылады. - <ph name="LIST_ITEM" />Chrome OS орнатылады. - <ph name="LIST_ITEM" />Орнату аяқталғанда, құрылғыңыз өшіріледі. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Соңғы ескерту: орнату кезінде қатты диск толық тазартылады. Деректердің сақтық көшірмесі жасалғанына көз жеткізіңіз.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Орнату басталған соң, одан бас тарту мүмкін емес.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome деректеріңізді синхрондай алмады, себебі синхрондау функциясы доменіңіз үшін қолжетімді емес.</translation> <translation id="2467438592969358367">Google Chrome құпия сөздерді экспорттағысы келеді. Бұған рұқсат беру үшін Windows құпия сөзіңізді теріңіз.</translation> <translation id="2485422356828889247">Жою</translation> -<translation id="2518751521812750372">Chrome жабылғанда сіз кірген беттердің cookie файлдары мен сайт деректері автоматты түрде жойылады.</translation> +<translation id="2518751521812750372">Chrome жабылғанда, сіз кірген беттердің cookie файлдары мен сайт деректері автоматты түрде жойылады.</translation> <translation id="2534507159460261402">Google Pay (Chrome браузеріне көшірілген)</translation> <translation id="2574930892358684005"><ph name="EXISTING_USER" /> бұл Chrome профиліне кіріп қойған. Браузерді пайдалану деректерін бөлек сақтау үшін Chrome сізге жеке профиль жасай алады.</translation> <translation id="2580411288591421699">Қазір ашылып тұрғанмен бірдей Google Chrome нұсқасын орнату мүмкін емес. Google Chrome браузерін жауып, әрекетті қайталаңыз.</translation> @@ -223,7 +213,6 @@ <translation id="6418662306461808273">Бұрыннан бар Chrome профиліне ауыстырылсын ба?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome әзірлеуші нұсқасы</translation> <translation id="6568793831116033768">Chrome OS жүйесі</translation> -<translation id="664235759707825982">Құрылғы Chrome OS-ті орнатуға дайын</translation> <translation id="6676384891291319759">Интернетке кіру</translation> <translation id="6679975945624592337">Google Chrome браузеріне фондық режимде жұмыс істеуге рұқсат беру</translation> <translation id="6739177684496155661">Жаңа Chrome профилінде жалғастырылсын ба?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_km.xtb b/chrome/app/resources/google_chrome_strings_km.xtb index e6c4c02..7b69d0d 100644 --- a/chrome/app/resources/google_chrome_strings_km.xtb +++ b/chrome/app/resources/google_chrome_strings_km.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">Chrome ត្រូវការការអនុញ្ញាតដើម្បីចូលប្រើកាមេរ៉ា និងមីក្រូហ្វូនរបស់អ្នកសម្រាប់ទំព័រនេះ</translation> <translation id="234869673307233423">Chrome មិនអាចពិនិត្យពាក្យសម្ងាត់របស់អ្នកបានទេ។ សូមព្យាយាមម្តងទៀតនៅពេលក្រោយ។</translation> <translation id="235650106824528204">អ្នកគ្រប់គ្រងកម្រងព័ត៌មានការងារអាចលុបទិន្នន័យ Chrome ទាំងឡាយ ដែលបង្កើតអំឡុងពេលប្រើកម្រងព័ត៌មាននេះ (ដូចជាការបង្កើតចំណាំ ប្រវត្តិ ពាក្យសម្ងាត់ និងការកំណត់ផ្សេងទៀត)។ <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">លុបថាសរឹង និងដំឡើង Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />យើងត្រៀមខ្លួនដំឡើង Chrome OS ហើយ! នៅពេលដែលអ្នកបន្ត៖ - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ឯកសារ ទិន្នន័យ និងប្រព័ន្ធប្រតិបត្តិការបច្ចុប្បន្នរបស់អ្នកនឹងត្រូវលុប។ - <ph name="LIST_ITEM" />Chrome OS នឹងត្រូវបានដំឡើង។ - <ph name="LIST_ITEM" />ឧបករណ៍របស់អ្នកនឹងបិទ នៅពេលការដំឡើងបញ្ចប់។ - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />ការរំលឹកចុងក្រោយ៖ ការដំឡើងនឹងលុបថាសរឹងរបស់អ្នកទាំងស្រុង។ សូមប្រាកដថា អ្នកបានបម្រុងទុកទិន្នន័យដែលចាំបាច់សម្រាប់អ្នក។<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />នៅពេលការដំឡើងចាប់ផ្ដើម អ្នកមិនអាចបោះបង់បានទេ។<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome មិនអាចធ្វើសមកម្មទិន្នន័យរបស់អ្នកទេ ពីព្រោះ សមកម្ម មិនមានសម្រាប់ដែនរបស់អ្នកទេ។</translation> <translation id="2467438592969358367">Google Chrome ចង់នាំចេញពាក្យសម្ងាត់របស់អ្នក។ សូមវាយបញ្ចូលពាក្យសម្ងាត់ Windows របស់អ្នកដើម្បីអនុញ្ញាតការនាំចេញនេះ។</translation> <translation id="2485422356828889247">លុបការតំឡើង</translation> @@ -224,7 +214,6 @@ <translation id="6418662306461808273">ប្ដូរទៅកម្រងព័ត៌មាន Chrome ដែលមានស្រាប់ឬ?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">ប្រព័ន្ធ Chrome OS</translation> -<translation id="664235759707825982">ត្រៀមខ្លួនដំឡើង Chrome OS</translation> <translation id="6676384891291319759">ចូលប្រើអ៊ីនធឺណិត</translation> <translation id="6679975945624592337">អនុញ្ញាតឱ្យ Google Chrome ដំណើរការនៅផ្ទៃខាងក្រោយ</translation> <translation id="6739177684496155661">បន្តនៅក្នុងកម្រងព័ត៌មាន Chrome ថ្មីឬ?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_kn.xtb b/chrome/app/resources/google_chrome_strings_kn.xtb index ca92fd45..666363ea 100644 --- a/chrome/app/resources/google_chrome_strings_kn.xtb +++ b/chrome/app/resources/google_chrome_strings_kn.xtb
@@ -57,16 +57,6 @@ <translation id="2348335408836342058">ಈ ಸೈಟ್ಗಾಗಿ ನಿಮ್ಮ ಕ್ಯಾಮರಾ ಮತ್ತು ಮೈಕ್ರೊಫೋನ್ಗೆ ಪ್ರವೇಶಿಸಲು Chrome ಗೆ ಅನುಮತಿಯ ಅಗತ್ಯವಿದೆ</translation> <translation id="234869673307233423">Chrome ಗೆ ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ. ನಂತರ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation> <translation id="235650106824528204">ಈ ಪ್ರೊಫೈಲ್ನ ಬಳಕೆಯ ಸಮಯದಲ್ಲಿ ಉತ್ಪತ್ತಿಯಾಗುವ ಯಾವುದೇ Chrome ಡೇಟಾವನ್ನು (ಬುಕ್ಮಾರ್ಕ್ಗಳು, ಇತಿಹಾಸ, ಪಾಸ್ವರ್ಡ್ಗಳು ಮತ್ತು ಇತರ ಸೆಟ್ಟಿಂಗ್ಗಳ ರಚನೆಯಂತಹ) ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ನಿರ್ವಾಹಕರು ತೆಗೆದುಹಾಕಬಹುದು. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">ಹಾರ್ಡ್ ಡ್ರೈವ್ ಅನ್ನು ಅಳಿಸಿ ಮತ್ತು Chrome OS ಅನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Chrome OS ಅನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲು ನಾವು ಸಿದ್ಧರಿದ್ದೇವೆ! ಒಮ್ಮೆ ನೀವು ಮುಂದುವರಿಯಿರಿ: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ಫೈಲ್ಗಳು, ಡೇಟಾ ಮತ್ತು ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ. - <ph name="LIST_ITEM" />Chrome OS ಅನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲಾಗುತ್ತದೆ. - <ph name="LIST_ITEM" />ಇನ್ಸ್ಟಾಲೇಶನ್ ಪೂರ್ಣಗೊಂಡ ನಂತರ ನಿಮ್ಮ ಸಾಧನವು ಶಟ್ ಡೌನ್ ಆಗುತ್ತದೆ. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />ಕೊನೆಯ ರಿಮೈಂಡರ್: ಇನ್ಸ್ಟಾಲೇಶನ್ ನಿಮ್ಮ ಸಂಪೂರ್ಣ ಹಾರ್ಡ್ ಡ್ರೈವ್ ಅನ್ನು ಅಳಿಸುತ್ತದೆ. ನಿಮಗೆ ಬೇಕಾದ ಯಾವುದೇ ಡೇಟಾವನ್ನು ಬ್ಯಾಕಪ್ ಮಾಡಲಾಗಿದೆ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ಇನ್ಸ್ಟಾಲೇಶನ್ ಪ್ರಾರಂಭವಾದ ನಂತರ ಅದನ್ನು ರದ್ದು ಮಾಡಲಾಗುವುದಿಲ್ಲ.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">ನಿಮ್ಮ ಡೊಮೇನ್ನಲ್ಲಿ ಸಿಂಕ್ ಮಾಡುವ ಸೌಲಭ್ಯವಿಲ್ಲದ ಕಾರಣ Google Chrome ಗೆ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಿಂಕ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.</translation> <translation id="2467438592969358367">Google Chrome ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ರಫ್ತು ಮಾಡಲು ಬಯಸುತ್ತದೆ. ಇದನ್ನು ಅನುಮತಿಸಲು ನಿಮ್ಮ Windows ಪಾಸ್ವರ್ಡ್ ಟೈಪ್ ಮಾಡಿ.</translation> <translation id="2485422356828889247">ಅನ್ಇನ್ಸ್ಟಾಲ್</translation> @@ -216,7 +206,6 @@ <translation id="6418662306461808273">ಈಗಿರುವ Chrome ಪ್ರೊಫೈಲ್ಗೆ ಬದಲಿಸಬೇಕೆ?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS ಸಿಸ್ಟಂ</translation> -<translation id="664235759707825982">Chrome OS ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲು ಸಿದ್ಧವಾಗಿದೆ</translation> <translation id="6676384891291319759">ಇಂಟರ್ನೆಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಿ</translation> <translation id="6679975945624592337">Google Chrome ಹಿನ್ನೆಲೆಯಲ್ಲಿ ರನ್ ಆಗಲು ಅನುಮತಿಸಿ</translation> <translation id="6739177684496155661">ಹೊಸ Chrome ಪ್ರೊಫೈಲ್ನಲ್ಲಿ ಮುಂದುವರಿಯಬೇಕೆ?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ko.xtb b/chrome/app/resources/google_chrome_strings_ko.xtb index 01537b8..b8de675 100644 --- a/chrome/app/resources/google_chrome_strings_ko.xtb +++ b/chrome/app/resources/google_chrome_strings_ko.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">이 사이트에서 카메라와 마이크에 액세스하려면 Chrome에 권한이 필요합니다</translation> <translation id="234869673307233423">Chrome에서 비밀번호를 확인할 수 없습니다. 나중에 다시 시도하세요.</translation> <translation id="235650106824528204">북마크, 방문 기록, 비밀번호, 기타 설정 생성 등 이 프로필을 사용하는 동안 생성된 모든 Chrome 데이터는 직장 프로필 관리자가 삭제할 수 있습니다. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">하드 드라이브 삭제 및 Chrome OS 설치</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Chrome OS를 설치할 준비가 완료되었습니다. 설치 시 다음 사항이 적용됩니다. - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />파일, 데이터, 현재 운영체제가 삭제됩니다. - <ph name="LIST_ITEM" />Chrome OS가 설치됩니다. - <ph name="LIST_ITEM" />설치가 완료되면 기기가 종료됩니다. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />한 번 더 알려드립니다. 설치를 진행하면 하드 드라이브에 있는 모든 데이터가 삭제됩니다. 중요한 데이터를 모두 백업했는지 확인해 주시기 바랍니다.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />설치가 시작되면 취소할 수 없습니다.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">도메인에서 동기화를 사용할 수 없어 Chrome에서 데이터를 동기화하지 못했습니다.</translation> <translation id="2467438592969358367">Chrome에서 비밀번호를 내보내려고 합니다. 허용하려면 Windows 비밀번호를 입력하세요.</translation> <translation id="2485422356828889247">제거</translation> @@ -224,7 +214,6 @@ <translation id="6418662306461808273">기존 Chrome 프로필로 전환하시겠습니까?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - 개발자용 Chrome</translation> <translation id="6568793831116033768">Chrome OS 시스템</translation> -<translation id="664235759707825982">Chrome OS 설치 준비 완료</translation> <translation id="6676384891291319759">인터넷 연결</translation> <translation id="6679975945624592337">백그라운드에서 Chrome을 실행</translation> <translation id="6739177684496155661">새 Chrome 프로필에서 계속하시겠습니까?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ky.xtb b/chrome/app/resources/google_chrome_strings_ky.xtb index da0b0b94..0ca6b14 100644 --- a/chrome/app/resources/google_chrome_strings_ky.xtb +++ b/chrome/app/resources/google_chrome_strings_ky.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">Бул сайтта иштөө үчүн Chrome камераңызды жана микрофонуңузду колдонушу керек</translation> <translation id="234869673307233423">Chrome сырсөздөрүңүздү текшере албай жатат. Кийинчерээк кайталаңыз.</translation> <translation id="235650106824528204">Бул профилди колдонуп жатканда Chrome'до топтолгон бардык маалыматты (түзүлгөн кыстармалар, таржымал, сырсөздөр жана башка жөндөөлөр) жумуш профилинин администратору өчүрө алат. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Катуу дискти тазалап, Chrome OS'ту орнотуу</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Chrome OS'ту орното берсеңиз болот. Улантсаңыз: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Файлдар, дайын-даректер жана учурдагы операциялык тутумуңуз тазаланат. - <ph name="LIST_ITEM" />Chrome OS орнотулат. - <ph name="LIST_ITEM" />Орнотулуп бүткөндөн кийин түзмөгүңүз өчүрүлөт. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Акыркы эстеткич: Тутумду орнотсоңуз, катуу дискиңиз толугу менен тазаланат. Керектүү дайын-даректердин камдык көчүрмөлөрү сакталганын текшериңиз.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Орнотулуп баштагандан кийин аны жокко чыгарууга болбойт.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Домениңизде шайкештештирүү аракети жок болгондуктан, Google Chrome дайын-даректериңизди шайкештештире алган жок.</translation> <translation id="2467438592969358367">Google Chrome сырсөздөрүңүздү экспорттогону жатат. Ага уруксат берүү үчүн Windows аккаунтуңуздун сырсөзүн териңиз.</translation> <translation id="2485422356828889247">Орнотуудан чыгаруу</translation> @@ -224,7 +214,6 @@ <translation id="6418662306461808273">Учурдагы Chrome профилине которуласызбы?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS тутуму</translation> -<translation id="664235759707825982">Chrome OS'ту орното берсеңиз болот</translation> <translation id="6676384891291319759">Интернетке кирүү</translation> <translation id="6679975945624592337">Google Chrome'го фондук режимде иштөөгө уруксат берүү</translation> <translation id="6739177684496155661">Жаңы Chrome профилинде улантасызбы?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lo.xtb b/chrome/app/resources/google_chrome_strings_lo.xtb index a207cac..370159f 100644 --- a/chrome/app/resources/google_chrome_strings_lo.xtb +++ b/chrome/app/resources/google_chrome_strings_lo.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">Chrome ຕ້ອງການການອະນຸຍາດເພື່ອເຂົ້າເຖິງກ້ອງຖ່າຍຮູບ ແລະ ໄມໂຄຣໂຟນຂອງທ່ານສຳລັບເວັບໄຊນີ້</translation> <translation id="234869673307233423">Chrome ບໍ່ສາມາດກວດລະຫັດຜ່ານຂອງທ່ານໄດ້. ກະລຸນາລອງໃໝ່ໃນພາຍຫລັງ.</translation> <translation id="235650106824528204">ຜູ້ເບິ່ງແຍງລະບົບໂປຣໄຟລ໌ບ່ອນເຮັດວຽກສາມາດລຶບຂໍ້ມູນ Chrome ໃດໆກໍຕາມທີ່ສ້າງຂຶ້ນໃນລະຫວ່າງການນຳໃຊ້ໂປຣໄຟລ໌ນີ້ (ເຊັ່ນ: ການສ້າງບຸກມາກ, ປະຫວັດ, ລະຫັດຜ່ານ ແລະ ການຕັ້ງຄ່າອື່ນໆ) ອອກໄດ້. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">ລຶບຮາດໄດຣຟ໌ ແລະ ຕິດຕັ້ງ Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />ພວກເຮົາພ້ອມຕິດຕັ້ງ Chrome OS ແລ້ວ! ຫຼັງຈາກທີ່ທ່ານດຳເນີນການຕໍ່ແລ້ວ: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ໄຟລ໌, ຂໍ້ມູນ ແລະ ລະບົບປະຕິບັດການປັດຈຸບັນຂອງທ່ານຈະຖືກລຶບອອກ. - <ph name="LIST_ITEM" />Chrome OS ຈະຖືກຕິດຕັ້ງ. - <ph name="LIST_ITEM" />ອຸປະກອນຂອງທ່ານຈະປິດເຄື່ອງເມື່ອການຕິດຕັ້ງສຳເລັດແລ້ວ. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />ການແຈ້ງເຕືອນເທື່ອສຸດທ້າຍ: ການຕິດຕັ້ງຈະລຶບທັງຮາດໄດຣຟ໌ຂອງທ່ານອອກ. ກະລຸນາກວດສອບວ່າທ່ານສຳຮອງຂໍ້ມູນທີ່ທ່ານຕ້ອງການໄວ້ໝົດແລ້ວ.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ຫຼັງຈາກເລີ່ມການຕິດຕັ້ງແລ້ວມັນຈະບໍ່ສາມາດຍົກເລີກໄດ້.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome ບໍ່ສາມາດຊິງຄ໌ຂໍ້ມູນຂອງທ່ານໄດ້ ເພາະວ່າບໍ່ມີການຊິງຄ໌ຢູ່ໃນໂດເມນຂອງທ່ານ.</translation> <translation id="2467438592969358367">Google Chrome ຕ້ອງການສົ່ງອອກລະຫັດຜ່ານຂອງທ່ານ. ກະລຸນາພິມລະຫັດຜ່ານ Windows ຂອງທ່ານ ເພື່ອອະນຸຍາດສິ່ງນີ້.</translation> <translation id="2485422356828889247">ຖອນຕິດຕັ້ງ</translation> @@ -224,7 +214,6 @@ <translation id="6418662306461808273">ສະຫຼັບໄປຫາໂປຣໄຟລ໌ Chrome ທີ່ມີຢູ່ກ່ອນແລ້ວບໍ?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">ລະບົບ Chrome OS</translation> -<translation id="664235759707825982">ພ້ອມຕິດຕັ້ງ Chrome OS ແລ້ວ</translation> <translation id="6676384891291319759">ການເຂົ້າຫາອິນເຕີເນັດ</translation> <translation id="6679975945624592337">ໃຫ້ Google Chrome ເປີດໃຊ້ຢູ່ໃນພື້ນຫຼັງ</translation> <translation id="6739177684496155661">ສືບຕໍ່ໃນໂປຣໄຟລ໌ Chrome ໃໝ່ບໍ?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lt.xtb b/chrome/app/resources/google_chrome_strings_lt.xtb index b910623d..0c84d6dc 100644 --- a/chrome/app/resources/google_chrome_strings_lt.xtb +++ b/chrome/app/resources/google_chrome_strings_lt.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">„Chrome“ reikia leidimo, kad galėtų naudoti fotoaparatą ir mikrofoną šioje svetainėje</translation> <translation id="234869673307233423">„Chrome“ negali patikrinti jūsų slaptažodžių. Vėliau bandykite dar kartą.</translation> <translation id="235650106824528204">Visus „Chrome“ duomenis, sugeneruotus naudojant šį profilį (pvz., sukurtas žymes, istoriją, slaptažodžius ir kitus nustatymus), gali pašalinti darbo profilio administratorius. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Ištrinti standųjį diską ir įdiegti „Chrome“ OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Esame pasiruošę įdiegti „Chrome“ OS! Atliekant diegimo procesą bus atlikti toliau nurodyti veiksmai. - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Bus ištrinti failai, duomenys ir dabartinė operacinė sistema. - <ph name="LIST_ITEM" />Bus įdiegta „Chrome“ OS. - <ph name="LIST_ITEM" />Įdiegus įrenginys bus išjungtas. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Paskutinis priminimas: įdiegiant bus ištrinti visi standžiojo disko duomenys. Įsitikinkite, kad turite atsarginę svarbių duomenų kopiją.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Pradėjus diegimo procesą jo atšaukti nebegalima.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">„Google Chrome“ negali sinchronizuoti duomenų, nes jūsų domene sinchronizavimas nepasiekiamas.</translation> <translation id="2467438592969358367">„Google Chrome“ nori eksportuoti jūsų slaptažodžius. Įveskite „Windows“ slaptažodį, kad tai leistumėte.</translation> <translation id="2485422356828889247">Pašalinti</translation> @@ -224,7 +214,6 @@ <translation id="6418662306461808273">Perjungti į esamą „Chrome“ profilį?</translation> <translation id="6515495397637126556">„<ph name="PAGE_TITLE" />“ – „Google Chrome Dev“</translation> <translation id="6568793831116033768">„Chrome“ OS sistema</translation> -<translation id="664235759707825982">Galima įdiegti „Chrome“ OS</translation> <translation id="6676384891291319759">Interneto prieiga</translation> <translation id="6679975945624592337">„Google Chrome“ leidimas fone</translation> <translation id="6739177684496155661">Tęsti naudojant naują „Chrome“ profilį?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lv.xtb b/chrome/app/resources/google_chrome_strings_lv.xtb index 6152175..aad02ac 100644 --- a/chrome/app/resources/google_chrome_strings_lv.xtb +++ b/chrome/app/resources/google_chrome_strings_lv.xtb
@@ -57,16 +57,6 @@ <translation id="2348335408836342058">Pārlūkam Chrome ir nepieciešama atļauja piekļūt jūsu kamerai un mikrofonam šajā vietnē.</translation> <translation id="234869673307233423">Pārlūkprogrammā Chrome nevar pārbaudīt jūsu paroles. Vēlāk mēģiniet vēlreiz.</translation> <translation id="235650106824528204">Darba profila administrators var noņemt šī profila lietošanas laikā ģenerētos Chrome datus (piemēram, grāmatzīmes, vēsturi, paroles un citus iestatījumus). <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Dzēst datus cietajā diskā un instalēt Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Viss ir sagatavots Chrome OS instalēšanai! Paveicot nākamas darbības, sagaidāmas tālāk norādītās izmaiņas. - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Faili, dati un pašreizējā operētājsistēma tiks dzēsta. - <ph name="LIST_ITEM" />Tiks instalēta operētājsistēma Chrome OS. - <ph name="LIST_ITEM" />Kad instalēšana būs pabeigta, ierīce tiks izslēgta. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Atgādinām, ka instalēšanas laikā tiks izdzēsti visi dati cietajā diskā. Pārliecinieties, ka esat dublējis visus jums vajadzīgos datus.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Kad instalēšana būs sākta, to nevarēs atcelt.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome nevarēja sinhronizēt jūsu datus, jo jūsu domēnam nav pieejama sinhronizācija.</translation> <translation id="2467438592969358367">Pārlūkā Google Chrome tiek mēģināts eksportēt jūsu paroles. Lai to atļautu, ierakstiet savu Windows paroli.</translation> <translation id="2485422356828889247">Atinstalēt</translation> @@ -219,7 +209,6 @@ <translation id="6418662306461808273">Vai pāriet uz esošo Chrome profilu?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> — Google Chrome izstrādātāju versija</translation> <translation id="6568793831116033768">Chrome OS sistēma</translation> -<translation id="664235759707825982">Sagatavotība Chrome OS instalēšanai</translation> <translation id="6676384891291319759">Piekļūt internetam</translation> <translation id="6679975945624592337">Ļaut pārlūkam Google Chrome darboties fonā</translation> <translation id="6739177684496155661">Vai turpināt jaunā Chrome profilā?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_mk.xtb b/chrome/app/resources/google_chrome_strings_mk.xtb index 7fbabc81..c923721 100644 --- a/chrome/app/resources/google_chrome_strings_mk.xtb +++ b/chrome/app/resources/google_chrome_strings_mk.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">На Chrome му треба дозвола за да пристапи до камерата и микрофонот за сајтов</translation> <translation id="234869673307233423">Chrome не може да ги провери вашите лозинки. Обидете се пак подоцна.</translation> <translation id="235650106824528204">Податоците на Chrome што се генерирани при користењето на овој профил (како на пример, создавање обележувачи, историја, лозинки и други поставки) може да се отстранат од страна на администраторот на работниот профил. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Избриши го хард дискот и инсталирај Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Подготвени сме за инсталирање на Chrome OS! Штом ќе продолжите: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Датотеките, податоците и моменталниот оперативен систем ќе се избришат. - <ph name="LIST_ITEM" />Ќе се инсталира Chrome OS. - <ph name="LIST_ITEM" />Уредот ќе се исклучи кога ќе заврши инсталацијата. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Еден последен потсетник: инсталацијата ќе го избрише целиот хард диск. Погрижете се дека сте направиле бекап од податоците што ви се важни.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Штом ќе започне инсталирањето нема да може да се откаже.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome не може да ги синхронизира вашите податоци затоа што Sync не е достапен за вашиот домен.</translation> <translation id="2467438592969358367">Google Chrome сака да ги извезе вашите лозинки. Внесете ја лозинката за Windows за да го дозволите ова.</translation> <translation id="2485422356828889247">Деинсталирај</translation> @@ -224,7 +214,6 @@ <translation id="6418662306461808273">Сакате да се префрлите на постојниот профил на Chrome?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Систем Chrome OS</translation> -<translation id="664235759707825982">Chrome OS е подготвен за инсталирање</translation> <translation id="6676384891291319759">Пристап до интернет</translation> <translation id="6679975945624592337">Остави Google Chrome да работи во заднина</translation> <translation id="6739177684496155661">Сакате да продолжите на нов профил на Chrome?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ml.xtb b/chrome/app/resources/google_chrome_strings_ml.xtb index d967169..bd684bf 100644 --- a/chrome/app/resources/google_chrome_strings_ml.xtb +++ b/chrome/app/resources/google_chrome_strings_ml.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">ഈ സൈറ്റിനായി, Chrome-ന് നിങ്ങളുടെ ക്യാമറയും മൈക്രോഫോണും ആക്സസ് ചെയ്യാനുള്ള അനുമതി ആവശ്യമാണ്</translation> <translation id="234869673307233423">Chrome-ന് നിങ്ങളുടെ പാസ്വേഡുകൾ പരിശോധിക്കാനാവുന്നില്ല. പിന്നീട് വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="235650106824528204">ഈ പ്രൊഫൈലിന്റെ ഉപയോഗത്തിനിടയിൽ ഉണ്ടായ ഏത് Chrome ഡാറ്റയും (ബുക്ക്മാർക്കുകൾ, ചരിത്രം, പാസ്വേഡുകൾ, മറ്റ് ക്രമീകരണം എന്നിവ സൃഷ്ടിക്കൽ പോലുള്ളവ) ഔദ്യോഗിക പ്രൊഫൈൽ അഡ്മിന് നീക്കം ചെയ്യാനാകും. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">ഹാർഡ് ഡ്രൈവ് മായ്ച്ച് Chrome OS ഇൻസ്റ്റാൾ ചെയ്യുക</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Chrome OS ഇൻസ്റ്റാൾ ചെയ്യാൻ ഞങ്ങൾ തയ്യാറാണ്! തുടർന്നാൽ: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ഫയലുകൾ, ഡാറ്റ, നിങ്ങളുടെ നിലവിലെ ഓപ്പറേറ്റിംഗ് സിസ്റ്റം എന്നിവ മായ്ക്കും. - <ph name="LIST_ITEM" />Chrome OS ഇൻസ്റ്റാൾ ചെയ്യും. - <ph name="LIST_ITEM" />ഇൻസ്റ്റാൾ ചെയ്യൽ പൂർത്തിയായാൽ നിങ്ങളുടെ ഉപകരണം ഷട്ട് ഡൗൺ ആകും. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />അവസാന റിമൈൻഡർ: ഇൻസ്റ്റാൾ ചെയ്യുന്നത് നിങ്ങളുടെ ഹാർഡ് ഡ്രൈവ് മുഴുവനായും മായ്ക്കും. നിങ്ങൾക്ക് വേണ്ട എല്ലാ ഡാറ്റയും ബാക്കപ്പെടുത്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ഒരിക്കൽ ഇൻസ്റ്റാൾ ചെയ്യൽ ആരംഭിച്ചാൽ അത് റദ്ദാക്കാനാകില്ല.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">നിങ്ങളുടെ ഡൊമെയ്നിനായി സമന്വയം ലഭ്യമല്ലാത്തതിനാൽ Google Chrome-ന് നിങ്ങളുടെ ഡാറ്റ സമന്വയിപ്പിക്കാനായില്ല.</translation> <translation id="2467438592969358367">നിങ്ങളുടെ പാസ്വേഡുകൾ എക്സ്പോർട്ട് ചെയ്യാൻ Google Chrome ആഗ്രഹിക്കുന്നു. ഇത് അനുവദിക്കാൻ നിങ്ങളുടെ Windows പാസ്വേഡ് നൽകുക.</translation> <translation id="2485422356828889247">അണ്ഇന്സ്റ്റാള് ചെയ്യുക</translation> @@ -224,7 +214,6 @@ <translation id="6418662306461808273">നിലവിലുള്ള Chrome പ്രൊഫൈലിലേക്ക് മാറണോ?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS സിസ്റ്റം</translation> -<translation id="664235759707825982">Chrome OS ഇൻസ്റ്റാൾ ചെയ്യാൻ തയ്യാറാണ്</translation> <translation id="6676384891291319759">ഇന്റര്നെറ്റ് ആക്സസ് ചെയ്യുക</translation> <translation id="6679975945624592337">പശ്ചാത്തലത്തില് Google Chrome പ്രവര്ത്തിക്കാന് അനുവദിക്കുക</translation> <translation id="6739177684496155661">പുതിയ Chrome പ്രൊഫൈലിൽ തുടരണോ?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_mn.xtb b/chrome/app/resources/google_chrome_strings_mn.xtb index 7204bc83..211156e 100644 --- a/chrome/app/resources/google_chrome_strings_mn.xtb +++ b/chrome/app/resources/google_chrome_strings_mn.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">Энэ сайтыг ашиглахын тулд Chrome-д таны камер, микрофонд хандах зөвшөөрөл шаардлагатай</translation> <translation id="234869673307233423">Chrome таны нууц үгсийг шалгах боломжгүй байна. Дараа дахин оролдоно уу.</translation> <translation id="235650106824528204">Энэ профайлыг ашиглах үед үүссэн Chrome-н аливаа өгөгдлийг (хавчуурга, түүх, нууц үг болон бусад тохиргоог үүсгэх зэрэг) ажлын профайлын админ хасах боломжтой. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Хатуу дискийг устгаж, Chrome үйлдлийн системийг суулгах</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Бид Chrome үйлдлийн системийг суулгахад бэлэн боллоо! Таныг үргэлжлүүлмэгц: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Файл, өгөгдөл болон таны одоогийн үйлдлийн системийг устгана. - <ph name="LIST_ITEM" />Chrome үйлдлийн системийг суулгана. - <ph name="LIST_ITEM" />Суулгаж дуусмагц таны төхөөрөмжийг унтраана. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Хамгийн сүүлийн сануулга: суулгаснаар таны хатуу дискийг бүхэлд нь устгана. Танд аливаа хуулбарлах шаардлагатай өгөгдөл байгаа эсэхийг шалгана уу.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Суулгаж эхэлмэгц үүнийг цуцлах боломжгүй болно.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Таны домэйнд sync хийх боломжгүй учраас Google Chrome нь таны өгөгдлийг sync хийж чадсангүй.</translation> <translation id="2467438592969358367">Google Chrome таны нууц үгийг экспортлох хүсэлтэй байна. Үүнийг зөвшөөрч байгаа бол Windows-н нууц үгээ оруулна уу.</translation> <translation id="2485422356828889247">Устгах</translation> @@ -224,7 +214,6 @@ <translation id="6418662306461808273">Chrome-н одоо байгаа профайл руу сэлгэх үү?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Дев</translation> <translation id="6568793831116033768">Chrome үйлдлийн систем</translation> -<translation id="664235759707825982">Chrome үйлдлийн системийг суулгахад бэлэн боллоо</translation> <translation id="6676384891291319759">Интернэтэд нэвтрэх</translation> <translation id="6679975945624592337">Google Chrome-г цаана ажиллуулахыг зөвшөөрөх</translation> <translation id="6739177684496155661">Chrome-н шинэ профайлд үргэлжлүүлэх үү?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_mr.xtb b/chrome/app/resources/google_chrome_strings_mr.xtb index bd55766..7a50843 100644 --- a/chrome/app/resources/google_chrome_strings_mr.xtb +++ b/chrome/app/resources/google_chrome_strings_mr.xtb
@@ -59,19 +59,10 @@ <translation id="2348335408836342058">या साइटसाठी Chrome ला तुमचा कॅमेरा आणि मायक्रोफोन ॲक्सेस करण्याची परवानगी हवी आहे</translation> <translation id="234869673307233423">Chrome तुमचे पासवर्ड तपासू शकत नाही. नंतर पुन्हा प्रयत्न करा.</translation> <translation id="235650106824528204">या प्रोफाइलच्या वापरादरम्यान जनरेट केला गेलेला कोणताही Chrome डेटा (जसे की बुकमार्क, इतिहास, पासवर्ड आणि इतर सेटिंग्जची निर्मिती) कार्य प्रोफाइल अॅडमिनिस्ट्रेटरला हटवता येतो. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">हार्ड ड्राइव्ह मिटवा आणि Chrome OS इंस्टॉल करा</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />आम्ही Chrome OS इंस्टॉल करण्यासाठी तयार आहोत! तुम्ही पुढे सुरू ठेवल्यानंतर: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />फाइल, डेटा आणि तुमची सध्याची ऑपरेटिंग सिस्टम मिटवली जाईल. - <ph name="LIST_ITEM" />Chrome OS इंस्टॉल केले जाईल. - <ph name="LIST_ITEM" />इंस्टॉलेशन पूर्ण झाल्यानंतर, तुमचे डिव्हाइस एकदा बंद होईल. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />एक शेवटचा रिमाइंडर: इंस्टॉलेशन तुमची संपूर्ण हार्ड ड्राइव्ह मिटवेल. कृपया तुमच्यासाठी महत्त्वाच्या असलेल्या डेटाचा तुम्ही बॅकअप घेतला असल्याची खात्री करा.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />इंस्टॉलेशन सुरू झाल्यावर ते रद्द करता येऊ शकत नाही.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">आपल्या डोमेनसाठी सिंक उपलब्ध नसल्यामुळे Google Chrome तुमचा डेटा संकालित करू शकले नाही.</translation> <translation id="2467438592969358367">Google Chrome ला तुमचे पासवर्ड निर्यात करायचे आहेत. हे करू देण्यासाठी तुमचा Windows पासवर्ड टाइप करा.</translation> <translation id="2485422356828889247">अनइंस्टॉल करा</translation> +<translation id="2518751521812750372">तुम्ही Chrome बंद केल्यास, ते तुम्ही भेट दिलेल्या पेजच्या कुकी आणि साइट डेटा आपोआप साफ करते</translation> <translation id="2534507159460261402">Google Pay (Chrome वर कॉपी केले)</translation> <translation id="2574930892358684005"><ph name="EXISTING_USER" /> यांनी आधीपासून या Chrome प्रोफाइलमध्ये साइन इन केलेले आहे. तुमचे ब्राउझिंग स्वतंत्र ठेवण्यासाठी, Chrome तुमच्याकरिता तुमची स्वतःची प्रोफाइल तयार करू शकते.</translation> <translation id="2580411288591421699">सध्या चालत असलेली Google Chrome ची समान आवृत्ती इंस्टॉल करू शकत नाही. कृपया Google Chrome बंद करा आणि पुन्हा प्रयत्न करा.</translation> @@ -221,7 +212,6 @@ <translation id="6418662306461808273">सध्याच्या Chrome प्रोफाइलवर स्विच करायचे आहे का?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome डेव्हलपर</translation> <translation id="6568793831116033768">Chrome OS सिस्टम</translation> -<translation id="664235759707825982">Chrome OS इंस्टॉल करण्यासाठी तयार आहे</translation> <translation id="6676384891291319759">इंटरनेट ॲक्सेस करा</translation> <translation id="6679975945624592337">Google Chrome बॅकग्राउंडमध्ये सुरू द्या</translation> <translation id="6739177684496155661">नवीन Chrome प्रोफाइलमध्ये सुरू ठेवायचे आहे का?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ms.xtb b/chrome/app/resources/google_chrome_strings_ms.xtb index a6798170..26d839852 100644 --- a/chrome/app/resources/google_chrome_strings_ms.xtb +++ b/chrome/app/resources/google_chrome_strings_ms.xtb
@@ -56,16 +56,6 @@ <translation id="2348335408836342058">Chrome memerlukan kebenaran untuk mengakses kamera dan mikrofon anda bagi tapak ini</translation> <translation id="234869673307233423">Chrome tidak dapat menyemak kata laluan anda. Cuba lagi nanti.</translation> <translation id="235650106824528204">Sebarang data Chrome yang dijana semasa penggunaan profil ini (seperti pembuatan penanda halaman, sejarah, kata laluan dan tetapan lain) boleh dialih keluar oleh pentadbir profil kerja. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Padamkan Pemacu Keras & Pasang OS Chrome</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Kami sudah bersedia untuk memasang OS Chrome! Sebaik sahaja anda meneruskan: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Fail, data dan sistem pengendalian semasa anda akan dipadamkan. - <ph name="LIST_ITEM" />OS Chrome akan dipasang. - <ph name="LIST_ITEM" />Peranti anda akan dimatikan sebaik sahaja pemasangan selesai. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Satu peringatan terakhir: pemasangan akan memadamkan seluruh pemacu keras anda. Sila pastikan anda telah menyandarkan sebarang data yang penting bagi anda.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Sebaik sahaja dimulakan, pemasangan tidak boleh dibatalkan.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome tidak dapat menyegerakkan data anda kerana Segerak tidak tersedia untuk domain anda.</translation> <translation id="2467438592969358367">Google Chrome mahu mengeksport kata laluan anda. Taip kata laluan Windows anda untuk membenarkannya.</translation> <translation id="2485422356828889247">Nyahpasang</translation> @@ -216,7 +206,6 @@ <translation id="6418662306461808273">Tukar kepada profil Chrome yang sedia ada?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Sistem OS Chrome</translation> -<translation id="664235759707825982">Sedia untuk memasang OS Chrome</translation> <translation id="6676384891291319759">Akses Internet</translation> <translation id="6679975945624592337">Biarkan Google Chrome Dijalankan Di Latar Belakang</translation> <translation id="6739177684496155661">Teruskan dalam profil Chrome baharu?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_my.xtb b/chrome/app/resources/google_chrome_strings_my.xtb index c228f42..f9ed833 100644 --- a/chrome/app/resources/google_chrome_strings_my.xtb +++ b/chrome/app/resources/google_chrome_strings_my.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">ဤဝဘ်ဆိုက်အတွက် Chrome သည် သင်၏ကင်မရာနှင့် မိုက်ခရိုဖုန်းကို အသုံးပြုခွင့်ရရန် လိုအပ်ပါသည်</translation> <translation id="234869673307233423">Chrome က သင့်စကားဝှက်များကို စစ်ဆေး၍မရပါ။ နောက်မှ ထပ်စမ်းကြည့်ပါ။</translation> <translation id="235650106824528204">ဤပရိုဖိုင်အသုံးပြုစဉ်အတွင်း ရရှိလာသော Chrome ဒေတာမှန်သမျှ (လိပ်စာများ၊ မှတ်တမ်း၊ စကားဝှက်နှင့် အခြားဆက်တင်များပြုလုပ်ခြင်း ကဲ့သို့) ကို အလုပ်ပရိုဖိုင် စီမံခန့်ခွဲသူက ဖယ်ရှားနိုင်သည်။ <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">ဟတ်ဒရိုက် ဒေတာဖျက်ပြီး Chrome OS ထည့်သွင်းရန်</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Chrome OS ထည့်သွင်းရန် အသင့်ဖြစ်ပါပြီ။ ရှေ့ဆက်သောအခါ- - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ဖိုင်များ၊ ဒေတာနှင့် သင်၏လက်ရှိ လည်ပတ်သည့်စနစ်ကို ဖျက်လိုက်ပါမည်။ - <ph name="LIST_ITEM" />Chrome OS ထည့်သွင်းပါမည်။ - <ph name="LIST_ITEM" />ထည့်သွင်းမှုပြီးသောအခါ သင်၏စက် အပြီးပိတ်သွားပါမည်။ - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />နောက်ဆုံး သတိပေးချက်- ထည့်သွင်းမှုသည် သင့်ဟတ်ဒရိုက်ဗ်တစ်ခုလုံးကို ဖျက်လိုက်ပါမည်။ အရေးကြီးသောဒေတာကို အရန်သိမ်းထားကြောင်း သေချာပါစေ။<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ထည့်သွင်းမှုစတင်သောအခါ ၎င်းကို ပယ်ဖျက်၍မရပါ။<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">သင်၏ ဒိုမိန်းအတွက် စင့်က် လုပ်မရနိုင်သောကြောင့် Google Chrome က သင်၏ ဒေတာကို စင့်က် မလုပ်နိုင်ခဲ့ပါ။</translation> <translation id="2467438592969358367">Google Chrome သည် သင်၏ စကားဝှက်များကို တင်ပို့လိုသည်။ ၎င်းကို ခွင့်ပြုရန် သင်၏ Windows စကားဝှက်ကို ထည့်ပါ။</translation> <translation id="2485422356828889247">ဖြုတ်ရန်</translation> @@ -224,7 +214,6 @@ <translation id="6418662306461808273">လက်ရှိ Chrome ပရိုဖိုင်သို့ ပြောင်းမလား။</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS စနစ်</translation> -<translation id="664235759707825982">Chrome OS ထည့်သွင်းရန် အသင့်ဖြစ်ပါပြီ</translation> <translation id="6676384891291319759">အင်တာနက် ရယူရန်</translation> <translation id="6679975945624592337">Google Chrome ကို နောက်ခံတွင် ဖွင့်ခွင့်ပေးပါ</translation> <translation id="6739177684496155661">Chrome ပရိုဖိုင်အသစ်တွင် ဆက်လုပ်မလား။</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ne.xtb b/chrome/app/resources/google_chrome_strings_ne.xtb index 3bab114..1b9d1d1 100644 --- a/chrome/app/resources/google_chrome_strings_ne.xtb +++ b/chrome/app/resources/google_chrome_strings_ne.xtb
@@ -58,16 +58,6 @@ <translation id="2348335408836342058">Chrome लाई यो साइटका लागि तपाईंको क्यामेरा र माइक्रोफोनमाथि पहुँच राख्ने अनुमति चाहिन्छ</translation> <translation id="234869673307233423">Chrome ले तपाईंका पासवर्डहरूको जाँच गर्न सकेन। पछि फेरि प्रयास गर्नुहोस्।</translation> <translation id="235650106824528204">कार्य प्रोफाइलका एड्मिन यो प्रोफाइल चलाउँदा Chrome मा सिर्जना हुने (बुकमार्क, इतिहास, पासवर्ड र अन्य सेटिङलगायतका) सबै डेटा हटाउन सक्नुहुन्छ। <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">हार्ड ड्राइभमा भएका डेटा मेटाउनुहोस् र Chrome OS इन्स्टल गर्नुहोस्</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />अब Chrome OS इन्स्टल गर्न सकिन्छ! इन्स्टल गर्ने प्रक्रिया थालेपछि: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />फाइल, डेटा र हालको अपरेटिङ सिस्टम मेटिने छ। - <ph name="LIST_ITEM" />Chrome OS इन्स्टल हुने छ। - <ph name="LIST_ITEM" />इन्स्टल गर्ने प्रक्रिया पूरा भएपछि तपाईंको डिभाइस सट डाउन हुने छ। - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />अन्तिम चेतावनी: तपाईंले इन्स्टल गर्नुभयो भने तपाईंको हार्ड ड्राइभमा भएका सबै डेटा मेटिने छन्। कृपया तपाईंले आफ्ना सबै महत्त्वपूर्ण डेटा ब्याकअप गरिसक्नुभएको छ भन्ने कुरा सुनिश्चित गर्नुहोस्।<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />इन्स्टल गर्ने प्रक्रिया थालिसकेपछि उक्त प्रक्रिया रद्द गर्न मिल्दैन।<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome ले तपाइँको लगत समक्रमण गर्न सकेन किनभने तपाइँको डोमेनको लागि समक्रमन उपलब्ध छैन।</translation> <translation id="2467438592969358367">Google Chrome तपाईंका पासवर्डहरू निर्यात गर्न चाहन्छ। यसो गर्ने अनुमति दिन Windows को आफ्नो पासवर्ड टाइप गर्नुहोस्।</translation> <translation id="2485422356828889247">विस्थापन गर्नुहोस्</translation> @@ -220,7 +210,6 @@ <translation id="6418662306461808273">विद्यमान Chrome प्रोफाइल प्रयोग गर्ने हो?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS सिस्टम</translation> -<translation id="664235759707825982">अब Chrome OS इन्स्टल गर्न सकिन्छ</translation> <translation id="6676384891291319759">इन्टरनेट पहुँच गर्नुहोस्</translation> <translation id="6679975945624592337">Google Chrome लाई पृष्ठभूमिमा चल्न दिनुहोस्</translation> <translation id="6739177684496155661">नयाँ Chrome प्रोफाइल प्रयोग गरी साइन इन गर्ने हो?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_nl.xtb b/chrome/app/resources/google_chrome_strings_nl.xtb index 08a540c..254c79f 100644 --- a/chrome/app/resources/google_chrome_strings_nl.xtb +++ b/chrome/app/resources/google_chrome_strings_nl.xtb
@@ -59,16 +59,6 @@ <translation id="2348335408836342058">Chrome heeft toegangsrechten voor je camera en microfoon nodig voor deze site</translation> <translation id="234869673307233423">Chrome kan je wachtwoorden niet checken. Probeer het later opnieuw.</translation> <translation id="235650106824528204">Alle Chrome-gegevens die worden gegenereerd bij het gebruik van dit profiel (zoals bookmarks, geschiedenis, wachtwoorden en andere instellingen) kunnen worden verwijderd door de beheerder van het werkprofiel. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Harde schijf wissen en Chrome OS installeren</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Je kunt Chrome OS installeren. Als je doorgaat, gebeurt het volgende: -<ph name="BEGIN_LIST" /> -<ph name="LIST_ITEM" />Bestanden, gegevens en je huidige besturingssysteem worden gewist. - <ph name="LIST_ITEM" />Chrome OS wordt geïnstalleerd. - <ph name="LIST_ITEM" />Je apparaat gaat uit nadat de installatie is afgerond. - <ph name="END_LIST" /> -<ph name="END_PARAGRAPH1" /> -<ph name="BEGIN_PARAGRAPH2" />Een laatste herinnering: tijdens de installatie wordt de hele harde schijf gewist. Zorg dat je een back-up hebt gemaakt van belangrijke gegevens.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Nadat de installatie is gestart, kun je deze niet meer annuleren.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome kan je gegevens niet synchroniseren, omdat synchronisatie niet beschikbaar is voor je domein.</translation> <translation id="2467438592969358367">Google Chrome wil je wachtwoorden exporteren. Geef je Windows-wachtwoord op om dit toe te staan.</translation> <translation id="2485422356828889247">Installatie ongedaan maken</translation> @@ -220,7 +210,6 @@ <translation id="6418662306461808273">Overschakelen naar bestaand Chrome-profiel?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS-systeem</translation> -<translation id="664235759707825982">Klaar om Chrome OS te installeren</translation> <translation id="6676384891291319759">Verbinding maken met internet</translation> <translation id="6679975945624592337">Google Chrome op de achtergrond laten uitvoeren</translation> <translation id="6739177684496155661">Doorgaan met een nieuw Chrome-profiel?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_no.xtb b/chrome/app/resources/google_chrome_strings_no.xtb index 688fca4c..cd6983f2 100644 --- a/chrome/app/resources/google_chrome_strings_no.xtb +++ b/chrome/app/resources/google_chrome_strings_no.xtb
@@ -55,16 +55,6 @@ <translation id="2348335408836342058">Chrome trenger tilgang til kameraet ditt og mikrofonen din for dette nettstedet</translation> <translation id="234869673307233423">Chrome kan ikke sjekke passordene dine. Prøv igjen senere.</translation> <translation id="235650106824528204">Alle Chrome-data som genereres mens denne profilen brukes (f.eks. oppretting av bokmerker, logg, passord og andre innstillinger), kan fjernes av administratoren for jobbprofilen. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Tøm harddisken og installer Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Vi er klare til å installere Chrome OS! Når du fortsetter, skjer følgende: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Filer, data, og det nåværende operativsystemet ditt blir slettet. - <ph name="LIST_ITEM" />Chrome OS blir installert. - <ph name="LIST_ITEM" />Enheten din slår seg av når installasjonen er fullført. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Én siste påminnelse: Installasjonen kommer til å tømme hele harddisken din. Forsikre deg om at du har sikkerhetskopiert eventuelle data du bryr deg om.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Når installasjonen er startet, kan den ikke avbrytes.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome kunne ikke synkronisere dataene dine fordi synkronisering ikke er tilgjengelig for domenet ditt.</translation> <translation id="2467438592969358367">Google Chrome forsøker å eksportere passordene dine. Skriv inn Windows-passordet ditt for å tillate dette.</translation> <translation id="2485422356828889247">Avinstaller</translation> @@ -215,7 +205,6 @@ <translation id="6418662306461808273">Vil du bytte til den eksisterende Chrome-profilen?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome for utviklere</translation> <translation id="6568793831116033768">Chrome OS-systemet</translation> -<translation id="664235759707825982">Klar til å installere Chrome OS</translation> <translation id="6676384891291319759">Gå til Internett</translation> <translation id="6679975945624592337">La Google Chrome kjøre i bakgrunnen</translation> <translation id="6739177684496155661">Vil du fortsette i en ny Chrome-profil?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_or.xtb b/chrome/app/resources/google_chrome_strings_or.xtb index b929308..60cb332 100644 --- a/chrome/app/resources/google_chrome_strings_or.xtb +++ b/chrome/app/resources/google_chrome_strings_or.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">ଏହି ସାଇଟ୍ ପାଇଁ ଆପଣଙ୍କର କ୍ୟାମେରା ଏବଂ ମାଇକ୍ରୋଫୋନ୍ ଆକ୍ସେସ୍ କରିବାକୁ Chrome ଅନୁମତି ଆବଶ୍ୟକ କରୁଛି</translation> <translation id="234869673307233423">Chrome ଆପଣଙ୍କର ପାସୱାର୍ଡଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରିପାରିବ ନାହିଁ। ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation> <translation id="235650106824528204">ଏହି ପ୍ରୋଫାଇଲର ବ୍ୟବହାର ସମୟରେ ସୃଷ୍ଟି ହୋଇଥିବା ଯେ କୌଣସି Chrome ଡାଟା (ଯେପରି ବୁକମାର୍କ୍, ଇତିହାସ, ପାସୱାର୍ଡ ଏବଂ ଅନ୍ୟ ସେଟିଂସର କ୍ରିଏସନ୍) ୱାର୍କ ପ୍ରୋଫାଇଲ୍ ଆଡମିନିଷ୍ଟ୍ରେଟରଙ୍କ ଦ୍ୱାରା କାଢ଼ି ଦିଆଯାଇପାରିବ। <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">ହାର୍ଡ ଡ୍ରାଇଭର ଡାଟା ଖାଲି କରି Chrome OS ଇନଷ୍ଟଲ୍ କରନ୍ତୁ</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />ଆମେ Chrome OS ଇନଷ୍ଟଲ୍ କରିବାକୁ ପ୍ରସ୍ତୁତ! ଆପଣ ଆଗକୁ ବଢ଼ିବା ପରେ: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ଫାଇଲ୍, ଡାଟା ଏବଂ ଆପଣଙ୍କ ବର୍ତ୍ତମାନର ଅପରେଟିଂ ସିଷ୍ଟମକୁ ଖାଲି କରାଯିବ। - <ph name="LIST_ITEM" />Chrome OS ଇନଷ୍ଟଲ୍ କରାଯିବ। - <ph name="LIST_ITEM" />ଇନଷ୍ଟଲେସନ୍ ପ୍ରକ୍ରିୟା ସମ୍ପୂର୍ଣ୍ଣ ହେବା ପରେ ଆପଣଙ୍କ ଡିଭାଇସଟି ବନ୍ଦ ହୋଇଯିବ। - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />ଶେଷ ଥର ପାଇଁ ରିମାଇଣ୍ଡର୍: ଇନଷ୍ଟଲ୍ କଲେ ଆପଣଙ୍କ ହାର୍ଡ ଡ୍ରାଇଭର ସମସ୍ତ ଡାଟାକୁ ଖାଲି କରାଯିବ। ଆପଣ ଆପଣଙ୍କ ସମସ୍ତ ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ ଡାଟାର ବ୍ୟାକଅପ୍ ନେଇଛନ୍ତି ବୋଲି ସୁନିଶ୍ଚିତ କରନ୍ତୁ।<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ଥରେ ଇନଷ୍ଟଲେସନ୍ ଆରମ୍ଭ ହେଲେ ଏହାକୁ ବାତିଲ୍ କରାଯାଇପାରିବ ନାହିଁ।<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">ଆପଣଙ୍କର ଡୋମେନ୍ ପାଇଁ ସିଙ୍କ୍ ଉପଲବ୍ଧ ନଥିବାରୁ Google Chrome ଆପଣଙ୍କର ଡାଟା ସିଙ୍କ୍ କରିପାରିଲା ନାହିଁ।</translation> <translation id="2467438592969358367">Google Chrome ଆପଣଙ୍କର ପାସ୍ୱାର୍ଡଗୁଡିକୁ ଏକ୍ସପୋର୍ଟ କରିବାକୁ ଚାହେଁ। ଏହାକୁ ଅନୁମତି ଦେବା ପାଇଁ ନିଜର Windows ପାସ୍ୱାର୍ଡ ଟାଇପ୍ କରନ୍ତୁ।</translation> <translation id="2485422356828889247">ଅନ୍ଇନ୍ଷ୍ଟଲ୍ କରନ୍ତୁ</translation> @@ -223,7 +213,6 @@ <translation id="6418662306461808273">ପୂର୍ବରୁ ଥିବା Chrome ପ୍ରୋଫାଇଲକୁ ସ୍ୱିଚ୍ କରିବେ?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS ସିଷ୍ଟମ୍</translation> -<translation id="664235759707825982">Chrome OS ଇନଷ୍ଟଲ୍ କରିବା ପାଇଁ ପ୍ରସ୍ତୁତ</translation> <translation id="6676384891291319759">ଇଣ୍ଟର୍ନେଟ୍ ପ୍ରବେଶ କରନ୍ତୁ</translation> <translation id="6679975945624592337">ପୃଷ୍ଠଭୂମିରେ Google Chromeକୁ ଚାଲିବାକୁ ଦିଅନ୍ତୁ</translation> <translation id="6739177684496155661">ଏକ ନୂଆ Chrome ପ୍ରୋଫାଇଲରେ ଜାରି ରଖିବେ?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pa.xtb b/chrome/app/resources/google_chrome_strings_pa.xtb index 273bc210..99a71d8d 100644 --- a/chrome/app/resources/google_chrome_strings_pa.xtb +++ b/chrome/app/resources/google_chrome_strings_pa.xtb
@@ -60,19 +60,10 @@ <translation id="2348335408836342058">Chrome ਨੂੰ ਇਸ ਸਾਈਟ ਵਾਸਤੇ ਤੁਹਾਡੇ ਕੈਮਰੇ ਅਤੇ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਲਈ ਇਜਾਜ਼ਤ ਦੀ ਲੋੜ ਹੈ</translation> <translation id="234869673307233423">Chrome ਤੁਹਾਡੇ ਪਾਸਵਰਡਾਂ ਦੀ ਜਾਂਚ ਨਹੀਂ ਕਰ ਸਕਦਾ। ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> <translation id="235650106824528204">ਇਸ ਪ੍ਰੋਫਾਈਲ ਦੀ ਵਰਤੋਂ ਦੇ ਦੌਰਾਨ ਤਿਆਰ ਕੀਤਾ ਕੋਈ ਵੀ Chrome ਡਾਟਾ (ਜਿਵੇਂ ਕਿ ਬੁੱਕਮਾਰਕ, ਇਤਿਹਾਸ, ਪਾਸਵਰਡ ਅਤੇ ਹੋਰ ਸੈਟਿੰਗਾਂ ਦੀ ਰਚਨਾ) ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਹਟਾਇਆ ਜਾ ਸਕਦਾ ਹੈ। <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">ਹਾਰਡ ਡਰਾਈਵ ਮਿਟਾਓ ਅਤੇ Chrome OS ਨੂੰ ਸਥਾਪਤ ਕਰੋ</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />ਅਸੀਂ Chrome OS ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਲਈ ਤਿਆਰ ਹਾਂ! ਤੁਹਾਡੇ ਵੱਲੋਂ ਅੱਗੇ ਵੱਧ ਜਾਣ 'ਤੇ: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ਫ਼ਾਈਲਾਂ, ਡਾਟਾ ਅਤੇ ਤੁਹਾਡਾ ਮੋਜੂਦਾ ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ। - <ph name="LIST_ITEM" />Chrome OS ਸਥਾਪਤ ਕੀਤਾ ਜਾਵੇਗਾ। - <ph name="LIST_ITEM" />ਸਥਾਪਨਾ ਪੂਰੀ ਹੋਣ 'ਤੇ ਤੁਹਾਡਾ ਡੀਵਾਈਸ ਬੰਦ ਹੋ ਜਾਵੇਗਾ। - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />ਇੱਕ ਆਖਰੀ ਰਿਮਾਈਂਡਰ: ਸਥਾਪਨਾ ਤੁਹਾਡੀ ਹਾਰਡ ਡਰਾਈਵ ਦੇ ਪੂਰੇ ਡਾਟੇ ਨੂੰ ਮਿਟਾ ਦੇਵੇਗੀ। ਕਿਰਪਾ ਕਰਕੇ ਪੱਕਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਆਪਣੇ ਮਹੱਤਵਪੂਰਨ ਡਾਟਾ ਦਾ ਬੈਕਅੱਪ ਲਿਆ ਹੈ।<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ਇੱਕ ਵਾਰ ਸਥਾਪਨਾ ਸ਼ੁਰੂ ਹੋਣ 'ਤੇ, ਇਸ ਨੂੰ ਰੱਦ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome ਤੁਹਾਡਾ ਡਾਟਾ ਸਮਕਾਲੀਕਰਨ ਨਹੀਂ ਕਰ ਸਕਿਆ ਕਿਉਂਕਿ ਸਮਕਾਲੀਕਰਨ ਤੁਹਾਡੀ ਡੋਮੇਨ ਲਈ ਉਪਲਬਧ ਨਹੀਂ ਹੈ।</translation> <translation id="2467438592969358367">Google Chrome ਤੁਹਾਡੇ ਪਾਸਵਰਡ ਨਿਰਯਾਤ ਕਰਨਾ ਚਾਹੁੰਦਾ ਹੈ। ਇਹ ਕਰਨ ਦੇਣ ਲਈ ਆਪਣਾ Windows ਪਾਸਵਰਡ ਟਾਈਪ ਕਰੋ।</translation> <translation id="2485422356828889247">ਅਣਸਥਾਪਤ ਕਰੋ</translation> +<translation id="2518751521812750372">ਜਦੋਂ ਤੁਸੀਂ Chrome ਨੂੰ ਬੰਦ ਕਰਦੇ ਹੋ, ਤਾਂ ਇਹ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਤੁਹਾਡੇ ਵੱਲੋਂ ਦੇਖੇ ਗਏ ਪੰਨਿਆਂ ਤੋਂ ਕੁਕੀਜ਼ ਅਤੇ ਸਾਈਟ ਡਾਟਾ ਨੂੰ ਮਿਟਾ ਦਿੰਦਾ ਹੈ</translation> <translation id="2534507159460261402">Google Pay (Chrome 'ਤੇ ਕਾਪੀ ਕੀਤਾ ਗਿਆ)</translation> <translation id="2574930892358684005"><ph name="EXISTING_USER" /> ਪਹਿਲਾਂ ਤੋਂ ਹੀ ਇਸ Chrome ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ ਸਾਈਨ-ਇਨ ਹੈ। ਤੁਹਾਡੀ ਬ੍ਰਾਊਜ਼ਿੰਗ ਨੂੰ ਵੱਖਰਾ ਰੱਖਣ ਲਈ, Chrome ਤੁਹਾਡੇ ਲਈ ਤੁਹਾਡਾ ਖੁਦ ਦਾ ਪ੍ਰੋਫਾਈਲ ਬਣਾ ਸਕਦਾ ਹੈ।</translation> <translation id="2580411288591421699">ਉਹ Google Chrome ਵਰਜਨ ਸਥਾਪਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਜੋ ਇਸ ਵੇਲੇ ਚੱਲ ਰਿਹਾ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ Google Chrome ਬੰਦ ਕਰੋ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> @@ -223,7 +214,6 @@ <translation id="6418662306461808273">ਕੀ ਮੌਜੂਦਾ Chrome ਪ੍ਰੋਫਾਈਲ 'ਤੇ ਜਾਣਾ ਹੈ?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS ਸਿਸਟਮ</translation> -<translation id="664235759707825982">Chrome OS ਸਥਾਪਤ ਕਰਨ ਲਈ ਤਿਆਰ</translation> <translation id="6676384891291319759">ਇੰਟਰਨੈਟ ਤੱਕ ਪਹੁੰਚੋ</translation> <translation id="6679975945624592337">Google Chrome ਨੂੰ ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਚੱਲਣ ਦਿਓ</translation> <translation id="6739177684496155661">ਕੀ ਨਵੇਂ Chrome ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ ਜਾਰੀ ਰੱਖਣਾ ਹੈ?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pl.xtb b/chrome/app/resources/google_chrome_strings_pl.xtb index 4d1c31ab3..af88b86b 100644 --- a/chrome/app/resources/google_chrome_strings_pl.xtb +++ b/chrome/app/resources/google_chrome_strings_pl.xtb
@@ -55,16 +55,6 @@ <translation id="2348335408836342058">Chrome potrzebuje uprawnień dostępu do aparatu i mikrofonu na tej stronie</translation> <translation id="234869673307233423">Chrome nie może sprawdzić Twoich haseł. Spróbuj później.</translation> <translation id="235650106824528204">Wszystkie dane Chrome wygenerowane podczas używania tego profilu (takie jak zakładki, historia, hasła i inne ustawienia) mogą zostać usunięte przez administratora profilu służbowego. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Wyczyść dysk twardy i zainstaluj system operacyjny Chrome</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Możemy zainstalować system operacyjny Chrome. Jeśli przejdziesz dalej: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />pliki, dane i bieżący system operacyjny zostaną usunięte; - <ph name="LIST_ITEM" />zostanie zainstalowany system operacyjny Chrome; - <ph name="LIST_ITEM" />po zakończeniu instalacji urządzenie się wyłączy. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Ostatnie przypomnienie: instalacja wykasuje wszystkie dane z dysku twardego. Upewnij się, że masz kopię zapasową wszystkich ważnych danych.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Rozpoczętej instalacji nie będzie można anulować.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome nie może zsynchronizować danych, ponieważ synchronizacja jest niedostępna w Twojej domenie.</translation> <translation id="2467438592969358367">Google Chrome chce wyeksportować Twoje hasła. Wpisz swoje hasło do Windows, by na to zezwolić.</translation> <translation id="2485422356828889247">Odinstaluj</translation> @@ -213,7 +203,6 @@ <translation id="6418662306461808273">Przełączyć na istniejący profil Chrome?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6568793831116033768">System operacyjny Chrome</translation> -<translation id="664235759707825982">Możesz zainstalować system operacyjny Chrome</translation> <translation id="6676384891291319759">Skorzystaj z internetu</translation> <translation id="6679975945624592337">Zezwalaj Google Chrome na działanie w tle</translation> <translation id="6739177684496155661">Kontynuować w nowym profilu Chrome?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pt-BR.xtb b/chrome/app/resources/google_chrome_strings_pt-BR.xtb index 500a8822..3143bb8 100644 --- a/chrome/app/resources/google_chrome_strings_pt-BR.xtb +++ b/chrome/app/resources/google_chrome_strings_pt-BR.xtb
@@ -56,16 +56,6 @@ <translation id="2348335408836342058">O Chrome precisa de permissão para este site acessar sua câmera e seu microfone</translation> <translation id="234869673307233423">O Chrome não pode verificar suas senhas. Tente mais tarde.</translation> <translation id="235650106824528204">Quaisquer dados do Chrome gerados quando este perfil estiver sendo usado (como a criação de favoritos, histórico, senhas e outras configurações) podem ser removidos pelo administrador do perfil de trabalho. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Limpar o disco rígido e instalar o Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Vamos começar a instalação. Nas próximas etapas: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />todos os arquivos, dados e o sistema operacional serão excluídos; - <ph name="LIST_ITEM" />o Chrome OS será instalado; - <ph name="LIST_ITEM" />o dispositivo será desligado quando a instalação for concluída. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Último lembrete: a instalação apagará todo o seu disco rígido. Confira se você fez backup dos dados importantes.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Depois de iniciada, a instalação não pode ser cancelada.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">O Google Chrome não pôde sincronizar seus dados porque a sincronização não está disponível para seu domínio.</translation> <translation id="2467438592969358367">O Google Chrome quer exportar suas senhas. Digite sua senha do Windows para permitir isso.</translation> <translation id="2485422356828889247">Desinstalar</translation> @@ -215,7 +205,6 @@ <translation id="6418662306461808273">Alternar para um perfil do Chrome existente?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" />: Google Chrome Dev</translation> <translation id="6568793831116033768">Sistema Chrome OS</translation> -<translation id="664235759707825982">Tudo pronto para instalar o Chrome OS</translation> <translation id="6676384891291319759">Acessar a internet</translation> <translation id="6679975945624592337">Permitir a execução do Google Chrome em segundo plano</translation> <translation id="6739177684496155661">Continuar em um novo perfil do Chrome?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pt-PT.xtb b/chrome/app/resources/google_chrome_strings_pt-PT.xtb index 53190d7..25615f8 100644 --- a/chrome/app/resources/google_chrome_strings_pt-PT.xtb +++ b/chrome/app/resources/google_chrome_strings_pt-PT.xtb
@@ -56,16 +56,6 @@ <translation id="2348335408836342058">O Chrome necessita de autorização de acesso à câmara e ao microfone para este site.</translation> <translation id="234869673307233423">O Chrome não consegue verificar as suas palavras-passe. Tente novamente mais tarde.</translation> <translation id="235650106824528204">Os dados do Chromium gerados durante a utilização deste perfil (como a criação de marcadores, histórico, palavras-passe e outras definições) podem ser removidos pelo administrador do perfil de trabalho. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Apagar disco rígido e instalar Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Estamos prontos para instalar o Chrome OS! Se continuar: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Os ficheiros, os dados e o seu sistema operativo atual serão apagados. - <ph name="LIST_ITEM" />O Chrome OS será instalado. - <ph name="LIST_ITEM" />O seu dispositivo irá encerrar quando a instalação estiver concluída. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Só mais um lembrete: a instalação apaga todo o seu disco rígido. Certifique-se de que tem uma cópia de segurança dos dados importantes.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Não pode cancelar a instalação depois de a iniciar.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">O Google Chrome não conseguiu sincronizar os dados porque a Sincronização não está disponível para o seu domínio.</translation> <translation id="2467438592969358367">O Google Chrome pretende exportar as suas palavras-passe. Escreva a sua palavra-passe do Windows para permitir esta ação.</translation> <translation id="2485422356828889247">Desinstalar</translation> @@ -216,7 +206,6 @@ <translation id="6418662306461808273">Pretende mudar para o perfil do Chrome existente?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6568793831116033768">Sistema Chrome OS</translation> -<translation id="664235759707825982">A postos para instalar o Chrome OS</translation> <translation id="6676384891291319759">Aceder à Internet</translation> <translation id="6679975945624592337">Permitir que o Google Chrome seja executado em segundo plano</translation> <translation id="6739177684496155661">Pretende continuar num novo perfil do Chrome?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ro.xtb b/chrome/app/resources/google_chrome_strings_ro.xtb index bf02bba..383e2e2 100644 --- a/chrome/app/resources/google_chrome_strings_ro.xtb +++ b/chrome/app/resources/google_chrome_strings_ro.xtb
@@ -55,16 +55,6 @@ <translation id="2348335408836342058">Chrome are nevoie de permisiune ca să acceseze camera foto și microfonul pentru acest site</translation> <translation id="234869673307233423">Chrome nu îți poate verifica parolele. Încearcă din nou mai târziu.</translation> <translation id="235650106824528204">Toate datele Chrome generate în timpul folosirii acestui profil (precum marcajele create, istoricul, parolele și alte setări) pot fi eliminate de administratorul profilului de serviciu. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Șterge datele de pe hard disk și instalează sistemul de operare Chrome</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Suntem gata să instalăm sistemul de operare Chrome! Dacă alegi să continui: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />fișierele, datele și sistemul de operare actual vor fi șterse; - <ph name="LIST_ITEM" />se va instala sistemul de operare Chrome; - <ph name="LIST_ITEM" />dispozitivul se va închide după finalizarea instalării. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Un ultim memento: instalarea va șterge toate datele de pe hard disk. Asigură-te că ai făcut backup datelor pe care vrei să le păstrezi.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Odată ce începe instalarea, nu o poți anula.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome nu a putut sincroniza datele, deoarece sincronizarea nu este disponibilă pentru domeniul dvs.</translation> <translation id="2467438592969358367">Google Chrome vrea să îți exporte parolele. Pentru a permite asta, introdu parola pentru Windows.</translation> <translation id="2485422356828889247">Dezinstalează</translation> @@ -215,7 +205,6 @@ <translation id="6418662306461808273">Schimbi la profilul Chrome existent?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6568793831116033768">Sistemul de operare Chrome</translation> -<translation id="664235759707825982">Ești gata să instalezi sistemul de operare Chrome</translation> <translation id="6676384891291319759">Accesează internetul</translation> <translation id="6679975945624592337">Permite Google Chrome să ruleze în fundal</translation> <translation id="6739177684496155661">Continui cu un profil Chrome nou?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ru.xtb b/chrome/app/resources/google_chrome_strings_ru.xtb index 1057b8bb..7d93b6d 100644 --- a/chrome/app/resources/google_chrome_strings_ru.xtb +++ b/chrome/app/resources/google_chrome_strings_ru.xtb
@@ -55,16 +55,6 @@ <translation id="2348335408836342058">Для этого сайта Chrome запрашивает доступ к камере и микрофону.</translation> <translation id="234869673307233423">Не удается запустить проверку паролей в Chrome. Повторите попытку позже.</translation> <translation id="235650106824528204">Администратор рабочего профиля может удалять любые данные, сохраненные в браузере Chrome при использовании этого профиля (например, добавленные закладки, историю, пароли и настройки). <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Удалить все данные с жесткого диска и установить Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Вы можете приступить к установке Chrome OS. Когда вы запустите ее, произойдет следующее: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Файлы, данные и текущая операционная система будут удалены. - <ph name="LIST_ITEM" />Будет установлена система Chrome OS. - <ph name="LIST_ITEM" />По окончании установки устройство будет выключено. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Ещё раз обращаем ваше внимание на то, что при установке с жесткого диска будет удалена вся информация. Убедитесь, что вы сохранили резервные копии нужных данных.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Установку нельзя будет отменить.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome не удалось синхронизировать данные, поскольку служба Sync недоступна для вашего домена.</translation> <translation id="2467438592969358367">Чтобы экспортировать пароли из Google Chrome, введите пароль своего аккаунта Windows.</translation> <translation id="2485422356828889247">Удалить</translation> @@ -214,7 +204,6 @@ <translation id="6418662306461808273">Переключиться на существующий профиль Chrome?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome для разработчиков</translation> <translation id="6568793831116033768">Chrome OS</translation> -<translation id="664235759707825982">Устройство готово к установке Chrome OS</translation> <translation id="6676384891291319759">Доступ в Интернет</translation> <translation id="6679975945624592337">Разрешить Google Chrome работать в фоновом режиме</translation> <translation id="6739177684496155661">Продолжить работу в новом профиле Chrome?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_si.xtb b/chrome/app/resources/google_chrome_strings_si.xtb index 88f9b5e..623e779 100644 --- a/chrome/app/resources/google_chrome_strings_si.xtb +++ b/chrome/app/resources/google_chrome_strings_si.xtb
@@ -59,16 +59,6 @@ <translation id="2348335408836342058">Chrome හට මෙම අඩවිය සදහා ඔබේ කැමරාවට සහ මයික්රෆෝනයට ප්රවේශ වීමට අවසර අවශ්යයි</translation> <translation id="234869673307233423">Chrome හට ඔබේ මුරපද පරීක්ෂා කළ නොහැක. පසුව නැවත උත්සාහ කරන්න.</translation> <translation id="235650106824528204">මෙම පැතිකඩ භාවිතා කරන විට ජනනය කරන කිනම් හෝ Chrome දත්ත (පිටුසන්, ඉතිහාසය, මුරපද සහ වෙනත් සැකසීම් වැනි) කාර්යාල පැතිකඩ පරිපාලක විසින් ඉවත් කළ හැකිය. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">දෘඪ තැටිය මකන්න සහ Chrome OS ස්ථාපනය කරන්න</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />අපි Chrome OS ස්ථාපනය කිරීමට සූදානම්ය! ඔබ ඉදිරියට ගිය විට: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ගොනු, දත්ත සහ ඔබගේ වර්තමාන මෙහෙයුම් පද්ධතිය මකනු ඇත. - <ph name="LIST_ITEM" />Chrome OS ස්ථාපනය කරනු ඇත. - <ph name="LIST_ITEM" />ස්ථාපනය අවසන් වූ පසු ඔබගේ උපාංගය වසා දමනු ඇත. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />අවසන් එක් මතක් කිරීමක්: ස්ථාපනය ඔබගේ සම්පූර්ණ දෘඪ තැටිය මකනු ඇත. කරුණාකර ඔබ උපස්ථ කිරීමට සැලකිලිමත් වන කිනම් හෝ දත්ත ඇති බවට සහතික කර ගන්න.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ස්ථාපනය ආරම්භ වූ පසු එය අවලංගු කළ නොහැකිය.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">ඔබේ වසම සඳහා සම්මුහු නොපවතින බැවින් Google Chrome හට ඔබේ දත්ත සම්මුහු කළ නොහැකි විය.</translation> <translation id="2467438592969358367">Google Chrome හට ඔබගේ මුරපද නිර්යාත කිරීමට අවශ්යය. මේ සඳහා අවසර දීමට ඔබගේ Windows මුරපදය ටයිප් කරන්න.</translation> <translation id="2485422356828889247">අස්ථාපනය</translation> @@ -223,7 +213,6 @@ <translation id="6418662306461808273">තිබෙන Chrome පැතිකඩට මාරු වන්නද?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS පද්ධතිය</translation> -<translation id="664235759707825982">Chrome OS ස්ථාපනය කිරීමට සූදානම්ය</translation> <translation id="6676384891291319759">අන්තර්ජාලය වෙත පිවිසෙන්න</translation> <translation id="6679975945624592337">Chrome Run හට පසුබිම ධාවනය වීමට ඉඩ දෙන්න</translation> <translation id="6739177684496155661">නව Chrome පැතිකඩක ඉදිරියට යන්නද?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sk.xtb b/chrome/app/resources/google_chrome_strings_sk.xtb index 9f8c0f6a..72c9f24f 100644 --- a/chrome/app/resources/google_chrome_strings_sk.xtb +++ b/chrome/app/resources/google_chrome_strings_sk.xtb
@@ -58,16 +58,6 @@ <translation id="2348335408836342058">Chrome potrebuje povolenie pre tento web na prístup k fotoaparátu a mikrofónu</translation> <translation id="234869673307233423">Chrome nemôže skontrolovať heslá. Skúste to neskôr.</translation> <translation id="235650106824528204">Všetky údaje prehliadača Chrome vygenerované počas používania tohto profilu (napríklad vytvorenie záložiek, histórie, hesiel a ďalších nastavení) môžu byť odstránené správcom pracovného profilu. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Vymazať pevný disk a nainštalovať Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Všetko je pripravené na inštaláciu systému Chrome OS. Keď začnete: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Súbory, údaje a aktuálny operačný systém budú vymazané. - <ph name="LIST_ITEM" />Bude nainštalovaný systém Chrome OS. - <ph name="LIST_ITEM" />Po dokončení inštalácie sa vaše zariadenie vypne. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Posledné pripomenutie: inštaláciou sa vymaže celý pevný disk. Skontrolujte, či máte všetky svoje dôležité údaje zálohované.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Po spustení sa inštalácia nedá zrušiť.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Prehliadaču Google Chrome sa nepodarilo synchronizovať vaše údaje, pretože možnosť synchronizácie nie je pre vašu doménu k dispozícii.</translation> <translation id="2467438592969358367">Google Chrome sa pokúša exportovať vaše heslá. Ak to chcete povoliť, zadajte heslo systému Windows.</translation> <translation id="2485422356828889247">Odinštalovať</translation> @@ -221,7 +211,6 @@ <translation id="6418662306461808273">Chcete prepnúť na existujúci profil Chromu?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6568793831116033768">Systém Chrome OS</translation> -<translation id="664235759707825982">Inštalácia systému Chrome OS je pripravená</translation> <translation id="6676384891291319759">Prístup do siete Internet</translation> <translation id="6679975945624592337">Povoliť prehliadaču Google Chrome spustenie na pozadí</translation> <translation id="6739177684496155661">Chcete pokračovať v novom profile Chromu?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sl.xtb b/chrome/app/resources/google_chrome_strings_sl.xtb index 584619f..24c9063b 100644 --- a/chrome/app/resources/google_chrome_strings_sl.xtb +++ b/chrome/app/resources/google_chrome_strings_sl.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">Chrome potrebuje dovoljenje za dostop do fotoaparata in mikrofona za to spletno mesto</translation> <translation id="234869673307233423">Chrome ne more preveriti vaših gesel. Poskusite pozneje.</translation> <translation id="235650106824528204">Podatke v Chromu, ki se ustvarijo med uporabo tega profila (na primer zaznamke, zgodovino, gesla in druge nastavitve), lahko odstrani skrbnik delovnega profila. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Izbriši trdi disk in namesti Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Pripravljeni smo na namestitev sistema Chrome OS! Ko nadaljujete: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Datoteke, podatki in trenutni operacijski sistem bodo izbrisani. - <ph name="LIST_ITEM" />Nameščen bo sistem Chrome OS. - <ph name="LIST_ITEM" />Ko bo namestitev končana, se bo naprava izklopila. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Še zadnji opomnik: Z namestitvijo bo izbrisan celotni trdi disk. Poskrbite za varnostno kopijo pomembnih podatkov.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Ko se namestitev začne, je ni mogoče preklicati.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome ni mogel sinhronizirati podatkov, ker sinhronizacija ni na voljo za vašo domeno.</translation> <translation id="2467438592969358367">Google Chrome želi izvoziti gesla. Če želite omogočiti to, vnesite geslo za Windows.</translation> <translation id="2485422356828889247">Odmeščanje</translation> @@ -224,7 +214,6 @@ <translation id="6418662306461808273">Želite preklopiti na obstoječi profil v Chromu?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> različica Google Chroma za razvijalce</translation> <translation id="6568793831116033768">Sistem Chrome OS</translation> -<translation id="664235759707825982">Pripravljeno za namestitev sistema Chrome OS</translation> <translation id="6676384891291319759">Dostop do interneta</translation> <translation id="6679975945624592337">Naj se Google Chrome izvaja v ozadju</translation> <translation id="6739177684496155661">Želite nadaljevati v novem profilu v Chromu?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sq.xtb b/chrome/app/resources/google_chrome_strings_sq.xtb index a4a6b95c..205becb 100644 --- a/chrome/app/resources/google_chrome_strings_sq.xtb +++ b/chrome/app/resources/google_chrome_strings_sq.xtb
@@ -59,19 +59,10 @@ <translation id="2348335408836342058">Chrome ka nevojë për leje për t'u qasur te kamera dhe mikrofoni yt për këtë sajt</translation> <translation id="234869673307233423">Chrome nuk mund t'i kontrollojë fjalëkalimet e tua. Provo përsëri më vonë.</translation> <translation id="235650106824528204">Çdo e dhënë e Chrome që krijohet gjatë përdorimit të këtij profili (si p.sh. krijimi i faqeshënuesve, historikut, fjalëkalimeve dhe cilësimeve të tjera) mund të hiqet nga administratori i profilit të punës. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Spastro diskun e ngurtë dhe instalo Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Jemi gati për instalimin e Chrome OS! Pasi të vazhdosh: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Skedarët, të dhënat dhe sistemi yt operativ do të fshihen. - <ph name="LIST_ITEM" />Chrome OS do të instalohet. - <ph name="LIST_ITEM" />Pajisja jote do të fiket pasi të përfundojë instalimi. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Një rikujtim i fundit: instalimi do të fshijë të gjithë diskun tënd të ngurtë. Sigurohu që t'i rezervosh të dhënat e rëndësishme për ty.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Pasi të fillojë instalimi, nuk mund të anulohet.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome nuk mund t'i sinkronizonte të dhënat për shkak se sinkronizimi nuk ofrohet për domenin tënd.</translation> <translation id="2467438592969358367">Google Chrome dëshiron të eksportojë fjalëkalimet e tua. Shkruaj fjalëkalimin tënd të Windows për ta lejuar këtë.</translation> <translation id="2485422356828889247">Çinstalo</translation> +<translation id="2518751521812750372">Kur mbyll Chrome, ai i pastron automatikisht kukit dhe të dhënat e sajteve nga faqet që viziton</translation> <translation id="2534507159460261402">Google Pay (kopjuar në Chrome)</translation> <translation id="2574930892358684005"><ph name="EXISTING_USER" /> është i identifikuar tashmë në këtë profil të Chrome. Për ta mbajtur shfletimin tënd të ndarë, Chrome mund të krijojë profilin tënd personal për ty.</translation> <translation id="2580411288591421699">Nuk mund të instalohet i njëjti version i Google Chrome që po ekzekutohet aktualisht. Mbylle Google Chrome dhe provo përsëri.</translation> @@ -222,7 +213,6 @@ <translation id="6418662306461808273">Të kalohet te profili ekzistues i Chrome?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Sistemi Chrome OS</translation> -<translation id="664235759707825982">Gati për instalimin e Chrome OS</translation> <translation id="6676384891291319759">Qasu në internet</translation> <translation id="6679975945624592337">Lejo që Google Chrome të ekzekutohet në sfond</translation> <translation id="6739177684496155661">Të vazhdohet te një profil i ri Chrome?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sr-Latn.xtb b/chrome/app/resources/google_chrome_strings_sr-Latn.xtb index 465e5a7b..639af04 100644 --- a/chrome/app/resources/google_chrome_strings_sr-Latn.xtb +++ b/chrome/app/resources/google_chrome_strings_sr-Latn.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">Chrome traži dozvolu da pristupi kameri i mikrofonu za ovaj sajt</translation> <translation id="234869673307233423">Chrome ne može da vam proverava lozinke. Probajte ponovo kasnije.</translation> <translation id="235650106824528204">Administrator poslovnog profila može da ukloni sve podatke Chrome-a koji se generišu tokom korišćenja ovog profila (poput pravljenja obeleživača, istorije, lozinki i drugih podešavanja). <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Obriši podatke sa hard-diska i instaliraj Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Spremni smo da instaliramo Chrome OS! Kad nastavite: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Fajlovi, podaci i trenutni operativni sistem će biti obrisani. - <ph name="LIST_ITEM" />Biće instaliran Chrome OS. - <ph name="LIST_ITEM" />Uređaj će se isključiti kad se instalacija završi. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Poslednji put vas podsećamo: instalacija će obrisati kompletne podatke sa hard-diska. Uverite se da imate rezervnu kopiju svih podataka koji su vam važni.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Kad instalacija počne, ne može da se otkaže.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome ne može da sinhronizuje podatke jer Sinhronizacija nije dostupna za domen.</translation> <translation id="2467438592969358367">Google Chrome želi da izveze lozinke. Unesite lozinku za Windows da biste to omogućili.</translation> <translation id="2485422356828889247">Deinstaliraj</translation> @@ -224,7 +214,6 @@ <translation id="6418662306461808273">Želite da pređete na postojeći Chrome profil?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Programerska verzija Google Chrome-a</translation> <translation id="6568793831116033768">Sistem Chrome OS</translation> -<translation id="664235759707825982">Sve je spremno za instaliranje Chrome OS-a</translation> <translation id="6676384891291319759">Pristupite Internetu</translation> <translation id="6679975945624592337">Neka Google Chrome radi u pozadini</translation> <translation id="6739177684496155661">Želite da nastavite na novom Chrome profilu?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sr.xtb b/chrome/app/resources/google_chrome_strings_sr.xtb index 89e32aff..8b7d42a 100644 --- a/chrome/app/resources/google_chrome_strings_sr.xtb +++ b/chrome/app/resources/google_chrome_strings_sr.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">Chrome тражи дозволу да приступи камери и микрофону за овај сајт</translation> <translation id="234869673307233423">Chrome не може да вам проверава лозинке. Пробајте поново касније.</translation> <translation id="235650106824528204">Администратор пословног профила може да уклони све податке Chrome-а који се генеришу током коришћења овог профила (попут прављења обележивача, историје, лозинки и других подешавања). <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Обриши податке са хард-диска и инсталирај Chrome ОС</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Спремни смо да инсталирамо Chrome ОС! Кад наставите: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Фајлови, подаци и тренутни оперативни систем ће бити обрисани. - <ph name="LIST_ITEM" />Биће инсталиран Chrome ОС. - <ph name="LIST_ITEM" />Уређај ће се искључити кад се инсталација заврши. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Последњи пут вас подсећамо: инсталација ће обрисати комплетне податке са хард-диска. Уверите се да имате резервну копију свих података који су вам важни.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Кад инсталација почне, не може да се откаже.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome не може да синхронизује податке јер Синхронизација није доступна за домен.</translation> <translation id="2467438592969358367">Google Chrome жели да извезе лозинке. Унесите лозинку за Windows да бисте то омогућили.</translation> <translation id="2485422356828889247">Деинсталирај</translation> @@ -224,7 +214,6 @@ <translation id="6418662306461808273">Желите да пређете на постојећи Chrome профил?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Програмерска верзија Google Chrome-а</translation> <translation id="6568793831116033768">Систем Chrome ОС</translation> -<translation id="664235759707825982">Све је спремно за инсталирање Chrome ОС-а</translation> <translation id="6676384891291319759">Приступите Интернету</translation> <translation id="6679975945624592337">Нека Google Chrome ради у позадини</translation> <translation id="6739177684496155661">Желите да наставите на новом Chrome профилу?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sv.xtb b/chrome/app/resources/google_chrome_strings_sv.xtb index 1bafac0..d336a84 100644 --- a/chrome/app/resources/google_chrome_strings_sv.xtb +++ b/chrome/app/resources/google_chrome_strings_sv.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">Du behöver ge Chrome behörighet att använda kameran och mikrofonen på webbplatsen</translation> <translation id="234869673307233423">Chrome kan inte kontrollera dina lösenord. Försök igen senare.</translation> <translation id="235650106824528204">All data i Chrome som uppstår när den här profilen används (t.ex. bokmärken, historik, lösenord och andra inställningar) kan tas bort av jobbprofilens administratör. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Rensa hårddisken och installera Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Vi är redo att installera Chrome OS. När du fortsätter sker följande: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Filer, data och ditt nuvarande operativsystem rensas. - <ph name="LIST_ITEM" />Chrome OS installeras. - <ph name="LIST_ITEM" />Enheten stängs av när installationen har slutförts. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />En sista påminnelse: installationen rensar hårddisken fullständigt. Se till att du har säkerhetskopierat all data som du vill behålla.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />När installationen har påbörjats går den inte att avbryta.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome kunde inte synkronisera data eftersom synkronisering inte är tillgängligt för din domän.</translation> <translation id="2467438592969358367">Lösenorden exporteras från Google Chrome. Skriv ditt Windows-lösenord om du tillåter detta.</translation> <translation id="2485422356828889247">Avinstallera</translation> @@ -224,7 +214,6 @@ <translation id="6418662306461808273">Vill du byta till en befintlig Chrome-profil?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS-system</translation> -<translation id="664235759707825982">Redo att installera Chrome OS</translation> <translation id="6676384891291319759">Gå ut på Internet</translation> <translation id="6679975945624592337">Låt Google Chrome köras i bakgrunden</translation> <translation id="6739177684496155661">Vill du fortsätta i en ny Chrome-profil?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sw.xtb b/chrome/app/resources/google_chrome_strings_sw.xtb index a5bbf30..72f4ced 100644 --- a/chrome/app/resources/google_chrome_strings_sw.xtb +++ b/chrome/app/resources/google_chrome_strings_sw.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">Chrome inahitaji ruhusa ya kufikia kamera na maikrofoni yako katika tovuti hii</translation> <translation id="234869673307233423">Chrome imeshindwa kukagua manenosiri yako. Jaribu tena baadaye.</translation> <translation id="235650106824528204">Data yoyote ya Chrome inayozalishwa unapotumia wasifu huu (kama vile alamisho ulizoweka, historia, manenosiri na mipangilio mingine) inaweza kuondolewa na msimamizi wa wasifu huu wa kazini. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Futa Data Yote Kwenye Diski Kuu na Usakinishe Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Tuko tayari kusakinisha Chrome OS! Ukiendelea: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Faili, data na mfumo wa uendeshaji unaotumia sasa utafutwa. - <ph name="LIST_ITEM" />Chrome OS itasakinishwa. - <ph name="LIST_ITEM" />Kifaa chako kitazimwa usakinishaji ukikamilika. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Kikumbusho cha mwisho: hatua ya usakinishaji itafuta data yote kwenye diski yako kuu. Tafadhali hakikisha kwamba umehifadhi nakala ya data yoyote muhimu.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Usakinishaji ukianza hauwezi kughairiwa.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome haikuweza kusawazisha data yako kwa sababu Usawazishaji haupatikani kwa kikoa chako.</translation> <translation id="2467438592969358367">Google Chrome ingependa kuhamisha manenosiri yako. Andika nenosiri lako la Windows ili uruhusu shughuli hii.</translation> <translation id="2485422356828889247">Ondoa</translation> @@ -224,7 +214,6 @@ <translation id="6418662306461808273">Ungependa kutumia wasifu uliopo wa Chrome?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome ya Wasanidi Programu</translation> <translation id="6568793831116033768">Mfumo wa Uendeshaji wa Chrome</translation> -<translation id="664235759707825982">Tuko tayari kusakinisha Chrome OS</translation> <translation id="6676384891291319759">Fikia wavuti</translation> <translation id="6679975945624592337">Ruhusu Google Chrome itumike Chinichini</translation> <translation id="6739177684496155661">Ungependa kutumia wasifu mpya kwenye Chrome?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ta.xtb b/chrome/app/resources/google_chrome_strings_ta.xtb index 4ef478b9..9c09949 100644 --- a/chrome/app/resources/google_chrome_strings_ta.xtb +++ b/chrome/app/resources/google_chrome_strings_ta.xtb
@@ -56,16 +56,6 @@ <translation id="2348335408836342058">இந்தத் தளத்திற்காகக் கேமராவையும் மைக்ரோஃபோனையும் அணுக Chromeமுக்கு அனுமதி தேவை</translation> <translation id="234869673307233423">Chromeமால் உங்கள் கடவுச்சொற்களைச் சரிபார்க்க முடியவில்லை. பிறகு முயலவும்.</translation> <translation id="235650106824528204">இந்தச் சுயவிவரத்தைப் பயன்படுத்தும்போது உருவாக்கப்படும் Chrome தரவு அனைத்தையும் (எ.கா. நீங்கள் உருவாக்கும் புக்மார்க்குகள், வரலாறு, கடவுச்சொற்கள் மற்றும் பிற அமைப்புகள்) பணிக் கணக்கு நிர்வாகி அகற்றலாம். <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">ஹார்டு டிரைவில் இருக்கும் தரவை அழித்துவிட்டு Chrome OSஸை நிறுவுக</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Chrome OSஸை நிறுவத் தயாராக உள்ளோம்! நிறுவத் தொடங்கினால்: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ஃபைல்கள், தரவு, தற்போதைய ஆப்ரேட்டிங் சிஸ்டம் ஆகியவை அழிக்கப்படும். - <ph name="LIST_ITEM" />Chrome OS நிறுவப்படும். - <ph name="LIST_ITEM" />நிறுவியதும் உங்கள் சாதனம் ஷட் டவுன் செய்யப்படும். - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />இறுதியாக ஒரு நினைவூட்டல்: இதை நிறுவினால் உங்கள் ஹார்டு டிரைவில் இருக்கும் தரவு அனைத்தும் அழிக்கப்படும். எனவே, உங்கள் தரவைக் காப்புப் பிரதி எடுத்துவிட்டீர்கள் என்பதை உறுதிசெய்துகொள்ளவும்.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />நிறுவத் தொடங்கினால் இதை ரத்துசெய்ய முடியாது.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">உங்கள் களத்திற்கு ஒத்திசைவு இல்லாததால், Google Chrome ஆல் உங்கள் தரவை ஒத்திசைக்க முடியவில்லை.</translation> <translation id="2467438592969358367">Google Chrome உங்கள் கடவுச்சொற்களை ஏற்ற விரும்புகிறது. இதை அனுமதிக்க, உங்கள் Windows கடவுச்சொல்லை உள்ளிடவும்.</translation> <translation id="2485422356828889247">நிறுவல் நீக்கு</translation> @@ -216,7 +206,6 @@ <translation id="6418662306461808273">ஏற்கெனவே உள்ள Chrome சுயவிவரத்திற்கு மாறவா?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS சிஸ்டம்</translation> -<translation id="664235759707825982">Chrome OSஸை நிறுவத் தயாரா?</translation> <translation id="6676384891291319759">இணையத்தை அணுகுதல்</translation> <translation id="6679975945624592337">பின்னணியில் Google Chromeஐ இயங்க அனுமதி</translation> <translation id="6739177684496155661">புதிய Chrome சுயவிவரத்தில் தொடரவா?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_te.xtb b/chrome/app/resources/google_chrome_strings_te.xtb index 9c2fb82..689d0c0 100644 --- a/chrome/app/resources/google_chrome_strings_te.xtb +++ b/chrome/app/resources/google_chrome_strings_te.xtb
@@ -56,19 +56,10 @@ <translation id="2348335408836342058">ఈ సైట్ కోసం మీ కెమెరా మరియు మైక్రోఫోన్ను యాక్సెస్ చేయడానికి Chromeకు అనుమతి అవసరం</translation> <translation id="234869673307233423">Chrome మీ పాస్వర్డ్లను తనిఖీ చేయలేకపోయింది. తర్వాత మళ్లీ ట్రై చేయండి.</translation> <translation id="235650106824528204">ఈ ప్రొఫైల్ను ఉపయోగిస్తున్నప్పుడు జెనరేట్ అయిన ఏదైనా Chrome డేటాను (బుక్మార్క్లు, హిస్టరీ, పాస్వర్డ్లు, ఇంకా ఇతర సెట్టింగ్లు వంటివి క్రియేట్ చేయడం) వర్క్ ప్రొఫైల్ అడ్మినిస్ట్రేటర్ తీసివేయవచ్చు. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">హార్డ్ డ్రైవ్ను ఫ్యాక్టరీ రీసెట్ చేసి, Chrome OSను ఇన్స్టాల్ చేయండి</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />మేము Chrome OSను ఇన్స్టాల్ చేయడానికి సిద్ధంగా ఉన్నాము! ఒకసారి మీరు ప్రారంభించిన తర్వాత: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ఫైళ్లు, డేటా, అలాగే మీ ప్రస్తుత ఆపరేటింగ్ సిస్టమ్ ఫ్యాక్టరీ రీసెట్ అవుతాయి. - <ph name="LIST_ITEM" />Chrome OS ఇన్స్టాల్ అవుతుంది. - <ph name="LIST_ITEM" />ఇన్స్టాలేషన్ పూర్తి అయిన తర్వాత మీ పరికరం షట్ డౌన్ అవుతుంది. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />ఒక చివరి రిమైండర్: ఇన్స్టాలేషన్ అనేది మీ మొత్తం హార్డ్ డ్రైవ్ను ఫ్యాక్టరీ రీసెట్ చేస్తుంది. మీకు కావాలనుకునే డేటాను దయచేసి బ్యాకప్ చేసుకొనేలా చూసుకోండి.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ఇన్స్టాలేషన్ ఒకసారి ప్రారంభం అయిన తర్వాత దాన్ని రద్దు చేయలేరు.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">మీ డొమైన్ కోసం సింక్ అందుబాటులో లేనందున Google Chrome మీ డేటాను సింక్ చేయలేకపోయింది.</translation> <translation id="2467438592969358367">Google Chrome మీ పాస్వర్డ్లను ఎగుమతి చేయాలనుకుంటోంది. దీనిని అనుమతించడం కోసం మీ Windows పాస్వర్డ్ని టైప్ చేయండి.</translation> <translation id="2485422356828889247">అన్ఇన్స్టాల్ చేయి</translation> +<translation id="2518751521812750372">మీరు Chromeను మూసివేసినప్పుడు, మీరు వెళ్లిన పేజీల నుండి ఆటోమేటిక్గా కుక్కీలు, సైట్ డేటాను క్లియర్ చేస్తుంది</translation> <translation id="2534507159460261402">Google Pay (Chromeకి కాపీ చేయబడింది)</translation> <translation id="2574930892358684005"><ph name="EXISTING_USER" /> ఇప్పటికే ఈ Chrome ప్రొఫైల్కు సైన్ ఇన్ చేశారు. మీరు బ్రౌజ్ చేసిన వాటిని విడిగా ఉంచడానికి, Chrome మీ కోసం మీ సొంత ప్రొఫైల్ను క్రియేట్ చేయగలదు.</translation> <translation id="2580411288591421699">ప్రస్తుతం అమలవుతున్న Google Chrome వెర్షన్నే ఇన్స్టాల్ చేయడం సాధ్యపడదు. దయచేసి Google Chromeను మూసివేసి, మళ్ళీ ప్రయత్నించండి.</translation> @@ -215,7 +206,6 @@ <translation id="6418662306461808273">ప్రస్తుతం ఉన్న Chrome ప్రొఫైల్కు స్విచ్ చేయాలా?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS సిస్టమ్</translation> -<translation id="664235759707825982">Chrome OSను ఇన్స్టాల్ చేయడానికి మీరు సిద్ధంగా ఉన్నారు</translation> <translation id="6676384891291319759">ఇంటర్నెట్ను ఆక్సెస్ చేయండి</translation> <translation id="6679975945624592337">Google Chromeను నేపథ్యంలో అమలు అయ్యేందుకు అనుమతించండి</translation> <translation id="6739177684496155661">కొత్త Chrome ప్రొఫైల్లో కొనసాగించాలా?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_th.xtb b/chrome/app/resources/google_chrome_strings_th.xtb index 10a4bde..6fc605e 100644 --- a/chrome/app/resources/google_chrome_strings_th.xtb +++ b/chrome/app/resources/google_chrome_strings_th.xtb
@@ -55,16 +55,6 @@ <translation id="2348335408836342058">Chrome ต้องการสิทธิ์เข้าถึงไมโครโฟนและกล้องถ่ายรูปของคุณสำหรับเว็บไซต์นี้</translation> <translation id="234869673307233423">Chrome ตรวจสอบรหัสผ่านของคุณไม่ได้ โปรดลองอีกครั้งภายหลัง</translation> <translation id="235650106824528204">ผู้ดูแลโปรไฟล์งานนำข้อมูล Chrome ที่สร้างขึ้นในช่วงที่มีการใช้โปรไฟล์นี้ออกได้ (เช่น การสร้างบุ๊กมาร์ก ประวัติการเข้าชม รหัสผ่าน และการตั้งค่าอื่นๆ) <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">ลบฮาร์ดไดรฟ์และติดตั้ง Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />เราพร้อมติดตั้ง Chrome OS แล้ว เมื่อคุณดำเนินการต่อจะเกิดสิ่งต่อไปนี้ - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />ไฟล์ ข้อมูล และระบบปฏิบัติการปัจจุบันจะถูกลบ - <ph name="LIST_ITEM" />ระบบจะติดตั้ง Chrome OS - <ph name="LIST_ITEM" />อุปกรณ์จะปิดเมื่อการติดตั้งเสร็จสมบูรณ์ - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />การช่วยเตือนครั้งสุดท้าย: การติดตั้งจะลบฮาร์ดไดรฟ์ทั้งหมด โปรดตรวจสอบว่าคุณสำรองข้อมูลที่สำคัญแล้ว<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />เมื่อเริ่มการติดตั้งแล้วจะยกเลิกไม่ได้<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome ไม่สามารถซิงค์ข้อมูลของคุณเนื่องจากไม่สามารถใช้การซิงค์กับโดเมนของคุณ</translation> <translation id="2467438592969358367">Google Chrome ต้องการส่งออกรหัสผ่านของคุณ พิมพ์รหัสผ่าน Windows เพื่ออนุญาตให้ดำเนินการ</translation> <translation id="2485422356828889247">ถอนการติดตั้ง</translation> @@ -214,7 +204,6 @@ <translation id="6418662306461808273">เปลี่ยนไปใช้โปรไฟล์ Chrome ที่มีอยู่ไหม</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">ระบบ Chrome OS</translation> -<translation id="664235759707825982">พร้อมติดตั้ง Chrome OS แล้ว</translation> <translation id="6676384891291319759">เข้าถึงอินเทอร์เน็ต</translation> <translation id="6679975945624592337">ให้ Google Chrome ทำงานในพื้นหลัง</translation> <translation id="6739177684496155661">ดำเนินการต่อในโปรไฟล์ Chrome ใหม่ไหม</translation>
diff --git a/chrome/app/resources/google_chrome_strings_tr.xtb b/chrome/app/resources/google_chrome_strings_tr.xtb index a9ca73b2..5447eaa 100644 --- a/chrome/app/resources/google_chrome_strings_tr.xtb +++ b/chrome/app/resources/google_chrome_strings_tr.xtb
@@ -55,16 +55,6 @@ <translation id="2348335408836342058">Chrome'un bu sitede kameranıza ve mikrofonunuza erişmesi için izin gerekiyor</translation> <translation id="234869673307233423">Chrome, şifrelerinizi kontrol edemiyor. Daha sonra tekrar deneyin.</translation> <translation id="235650106824528204">Bu profil kullanılırken oluşturulan tüm Chrome verileri (yer işaretlerinin oluşturulması, geçmiş, şifreler ve diğer ayarlar gibi) iş profili yöneticisi tarafından kaldırılabilir. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Sabit Diski Sil ve Chrome OS'i Yükle</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Chrome OS'i yüklemeye hazırız. Devam ettiğinizde: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Dosyalar, veriler ve mevcut işletim sisteminiz silinecek. - <ph name="LIST_ITEM" />Chrome OS yüklenecek. - <ph name="LIST_ITEM" />Yükleme tamamlandığında cihazınız kapanacak. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Son bir hatırlatma: Yükleme işlemi, sabit diskinizin tamamını silecek. Lütfen sizin için önemli olan tüm verileri yedeklediğinizden emin olun.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Yükleme işlemi, başladıktan sonra iptal edilemez.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Senkronizasyon, alan adınızda kullanılamadığından Google Chrome, verilerinizi senkronize edemedi.</translation> <translation id="2467438592969358367">Google Chrome şifrelerinizi dışa aktarmak istiyor. Buna izin vermek için Windows şifrenizi yazın.</translation> <translation id="2485422356828889247">Kaldır</translation> @@ -217,7 +207,6 @@ <translation id="6418662306461808273">Mevcut Chrome profiline geçilsin mi?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS sistemi</translation> -<translation id="664235759707825982">Chrome OS'i yüklemeye hazır mısınız?</translation> <translation id="6676384891291319759">İnternet'e erişin</translation> <translation id="6679975945624592337">Google Chrome'un Arka Planda Çalışmasına İzin Ver</translation> <translation id="6739177684496155661">Yeni bir Chrome profilinde devam edilsin mi?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_uk.xtb b/chrome/app/resources/google_chrome_strings_uk.xtb index 17e567c..47fcda5 100644 --- a/chrome/app/resources/google_chrome_strings_uk.xtb +++ b/chrome/app/resources/google_chrome_strings_uk.xtb
@@ -56,16 +56,6 @@ <translation id="2348335408836342058">Chrome потрібен дозвіл на використання камери й мікрофона, щоб надати цьому сайту доступ до них</translation> <translation id="234869673307233423">Chrome не може перевірити паролі. Повторіть спробу пізніше.</translation> <translation id="235650106824528204">Будь-які дані Chrome, створені під час використання цього робочого профілю (наприклад, закладки, історію, паролі й інші налаштування), може видалити його адміністратор. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Видалити всі дані жорсткого диска й установити ОС Chrome</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />ОС Chrome уже можна встановити. Коли ви продовжите: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />усі файли, дані та поточну операційну систему буде видалено з пристрою; - <ph name="LIST_ITEM" />буде встановлено ОС Chrome; - <ph name="LIST_ITEM" />після завершення встановлення пристрій завершить роботу. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Останнє нагадування: під час встановлення всі дані жорсткого диска буде видалено. Переконайтеся, що ви маєте резервну копію всіх важливих даних.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Коли встановлення розпочнеться, його не можна буде скасувати.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome не вдалося синхронізувати ваші дані, оскільки синхронізація для вашого домену недоступна.</translation> <translation id="2467438592969358367">Google Chrome хоче експортувати ваші паролі. Щоб дозволити, введіть свій пароль Windows.</translation> <translation id="2485422356828889247">Видалити</translation> @@ -216,7 +206,6 @@ <translation id="6418662306461808273">Перейти в наявний профіль Chrome?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Версія Google Chrome для розробників</translation> <translation id="6568793831116033768">ОС Chrome</translation> -<translation id="664235759707825982">ОС Chrome можна встановити</translation> <translation id="6676384891291319759">Доступ до Інтернету</translation> <translation id="6679975945624592337">Дозволити Google Chrome працювати у фоновому режимі</translation> <translation id="6739177684496155661">Продовжити в новому профілі Chrome?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ur.xtb b/chrome/app/resources/google_chrome_strings_ur.xtb index 4d4fe2a5f..28b485f 100644 --- a/chrome/app/resources/google_chrome_strings_ur.xtb +++ b/chrome/app/resources/google_chrome_strings_ur.xtb
@@ -59,19 +59,10 @@ <translation id="2348335408836342058">Chrome کو اس سائٹ کیلئے آپ کے کیمرے اور مائیکروفون تک رسائی کی اجازت درکار ہے</translation> <translation id="234869673307233423">Chrome آپ کے پاس ورڈز چیک نہیں کر سکتا ہے۔ بعد میں دوبارہ کوشش کریں۔</translation> <translation id="235650106824528204">دفتری پروفائل کا منتظم اس پروفائل کے استعمال کے دوران جنریٹ ہونے والے کسی بھی Chrome ڈیٹا (جیسے، بُک مارکس کی تخلیق، سرگزشت، پاس ورڈز اور دیگر ترتیبات) کو ہٹا سکتا ہے۔ <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">ہارڈ ڈرائیو مٹائیں اور Chrome OS انسٹال کریں</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />ہم Chrome OS انسٹال کرنے کیلئے تیار ہیں! ایک بار آپ کے آگے بڑھنے پر: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />فائلز، ڈیٹا اور آپ کا موجودہ آپریٹنگ سسٹم مٹ جائے گا۔ - <ph name="LIST_ITEM" />Chrome OS انسٹال کیا جائے گا۔ - <ph name="LIST_ITEM" />انسٹالیشن مکمل ہونے کے بعد آپ کا آلہ بند ہو جائے گا۔ - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />ایک آخری یاد دہانی: انسٹالرشن آپ کی ہارڈ ڈرائیو کو مکمل طور پر مٹا دے گی۔ براہ کرم یقینی بنائیں کہ آپ کے پاس کوئی بھی ڈیٹا ہے جس کی آپ کو بیک اپ کرنے کی فکر ہے۔<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />ایک بار انسٹالیشن شروع ہو جانے کے بعد اسے منسوخ نہیں کیا جا سکتا۔<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome کلاؤڈ آپ کے ڈیٹا کی مطابقت پذیری نہیں کر سکا کیونکہ مطابقت پذیری آپ کے ڈومین کیلئے فعال نہیں ہے۔</translation> <translation id="2467438592969358367">Google Chrome آپ کے پاس ورڈز برآمد کرنا چاہتا ہے۔ اس کی اجازت دینے کیلئے، اپنا Windows پاس ورڈ ٹائپ کریں۔</translation> <translation id="2485422356828889247">ان انسٹال کریں</translation> +<translation id="2518751521812750372">جب آپ Chrome کو بند کرتے ہیں تو یہ خودکار طور پر آپ کے ملاحظہ کردہ صفحات سے کوکیز اور سائٹ کے ڈیٹا کو صاف کرتا ہے</translation> <translation id="2534507159460261402">Google Pay (Chrome میں کاپی کر دیا گیا)</translation> <translation id="2574930892358684005"><ph name="EXISTING_USER" /> اس Chrome پروفائل میں پہلے سے سائن ان ہے۔ اپنی براؤزنگ کو الگ رکھنے کیلئے، Chrome آپ کیلئے آپ کی ذاتی پروفائل تخلیق کر سکتا ہے۔</translation> <translation id="2580411288591421699">Google Chrome کا وہی ورژن انسٹال نہیں کیا جا سکتا ہے جو فی الحال چل رہا ہے۔ براہ کرم Google Chrome بند کریں اور دوبارہ کوشش کریں۔</translation> @@ -222,7 +213,6 @@ <translation id="6418662306461808273">موجودہ Chrome پروفائل پر سوئچ کریں؟</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS سسٹم</translation> -<translation id="664235759707825982">Chrome OS انسٹال کرنے کیلئے تیار ہیں</translation> <translation id="6676384891291319759">انٹرنیٹ تک رسائی حاصل کریں</translation> <translation id="6679975945624592337">Google Chrome کو پس منظر میں چلنے دیں</translation> <translation id="6739177684496155661">ایک نئی Chrome پروفائل میں جاری رکھیں؟</translation>
diff --git a/chrome/app/resources/google_chrome_strings_uz.xtb b/chrome/app/resources/google_chrome_strings_uz.xtb index 1cc2ca9..57cbfda 100644 --- a/chrome/app/resources/google_chrome_strings_uz.xtb +++ b/chrome/app/resources/google_chrome_strings_uz.xtb
@@ -57,16 +57,6 @@ <translation id="2348335408836342058">Bu sayt kamera va mikrofoningizdan foydalanishi uchun Chrome brauzeriga ruxsat berishingiz lozim</translation> <translation id="234869673307233423">Chrome parollaringizni tekshira olmadi. Keyinroq qayta urining.</translation> <translation id="235650106824528204">Bu profil ishlatilganda yaratilgan har qanday Chrome maʼlumotlari (bukmarklar, tarix, parollar va boshqa sozlamalar kabi) ish profili administratori tomonidan tozalanishi mumkin. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Diskni tozalash va Chrome OS tizimini oʻrnatish</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Chrome OS tizimini oʻrnatishga tayyormiz! Boshlashingiz bilan: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Fayllar, maʼlumotlar va joriy operatsion tizimingiz tozalanadi. - <ph name="LIST_ITEM" />Chrome OS oʻrnatiladi. - <ph name="LIST_ITEM" />Oʻrnatish yakunida qurilmangiz oʻchiriladi. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Oxirgi eslatma: oʻrnatishda qattiq diskdagi barcha maʼlumotlar oʻchirib tashlanadi. Kerakli axborotlarni zaxiralashga ulgurganingizni yaxshilab tekshiring.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Oʻrnatish boshlanganidan keyin uni bekor qilish imkonsiz.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome domeningizda Sync xizmati yo‘qligi sababli ma’lumotlaringizni sinxronlay olmadi.</translation> <translation id="2467438592969358367">Google Chrome parollaringizni eksport qilmoqchi. Ruxsat berish uchun Windows platformasidagi parolingizni kiriting.</translation> <translation id="2485422356828889247">O‘chirib tashlash</translation> @@ -221,7 +211,6 @@ <translation id="6418662306461808273">Mavjud Chrome profiliga almashilsinmi?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Chrome OS tizimi</translation> -<translation id="664235759707825982">Chrome OS oʻrnatilishga tayyor</translation> <translation id="6676384891291319759">Internetga ulanish</translation> <translation id="6679975945624592337">Google Chrome fonda ishlashiga ruxsat</translation> <translation id="6739177684496155661">Yangi Chrome profilida davom etasizmi?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_vi.xtb b/chrome/app/resources/google_chrome_strings_vi.xtb index 4257de7..bab322ed 100644 --- a/chrome/app/resources/google_chrome_strings_vi.xtb +++ b/chrome/app/resources/google_chrome_strings_vi.xtb
@@ -58,16 +58,6 @@ <translation id="2348335408836342058">Chrome cần có quyền truy cập vào máy ảnh và micrô của bạn cho trang web này</translation> <translation id="234869673307233423">Chrome không thể kiểm tra mật khẩu của bạn. Hãy thử lại sau.</translation> <translation id="235650106824528204">Quản trị viên hồ sơ công việc có thể xóa mọi dữ liệu trên Chrome được tạo trong quá trình sử dụng hồ sơ này (chẳng hạn như hoạt động tạo dấu trang, các trang web đã truy cập, mật khẩu và các tùy chọn cài đặt khác). <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Xóa ổ cứng và cài đặt Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Chúng tôi đã sẵn sàng cài đặt Chrome OS! Một khi bạn tiếp tục: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Các tệp, dữ liệu và hệ điều hành hiện tại của bạn sẽ bị xóa. - <ph name="LIST_ITEM" />Chrome OS sẽ được cài đặt. - <ph name="LIST_ITEM" />Thiết bị của bạn sẽ tắt sau khi quá trình cài đặt hoàn tất. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Lời nhắc cuối cùng: quá trình cài đặt sẽ xóa toàn bộ ổ cứng của bạn. Hãy chắc chắn rằng bạn đã sao lưu mọi dữ liệu quan trọng.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Quá trình cài đặt không thể hủy được một khi đã bắt đầu.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">Google Chrome không thể đồng bộ hóa dữ liệu của bạn vì Đồng bộ hóa không khả dụng cho miền của bạn.</translation> <translation id="2467438592969358367">Google Chrome muốn xuất các mật khẩu của bạn. Hãy nhập mật khẩu Windows để cho phép thực hiện việc này.</translation> <translation id="2485422356828889247">Gỡ cài đặt</translation> @@ -220,7 +210,6 @@ <translation id="6418662306461808273">Chuyển sang hồ sơ hiện có trên Chrome?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome dành cho nhà phát triển</translation> <translation id="6568793831116033768">Hệ thống Chrome OS</translation> -<translation id="664235759707825982">Sẵn sàng cài đặt Chrome OS</translation> <translation id="6676384891291319759">Truy cập Internet</translation> <translation id="6679975945624592337">Cho phép Google Chrome chạy trong nền</translation> <translation id="6739177684496155661">Tiếp tục đăng nhập vào hồ sơ mới trên Chrome?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-CN.xtb b/chrome/app/resources/google_chrome_strings_zh-CN.xtb index c4fcbaa4..5ecfbcaf 100644 --- a/chrome/app/resources/google_chrome_strings_zh-CN.xtb +++ b/chrome/app/resources/google_chrome_strings_zh-CN.xtb
@@ -55,16 +55,6 @@ <translation id="2348335408836342058">Chrome 需要获得相应权限,才能允许此网站使用您的摄像头和麦克风</translation> <translation id="234869673307233423">Chrome 无法检查您的密码。请稍后重试。</translation> <translation id="235650106824528204">在使用此工作资料(例如创建书签、历史记录、密码和其他设置)时生成的任何 Chrome 数据都可由工作资料管理员移除。<ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">清除硬盘数据并安装 Chrome 操作系统</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />我们已准备就绪,可以安装 Chrome 操作系统了!一旦您继续操作: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />系统会清除文件、数据和您目前使用的操作系统。 - <ph name="LIST_ITEM" />系统会安装 Chrome 操作系统。 - <ph name="LIST_ITEM" />您的设备会在安装完毕后关机。 - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />最后请注意:安装流程会清除您的整个硬盘中的数据。请确保您已妥善地备份了所有重要数据。<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />安装流程一旦开始就无法取消。<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">由于您的网域停用了同步功能,Google Chrome无法同步您的数据。</translation> <translation id="2467438592969358367">Google Chrome 想导出您的密码。请输入您的 Windows 密码以允许此操作。</translation> <translation id="2485422356828889247">卸载</translation> @@ -214,7 +204,6 @@ <translation id="6418662306461808273">切换到现有的 Chrome 个人资料?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome 开发者版</translation> <translation id="6568793831116033768">Chrome 操作系统</translation> -<translation id="664235759707825982">一切就绪,可以安装 Chrome 操作系统了</translation> <translation id="6676384891291319759">访问互联网</translation> <translation id="6679975945624592337">让 Google Chrome 在后台运行</translation> <translation id="6739177684496155661">使用一份新的 Chrome 个人资料继续浏览?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-HK.xtb b/chrome/app/resources/google_chrome_strings_zh-HK.xtb index c84d6ca..c40c9938 100644 --- a/chrome/app/resources/google_chrome_strings_zh-HK.xtb +++ b/chrome/app/resources/google_chrome_strings_zh-HK.xtb
@@ -59,16 +59,6 @@ <translation id="2348335408836342058">Chrome 需要取得權限,才能讓這個網站存取您的相機和麥克風</translation> <translation id="234869673307233423">Chrome 無法檢查密碼,請稍後再試。</translation> <translation id="235650106824528204">工作設定檔管理員可移除任何在使用此設定檔時產生的 Chrome 資料 (例如建立的書籤、記錄、密碼和其他設定)。<ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">清除硬碟資料並安裝 Chrome 作業系統</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />我們已準備好安裝 Chrome 作業系統!一旦繼續執行: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />系統會清除您的檔案、資料和目前的作業系統。 - <ph name="LIST_ITEM" />系統將會安裝 Chrome 作業系統。 - <ph name="LIST_ITEM" />您的裝置會在安裝完成後關機。 - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />最後請注意,安裝程序會清除整個硬碟的資料。請確認重要資料皆已完成備份。<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />安裝程序開始後就無法取消。<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">您的網域無法使用「同步功能」,因此 Google Chrome 無法同步處理您的數據。</translation> <translation id="2467438592969358367">Google Chrome 想匯出您的密碼。請輸入 Windows 密碼以允許此操作。</translation> <translation id="2485422356828889247">解除安裝</translation> @@ -222,7 +212,6 @@ <translation id="6418662306461808273">要切換至現有 Chrome 設定檔嗎?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome 開發人員版</translation> <translation id="6568793831116033768">Chrome 作業系統</translation> -<translation id="664235759707825982">現在可以安裝 Chrome 作業系統了</translation> <translation id="6676384891291319759">連線到互聯網</translation> <translation id="6679975945624592337">讓 Google Chrome 在背景執行</translation> <translation id="6739177684496155661">要透過新的 Chrome 設定檔繼續瀏覽嗎?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-TW.xtb b/chrome/app/resources/google_chrome_strings_zh-TW.xtb index 0d846e32..86d0c543 100644 --- a/chrome/app/resources/google_chrome_strings_zh-TW.xtb +++ b/chrome/app/resources/google_chrome_strings_zh-TW.xtb
@@ -55,16 +55,6 @@ <translation id="2348335408836342058">Chrome 需要相關權限,才能讓這個網站使用你的攝影機和麥克風</translation> <translation id="234869673307233423">Chrome 無法檢查你的密碼,請稍後再試。</translation> <translation id="235650106824528204">凡是在使用這個資料夾期間產生的 Chrome 資料 (例如建立的書籤、歷史記錄、密碼和其他設定),工作資料夾管理員皆可予以移除。<ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">清除硬碟資料並安裝 Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Chrome OS 安裝程序已就緒!一旦繼續執行: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />系統會清除你的檔案、資料和目前的作業系統。 - <ph name="LIST_ITEM" />Chrome OS 將進行安裝。 - <ph name="LIST_ITEM" />你的裝置會在安裝完成後關機。 - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />最後請注意,安裝程序會清除整個硬碟的資料。請確認重要資料皆已完成備份。<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />安裝程序開始後就無法取消。<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">你的網域無法使用「同步功能」,因此 Google Chrome 無法同步處理你的資料。</translation> <translation id="2467438592969358367">Google Chrome 要求匯出你的密碼。如果允許,請輸入你的 Windows 密碼。</translation> <translation id="2485422356828889247">解除安裝</translation> @@ -217,7 +207,6 @@ <translation id="6418662306461808273">要切換至現有的 Chrome 設定檔嗎?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome 開發人員版</translation> <translation id="6568793831116033768">Chrome 作業系統</translation> -<translation id="664235759707825982">現在可以安裝 Chrome OS 了</translation> <translation id="6676384891291319759">連線到網際網路</translation> <translation id="6679975945624592337">讓 Google Chrome 在背景執行</translation> <translation id="6739177684496155661">要繼續使用新的 Chrome 設定檔嗎?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zu.xtb b/chrome/app/resources/google_chrome_strings_zu.xtb index f4eb97bdf..fee0c40b 100644 --- a/chrome/app/resources/google_chrome_strings_zu.xtb +++ b/chrome/app/resources/google_chrome_strings_zu.xtb
@@ -60,16 +60,6 @@ <translation id="2348335408836342058">I-Chrome idinga imvume ukuze ifinyelele kukhamera yakho nemakrofoni yaleli sayithi</translation> <translation id="234869673307233423">I-Chrome ayikwazi ukuhlola amaphasiwedi akho. Zama futhi emuva kwesikhathi.</translation> <translation id="235650106824528204">Noma iyiphi idatha ye-Chrome ekhiqizwa ngesikhathi sokusetshenziswa kwale phrofayela (efana nokudalwa kwamabhukhimakhi, umlando, amaphasiwedi, namanye amasethingi) ingasuswa umlawuli wephrofayela yomsebenzi. <ph name="LEARN_MORE" /></translation> -<translation id="2409866122341731384">Sula Okuphakelayo futhi Ufake i-Chrome OS</translation> -<translation id="2417565246123344595"><ph name="BEGIN_PARAGRAPH1" />Sikulungele ukufaka i-Chrome OS! Lapho usuqhubeka: - <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Amafayela, idatha, nesistimu yakho yokusebenza yamanje kuzosulwa. - <ph name="LIST_ITEM" />I-Chrome OS izofakwa. - <ph name="LIST_ITEM" />Idivayisi yakho izocisha lapho ukufaka sekuqedile. - <ph name="END_LIST" /> - <ph name="END_PARAGRAPH1" /> - <ph name="BEGIN_PARAGRAPH2" />Isikhumbuzi sokugcina: ukufaka kuzosula konke okuphakelayo kwakho. Sicela uqiniseke ukuthi idatha oyikhathalelayo yenziwe ikhophi yasenqolobaneni.<ph name="END_PARAGRAPH2" /> - <ph name="BEGIN_PARAGRAPH3" />Lapho ukufaka kuqala akukwazi ukukhanselwa.<ph name="END_PARAGRAPH3" /></translation> <translation id="2429317896000329049">I-Google Chrome ayikwazanga ukuvumelanisa idatha yakho ngoba ukuvumelanisa akutholakali kusizinda sakho.</translation> <translation id="2467438592969358367">I-Google Chrome ifuna ukuthumela amaphasiwedi akho. Thayipha iphasiwedi yakho ye-Windows ukuze uvumele lokhu.</translation> <translation id="2485422356828889247">Khipha</translation> @@ -224,7 +214,6 @@ <translation id="6418662306461808273">Shintshela kuphrofayela ye-Chrome ekhona kakade?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6568793831116033768">Isistimu ye-Chrome OS</translation> -<translation id="664235759707825982">Ikulungele ukufaka i-Chrome OS</translation> <translation id="6676384891291319759">Finyelela i-inthanethi?</translation> <translation id="6679975945624592337">Vumela i-Google Chrome isebenze ngemuva</translation> <translation id="6739177684496155661">Qhubeka kuphrofayela entsha ye-Chrome?</translation>
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp index 4d4b562..fa14534 100644 --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp
@@ -228,8 +228,11 @@ <message name="IDS_SETTINGS_EDIT" desc="Label used on a menu item or button, used in different contexts to edit an item."> Edit </message> + <message name="IDS_SETTINGS_END_TIME" desc="The label of the end time bubble of settings-scheduler-slider"> + End time + </message> <message name="IDS_SETTINGS_NOT_VALID" desc="Text indicating that an input is not valid."> - Not valid + Not valid </message> <message name="IDS_SETTINGS_NOT_VALID_WEB_ADDRESS" desc="Text indicating that the Web address entered by the user is invalid." > Not a valid web address @@ -238,11 +241,14 @@ Origin must be secure </message> <message name="IDS_SETTINGS_RETRY" desc="The label text of the retry button because there is an error."> - Retry + Retry </message> <message name="IDS_SETTINGS_SLIDER_MIN_MAX_ARIA_ROLE_DESCRIPTION" desc="A label to be read aloud by screen readers when a user focuses on a slider. A settings slider generally has a minimum value, a maximum value, and a fixed range of values in between. This label gives the user context for what the minimum and maximum values represent for that particular slider."> Slider: <ph name="MIN_LABEL">$1<ex>Slowest</ex></ph> to <ph name="MAX_LABEL">$2<ex>Fastest</ex></ph> </message> + <message name="IDS_SETTINGS_START_TIME" desc="The label of the start time bubble of settings-scheduler-slider"> + Start time + </message> <!-- Autofill Page --> <message name="IDS_SETTINGS_AUTOFILL" desc="Name of the settings page which allows managing passwords, payment methods and addresses settings.">
diff --git a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_DISPLAY_NIGHT_LIGHT_START_TIME.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_END_TIME.png.sha1 similarity index 96% rename from chrome/app/os_settings_strings_grdp/IDS_SETTINGS_DISPLAY_NIGHT_LIGHT_START_TIME.png.sha1 rename to chrome/app/settings_strings_grdp/IDS_SETTINGS_END_TIME.png.sha1 index 203e6484e..e150d47 100644 --- a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_DISPLAY_NIGHT_LIGHT_START_TIME.png.sha1 +++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_END_TIME.png.sha1
@@ -1 +1 @@ -5b1d5700a12e4506a1ee7452b62d47e81d68dc95 +5b1d5700a12e4506a1ee7452b62d47e81d68dc95 \ No newline at end of file
diff --git a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_DISPLAY_NIGHT_LIGHT_START_TIME.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_START_TIME.png.sha1 similarity index 96% copy from chrome/app/os_settings_strings_grdp/IDS_SETTINGS_DISPLAY_NIGHT_LIGHT_START_TIME.png.sha1 copy to chrome/app/settings_strings_grdp/IDS_SETTINGS_START_TIME.png.sha1 index 203e6484e..e150d47 100644 --- a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_DISPLAY_NIGHT_LIGHT_START_TIME.png.sha1 +++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_START_TIME.png.sha1
@@ -1 +1 @@ -5b1d5700a12e4506a1ee7452b62d47e81d68dc95 +5b1d5700a12e4506a1ee7452b62d47e81d68dc95 \ No newline at end of file
diff --git a/chrome/browser/android/feed/v2/rss_links_fetcher_browsertest.cc b/chrome/browser/android/feed/v2/rss_links_fetcher_browsertest.cc index 52c7bd4..7439058 100644 --- a/chrome/browser/android/feed/v2/rss_links_fetcher_browsertest.cc +++ b/chrome/browser/android/feed/v2/rss_links_fetcher_browsertest.cc
@@ -35,7 +35,7 @@ base::test::ScopedFeatureList features_; }; -IN_PROC_BROWSER_TEST_F(RssLinksFetcherTest, FetchSuccessful) { +IN_PROC_BROWSER_TEST_F(RssLinksFetcherTest, FetchSuccessfulFromHead) { auto* tab = TabAndroid::FromWebContents( chrome_test_utils::GetActiveWebContents(this)); const GURL url = @@ -45,7 +45,8 @@ CallbackReceiver<std::vector<GURL>> rss_links; FetchRssLinks(url, tab, rss_links.Bind()); std::vector<GURL> result = rss_links.RunAndGetResult(); - // Just check path on URLs relative to the local server, since it's port + // Only valid RSS links in the head section should be returned. + // Just check path on URLs relative to the local server, since its port // changes. ASSERT_EQ(3u, result.size()); EXPECT_EQ("/rss.xml", result[0].path()); @@ -53,5 +54,25 @@ EXPECT_EQ(GURL("https://some/path.xml"), result[2]); } +IN_PROC_BROWSER_TEST_F(RssLinksFetcherTest, FetchSuccessfulFromBody) { + auto* tab = TabAndroid::FromWebContents( + chrome_test_utils::GetActiveWebContents(this)); + const GURL url = embedded_test_server()->GetURL( + "localhost", "/page_with_rss_in_body.html"); + ASSERT_TRUE(content::NavigateToURL(tab->web_contents(), url)); + + CallbackReceiver<std::vector<GURL>> rss_links; + FetchRssLinks(url, tab, rss_links.Bind()); + std::vector<GURL> result = rss_links.RunAndGetResult(); + // As there's no valid RSS links in the head, the ones from the body should be + // returned. + // Just check path on URLs relative to the local server, since its port + // changes. + ASSERT_EQ(3u, result.size()); + EXPECT_EQ("/rss-in-body.xml", result[0].path()); + EXPECT_EQ("/atom-in-body.xml", result[1].path()); + EXPECT_EQ(GURL("https://some/path-in-body.xml"), result[2]); +} + } // namespace } // namespace feed
diff --git a/chrome/browser/android/feed/v2/rss_links_fetcher_unittest.cc b/chrome/browser/android/feed/v2/rss_links_fetcher_unittest.cc index 7b2111ff..a1ad4b7f 100644 --- a/chrome/browser/android/feed/v2/rss_links_fetcher_unittest.cc +++ b/chrome/browser/android/feed/v2/rss_links_fetcher_unittest.cc
@@ -76,7 +76,7 @@ link_reader.WaitForCall(); { - // Have link reader return TesetRssUrls as well as some invalid URLs which + // Have link reader return TestRssUrls as well as some invalid URLs which // are filtered out. std::vector<GURL> returned_urls = TestRssUrls(); returned_urls.push_back(GURL());
diff --git a/chrome/browser/android/vr/gvr_scheduler_delegate.cc b/chrome/browser/android/vr/gvr_scheduler_delegate.cc index a3b67fa..17c31c26 100644 --- a/chrome/browser/android/vr/gvr_scheduler_delegate.cc +++ b/chrome/browser/android/vr/gvr_scheduler_delegate.cc
@@ -22,6 +22,7 @@ #include "components/webxr/mailbox_to_surface_bridge_impl.h" #include "content/public/common/content_features.h" #include "device/vr/android/gvr/gvr_delegate.h" +#include "device/vr/android/gvr/gvr_utils.h" #include "gpu/command_buffer/common/shared_image_usage.h" #include "gpu/config/gpu_driver_bug_workaround_type.h" #include "gpu/ipc/common/gpu_memory_buffer_impl_android_hardware_buffer.h" @@ -985,6 +986,8 @@ frame_data->mojo_space_reset |= last_event.type == GVR_EVENT_RECENTER; } + frame_data->views = device::gvr_utils::CreateViews(gvr_api_, pose.get()); + TRACE_EVENT0("gpu", "GvrSchedulerDelegate::XRInput"); frame_data->input_state = std::move(input_states_);
diff --git a/chrome/browser/apps/app_service/app_platform_metrics_service_unittest.cc b/chrome/browser/apps/app_service/app_platform_metrics_service_unittest.cc index 42ca8a9a..5730ff8 100644 --- a/chrome/browser/apps/app_service/app_platform_metrics_service_unittest.cc +++ b/chrome/browser/apps/app_service/app_platform_metrics_service_unittest.cc
@@ -341,7 +341,7 @@ aura::Window* window, apps::InstanceState state) { std::unique_ptr<apps::Instance> instance = std::make_unique<apps::Instance>( - app_id, apps::Instance::InstanceKey(window)); + app_id, apps::Instance::InstanceKey::ForWindowBasedApp(window)); instance->UpdateState(state, base::Time::Now()); std::vector<std::unique_ptr<apps::Instance>> deltas;
diff --git a/chrome/browser/apps/app_service/publishers/extension_apps.h b/chrome/browser/apps/app_service/publishers/extension_apps.h index 109a2166..7802ea7 100644 --- a/chrome/browser/apps/app_service/publishers/extension_apps.h +++ b/chrome/browser/apps/app_service/publishers/extension_apps.h
@@ -24,9 +24,7 @@ // An app publisher (in the App Service sense) of extension-backed apps for // Chrome, including Chrome Apps (platform apps and legacy packaged apps) and -// hosted apps (including desktop PWAs). -// -// In the future, desktop PWAs will be migrated to a new system. +// hosted apps. // // See components/services/app_service/README.md. class ExtensionApps : public apps::ExtensionAppsBase {
diff --git a/chrome/browser/apps/app_service/publishers/extension_apps_base.h b/chrome/browser/apps/app_service/publishers/extension_apps_base.h index 8d0049f..acb02172 100644 --- a/chrome/browser/apps/app_service/publishers/extension_apps_base.h +++ b/chrome/browser/apps/app_service/publishers/extension_apps_base.h
@@ -40,9 +40,7 @@ // An app base publisher (in the App Service sense) of extension-backed apps, // including Chrome Apps (platform apps and legacy packaged apps) and hosted -// apps (including desktop PWAs). -// -// In the future, desktop PWAs will be migrated to a new system. +// apps. // // See components/services/app_service/README.md. class ExtensionAppsBase : public apps::PublisherBase,
diff --git a/chrome/browser/apps/app_service/publishers/extension_apps_chromeos.cc b/chrome/browser/apps/app_service/publishers/extension_apps_chromeos.cc index 4114a56..26659109 100644 --- a/chrome/browser/apps/app_service/publishers/extension_apps_chromeos.cc +++ b/chrome/browser/apps/app_service/publishers/extension_apps_chromeos.cc
@@ -298,7 +298,8 @@ } DCHECK(!instance_registry_->Exists( - apps::Instance::InstanceKey(app_window->GetNativeWindow()))); + apps::Instance::InstanceKey::ForWindowBasedApp( + app_window->GetNativeWindow()))); app_window_to_aura_window_[app_window] = app_window->GetNativeWindow(); // Attach window to multi-user manager now to let it manage visibility state @@ -322,7 +323,8 @@ } InstanceState state = instance_registry_->GetState( - apps::Instance::InstanceKey(app_window->GetNativeWindow())); + apps::Instance::InstanceKey::ForWindowBasedApp( + app_window->GetNativeWindow())); // If the window is shown, it should be started, running and not hidden. state = static_cast<apps::InstanceState>( @@ -748,7 +750,8 @@ // If the current state has been marked as |new_state|, we don't need to // update. - if (instance_registry_->GetState(apps::Instance::InstanceKey(window)) == + if (instance_registry_->GetState( + apps::Instance::InstanceKey::ForWindowBasedApp(window)) == new_state) { return; } @@ -759,7 +762,8 @@ } std::vector<std::unique_ptr<apps::Instance>> deltas; auto instance = std::make_unique<apps::Instance>( - app_window->extension_id(), apps::Instance::InstanceKey(window)); + app_window->extension_id(), + apps::Instance::InstanceKey::ForWindowBasedApp(window)); instance->SetLaunchId(GetLaunchId(app_window)); instance->UpdateState(new_state, base::Time::Now()); instance->SetBrowserContext(app_window->browser_context());
diff --git a/chrome/browser/ash/accessibility/accessibility_common_browsertest.cc b/chrome/browser/ash/accessibility/accessibility_common_browsertest.cc index db571eb5..615ea5a 100644 --- a/chrome/browser/ash/accessibility/accessibility_common_browsertest.cc +++ b/chrome/browser/ash/accessibility/accessibility_common_browsertest.cc
@@ -35,7 +35,7 @@ void TearDownOnMainThread() override { EXPECT_FALSE(console_observer_->HasErrorsOrWarnings()) - << "Found console.log or console.warn with message: " + << "Found console.warn or console.error with message: " << console_observer_->GetErrorOrWarningAt(0); }
diff --git a/chrome/browser/ash/borealis/borealis_window_manager_test_helper.cc b/chrome/browser/ash/borealis/borealis_window_manager_test_helper.cc index dbe8d84..5f838ef 100644 --- a/chrome/browser/ash/borealis/borealis_window_manager_test_helper.cc +++ b/chrome/browser/ash/borealis/borealis_window_manager_test_helper.cc
@@ -12,14 +12,16 @@ ScopedTestWindow::ScopedTestWindow(std::unique_ptr<aura::Window> window, BorealisWindowManager* manager) : window_(std::move(window)), manager_(manager) { - apps::Instance instance(manager_->GetShelfAppId(window_.get()), - apps::Instance::InstanceKey(window_.get())); + apps::Instance instance( + manager_->GetShelfAppId(window_.get()), + apps::Instance::InstanceKey::ForWindowBasedApp(window_.get())); manager_->OnInstanceUpdate(apps::InstanceUpdate(nullptr, &instance)); } ScopedTestWindow::~ScopedTestWindow() { - apps::Instance instance(manager_->GetShelfAppId(window_.get()), - apps::Instance::InstanceKey(window_.get())); + apps::Instance instance( + manager_->GetShelfAppId(window_.get()), + apps::Instance::InstanceKey::ForWindowBasedApp(window_.get())); std::unique_ptr<apps::Instance> delta = instance.Clone(); delta->UpdateState(apps::InstanceState::kDestroyed, base::Time::Now()); manager_->OnInstanceUpdate(apps::InstanceUpdate(&instance, delta.get()));
diff --git a/chrome/browser/ash/child_accounts/family_user_app_metrics_unittest.cc b/chrome/browser/ash/child_accounts/family_user_app_metrics_unittest.cc index b8e9ab7..20ae03c 100644 --- a/chrome/browser/ash/child_accounts/family_user_app_metrics_unittest.cc +++ b/chrome/browser/ash/child_accounts/family_user_app_metrics_unittest.cc
@@ -201,7 +201,8 @@ window_ = std::make_unique<aura::Window>(nullptr); window_->Init(ui::LAYER_NOT_DRAWN); instances.push_back(std::make_unique<apps::Instance>( - /*app_id=*/"a", apps::Instance::InstanceKey(window_.get()))); + /*app_id=*/"a", + apps::Instance::InstanceKey::ForWindowBasedApp(window_.get()))); instance_registry.OnInstances(instances); }
diff --git a/chrome/browser/ash/child_accounts/family_user_chrome_activity_metrics_unittest.cc b/chrome/browser/ash/child_accounts/family_user_chrome_activity_metrics_unittest.cc index 2fe3e22..f02bdbd 100644 --- a/chrome/browser/ash/child_accounts/family_user_chrome_activity_metrics_unittest.cc +++ b/chrome/browser/ash/child_accounts/family_user_chrome_activity_metrics_unittest.cc
@@ -132,9 +132,9 @@ void OnNewDay() { family_user_chrome_activity_metrics_->OnNewDay(); } void PushChromeAppInstance(aura::Window* window, apps::InstanceState state) { - std::unique_ptr<apps::Instance> instance = - std::make_unique<apps::Instance>(app_time::GetChromeAppId().app_id(), - apps::Instance::InstanceKey(window)); + std::unique_ptr<apps::Instance> instance = std::make_unique<apps::Instance>( + app_time::GetChromeAppId().app_id(), + apps::Instance::InstanceKey::ForWindowBasedApp(window)); instance->UpdateState(state, base::Time::Now()); std::vector<std::unique_ptr<apps::Instance>> deltas;
diff --git a/chrome/browser/ash/crosapi/browser_loader.cc b/chrome/browser/ash/crosapi/browser_loader.cc index 782a21e0..5f1d5151 100644 --- a/chrome/browser/ash/crosapi/browser_loader.cc +++ b/chrome/browser/ash/crosapi/browser_loader.cc
@@ -88,18 +88,30 @@ return GetLacrosComponentInfo().crx_id; } -// Returns whether lacros-chrome component is already installed. -bool CheckInstalledMayBlock( +// Returns whether lacros-chrome component is registered. +bool CheckRegisteredMayBlock( scoped_refptr<component_updater::CrOSComponentManager> manager) { return manager->IsRegisteredMayBlock(GetLacrosComponentName()); } +// Returns whether any lacros-chrome component is registered. +bool CheckAnyRegisteredMayBlock( + scoped_refptr<component_updater::CrOSComponentManager> manager) { + for (const auto& component_info : + {kLacrosDogfoodCanaryInfo, kLacrosDogfoodDevInfo, + kLacrosDogfoodStableInfo}) { + if (manager->IsRegisteredMayBlock(component_info.name)) + return true; + } + return false; +} + // Returns whether lacros-fishfood component is already installed. // If it is, delete the user directory, too, because it will be // uninstalled. bool CheckInstalledAndMaybeRemoveUserDirectory( scoped_refptr<component_updater::CrOSComponentManager> manager) { - if (!CheckInstalledMayBlock(manager)) + if (!CheckRegisteredMayBlock(manager)) return false; // Since we're already on a background thread, delete the user-data-dir @@ -193,23 +205,49 @@ } } - OnLoadSelection( - std::move(callback), - !component_manager_->GetCompatiblePath(GetLacrosComponentName()).empty()); + base::ThreadPool::PostTaskAndReplyWithResult( + FROM_HERE, {base::MayBlock()}, + base::BindOnce(&CheckAnyRegisteredMayBlock, component_manager_), + base::BindOnce(&BrowserLoader::OnLoadSelection, + weak_factory_.GetWeakPtr(), std::move(callback))); } void BrowserLoader::OnLoadSelection(LoadCompletionCallback callback, - bool was_installed) { + bool any_lacros_component_registered) { // If there currently isn't a stateful lacros-chrome binary, proceed to use // the rootfs lacros-chrome binary and start the installation of the // stateful lacros-chrome binary in the background. - if (!was_installed) { + if (!any_lacros_component_registered) { LoadRootfsLacros(std::move(callback)); LoadStatefulLacros({}); return; } - // Otherwise proceed to compare the lacros-chrome binary versions. + // Otherwise proceed to load/mount the stateful lacros-chrome binary. + // In the case that the stateful lacros-chrome binary wasn't installed, this + // might take some time. + component_manager_->Load( + GetLacrosComponentName(), + component_updater::CrOSComponentManager::MountPolicy::kMount, + component_updater::CrOSComponentManager::UpdatePolicy::kDontForce, + base::BindOnce(&BrowserLoader::OnLoadSelectionMountStateful, + weak_factory_.GetWeakPtr(), std::move(callback))); +} + +void BrowserLoader::OnLoadSelectionMountStateful( + LoadCompletionCallback callback, + component_updater::CrOSComponentManager::Error error, + const base::FilePath& path) { + if (error != component_updater::CrOSComponentManager::Error::NONE || + path.empty()) { + LOG(WARNING) << "Error loading lacros component image: " + << static_cast<int>(error); + std::move(callback).Run(base::FilePath()); + return; + } + + // Proceed to compare the lacros-chrome binary versions in case rootfs + // lacros-chrome binary is newer than stateful lacros-chrome binary. base::ThreadPool::PostTaskAndReplyWithResult( FROM_HERE, {base::MayBlock()}, base::BindOnce(&browser_util::GetRootfsLacrosVersionMayBlock,
diff --git a/chrome/browser/ash/crosapi/browser_loader.h b/chrome/browser/ash/crosapi/browser_loader.h index 71f3b01..d3d758f9 100644 --- a/chrome/browser/ash/crosapi/browser_loader.h +++ b/chrome/browser/ash/crosapi/browser_loader.h
@@ -77,6 +77,12 @@ // start the stateful lacros installation. void OnLoadSelection(LoadCompletionCallback callback, bool was_installed); + // Called to make sure stateful lacros is mounted before version comparison. + void OnLoadSelectionMountStateful( + LoadCompletionCallback callback, + component_updater::CrOSComponentManager::Error error, + const base::FilePath& path); + // Called to determine which lacros to load based on version (rootfs vs // stateful). void LoadVersionSelection(LoadCompletionCallback callback);
diff --git a/chrome/browser/ash/file_manager/fileapi_util.cc b/chrome/browser/ash/file_manager/fileapi_util.cc index 14b7504..4a8cf41 100644 --- a/chrome/browser/ash/file_manager/fileapi_util.cc +++ b/chrome/browser/ash/file_manager/fileapi_util.cc
@@ -7,6 +7,8 @@ #include <stddef.h> #include <utility> +#include "ash/constants/ash_features.h" +#include "ash/webui/file_manager/url_constants.h" #include "base/bind.h" #include "base/files/file.h" #include "base/files/file_path.h" @@ -452,6 +454,9 @@ EntryDefinition::~EntryDefinition() = default; const GURL GetFileManagerURL() { + if (ash::features::IsFileManagerSwaEnabled()) { + return GURL(ash::file_manager::kChromeUIFileManagerURL); + } return extensions::Extension::GetBaseURLFromExtensionId(kFileManagerAppId); }
diff --git a/chrome/browser/ash/file_manager/fileapi_util_unittest.cc b/chrome/browser/ash/file_manager/fileapi_util_unittest.cc index 71b3495..aff14d0 100644 --- a/chrome/browser/ash/file_manager/fileapi_util_unittest.cc +++ b/chrome/browser/ash/file_manager/fileapi_util_unittest.cc
@@ -7,9 +7,11 @@ #include <memory> #include <string> +#include "ash/constants/ash_features.h" #include "base/bind.h" #include "base/strings/strcat.h" #include "base/strings/utf_string_conversions.h" +#include "base/test/scoped_feature_list.h" #include "chrome/browser/ash/file_system_provider/fake_extension_provider.h" #include "chrome/browser/ash/file_system_provider/service.h" #include "chrome/browser/ash/file_system_provider/service_factory.h" @@ -91,8 +93,22 @@ base::ScopedTempDir temp_dir_; }; -class FileManagerFileAPIUtilTest : public ::testing::Test { +// Parameter for the unit test to allow us to test both System Files App case +// and Extension Files app. +enum FilesAppMode { + EXTENSION_FILES_APP, + SYSTEM_FILES_APP, +}; + +class FileManagerFileAPIUtilTest + : public ::testing::TestWithParam<FilesAppMode> { public: + FileManagerFileAPIUtilTest() { + if (GetParam() == SYSTEM_FILES_APP) { + feature_list_.InitAndEnableFeature(chromeos::features::kFilesSWA); + } + } + // Carries information on how to create a FileSystemURL for a given file name. // For !valid orders we create a test URL. Otherwise, we use temp file system. struct FileSystemURLOrder { @@ -172,6 +188,7 @@ const std::string file_system_id_ = "test-filesystem"; private: + base::test::ScopedFeatureList feature_list_; content::BrowserTaskEnvironment task_environment_; std::unique_ptr<TestingProfileManager> profile_manager_; TestingProfile* profile_; @@ -184,7 +201,7 @@ output->push_back(file->Clone()); } -TEST_F(FileManagerFileAPIUtilTest, +TEST_P(FileManagerFileAPIUtilTest, ConvertSelectedFileInfoListToFileChooserFileInfoList) { Profile* const profile = GetProfile(); const std::string extension_id = "abc"; @@ -264,7 +281,7 @@ EXPECT_EQ(55u, result[2]->get_file_system()->length); } -TEST_F(FileManagerFileAPIUtilTest, +TEST_P(FileManagerFileAPIUtilTest, ConvertFileDefinitionListToEntryDefinitionListExtension) { std::vector<FileSystemURLOrder> orders = { {.file_name = "x.txt", .valid = true}, @@ -279,7 +296,7 @@ "chrome-extension://abc/efg", orders); } -TEST_F(FileManagerFileAPIUtilTest, +TEST_P(FileManagerFileAPIUtilTest, ConvertFileDefinitionListToEntryDefinitionListApp) { std::vector<FileSystemURLOrder> orders = { {.file_name = "a.txt", .valid = false}, @@ -294,7 +311,7 @@ "chrome://file-manager/abc", orders); } -TEST_F(FileManagerFileAPIUtilTest, +TEST_P(FileManagerFileAPIUtilTest, ConvertFileDefinitionListToEntryDefinitionNullContext) { Profile* const profile = GetProfile(); const GURL appURL("chrome-extension://abc/"); @@ -324,7 +341,7 @@ run_loop.Run(); } -TEST_F(FileManagerFileAPIUtilTest, +TEST_P(FileManagerFileAPIUtilTest, ConvertFileDefinitionListToEntryDefinitionContextReset) { Profile* const profile = GetProfile(); const GURL appURL("chrome-extension://abc/"); @@ -360,6 +377,11 @@ run_loop.Run(); } +INSTANTIATE_TEST_SUITE_P(FilesAppMode, + FileManagerFileAPIUtilTest, + ::testing::Values(EXTENSION_FILES_APP, + SYSTEM_FILES_APP)); + } // namespace } // namespace util } // namespace file_manager
diff --git a/chrome/browser/ash/file_manager/url_util.cc b/chrome/browser/ash/file_manager/url_util.cc index 6e970f6..427f5fb 100644 --- a/chrome/browser/ash/file_manager/url_util.cc +++ b/chrome/browser/ash/file_manager/url_util.cc
@@ -9,9 +9,11 @@ #include <memory> #include <utility> +#include "ash/constants/ash_features.h" #include "base/json/json_writer.h" #include "base/values.h" #include "chrome/browser/ash/file_manager/app_id.h" +#include "chrome/browser/ash/file_manager/fileapi_util.h" #include "net/base/escape.h" namespace file_manager { @@ -23,11 +25,6 @@ const char kAnyPath[] = "anyPath"; const char kAnyPathOrUrl[] = "anyPathOrUrl"; -// Returns a file manager URL for the given |path|. -GURL GetFileManagerUrl(const char* path) { - return GURL(std::string("chrome-extension://") + kFileManagerAppId + path); -} - // Converts a numeric dialog type to a string. std::string GetDialogTypeAsString( ui::SelectFileDialog::Type dialog_type) { @@ -65,7 +62,8 @@ } // namespace GURL GetFileManagerMainPageUrl() { - return GetFileManagerUrl("/main.html"); + return GetFileManagerURL().Resolve( + ash::features::IsFileManagerSwaEnabled() ? "" : "/main.html"); } GURL GetFileManagerMainPageUrlWithParams(
diff --git a/chrome/browser/ash/policy/status_collector/app_info_generator_unittest.cc b/chrome/browser/ash/policy/status_collector/app_info_generator_unittest.cc index 0333d647..383221d 100644 --- a/chrome/browser/ash/policy/status_collector/app_info_generator_unittest.cc +++ b/chrome/browser/ash/policy/status_collector/app_info_generator_unittest.cc
@@ -147,7 +147,8 @@ window_ = std::make_unique<aura::Window>(nullptr); window_->Init(ui::LAYER_NOT_DRAWN); instance_ = std::make_unique<apps::Instance>( - app_id, apps::Instance::InstanceKey(window_.get())); + app_id, + apps::Instance::InstanceKey::ForWindowBasedApp(window_.get())); } apps::Instance* instance() const { return instance_.get(); }
diff --git a/chrome/browser/ash/policy/status_collector/device_status_collector_browsertest.cc b/chrome/browser/ash/policy/status_collector/device_status_collector_browsertest.cc index 8ea13c2c..9ca8386e 100644 --- a/chrome/browser/ash/policy/status_collector/device_status_collector_browsertest.cc +++ b/chrome/browser/ash/policy/status_collector/device_status_collector_browsertest.cc
@@ -3631,7 +3631,7 @@ auto env = aura::Env::CreateInstance(); aura::Window* window = aura::test::CreateTestWindowWithId(/*id=*/0, nullptr); auto instance = std::make_unique<apps::Instance>( - "id", apps::Instance::InstanceKey(window)); + "id", apps::Instance::InstanceKey::ForWindowBasedApp(window)); instance->UpdateState(apps::InstanceState::kStarted, start_time); std::vector<std::unique_ptr<apps::Instance>> deltas; deltas.push_back(std::move(instance));
diff --git a/chrome/browser/ash/web_applications/media_app/media_app_integration_browsertest.cc b/chrome/browser/ash/web_applications/media_app/media_app_integration_browsertest.cc index 78ecd8d14..d6a52f4 100644 --- a/chrome/browser/ash/web_applications/media_app/media_app_integration_browsertest.cc +++ b/chrome/browser/ash/web_applications/media_app/media_app_integration_browsertest.cc
@@ -304,7 +304,8 @@ // Tests that clicking on the 'Info' button in the app bar toggles the // information panel. -IN_PROC_BROWSER_TEST_P(MediaAppIntegrationTest, InformationPanel) { +// Disabled. Flakily crashes. See b/197150230. +IN_PROC_BROWSER_TEST_P(MediaAppIntegrationTest, DISABLED_InformationPanel) { WaitForTestSystemAppInstall(); content::WebContents* app = LaunchAppWithFile(web_app::SystemAppType::MEDIA, TestFile(kFileJpeg640x480));
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index dfbca6f..e595c0d 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc
@@ -495,6 +495,7 @@ #include "chrome/browser/extensions/user_script_listener.h" #include "chrome/browser/speech/extension_api/tts_engine_extension_api.h" #include "chrome/browser/ui/web_applications/app_browser_controller.h" +#include "chrome/browser/web_applications/isolation_prefs_utils.h" #include "extensions/browser/api/web_request/web_request_api.h" #include "extensions/browser/extension_navigation_throttle.h" #include "extensions/browser/extension_protocols.h" @@ -985,6 +986,21 @@ process_map->Contains(extension->id(), render_process_id); } +// Returns the partition domain that should be used when loading content for an +// app with isolated storage whose scope includes |site|, or nullptr if no such +// app is installed. +const std::string* GetStoragePartitionDomainForApp( + content::BrowserContext* browser_context, + const GURL& site) { + if (!base::FeatureList::IsEnabled( + blink::features::kWebAppEnableIsolatedStorage)) + return nullptr; + + Profile* profile = Profile::FromBrowserContext(browser_context); + PrefService* prefs = profile->GetPrefs(); + return web_app::GetStorageIsolationKey(prefs, url::Origin::Create(site)); +} + #endif mojo::PendingRemote<prerender::mojom::PrerenderCanceler> GetPrerenderCanceler( @@ -1366,6 +1382,22 @@ content::StoragePartitionConfig::CreateDefault(browser_context); #if BUILDFLAG(ENABLE_EXTENSIONS) + // TODO(crbug.com/1212263): Isolated PWAs are tracked by origin, but this + // function takes a site, so it will only work correctly when the site equals + // the full origin. This should be removed once we plumb the + // StoragePartitionConfig through the navigation system. + const std::string* partition_domain = + GetStoragePartitionDomainForApp(browser_context, site); + if (partition_domain) { + DCHECK(!partition_domain->empty()); + // |in_memory| and |partition_name| are only used in guest schemes, so they + // are cleared here. + return content::StoragePartitionConfig::Create( + browser_context, *partition_domain, + /*partition_name=*/std::string(), + /*in_memory=*/false); + } + // The partition ID for webview guest processes is the string value of its // SiteInstance URL - "chrome-guest://app_id/persist?partition". if (extensions::WebViewGuest::GetGuestPartitionConfigForSite(
diff --git a/chrome/browser/chrome_content_browser_client_unittest.cc b/chrome/browser/chrome_content_browser_client_unittest.cc index 764757d..b09f2ee6 100644 --- a/chrome/browser/chrome_content_browser_client_unittest.cc +++ b/chrome/browser/chrome_content_browser_client_unittest.cc
@@ -74,6 +74,14 @@ #include "components/user_manager/scoped_user_manager.h" #endif // BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(ENABLE_EXTENSIONS) +#include "base/test/scoped_feature_list.h" +#include "chrome/browser/web_applications/isolation_prefs_utils.h" +#include "chrome/browser/web_applications/web_app.h" +#include "content/public/browser/storage_partition_config.h" +#include "third_party/blink/public/common/features.h" +#endif // BUILDFLAG(ENABLE_EXTENSIONS) + using content::BrowsingDataFilterBuilder; using testing::_; class ChromeContentBrowserClientTest : public testing::Test { @@ -710,3 +718,81 @@ EXPECT_TRUE(invoked_url_factory); } #endif + +#if BUILDFLAG(ENABLE_EXTENSIONS) +class ChromeContentBrowserClientStoragePartitionTest + : public ChromeContentBrowserClientTest { + public: + ChromeContentBrowserClientStoragePartitionTest() + : scoped_feature_list_(blink::features::kWebAppEnableIsolatedStorage) {} + + protected: + static constexpr char kAppId[] = "appid"; + static constexpr char kScope[] = "https://example.com"; + + content::StoragePartitionConfig CreateDefaultStoragePartitionConfig() { + return content::StoragePartitionConfig::CreateDefault(&profile_); + } + + base::test::ScopedFeatureList scoped_feature_list_; +}; +// static +constexpr char ChromeContentBrowserClientStoragePartitionTest::kAppId[]; +constexpr char ChromeContentBrowserClientStoragePartitionTest::kScope[]; + +TEST_F(ChromeContentBrowserClientStoragePartitionTest, DefaultPartition) { + TestChromeContentBrowserClient test_content_browser_client; + content::StoragePartitionConfig config = + test_content_browser_client.GetStoragePartitionConfigForSite( + &profile_, GURL("https://google.com")); + + EXPECT_EQ(CreateDefaultStoragePartitionConfig(), config); +} + +TEST_F(ChromeContentBrowserClientStoragePartitionTest, FeatureDisabled) { + scoped_feature_list_.Reset(); + + web_app::WebApp app(kAppId); + app.SetScope(GURL(kScope)); + app.SetStorageIsolated(true); + web_app::RecordOrRemoveAppIsolationState(profile_.GetPrefs(), app); + + TestChromeContentBrowserClient test_content_browser_client; + content::StoragePartitionConfig config = + test_content_browser_client.GetStoragePartitionConfigForSite( + &profile_, GURL(kScope)); + + EXPECT_EQ(CreateDefaultStoragePartitionConfig(), config); +} + +TEST_F(ChromeContentBrowserClientStoragePartitionTest, NonIsolatedPWA) { + web_app::WebApp app(kAppId); + app.SetScope(GURL(kScope)); + app.SetStorageIsolated(false); + web_app::RecordOrRemoveAppIsolationState(profile_.GetPrefs(), app); + + TestChromeContentBrowserClient test_content_browser_client; + content::StoragePartitionConfig config = + test_content_browser_client.GetStoragePartitionConfigForSite( + &profile_, GURL(kScope)); + + EXPECT_EQ(CreateDefaultStoragePartitionConfig(), config); +} + +TEST_F(ChromeContentBrowserClientStoragePartitionTest, FeatureEnabled) { + web_app::WebApp app(kAppId); + app.SetScope(GURL(kScope)); + app.SetStorageIsolated(true); + web_app::RecordOrRemoveAppIsolationState(profile_.GetPrefs(), app); + + TestChromeContentBrowserClient test_content_browser_client; + content::StoragePartitionConfig config = + test_content_browser_client.GetStoragePartitionConfigForSite( + &profile_, GURL(kScope)); + + auto expected_config = content::StoragePartitionConfig::Create( + &profile_, /*partition_domain=*/kAppId, /*partition_name=*/"", + /*in_memory=*/false); + EXPECT_EQ(expected_config, config); +} +#endif // BUILDFLAG(ENABLE_EXTENSIONS)
diff --git a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc index 58a2d90..0d16677f 100644 --- a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc +++ b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
@@ -116,6 +116,7 @@ #include "chrome/browser/web_applications/web_app_registrar.h" #include "chrome/common/extensions/api/autotest_private.h" #include "chrome/common/pref_names.h" +#include "chromeos/components/quick_answers/public/cpp/quick_answers_prefs.h" #include "chromeos/dbus/dbus_thread_manager.h" #include "chromeos/dbus/session_manager/session_manager_client.h" #include "chromeos/printing/printer_configuration.h" @@ -516,6 +517,23 @@ DCHECK(value.is_bool()); } else if (pref_name == plugin_vm::prefs::kPluginVmDataCollectionAllowed) { DCHECK(value.is_bool()); + } else if (pref_name == prefs::kPrintingAPIExtensionsAllowlist) { + DCHECK(value.is_list()); + } else if (pref_name == + chromeos::quick_answers::prefs::kQuickAnswersEnabled) { + DCHECK(value.is_bool()); + } else if (pref_name == + chromeos::quick_answers::prefs::kQuickAnswersDefinitionEnabled) { + DCHECK(value.is_bool()); + } else if (pref_name == + chromeos::quick_answers::prefs::kQuickAnswersTranslationEnabled) { + DCHECK(value.is_bool()); + } else if (pref_name == chromeos::quick_answers::prefs:: + kQuickAnswersUnitConverstionEnabled) { + DCHECK(value.is_bool()); + } else if (pref_name == + chromeos::quick_answers::prefs::kQuickAnswersConsentStatus) { + DCHECK(value.is_int()); } else { return "The pref " + pref_name + " is not whitelisted."; }
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/followmanagement/FollowManagementMediator.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/followmanagement/FollowManagementMediator.java index 27c63a63..6a1a848 100644 --- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/followmanagement/FollowManagementMediator.java +++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/followmanagement/FollowManagementMediator.java
@@ -178,7 +178,8 @@ void fillRecyclerView(List<WebFeedMetadata> followedWebFeeds) { String updatesUnavailable = mContext.getResources().getString(R.string.follow_manage_updates_unavailable); - + String waitingForContent = + mContext.getResources().getString(R.string.follow_manage_waiting_for_content); // Remove the loading UI from the recycler view before showing the results. mModelList.clear();
diff --git a/chrome/browser/global_keyboard_shortcuts_mac.mm b/chrome/browser/global_keyboard_shortcuts_mac.mm index 14dd8b1..6a6629a6 100644 --- a/chrome/browser/global_keyboard_shortcuts_mac.mm +++ b/chrome/browser/global_keyboard_shortcuts_mac.mm
@@ -131,11 +131,9 @@ return {cmd, /*from_main_menu=*/false}; } -} // namespace - -const std::vector<KeyboardShortcutData>& GetShortcutsNotPresentInMainMenu() { +std::vector<KeyboardShortcutData> CreateKeyboardShortcutVector() { // clang-format off - static base::NoDestructor<std::vector<KeyboardShortcutData>> keys({ + std::vector<KeyboardShortcutData> keys({ // cmd shift cntrl option vkeycode command // --- ----- ----- ------ -------- ------- {true, true, false, false, kVK_ANSI_RightBracket, IDC_SELECT_NEXT_TAB}, @@ -171,19 +169,26 @@ {true, false, false, true, kVK_DownArrow, IDC_FOCUS_NEXT_PANE}, {true, false, false, true, kVK_UpArrow, IDC_FOCUS_PREVIOUS_PANE}, + {true, true, false, false, kVK_ANSI_A, IDC_TAB_SEARCH}, }); - - keys->push_back({true, true, false, false, kVK_ANSI_A, IDC_TAB_SEARCH}); + // clang-format on if (base::FeatureList::IsEnabled(features::kUIDebugTools)) { - keys->push_back({false, true, true, true, kVK_ANSI_T, - IDC_DEBUG_TOGGLE_TABLET_MODE}); - keys->push_back({false, true, true, true, kVK_ANSI_V, - IDC_DEBUG_PRINT_VIEW_TREE}); - keys->push_back({false, true, true, true, kVK_ANSI_M, - IDC_DEBUG_PRINT_VIEW_TREE_DETAILS}); + keys.push_back( + {false, true, true, true, kVK_ANSI_T, IDC_DEBUG_TOGGLE_TABLET_MODE}); + keys.push_back( + {false, true, true, true, kVK_ANSI_V, IDC_DEBUG_PRINT_VIEW_TREE}); + keys.push_back({false, true, true, true, kVK_ANSI_M, + IDC_DEBUG_PRINT_VIEW_TREE_DETAILS}); } - // clang-format on + return keys; +} + +} // namespace + +const std::vector<KeyboardShortcutData>& GetShortcutsNotPresentInMainMenu() { + static const base::NoDestructor<std::vector<KeyboardShortcutData>> keys( + CreateKeyboardShortcutVector()); return *keys; }
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialog.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialog.java index 885d83e..57a9e26 100644 --- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialog.java +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialog.java
@@ -7,7 +7,6 @@ import android.app.Activity; import android.content.res.Resources; import android.os.SystemClock; -import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -313,7 +312,7 @@ long displayTime = SystemClock.elapsedRealtime() - mStartTime; if (dismissalCause == DialogDismissalCause.POSITIVE_BUTTON_CLICKED) { String languageCode = mAdapter.getSelectedLanguage().getCode(); - if (TextUtils.equals(languageCode, AppLocaleUtils.getAppLanguagePref())) { + if (AppLocaleUtils.isAppLanguagePref(languageCode)) { recordDismissAction(ActionType.OK_SAME_LANGUAGE, displayTime); } else { recordDismissAction(ActionType.OK_CHANGE_LANGUAGE, displayTime);
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtils.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtils.java index cb6be06..5f90ed6 100644 --- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtils.java +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtils.java
@@ -16,7 +16,6 @@ import java.util.Arrays; import java.util.Comparator; -import java.util.Objects; /** * Provides utility functions to assist with overriding the application language. @@ -38,6 +37,16 @@ } /** + * The |ApplocaleUtils.SYSTEM_LANGUAGE_VALUE| constant acts as a signal that no app override + * language is set and when this is the case the app UI language tracks the device language. + * @param overrideLanguage String to compare to the default system language value. + * @return Whether or not |overrideLanguage| is the default system language. + */ + public static boolean isDefaultSystemLanguage(String overrideLanguage) { + return TextUtils.equals(overrideLanguage, SYSTEM_LANGUAGE_VALUE); + } + + /** * Get the value of application language shared preference or null if there is none. * @return String BCP-47 language tag (e.g. en-US). */ @@ -90,7 +99,7 @@ // If this is not a bundle build or the default system language is being used the language // split should not be installed. Instead indicate that the listener completed successfully // since the language resources will already be present. - if (!BundleUtils.isBundle() || TextUtils.equals(languageName, SYSTEM_LANGUAGE_VALUE)) { + if (!BundleUtils.isBundle() || isDefaultSystemLanguage(languageName)) { wrappedListener.onComplete(true); } else { LanguageSplitInstaller.getInstance().installLanguage(languageName, wrappedListener); @@ -100,10 +109,10 @@ /** * Return true if the locale is an exact match for an available UI language. * Note: "en" and "en-AU" will return false since the available locales are "en-GB" and "en-US". - * @param locale BCP-47 language tag representing a locale (e.g. "en-US") + * @param potentialUiLanguage BCP-47 language tag representing a locale (e.g. "en-US") */ - public static boolean isAvailableExactUiLanguage(String locale) { - return isAvailableUiLanguage(locale, null); + public static boolean isAvailableExactUiLanguage(String potentialUiLanguage) { + return isAvailableUiLanguage(potentialUiLanguage, null); } /** @@ -112,15 +121,19 @@ * reasonable alternatives "en-US" and "pt-BR". Similarly, we have no language pack for "es-MX" * or "es-AR" but will use "es-419" for both. However, for languages with no translations * (e.g. "yo", "cy", ect.) the fallback is "en-US" which is not reasonable. - * @param locale BCP-47 language tag representing a locale (e.g. "en-US") + * @param potentialUiLanguage BCP-47 language tag representing a locale (e.g. "en-US") */ - public static boolean isSupportedUiLanguage(String locale) { - return isAvailableUiLanguage(locale, BASE_LANGUAGE_COMPARATOR); + public static boolean isSupportedUiLanguage(String potentialUiLanguage) { + return isAvailableUiLanguage(potentialUiLanguage, BASE_LANGUAGE_COMPARATOR); } - private static boolean isAvailableUiLanguage(String locale, Comparator<String> comparator) { - if (Objects.equals(locale, AppLocaleUtils.SYSTEM_LANGUAGE_VALUE)) return true; - return Arrays.binarySearch(ResourceBundle.getAvailableLocales(), locale, comparator) >= 0; + private static boolean isAvailableUiLanguage( + String potentialUiLanguage, Comparator<String> comparator) { + // The default system language is always an available UI language. + if (isDefaultSystemLanguage(potentialUiLanguage)) return true; + return Arrays.binarySearch( + ResourceBundle.getAvailableLocales(), potentialUiLanguage, comparator) + >= 0; } /**
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtilsTest.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtilsTest.java index 02bb867e..44e41b8e 100644 --- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtilsTest.java +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtilsTest.java
@@ -71,6 +71,15 @@ @Test @SmallTest + public void testIsDefaultSystemLanguage() { + Assert.assertTrue(AppLocaleUtils.isDefaultSystemLanguage(null)); + Assert.assertTrue( + AppLocaleUtils.isDefaultSystemLanguage(AppLocaleUtils.SYSTEM_LANGUAGE_VALUE)); + Assert.assertFalse(AppLocaleUtils.isDefaultSystemLanguage("en")); + } + + @Test + @SmallTest public void testIsAvailableBaseUiLanguage() { // Base languages that there are no UI translations for. List<String> notAvailableBaseLanguages =
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/GlobalAppLocaleController.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/GlobalAppLocaleController.java index d753b29..e1e318f 100644 --- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/GlobalAppLocaleController.java +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/GlobalAppLocaleController.java
@@ -127,8 +127,11 @@ * language is set report it as the empty string. */ public void recordOverrideLanguageMetrics() { - String overrideLanguage = TextUtils.isEmpty(mOverrideLanguage) ? "" : mOverrideLanguage; - AndroidLanguageMetricsBridge.reportAppOverrideLanguage(overrideLanguage); + // The Default System Language value means no override language is set and the app UI + // language tracks the system UI language. + String histogramLanguage = + AppLocaleUtils.isDefaultSystemLanguage(mOverrideLanguage) ? "" : mOverrideLanguage; + AndroidLanguageMetricsBridge.reportAppOverrideLanguage(histogramLanguage); int status = getOverrideVsSystemLanguageStatus( mOverrideLanguage, LocaleUtils.toLanguageTag(mOriginalSystemLocale)); @@ -137,15 +140,16 @@ } /** - * Get the status of the override language compared to the system language. The value of the - * override language should not be the default system language. + * Get the status of the override language compared to the system language. * @return The {@link OverrideLanguageStatus} that describes the relationship between the system * language and override language. */ @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) static @OverrideLanguageStatus int getOverrideVsSystemLanguageStatus( String overrideLanguage, String systemLanguage) { - if (TextUtils.isEmpty(overrideLanguage)) { + // The Default System Language value means no override language is set and the app UI + // language tracks the system UI language. + if (AppLocaleUtils.isDefaultSystemLanguage(overrideLanguage)) { return OverrideLanguageStatus.NO_OVERRIDE; } if (TextUtils.equals(overrideLanguage, systemLanguage)) {
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/GlobalAppLocaleControllerTest.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/GlobalAppLocaleControllerTest.java index 0839230c..592b723 100644 --- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/GlobalAppLocaleControllerTest.java +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/GlobalAppLocaleControllerTest.java
@@ -59,7 +59,8 @@ GlobalAppLocaleController.getOverrideVsSystemLanguageStatus(null, "en-US")); Assert.assertEquals(GlobalAppLocaleController.OverrideLanguageStatus.NO_OVERRIDE, - GlobalAppLocaleController.getOverrideVsSystemLanguageStatus("", "en-US")); + GlobalAppLocaleController.getOverrideVsSystemLanguageStatus( + AppLocaleUtils.SYSTEM_LANGUAGE_VALUE, "en-US")); Assert.assertEquals(GlobalAppLocaleController.OverrideLanguageStatus.EXACT_MATCH, GlobalAppLocaleController.getOverrideVsSystemLanguageStatus("en-US", "en-US"));
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageItem.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageItem.java index f73b7a90..6650cf0 100644 --- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageItem.java +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageItem.java
@@ -115,7 +115,7 @@ * @return True if this language item represents the system default. */ public boolean isSystemDefault() { - return TextUtils.equals(mCode, AppLocaleUtils.SYSTEM_LANGUAGE_VALUE); + return AppLocaleUtils.isDefaultSystemLanguage(mCode); } /**
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageItemPickerPreference.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageItemPickerPreference.java index 8acca23..ee9be27b 100644 --- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageItemPickerPreference.java +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageItemPickerPreference.java
@@ -46,7 +46,7 @@ */ public void setLanguageItem(String languageCode) { LanguageItem languageItem; - if (TextUtils.equals(languageCode, AppLocaleUtils.SYSTEM_LANGUAGE_VALUE)) { + if (AppLocaleUtils.isDefaultSystemLanguage(languageCode)) { languageItem = LanguageItem.makeSystemDefaultLanguageItem(); } else { languageItem = LanguagesManager.getInstance().getLanguageItem(languageCode);
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java index 34581f9..27a28e388 100644 --- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java
@@ -264,7 +264,7 @@ LanguagesManager.recordAction( LanguagesManager.LanguageSettingsActionType.CHANGE_CHROME_LANGUAGE); mAppLanguageDelegate.startLanguageSplitDownload(code); - if (TextUtils.equals(code, AppLocaleUtils.SYSTEM_LANGUAGE_VALUE)) { + if (AppLocaleUtils.isDefaultSystemLanguage(code)) { // Get the actual default system language to set as target language. code = GlobalAppLocaleController.getInstance() .getOriginalSystemLocale()
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguagesManager.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguagesManager.java index a442c8216c..ee63576 100644 --- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguagesManager.java +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguagesManager.java
@@ -4,8 +4,6 @@ package org.chromium.chrome.browser.language.settings; -import android.text.TextUtils; - import androidx.annotation.IntDef; import androidx.core.util.Predicate; @@ -300,7 +298,7 @@ * @return LanguageItem or null if none found */ public LanguageItem getLanguageItem(String localeCode) { - if (TextUtils.equals(localeCode, AppLocaleUtils.SYSTEM_LANGUAGE_VALUE)) { + if (AppLocaleUtils.isDefaultSystemLanguage(localeCode)) { return LanguageItem.makeSystemDefaultLanguageItem(); } LanguageItem result = mLanguagesMap.get(localeCode);
diff --git a/chrome/browser/optimization_guide/hints_fetcher_browsertest.cc b/chrome/browser/optimization_guide/hints_fetcher_browsertest.cc index a05f368..ca0d357 100644 --- a/chrome/browser/optimization_guide/hints_fetcher_browsertest.cc +++ b/chrome/browser/optimization_guide/hints_fetcher_browsertest.cc
@@ -55,7 +55,6 @@ #include "content/public/test/browser_test_base.h" #include "content/public/test/browser_test_utils.h" #include "content/public/test/network_connection_change_simulator.h" -#include "content/public/test/prerender_test_util.h" #include "net/dns/mock_host_resolver.h" #include "net/test/embedded_test_server/embedded_test_server.h" #include "net/test/embedded_test_server/http_request.h" @@ -1323,7 +1322,6 @@ } class HintsFetcherSearchPageBrowserTest : public HintsFetcherBrowserTest { - public: void SetUpCommandLine(base::CommandLine* cmd) override { cmd->AppendSwitch(optimization_guide::switches:: kDisableFetchingHintsAtNavigationStartForTesting); @@ -1396,90 +1394,3 @@ histogram_tester->ExpectBucketCount( "OptimizationGuide.HintsFetcher.GetHintsRequest.UrlCount", 7, 1); } - -class HintsFetcherSearchPagePrerenderingBrowserTest - : public HintsFetcherSearchPageBrowserTest { - public: - void SetUpCommandLine(base::CommandLine* command_line) override { - HintsFetcherSearchPageBrowserTest::SetUpCommandLine(command_line); - // |prerender_helper_| has a ScopedFeatureList so we needed to delay its - // creation until now because HintsFetcherDisabledBrowserTest also uses a - // ScopedFeatureList and initialization order matters. - prerender_helper_ = std::make_unique<content::test::PrerenderTestHelper>( - base::BindRepeating( - &HintsFetcherSearchPagePrerenderingBrowserTest::web_contents, - base::Unretained(this))); - } - - protected: - content::test::PrerenderTestHelper* prerender_helper() { - return prerender_helper_.get(); - } - - content::WebContents* web_contents() { - return browser()->tab_strip_model()->GetActiveWebContents(); - } - - private: - std::unique_ptr<content::test::PrerenderTestHelper> prerender_helper_; -}; - -// Tests that fetching the hints for a prerendered page is deferred until the -// page gets activated. -IN_PROC_BROWSER_TEST_F(HintsFetcherSearchPagePrerenderingBrowserTest, - HintsFetcherFetchedHintsLoadedAfterActivate) { - const base::HistogramTester* histogram_tester = GetHistogramTester(); - - // Allowlist NoScript for https_url()'s' host. - SetUpComponentUpdateHints(https_url()); - - // Expect that the browser initialization will record at least one sample - // in each of the following histograms as One Platform Hints are enabled. - EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached( - histogram_tester, - "OptimizationGuide.HintsFetcher.GetHintsRequest.HostCount", 1), - 1); - - EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached( - histogram_tester, - "OptimizationGuide.HintsFetcher.GetHintsRequest.Status", 1), - 1); - GURL initial_url = - GetURLWithGoogleHost(origin_server_.get(), "/iframe_blank.html"); - ui_test_utils::NavigateToURL(browser(), initial_url); - - histogram_tester->ExpectUniqueSample( - "OptimizationGuide.HintsFetcher.GetHintsRequest.Status", net::HTTP_OK, 1); - histogram_tester->ExpectUniqueSample( - "OptimizationGuide.HintsFetcher.GetHintsRequest.NetErrorCode", net::OK, - 1); - histogram_tester->ExpectUniqueSample( - "OptimizationGuide.HintsFetcher.GetHintsRequest.HintCount", 1, 1); - - histogram_tester->ExpectUniqueSample( - "OptimizationGuide.HintsFetcher.GetHintsRequest.HintCount", 1, 1); - histogram_tester->ExpectTotalCount( - optimization_guide::kLoadedHintLocalHistogramString, 1); - - // Load a page in the prerender. - GURL prerender_url = search_results_page_url(); - ResetCountHintsRequestsReceived(); - prerender_helper()->AddPrerender(prerender_url); - EXPECT_EQ(0u, count_hints_requests_received()); - histogram_tester->ExpectBucketCount( - "OptimizationGuide.HintsFetcher.GetHintsRequest.HostCount", 0, 0); - histogram_tester->ExpectTotalCount( - optimization_guide::kLoadedHintLocalHistogramString, 1); - - // Activate the page from the prerendering. - prerender_helper()->NavigatePrimaryPage(prerender_url); - WaitUntilHintsFetcherRequestReceived(); - EXPECT_EQ(1u, count_hints_requests_received()); - optimization_guide::RetryForHistogramUntilCountReached( - histogram_tester, optimization_guide::kLoadedHintLocalHistogramString, 2); - - histogram_tester->ExpectBucketCount( - "OptimizationGuide.HintsFetcher.GetHintsRequest.HostCount", 3, 1); - histogram_tester->ExpectBucketCount( - "OptimizationGuide.HintsFetcher.GetHintsRequest.UrlCount", 7, 1); -}
diff --git a/chrome/browser/optimization_guide/optimization_guide_web_contents_observer.cc b/chrome/browser/optimization_guide/optimization_guide_web_contents_observer.cc index b4a107ff..d0a40aa4 100644 --- a/chrome/browser/optimization_guide/optimization_guide_web_contents_observer.cc +++ b/chrome/browser/optimization_guide/optimization_guide_web_contents_observer.cc
@@ -21,6 +21,9 @@ bool IsValidOptimizationGuideNavigation( content::NavigationHandle* navigation_handle) { + // TODO(https://crbug.com/1218946): With MPArch there may be multiple main + // frames. This caller was converted automatically to the primary main frame + // to preserve its semantics. Follow up to confirm correctness. return navigation_handle->IsInPrimaryMainFrame() && navigation_handle->GetURL().SchemeIsHTTPOrHTTPS(); } @@ -65,8 +68,13 @@ content::NavigationHandle* navigation_handle) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - if (navigation_handle->IsInPrimaryMainFrame()) + // Clear any leftover hint requests from a previous navigation. + // TODO(https://crbug.com/1218946): With MPArch there may be multiple main + // frames. This caller was converted automatically to the primary main frame + // to preserve its semantics. Follow up to confirm correctness. + if (navigation_handle->IsInPrimaryMainFrame()) { ClearHintsToFetchBasedOnPredictions(navigation_handle); + } if (!IsValidOptimizationGuideNavigation(navigation_handle)) return; @@ -108,11 +116,13 @@ content::NavigationHandle* navigation_handle) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - // TODO(https://crbug.com/1218946): Move |hints_target_urls_| to a - // PageUserData instead of resetting data in DidFinishNavigation to prevent - // from misattributed to the wrong document/page. - if (navigation_handle->IsInPrimaryMainFrame()) + // Clear any leftover hint requests from a previous navigation. + // TODO(https://crbug.com/1218946): With MPArch there may be multiple main + // frames. This caller was converted automatically to the primary main frame + // to preserve its semantics. Follow up to confirm correctness. + if (navigation_handle->IsInPrimaryMainFrame()) { ClearHintsToFetchBasedOnPredictions(navigation_handle); + } if (!IsValidOptimizationGuideNavigation(navigation_handle)) { return; @@ -135,19 +145,18 @@ void OptimizationGuideWebContentsObserver::DocumentOnLoadCompletedInMainFrame( content::RenderFrameHost* render_frame_host) { - // We fetch only hints for navigations of HTTP or HTTPS schemes that were - // predicted for the current page load. - if (!render_frame_host->GetLastCommittedURL().SchemeIsHTTPOrHTTPS()) + if (!render_frame_host->GetLastCommittedURL().SchemeIsHTTPOrHTTPS()) { return; - + } if (web_contents() != content::WebContents::FromRenderFrameHost(render_frame_host)) { // The current web contents isn't for the main frame that reached onload. return; } - if (!optimization_guide_keyed_service_) + if (!optimization_guide_keyed_service_) { return; + } // Give the renderer some time to send us predictions that might have come // at onload.
diff --git a/chrome/browser/profiles/profile_shortcut_manager_browsertest_win.cc b/chrome/browser/profiles/profile_shortcut_manager_browsertest_win.cc new file mode 100644 index 0000000..a317fe5 --- /dev/null +++ b/chrome/browser/profiles/profile_shortcut_manager_browsertest_win.cc
@@ -0,0 +1,109 @@ +// Copyright 2021 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 <stddef.h> + +#include "base/command_line.h" +#include "base/files/file_path.h" +#include "base/files/file_util.h" +#include "base/strings/utf_string_conversions.h" +#include "base/threading/thread_restrictions.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/profiles/profile_attributes_entry.h" +#include "chrome/browser/profiles/profile_attributes_storage.h" +#include "chrome/browser/profiles/profile_manager.h" +#include "chrome/browser/profiles/profile_shortcut_manager_win.h" +#include "chrome/browser/signin/identity_manager_factory.h" +#include "chrome/browser/ui/browser.h" +#include "chrome/common/chrome_switches.h" +#include "chrome/common/pref_names.h" +#include "chrome/test/base/in_process_browser_test.h" +#include "chrome/test/base/testing_browser_process.h" +#include "components/prefs/pref_service.h" +#include "components/signin/public/identity_manager/identity_test_utils.h" +#include "content/public/test/browser_test.h" +#include "content/public/test/test_utils.h" +#include "ui/gfx/image/image_unittest_util.h" + +class ProfileShortcutManagerBrowserTest : public InProcessBrowserTest { + public: + ProfileShortcutManagerBrowserTest() = default; + ~ProfileShortcutManagerBrowserTest() override = default; + ProfileShortcutManagerBrowserTest(const ProfileShortcutManagerBrowserTest&) = + delete; + ProfileShortcutManagerBrowserTest& operator=( + const ProfileShortcutManagerBrowserTest&) = delete; + + void SetUpCommandLine(base::CommandLine* command_line) override { + command_line->AppendSwitch(switches::kEnableProfileShortcutManager); + } + + ProfileAttributesEntry* GetProfileAttributesEntry() { + if (!browser() || !browser()->profile()) + return nullptr; + return g_browser_process->profile_manager() + ->GetProfileAttributesStorage() + .GetProfileAttributesWithPath(browser()->profile()->GetPath()); + } + + std::string ReadProfileIcon() { + base::ScopedAllowBlockingForTesting allow_blocking; + std::string icon; + EXPECT_TRUE(base::ReadFileToString( + profiles::internal::GetProfileIconPath(browser()->profile()->GetPath()), + &icon)); + EXPECT_FALSE(icon.empty()); + return icon; + } +}; + +IN_PROC_BROWSER_TEST_F(ProfileShortcutManagerBrowserTest, + PRE_UpdateProfileIconOnAvatarLoaded) { + auto* identity_manager = + IdentityManagerFactory::GetForProfile(browser()->profile()); + ASSERT_TRUE(identity_manager); + signin::MakePrimaryAccountAvailable(identity_manager, "foo@gmail.com", + signin::ConsentLevel::kSync); + // Standard size of a Gaia account picture. + const int kGaiaPictureSize = 256; + gfx::Image gaia_image( + gfx::test::CreateImage(kGaiaPictureSize, kGaiaPictureSize)); + ProfileAttributesEntry* entry = GetProfileAttributesEntry(); + ASSERT_NE(nullptr, entry); + entry->SetGAIAPicture("GAIA_IMAGE_URL_WITH_SIZE_1", gaia_image); + + // We need at least two profiles because a profile icon won't be badged if the + // number of profiles is one. + base::FilePath path_profile2 = + g_browser_process->profile_manager()->GenerateNextProfileDirectoryPath(); + g_browser_process->profile_manager()->CreateProfileAsync( + path_profile2, ProfileManager::CreateCallback()); + + content::RunAllTasksUntilIdle(); + + // This is for triggering a profile icon update on the next run. 1 is just a + // small enough number for kCurrentProfileIconVersion. + browser()->profile()->GetPrefs()->SetInteger(prefs::kProfileIconVersion, 1); +} + +IN_PROC_BROWSER_TEST_F(ProfileShortcutManagerBrowserTest, + UpdateProfileIconOnAvatarLoaded) { + std::string badged_icon; + EXPECT_NO_FATAL_FAILURE(badged_icon = ReadProfileIcon()); + + ProfileAttributesEntry* entry = GetProfileAttributesEntry(); + ASSERT_NE(nullptr, entry); + ASSERT_TRUE(entry->IsGAIAPictureLoaded()); + g_browser_process->profile_manager() + ->profile_shortcut_manager() + ->CreateOrUpdateProfileIcon(browser()->profile()->GetPath()); + content::RunAllTasksUntilIdle(); + + std::string badged_icon_with_gaia_picture; + EXPECT_NO_FATAL_FAILURE(badged_icon_with_gaia_picture = ReadProfileIcon()); + + // badged_icon might have been created with a default avatar image and then + // updated with GAIA picture. + EXPECT_EQ(badged_icon, badged_icon_with_gaia_picture); +}
diff --git a/chrome/browser/profiles/profile_shortcut_manager_win.cc b/chrome/browser/profiles/profile_shortcut_manager_win.cc index 3d9fdea9..3ec8880 100644 --- a/chrome/browser/profiles/profile_shortcut_manager_win.cc +++ b/chrome/browser/profiles/profile_shortcut_manager_win.cc
@@ -15,6 +15,7 @@ #include "base/bind.h" #include "base/command_line.h" +#include "base/containers/contains.h" #include "base/files/file_enumerator.h" #include "base/files/file_util.h" #include "base/path_service.h" @@ -886,11 +887,31 @@ CreateOrUpdateProfileIcon(profile_path); } +void ProfileShortcutManagerWin::OnProfileHighResAvatarLoaded( + const base::FilePath& profile_path) { + if (base::Contains(profiles_with_pending_avatar_load_, profile_path)) { + profiles_with_pending_avatar_load_.erase(profile_path); + CreateOrUpdateProfileIcon(profile_path); + } +} + void ProfileShortcutManagerWin::OnProfileAdded(Profile* profile) { if (profile->GetPrefs()->GetInteger(prefs::kProfileIconVersion) < kCurrentProfileIconVersion) { + const base::FilePath profile_path = profile->GetPath(); // Ensure the profile's icon file has been created. - CreateOrUpdateProfileIcon(profile->GetPath()); + CreateOrUpdateProfileIcon(profile_path); + + ProfileAttributesStorage& storage = + profile_manager_->GetProfileAttributesStorage(); + const ProfileAttributesEntry* entry = + storage.GetProfileAttributesWithPath(profile_path); + // If GAIA picture is not yet loaded, the profile icon will be updated when + // it loads. + if (entry && !entry->GetLastDownloadedGAIAPictureUrlWithSize().empty() && + !entry->IsGAIAPictureLoaded()) { + profiles_with_pending_avatar_load_.insert(profile_path); + } } }
diff --git a/chrome/browser/profiles/profile_shortcut_manager_win.h b/chrome/browser/profiles/profile_shortcut_manager_win.h index 42fafcdf..4f954a6 100644 --- a/chrome/browser/profiles/profile_shortcut_manager_win.h +++ b/chrome/browser/profiles/profile_shortcut_manager_win.h
@@ -106,6 +106,8 @@ void OnProfileNameChanged(const base::FilePath& profile_path, const std::u16string& old_profile_name) override; void OnProfileAvatarChanged(const base::FilePath& profile_path) override; + void OnProfileHighResAvatarLoaded( + const base::FilePath& profile_path) override; // ProfileManagerObserver: void OnProfileAdded(Profile* profile) override; @@ -125,6 +127,9 @@ bool incognito); ProfileManager* profile_manager_; + // The profile icon of these profiles needs to be updated when an avatar image + // is loaded. + std::set<base::FilePath> profiles_with_pending_avatar_load_; }; #endif // CHROME_BROWSER_PROFILES_PROFILE_SHORTCUT_MANAGER_WIN_H_
diff --git a/chrome/browser/resources/chromeos/accessibility/common/testing/e2e_test_base.js b/chrome/browser/resources/chromeos/accessibility/common/testing/e2e_test_base.js index 437e1bd..ad568f0 100644 --- a/chrome/browser/resources/chromeos/accessibility/common/testing/e2e_test_base.js +++ b/chrome/browser/resources/chromeos/accessibility/common/testing/e2e_test_base.js
@@ -40,7 +40,7 @@ GEN(` if (fail_on_console_error) { EXPECT_EQ(0u, console_observer.messages().size()) - << "Found console.log or console.warn with message: " + << "Found console.warn or console.error with message: " << console_observer.GetMessageAt(0); } `);
diff --git a/chrome/browser/resources/settings/chromeos/BUILD.gn b/chrome/browser/resources/settings/chromeos/BUILD.gn index 3f511ff6..ae1aa13a 100644 --- a/chrome/browser/resources/settings/chromeos/BUILD.gn +++ b/chrome/browser/resources/settings/chromeos/BUILD.gn
@@ -332,7 +332,6 @@ "chromeos/device_page/drag_behavior.m.js", "chromeos/device_page/keyboard.m.js", "chromeos/device_page/layout_behavior.m.js", - "chromeos/device_page/night_light_slider.m.js", "chromeos/device_page/pointers.m.js", "chromeos/device_page/power.m.js", "chromeos/device_page/storage.m.js", @@ -531,6 +530,7 @@ "chromeos/pref_to_setting_metric_converter.m.js", "chromeos/route_origin_behavior.m.js", "chromeos/search_handler.m.js", + "chromeos/settings_scheduler_slider/settings_scheduler_slider.js", "controls/controlled_button.js", "controls/controlled_radio_button.js", "controls/extension_controlled_indicator.js", @@ -590,6 +590,7 @@ "os_toolbar:closure_compile_module", "parental_controls_page:closure_compile_module", "personalization_page:closure_compile_module", + "settings_scheduler_slider:closure_compile_module", ] } @@ -753,6 +754,7 @@ "os_toolbar:polymer3_elements", "parental_controls_page:polymer3_elements", "personalization_page:polymer3_elements", + "settings_scheduler_slider:web_components", # Local targets ":modulize",
diff --git a/chrome/browser/resources/settings/chromeos/device_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/device_page/BUILD.gn index d817e07e..12b62ea7 100644 --- a/chrome/browser/resources/settings/chromeos/device_page/BUILD.gn +++ b/chrome/browser/resources/settings/chromeos/device_page/BUILD.gn
@@ -20,7 +20,6 @@ ":drag_behavior.m", ":keyboard.m", ":layout_behavior.m", - ":night_light_slider.m", ":pointers.m", ":power.m", ":storage.m", @@ -57,6 +56,7 @@ "..:os_route.m", "../..:router", "../../controls:settings_slider", + "../settings_scheduler_slider:settings_scheduler_slider", "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", "//ui/webui/resources/cr_elements/cr_slider:cr_slider", "//ui/webui/resources/js:cr.m", @@ -123,16 +123,6 @@ ] } -js_library("night_light_slider.m") { - sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/device_page/night_light_slider.m.js" ] - deps = [ - "../../prefs:prefs_behavior", - "//third_party/polymer/v3_0/components-chromium/iron-resizable-behavior:iron-resizable-behavior", - "//third_party/polymer/v3_0/components-chromium/paper-behaviors:paper-ripple-behavior", - ] - extra_deps = [ ":night_light_slider_module" ] -} - js_library("pointers.m") { sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/device_page/pointers.m.js" ] deps = [ @@ -221,7 +211,6 @@ ":display_overscan_dialog_module", ":keyboard_module", ":modulize", - ":night_light_slider_module", ":pointers_module", ":power_module", ":storage_external_entry_module", @@ -276,15 +265,6 @@ namespace_rewrites = os_settings_namespace_rewrites } -polymer_modulizer("night_light_slider") { - js_file = "night_light_slider.js" - html_file = "night_light_slider.html" - html_type = "dom-module" - migrated_imports = os_settings_migrated_imports - auto_imports = os_settings_auto_imports - namespace_rewrites = os_settings_namespace_rewrites -} - polymer_modulizer("pointers") { js_file = "pointers.js" html_file = "pointers.html"
diff --git a/chrome/browser/resources/settings/chromeos/device_page/display.html b/chrome/browser/resources/settings/chromeos/device_page/display.html index 45a14fc..804fdd4 100644 --- a/chrome/browser/resources/settings/chromeos/device_page/display.html +++ b/chrome/browser/resources/settings/chromeos/device_page/display.html
@@ -15,9 +15,9 @@ <link rel="import" href="device_page_browser_proxy.html"> <link rel="import" href="display_layout.html"> <link rel="import" href="display_overscan_dialog.html"> -<link rel="import" href="night_light_slider.html"> <link rel="import" href="../os_route.html"> <link rel="import" href="../deep_linking_behavior.html"> +<link rel="import" href="../settings_scheduler_slider/settings_scheduler_slider.html"> <link rel="import" href="../../controls/settings_dropdown_menu.html"> <link rel="import" href="../../controls/settings_slider.html"> <link rel="import" href="../../prefs/prefs_behavior.html"> @@ -369,8 +369,10 @@ <div class="settings-box indented continuation"> <div class="start text-area layout vertical"> <div class="settings-box continuation self-stretch"> - <night-light-slider id="nightLightSlider" prefs="{{prefs}}"> - </night-light-slider> + <settings-scheduler-slider id="nightLightSlider" prefs="{{prefs}}" + pref-start-time="{{prefs.ash.night_light.custom_start_time}}" + pref-end-time="{{prefs.ash.night_light.custom_end_time}}"> + </settings-scheduler-slider> </div> </div> </div>
diff --git a/chrome/browser/resources/settings/chromeos/os_about_page/detailed_build_info.html b/chrome/browser/resources/settings/chromeos/os_about_page/detailed_build_info.html index 02b64ff1..227788f 100644 --- a/chrome/browser/resources/settings/chromeos/os_about_page/detailed_build_info.html +++ b/chrome/browser/resources/settings/chromeos/os_about_page/detailed_build_info.html
@@ -13,6 +13,10 @@ #managedEolTooltipIcon { margin-inline-end: 54px; } + + #changeChannelCrButton { + margin-inline-start: 16px; + } </style> <div class="settings-box two-line"> <div class="start"> @@ -21,13 +25,6 @@ [[currentlyOnChannelText_]] </div> </div> - <div class="separator"></div> - <cr-button on-click="onChangeChannelTap_" - aria-describedby="currentlyOnChannelText" - disabled="[[!canChangeChannel_]]" - deep-link-focus-id$="[[Setting.kChangeChromeChannel]]"> - $i18n{aboutChangeChannel} - </cr-button> <template is="dom-if" if="[[!canChangeChannel_]]"> <cr-policy-indicator indicator-source-name="[[getChangeChannelIndicatorSourceName_( @@ -36,6 +33,13 @@ canChangeChannel_)]]"> </cr-policy-indicator> </template> + <cr-button id="changeChannelCrButton" + on-click="onChangeChannelTap_" + aria-describedby="currentlyOnChannelText" + disabled="[[!canChangeChannel_]]" + deep-link-focus-id$="[[Setting.kChangeChromeChannel]]"> + $i18n{aboutChangeChannel} + </cr-button> <template is="dom-if" if="[[showChannelSwitcherDialog_]]" restamp> <settings-channel-switcher-dialog on-close="onChannelSwitcherDialogClosed_">
diff --git a/chrome/browser/resources/settings/chromeos/os_settings.gni b/chrome/browser/resources/settings/chromeos/os_settings.gni index 3a1d71a..cd2cc4b3 100644 --- a/chrome/browser/resources/settings/chromeos/os_settings.gni +++ b/chrome/browser/resources/settings/chromeos/os_settings.gni
@@ -387,6 +387,7 @@ "chrome/browser/resources/settings/chromeos/os_settings_search_box/os_search_result_row.html", "chrome/browser/resources/settings/chromeos/personalization_page/change_picture_browser_proxy.html", "chrome/browser/resources/settings/chromeos/personalization_page/wallpaper_browser_proxy.html", + "chrome/browser/resources/settings/chromeos/settings_scheduler_slider/settings_scheduler_slider.html", "chrome/browser/resources/settings/chromeos/keyboard_shortcut_banner/keyboard_shortcut_banner.html", "chrome/browser/resources/settings/controls/controlled_button.html", "chrome/browser/resources/settings/controls/controlled_radio_button.html",
diff --git a/chrome/browser/resources/settings/chromeos/os_settings.js b/chrome/browser/resources/settings/chromeos/os_settings.js index a5b2485..33d974487d 100644 --- a/chrome/browser/resources/settings/chromeos/os_settings.js +++ b/chrome/browser/resources/settings/chromeos/os_settings.js
@@ -12,7 +12,6 @@ import './device_page/display_layout.m.js'; import './device_page/display_overscan_dialog.m.js'; import './device_page/keyboard.m.js'; -import './device_page/night_light_slider.m.js'; import './device_page/pointers.m.js'; import './device_page/power.m.js'; import './device_page/storage.m.js'; @@ -91,6 +90,7 @@ import './os_settings_search_box/os_settings_search_box.js'; import './os_toolbar/os_toolbar.m.js'; import './parental_controls_page/parental_controls_page.m.js'; +import './settings_scheduler_slider/settings_scheduler_slider.js'; export {LifetimeBrowserProxyImpl} from '../lifetime_browser_proxy.js'; export {AccountManagerBrowserProxy, AccountManagerBrowserProxyImpl} from '../people_page/account_manager_browser_proxy.js';
diff --git a/chrome/browser/resources/settings/chromeos/settings_scheduler_slider/BUILD.gn b/chrome/browser/resources/settings/chromeos/settings_scheduler_slider/BUILD.gn new file mode 100644 index 0000000..f64a4cc --- /dev/null +++ b/chrome/browser/resources/settings/chromeos/settings_scheduler_slider/BUILD.gn
@@ -0,0 +1,25 @@ +# Copyright 2021 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//third_party/closure_compiler/compile_js.gni") +import("//tools/polymer/html_to_js.gni") +import("../os_settings.gni") + +js_type_check("closure_compile_module") { + closure_flags = os_settings_closure_flags + is_polymer3 = true + deps = [ ":settings_scheduler_slider" ] +} + +js_library("settings_scheduler_slider") { + deps = [ + "../../prefs:prefs_behavior", + "//third_party/polymer/v3_0/components-chromium/iron-resizable-behavior:iron-resizable-behavior", + "//third_party/polymer/v3_0/components-chromium/paper-behaviors:paper-ripple-behavior", + ] +} + +html_to_js("web_components") { + js_files = [ "settings_scheduler_slider.js" ] +}
diff --git a/chrome/browser/resources/settings/chromeos/settings_scheduler_slider/settings_scheduler_slider.html b/chrome/browser/resources/settings/chromeos/settings_scheduler_slider/settings_scheduler_slider.html new file mode 100644 index 0000000..6214196 --- /dev/null +++ b/chrome/browser/resources/settings/chromeos/settings_scheduler_slider/settings_scheduler_slider.html
@@ -0,0 +1,181 @@ +<style> + :host { + cursor: default; + font-weight: 500; + text-align: center; + user-select: none; + } + + #sliderContainer { + display: inline-block; + position: relative; + user-select: none; + width: 100%; + } + + #sliderBar { + background-color: rgba(var(--google-blue-600-rgb), .24); + background-size: 100%; + display: inline-block; + height: 2px; + position: relative; + width: inherit; + } + + .knob { + height: 32px; + margin-inline-start: -16px; + margin-top: -15px; + position: absolute; + width: 32px; + z-index: 3; + } + + .knob:focus { + outline: none; + } + + .knob-inner { + background: var(--google-blue-600); + border-radius: 6px; + height: 10px; + left: 0; + margin: 11px; + position: absolute; + width: 10px; + z-index: 3; + } + + .knob-inner:focus { + outline: none; + } + + #progressContainer { + height: 100%; + overflow: hidden; + position: absolute; + width: 100%; + } + + .progress { + background: var(--google-blue-600); + height: 100%; + position: absolute; + z-index: 1; + } + + #labelContainer { + height: 1.75em; + } + + .label { + background: var(--google-blue-600); + border-radius: 14px; + color: white; + font-size: 12px; + left: 0; + line-height: 1.5em; + margin-inline-start: -2.5em; + position: absolute; + text-align: center; + transition: margin-top 200ms cubic-bezier(0, 0, 0.2, 1); + vertical-align: middle; + width: 5em; + } + + .end-label-overlap { + margin-top: -2em; + } + + #markersContainer { + display: flex; + height: 100%; + left: 0; + position: absolute; + width: 100%; + } + + .active-marker, + .inactive-marker { + background-color: rgba(255, 255, 255, 0.54); + border-radius: 50%; + display: block; + height: 100%; + margin-inline-start: -1px; + padding: 0; + position: absolute; + width: 2PX; + z-index: 2; + } + + .inactive-marker { + background-color: rgba(26, 115, 232, 0.54); + } + + #legendContainer { + height: 10px; + margin-bottom: 40px; + position: relative; + width: inherit; + } + + #legendContainer > div { + color: rgb(100, 100, 100); + font-size: 12px; + margin-inline-start: -2.5em; + position: absolute; + text-align: center; + top: 5px; + width: 5em; + } + + paper-ripple { + color: var(--google-blue-600); + } +</style> +<div id="sliderContainer"> + <div id="labelContainer"> + <div id="startLabel" class="label" + aria-label="$i18n{startTime}"> + [[getTimeString_(prefStartTime.value, shouldUse24Hours_, prefs.*)]] + </div> + <div id="endLabel" class="label" + aria-label="$i18n{endTime}"> + [[getTimeString_(prefEndTime.value, shouldUse24Hours_, prefs.*)]] + </div> + </div> + <div id="sliderBar"> + <div id="progressContainer"> + <div id="endProgress" class="progress"></div> + <div id="startProgress" class="progress"></div> + </div> + <div id="markersContainer"> + </div> + <div id="startKnob" class="knob" tabindex="1" on-down="startDrag_" + on-up="endDrag_" on-track="continueDrag_"> + <div class="knob-inner" tabindex="-1"></div> + </div> + <div id="endKnob" class="knob" tabindex="2" on-down="startDrag_" + on-up="endDrag_" on-track="continueDrag_"> + <div class="knob-inner" tabindex="-1"></div> + </div> + </div> + <div id="legendContainer"> + <div style="[[getLegendStyle_(0, isRTL_)]]"> + [[getLocaleTimeString_(18, 0, shouldUse24Hours_)]] + </div> + <div style="[[getLegendStyle_(25, isRTL_)]]"> + [[getLocaleTimeString_(0, 0, shouldUse24Hours_)]] + </div> + <div style="[[getLegendStyle_(50, isRTL_)]]"> + [[getLocaleTimeString_(6, 0, shouldUse24Hours_)]] + </div> + <div style="[[getLegendStyle_(75, isRTL_)]]"> + [[getLocaleTimeString_(12, 0, shouldUse24Hours_)]] + </div> + <div style="[[getLegendStyle_(100, isRTL_)]]"> + [[getLocaleTimeString_(18, 0, shouldUse24Hours_)]] + </div> + </div> + <div id="dummyRippleContainer" hidden></div> +</div> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/device_page/night_light_slider.js b/chrome/browser/resources/settings/chromeos/settings_scheduler_slider/settings_scheduler_slider.js similarity index 81% rename from chrome/browser/resources/settings/chromeos/device_page/night_light_slider.js rename to chrome/browser/resources/settings/chromeos/settings_scheduler_slider/settings_scheduler_slider.js index 4fe7538..5e51d52 100644 --- a/chrome/browser/resources/settings/chromeos/device_page/night_light_slider.js +++ b/chrome/browser/resources/settings/chromeos/settings_scheduler_slider/settings_scheduler_slider.js
@@ -2,19 +2,26 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -(function() { - /** - * @fileoverview - * night-light-slider is used to set the custom automatic schedule of the - * Night Light feature, so that users can set their desired start and end - * times. + * @fileoverview settings-scheduler-slider is used to set the custom automatic + * schedule of the Night Light feature, so that users can set their desired + * start and end times. */ +import '../../settings_shared_css.js'; + +import {IronResizableBehavior} from '//resources/polymer/v3_0/iron-resizable-behavior/iron-resizable-behavior.js'; +import {PaperRippleBehavior} from '//resources/polymer/v3_0/paper-behaviors/paper-ripple-behavior.js'; +import {html, Polymer} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js'; + +import {PrefsBehavior} from '../../prefs/prefs_behavior.js'; + const HOURS_PER_DAY = 24; const MIN_KNOBS_DISTANCE_MINUTES = 60; const OFFSET_MINUTES_6PM = 18 * 60; const TOTAL_MINUTES_PER_DAY = 24 * 60; +const DEFAULT_CUSTOM_START_TIME = 18 * 60; +const DEFAULT_CUSTOM_END_TIME = 6 * 60; /** * % is the javascript remainder operator that satisfies the following for the @@ -38,15 +45,51 @@ } Polymer({ - is: 'night-light-slider', + + _template: html`{__html_template__}`, + + is: 'settings-scheduler-slider', behaviors: [ PrefsBehavior, - Polymer.IronResizableBehavior, - Polymer.PaperRippleBehavior, + IronResizableBehavior, + PaperRippleBehavior, ], properties: { + + /** + * The start time pref object being tracked. + * @type {!chrome.settingsPrivate.PrefObject} + */ + prefStartTime: { + type: Object, + notify: true, + value() { + return { + key: 'ash.fake_feature.custom_start_time', + type: chrome.settingsPrivate.PrefType.NUMBER, + value: DEFAULT_CUSTOM_START_TIME, + }; + }, + }, + + /** + * The end time pref object being tracked. + * @type {!chrome.settingsPrivate.PrefObject} + */ + prefEndTime: { + type: Object, + notify: true, + value() { + return { + key: 'ash.fake_feature.custom_start_time', + type: chrome.settingsPrivate.PrefType.NUMBER, + value: DEFAULT_CUSTOM_END_TIME, + }; + }, + }, + /** * Whether the element is ready and fully rendered. * @private @@ -75,11 +118,9 @@ }, observers: [ - 'updateKnobs_(prefs.ash.night_light.custom_start_time.*, ' + - 'prefs.ash.night_light.custom_end_time.*, isRTL_, isReady_)', + 'updateKnobs_(prefs.*, isRTL_, isReady_)', 'hourFormatChanged_(prefs.settings.clock.use_24hour_clock.*)', - 'updateMarkers_(prefs.ash.night_light.custom_start_time.*, ' + - 'prefs.ash.night_light.custom_end_time.*, isRTL_, isReady_)', + 'updateMarkers_(prefs.*, isRTL_, isReady_)', ], /** @@ -92,7 +133,6 @@ /** @override */ attached() { this.isRTL_ = window.getComputedStyle(this).direction === 'rtl'; - this.$.sliderContainer.addEventListener('contextmenu', function(e) { // Prevent the context menu from interfering with dragging the knobs using // touch. @@ -114,9 +154,8 @@ * @private */ prefsAvailable() { - return ['custom_start_time', 'custom_end_time'] - .map(key => `prefs.ash.night_light.${key}.value`) - .every(path => this.get(path) !== undefined); + return [this.prefStartTime, this.prefEndTime].every( + pref => pref !== undefined); }, /** @private */ @@ -125,13 +164,8 @@ return; } - const startHour = - /** @type {number} */ ( - this.getPref('ash.night_light.custom_start_time').value) / - 60.0; - const endHour = /** @type {number} */ ( - this.getPref('ash.night_light.custom_end_time').value) / - 60.0; + const startHour = (/** @type {number} */ (this.prefStartTime.value)) / 60.0; + const endHour = (/** @type {number} */ (this.prefEndTime.value)) / 60.0; const markersContainer = this.$.markersContainer; markersContainer.innerHTML = ''; @@ -156,6 +190,24 @@ }, /** + * Return true if the start knob is focused. + * @return {boolean} + * @private + */ + isStartKnobFocused_() { + return (this.shadowRoot.activeElement === this.$.startKnob); + }, + + /** + * Return true if the end knob is focused. + * @return {boolean} + * @private + */ + isEndKnobFocused_() { + return (this.shadowRoot.activeElement === this.$.endKnob); + }, + + /** * Invoked when the element is resized and the knobs positions need to be * updated. * @private @@ -191,10 +243,8 @@ * @private */ blurAnyFocusedKnob_() { - const activeElement = this.shadowRoot.activeElement; - if (activeElement === this.$.startKnob || - activeElement === this.$.endKnob) { - activeElement.blur(); + if (this.isEitherKnobFocused_()) { + this.shadowRoot.activeElement.blur(); } }, @@ -211,17 +261,17 @@ if (event.target === this.$.startKnob || event.target === this.$.startKnob.firstElementChild) { this.dragObject_ = this.$.startKnob; + this.valueAtDragStart_ = this.prefStartTime.value; } else if ( event.target === this.$.endKnob || event.target === this.$.endKnob.firstElementChild) { this.dragObject_ = this.$.endKnob; + this.valueAtDragStart_ = this.prefEndTime.value; } else { return; } this.handleKnobEvent_(event, this.dragObject_); - - this.valueAtDragStart_ = this.getPrefValue_(this.dragObject_); }, /** @@ -337,7 +387,6 @@ getTimeString_(offsetMinutes, shouldUse24Hours) { const hour = Math.floor(offsetMinutes / 60); const minute = Math.floor(offsetMinutes % 60); - return this.getLocaleTimeString_(hour, minute, shouldUse24Hours); }, @@ -351,12 +400,17 @@ this.$.sliderBar.offsetWidth === 0) { return; } - const startOffsetMinutes = /** @type {number} */ ( - this.getPref('ash.night_light.custom_start_time').value); + + /** @type {number} */ + const startOffsetMinutes = + /** @type {number} */ (this.prefStartTime.value); this.updateKnobLeft_(this.$.startKnob, startOffsetMinutes); - const endOffsetMinutes = /** @type {number} */ ( - this.getPref('ash.night_light.custom_end_time').value); + + /** @type {number} */ + const endOffsetMinutes = + /** @type {number} */ (this.prefEndTime.value); this.updateKnobLeft_(this.$.endKnob, endOffsetMinutes); + this.refresh_(); }, @@ -449,20 +503,16 @@ }, /** - * Given the |prefPath| that corresponds to one knob time, it gets the value - * of the pref that corresponds to the other knob. - * @param {string} prefPath + * Return the value of the pref that corresponds to the other knob than + * `this.shadowRoot.activeElement` * @return {number} * @private */ - getOtherKnobPrefValue_(prefPath) { - if (prefPath === 'ash.night_light.custom_start_time') { - return /** @type {number} */ ( - this.getPref('ash.night_light.custom_end_time').value); + getOtherKnobPrefValue_() { + if (this.isStartKnobFocused_()) { + return /** @type {number} */ (this.prefEndTime.value); } - - return /** @type {number} */ ( - this.getPref('ash.night_light.custom_start_time').value); + return /** @type {number} */ (this.prefStartTime.value); }, /** @@ -494,8 +544,7 @@ * @private */ updatePref_(updatedValue, fromUserGesture) { - const prefPath = assert(this.getFocusedKnobPrefPathIfAny_()); - const otherValue = this.getOtherKnobPrefValue_(prefPath); + const otherValue = this.getOtherKnobPrefValue_(); const totalMinutes = TOTAL_MINUTES_PER_DAY; const minDistance = MIN_KNOBS_DISTANCE_MINUTES; @@ -506,24 +555,13 @@ } // The knobs are allowed to wrap around. - this.setPrefValue(prefPath, modulo(updatedValue, TOTAL_MINUTES_PER_DAY)); - }, - - /** - * @param {Element} knob - * @returns {?string} - * @private - */ - getPrefPath_(knob) { - if (knob === this.$.startKnob) { - return 'ash.night_light.custom_start_time'; + if (this.isStartKnobFocused_()) { + this.set( + 'prefStartTime.value', modulo(updatedValue, TOTAL_MINUTES_PER_DAY)); + } else if (this.isEndKnobFocused_()) { + this.set( + 'prefEndTime.value', modulo(updatedValue, TOTAL_MINUTES_PER_DAY)); } - - if (knob === this.$.endKnob) { - return 'ash.night_light.custom_end_time'; - } - - return null; }, /** @@ -531,19 +569,14 @@ * @returns {?number} * @private */ - getPrefValue_(knob) { - const path = this.getPrefPath_(knob); - return path ? /** @type {number} */ (this.getPref(path).value) : null; - }, - - /** - * Gets the pref path of the currently focused knob. Returns null if no knob - * is currently focused. - * @return {?string} - * @private - */ - getFocusedKnobPrefPathIfAny_() { - return this.getPrefPath_(this.shadowRoot.activeElement); + getPrefValue(knob) { + if (this.isStartKnobFocused_()) { + return /** @type {number} */ (this.prefStartTime.value); + } else if (this.isEndKnobFocused_()) { + return /** @type {number} */ (this.prefEndTime.value); + } else { + return null; + } }, /** @@ -551,9 +584,7 @@ * @private */ isEitherKnobFocused_() { - const activeElement = this.shadowRoot.activeElement; - return activeElement === this.$.startKnob || - activeElement === this.$.endKnob; + return this.isStartKnobFocused_() || this.isEndKnobFocused_(); }, /** @@ -572,7 +603,7 @@ // to be created under a hidden element. this._rippleContainer = this.$.dummyRippleContainer; } - const ripple = Polymer.PaperRippleBehavior._createRipple(); + const ripple = PaperRippleBehavior._createRipple(); ripple.id = 'ink'; ripple.setAttribute('recenters', ''); ripple.classList.add('circle', 'toggle-ink'); @@ -642,13 +673,13 @@ onKeyDown_(event) { const activeElement = this.shadowRoot.activeElement; if (event.key === 'Tab') { - if (event.shiftKey && this.$.endKnob === activeElement) { + if (event.shiftKey && this.isEndKnobFocused_()) { event.preventDefault(); this.handleKnobEvent_(event, this.$.startKnob); return; } - if (!event.shiftKey && this.$.startKnob === activeElement) { + if (!event.shiftKey && this.isStartKnobFocused_()) { event.preventDefault(); this.handleKnobEvent_(event, this.$.endKnob); } @@ -672,8 +703,8 @@ this.handleKnobEvent_(event); event.preventDefault(); - const value = this.getPrefValue_(activeElement); - if (value == null) { + const value = this.getPrefValue(activeElement); + if (value === null) { return; } @@ -682,4 +713,3 @@ } }, }); -})();
diff --git a/chrome/browser/sessions/session_service.cc b/chrome/browser/sessions/session_service.cc index b2aae55..ae53445 100644 --- a/chrome/browser/sessions/session_service.cc +++ b/chrome/browser/sessions/session_service.cc
@@ -101,9 +101,11 @@ // startup setting. if (full_restore::features::IsFullRestoreEnabled()) { // If there are other browser windows, or during the restoring process, or - // restore from crash, sessions should not be restored. + // restore from crash, or should not restore for `browser`, sessions should + // not be restored. if (SessionRestore::IsRestoring(profile()) || - has_open_trackable_browsers_ || HasPendingUncleanExit(profile())) { + has_open_trackable_browsers_ || HasPendingUncleanExit(profile()) || + (browser && !browser->should_trigger_session_restore())) { return false; }
diff --git a/chrome/browser/share/share_ranking.cc b/chrome/browser/share/share_ranking.cc index 087af67f..9714db1 100644 --- a/chrome/browser/share/share_ranking.cc +++ b/chrome/browser/share/share_ranking.cc
@@ -226,6 +226,34 @@ return result; } +void InsertIntoRankingOrderedByUsage( + std::vector<std::string>* ranking, + const std::string& item, + unsigned int fold, + const std::map<std::string, int>& history) { + DCHECK_GT(history.count(item), 0U); + for (unsigned int i = fold; i < ranking->size(); ++i) { + const std::string this_item = ranking->at(i); + if (!history.count(this_item) || history.at(item) > history.at(this_item)) { + ranking->insert(ranking->begin() + i, item); + return; + } + } + ranking->push_back(item); +} + +std::vector<std::string> AddMissingItemsFromHistory( + const std::vector<std::string> existing, + const std::map<std::string, int> history, + unsigned int fold) { + std::vector<std::string> updated = existing; + for (const auto& item : history) { + if (!RankingContains(updated, item.first)) + InsertIntoRankingOrderedByUsage(&updated, item.first, fold, history); + } + return updated; +} + bool ShouldFixMore() { // TODO(ellyjones): Add a field trial and wire it up here. return true; @@ -346,8 +374,13 @@ // overwritten with More. int logical_fold = fix_more ? fold - 1 : fold; - std::vector<std::string> new_ranking = MaybeUpdateRankingFromHistory( - old_ranking, all_share_history, recent_share_history, logical_fold); + Ranking augmented_old_ranking = AddMissingItemsFromHistory( + AddMissingItemsFromHistory(old_ranking, all_share_history, logical_fold), + recent_share_history, logical_fold); + + std::vector<std::string> new_ranking = + MaybeUpdateRankingFromHistory(augmented_old_ranking, all_share_history, + recent_share_history, logical_fold); Ranking computed_display_ranking = ReplaceUnavailableEntries(new_ranking, available_on_system);
diff --git a/chrome/browser/share/share_ranking_unittest.cc b/chrome/browser/share/share_ranking_unittest.cc index 47d416f2..3f016762 100644 --- a/chrome/browser/share/share_ranking_unittest.cc +++ b/chrome/browser/share/share_ranking_unittest.cc
@@ -187,6 +187,31 @@ EXPECT_EQ(persisted, expected_persisted); } +TEST_F(ShareRankingStaticTest, UsedAppNotPresentInRanking) { + std::map<std::string, int> history = { + {"bar", 2}, + {"foo", 3}, + {"baz", 10}, + }; + + ShareRanking::Ranking displayed, persisted; + ShareRanking::Ranking current{"foo", "bar", "quxx"}; + + ShareRanking::ComputeRanking(history, history, current, {"foo", "bar", "baz"}, + 3, true, &displayed, &persisted); + + // Since the fold is 3 and fix_more is true, only 2 actual items show, with + // the visible one with the lowest usage (bar) replaced with baz. + std::vector<std::string> expected_displayed{"foo", "baz", + ShareRanking::kMoreTarget}; + std::vector<std::string> expected_persisted{"foo", "baz", "bar", "quxx"}; + + ASSERT_EQ(displayed.size(), expected_displayed.size()); + ASSERT_EQ(persisted.size(), expected_persisted.size()); + EXPECT_EQ(displayed, expected_displayed); + EXPECT_EQ(persisted, expected_persisted); +} + // Regression test for https://crbug.com/1233232 TEST_F(ShareRankingTest, OldRankingContainsItemsWithNoRecentHistory) { std::map<std::string, int> history = {
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn index 0347dba4..e5fc01b 100644 --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn
@@ -1879,8 +1879,8 @@ "app_list/search/omnibox_result.h", "app_list/search/os_settings_provider.cc", "app_list/search/os_settings_provider.h", - "app_list/search/ranking/category_ranker.cc", - "app_list/search/ranking/category_ranker.h", + "app_list/search/ranking/category_usage_ranker.cc", + "app_list/search/ranking/category_usage_ranker.h", "app_list/search/ranking/constants.h", "app_list/search/ranking/filtering_ranker.cc", "app_list/search/ranking/filtering_ranker.h", @@ -1893,6 +1893,8 @@ "app_list/search/ranking/score_normalizing_ranker.h", "app_list/search/ranking/top_match_ranker.cc", "app_list/search/ranking/top_match_ranker.h", + "app_list/search/ranking/types.cc", + "app_list/search/ranking/types.h", "app_list/search/ranking/util.cc", "app_list/search/ranking/util.h", "app_list/search/score_normalizer/balanced_reservoir.cc",
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd index 9dabb866..7e60b7ff 100644 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -2865,6 +2865,9 @@ <message name="IDS_FOLLOW_MANAGE_UPDATES_UNAVAILABLE" desc="Label this web feed source as unavailable so the user will not expect updates from it."> Updates Unavailable </message> + <message name="IDS_FOLLOW_MANAGE_WAITING_FOR_CONTENT" desc="Label this web feed source as waiting for content so the user will know to check back later."> + Waiting for content + </message> <message name="IDS_NTP_TURN_OFF_FEED" desc="Content description to turn off the feed from the feed header overflow menu."> Turn off </message> @@ -4944,12 +4947,16 @@ </message> <!-- WebID Account Selection strings --> - <message name="IDS_ACCOUNT_SELECTION_SHEET_TITLE_SINGLE" desc="Header for Account Selection sheet where users only have a single account to select." translateable="false"> - Create a <ph name="SITE_NAME">%1$s<ex>airbnb.com</ex></ph> account + <message name="IDS_ACCOUNT_SELECTION_SHEET_TITLE_SINGLE" desc="Header for Account Selection sheet where the user only has a single account to sign up with." translateable="false"> + Sign up for <ph name="SITE_NAME">%1$s<ex>rp.example</ex></ph> </message> - <message name="IDS_ACCOUNT_SELECTION_SHEET_TITLE" desc="Header for Account Selection sheet where users can pick an account to select." translateable="false"> - Create a <ph name="SITE_NAME">%1$s<ex>airbnb.com</ex></ph> account… + <message name="IDS_ACCOUNT_SELECTION_SHEET_TITLE" desc="Header for Account Selection sheet where the user can pick an account to sign up with." translateable="false"> + Choose an account to sign up for <ph name="SITE_NAME">%1$s<ex>rp.example</ex></ph> </message> + <message name="IDS_ACCOUNT_SELECTION_DATA_SHARING_CONSENT" desc="The consent text shown to the user before sign up." translateable="false"> + To sign up, <ph name="PROVIDER_NAME">%1$s<ex>provider.example</ex></ph> will share your name, email, address, and profile picture with the site. + </message> + <message name="IDS_ACCOUNT_SELECTION_CONTINUE" desc="Title of the button that continues filling with the only available set of credentials." translateable="false"> Continue as <ph name="NAME">%1$s<ex>Albus (or Albus Dumbledore)</ex></ph> </message> @@ -4965,6 +4972,9 @@ <message name="IDS_ACCOUNT_SELECTION_SHEET_CLOSED" desc="Accessibility string read when the Account Selection bottom sheet showing a list of the user's accounts is closed." translateable="false"> List of accounts to be selected is closed. </message> + <message name="IDS_AUTO_SIGN_IN_SHEET_TITLE" desc="Header for auto sign in sheet." translateable="false"> + Signing into <ph name="SITE_NAME">%1$s<ex>rp.example</ex></ph> + </message> <!-- Content Creation strings --> <message name="IDS_CONTENT_CREATION_NOTE_TITLE_FOR_SHARE" desc="The title of the share sheet when sharing a stylized note. The date will be formatted according to the current locale.">
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_FOLLOW_MANAGE_WAITING_FOR_CONTENT.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_FOLLOW_MANAGE_WAITING_FOR_CONTENT.png.sha1 new file mode 100644 index 0000000..69355bfe --- /dev/null +++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_FOLLOW_MANAGE_WAITING_FOR_CONTENT.png.sha1
@@ -0,0 +1 @@ +f4fffbf10d44590775495939308b3ee00e8dfe45 \ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb index 7273b863..e549afb 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb
@@ -1226,6 +1226,7 @@ <translation id="8497726226069778601">ইয়াত চাবলৈ এতিয়ালৈকে একো নাই…</translation> <translation id="8503559462189395349">Chromeৰ পাছৱৰ্ড</translation> <translation id="8503813439785031346">ব্যৱহাৰকাৰীৰ নাম</translation> +<translation id="8505766168025405649">ডাউনল’ডৰ স্থিতি জানিবলৈ জাননী চাওক</translation> <translation id="8514477925623180633">Chromeত ছেভ কৰি ৰখা পাছৱৰ্ড ৰপ্তানি কৰক</translation> <translation id="8516012719330875537">প্ৰতিচ্ছবিৰ সম্পাদক</translation> <translation id="8523928698583292556">ষ্ট’ৰ কৰি ৰখা পাছৱৰ্ড মচক</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb index 75c2889a..bf8577e5 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
@@ -496,6 +496,7 @@ <translation id="4108998448622696017">જોખમકારક ઇવેન્ટ થતી હોય ત્યારે તે શોધીને તેના વિશે તમને ચેતવણી આપે છે.</translation> <translation id="4116038641877404294">ઇન્ટરનેટ ન હોય ત્યારે પણ ઉપયોગમાં લેવા માટે પેજ ડાઉનલોડ કરો</translation> <translation id="4135200667068010335">કોઈ ટૅબ સાથે શેર કરવાના ડિવાઇસની સૂચિ બંધ છે.</translation> +<translation id="4137746084635924146">ડિવાઇસની હાલની ભાષા</translation> <translation id="4141536112466364990">Chrome વિશે જાણો</translation> <translation id="4149994727733219643">વેબપેજ માટે સરળ દૃશ્ય</translation> <translation id="4165986682804962316">સાઇટ સેટિંગ</translation> @@ -1228,6 +1229,7 @@ <translation id="8497726226069778601">હજી સુધી... અહીં જોવા માટે કંઈ નથી</translation> <translation id="8503559462189395349">Chrome પાસવર્ડ</translation> <translation id="8503813439785031346">વપરાશકર્તાનામ</translation> +<translation id="8505766168025405649">ડાઉનલોડ સ્ટેટસ માટે નોટિફિકેશન જુઓ</translation> <translation id="8514477925623180633">Chromeમાં સંગ્રહિત કરેલા પાસવર્ડની નિકાસ કરો</translation> <translation id="8516012719330875537">ઇમેજ એડિટર</translation> <translation id="8523928698583292556">સંગ્રહિત કરેલ પાસવર્ડ ડિલીટ કરો</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb index 0c0604f..dd78581 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
@@ -496,6 +496,7 @@ <translation id="4108998448622696017">धोकादायक घटना घडल्यावर ती ओळखून तुम्हाला चेतावणी देतो.</translation> <translation id="4116038641877404294">पेज ऑफलाइन वापरण्यासाठी ती डाउनलोड करा</translation> <translation id="4135200667068010335">बंद केलेल्या टॅबसह शेअर करण्यासाठी डिव्हाइसची सूची.</translation> +<translation id="4137746084635924146">डिव्हाइसची सध्याची भाषा</translation> <translation id="4141536112466364990">Chrome बद्दल जाणून घ्या</translation> <translation id="4149994727733219643">वेब पेजसाठी सोपा केलेला व्ह्यू</translation> <translation id="4165986682804962316">साइट सेटिंग्ज</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb index da86c7d..bd41f84 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb
@@ -1228,6 +1228,7 @@ <translation id="8497726226069778601">अहिलेसम्म... यहाँ हेर्न केही पनि छैन</translation> <translation id="8503559462189395349">Chrome का पासवर्डहरू</translation> <translation id="8503813439785031346">एक-पटके टेक्स्ट म्यासेज</translation> +<translation id="8505766168025405649">डाउनलोड गर्ने कार्यको स्थितिका बारेमा जान्न सूचना हेर्नुहोस्</translation> <translation id="8514477925623180633">Chrome मार्फत भण्डारण गरिएका पासवर्डहरू निर्यात गर्नुहोस्</translation> <translation id="8516012719330875537">छवि सम्पादक</translation> <translation id="8523928698583292556">भण्डारण गरिएको पासवर्ड मेट्नुहोस्</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb index 5c5e5ba2..866a3b75 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb
@@ -496,6 +496,7 @@ <translation id="4108998448622696017">ਖਤਰਨਾਕ ਘਟਨਾਵਾਂ ਦਾ ਪਤਾ ਲਗਾਕੇ ਉਹਨਾਂ ਦੇ ਵਾਪਰਨ ਵੇਲੇ ਤੁਹਾਨੂੰ ਚਿਤਾਵਨੀ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ।</translation> <translation id="4116038641877404294">ਪੰਨਿਆਂ ਨੂੰ ਆਫ਼ਲਾਈਨ ਵਰਤਣ ਲਈ ਉਹਨਾਂ ਨੂੰ ਡਾਊਨਲੋਡ ਕਰੋ</translation> <translation id="4135200667068010335">ਟੈਬ ਨੂੰ ਸਾਂਝਾ ਕਰਨ ਲਈ ਡੀਵਾਈਸਾਂ ਦੀ ਸੂਚੀ ਬੰਦ ਹੈ।</translation> +<translation id="4137746084635924146">ਡੀਵਾਈਸ ਦੀ ਮੌਜੂਦਾ ਭਾਸ਼ਾ</translation> <translation id="4141536112466364990">Chrome ਬਾਰੇ ਜਾਣੋ</translation> <translation id="4149994727733219643">ਵੈੱਬ ਪੰਨਿਆਂ ਲਈ ਸਰਲੀਕਿਰਤ ਦ੍ਰਿਸ਼</translation> <translation id="4165986682804962316">ਸਾਈਟ ਸੈਟਿੰਗਾਂ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb index 5ef088e5..4a7b2e3 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb
@@ -496,6 +496,7 @@ <translation id="4108998448622696017">Zbulon dhe të paralajmëron rreth ngjarjeve të rrezikshme kur ato ndodhin.</translation> <translation id="4116038641877404294">Shkarko faqet për t'i përdorur ato jashtë linje</translation> <translation id="4135200667068010335">Lista e pajisjeve për të ndarë një skedë është e mbyllur.</translation> +<translation id="4137746084635924146">Gjuha aktuale e pajisjes</translation> <translation id="4141536112466364990">Si të mësosh të përdorësh Chrome</translation> <translation id="4149994727733219643">Pamje e thjeshtuar për faqet e uebit</translation> <translation id="4165986682804962316">Cilësimet e sajtit</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb index 0f96f8c..8362f003 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
@@ -496,6 +496,7 @@ <translation id="4108998448622696017">ప్రమాదకరమైన సంఘటనలు జరిగినప్పుడు గుర్తించి, మిమ్మల్ని హెచ్చరిస్తుంది.</translation> <translation id="4116038641877404294">పేజీలను ఆఫ్లైన్లో ఉపయోగించడం కోసం వాటిని డౌన్లోడ్ చేసుకోండి</translation> <translation id="4135200667068010335">ట్యాబ్ను షేర్ చేయాల్సిన పరికరాల లిస్ట్ మూసివేయబడింది.</translation> +<translation id="4137746084635924146">ప్రస్తుత పరికర భాష</translation> <translation id="4141536112466364990">Chrome గురించి తెలుసుకోండి</translation> <translation id="4149994727733219643">వెబ్ పేజీల కోసం సరళమైన వీక్షణ</translation> <translation id="4165986682804962316">సైట్ సెట్టింగ్లు</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb index f4ca952d..e94adcd 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
@@ -496,6 +496,7 @@ <translation id="4108998448622696017">جب خطرناک ایونٹس ہوتے ہیں تو ان کا پتہ لگا کر آپ کو ان کے بارے میں متنبہ کرتا ہے۔</translation> <translation id="4116038641877404294">آف لائن صفحات استعمال کرنے کے لیے انہیں ڈاؤن لوڈ کریں</translation> <translation id="4135200667068010335">ان آلات کی فہرست بند ہے جن کے ساتھ ٹیب کا اشتراک کرنا ہے۔</translation> +<translation id="4137746084635924146">آلہ کی موجودہ زبان</translation> <translation id="4141536112466364990">Chrome سیکھیں</translation> <translation id="4149994727733219643">ویب صفحات کیلئے سادہ منظر</translation> <translation id="4165986682804962316">سائٹ کی ترتیبات</translation>
diff --git a/chrome/browser/ui/android/webid/account_selection_view_android.cc b/chrome/browser/ui/android/webid/account_selection_view_android.cc index 749d530..8c7e3b7 100644 --- a/chrome/browser/ui/android/webid/account_selection_view_android.cc +++ b/chrome/browser/ui/android/webid/account_selection_view_android.cc
@@ -38,7 +38,8 @@ ConvertUTF8ToJavaString(env, account.name), ConvertUTF8ToJavaString(env, account.given_name), url::GURLAndroid::FromNativeGURL(env, account.picture), - url::GURLAndroid::FromNativeGURL(env, idp_url)); + url::GURLAndroid::FromNativeGURL(env, idp_url), + account.login_state == Account::LoginState::kSignIn); } ScopedJavaLocalRef<jobjectArray> ConvertToJavaAccounts( @@ -63,7 +64,8 @@ Account ConvertFieldsToAccount( JNIEnv* env, const JavaParamRef<jobjectArray>& string_fields_obj, - const JavaParamRef<jobject>& picture_url_obj) { + const JavaParamRef<jobject>& picture_url_obj, + bool is_sign_in) { std::vector<std::string> string_fields; AppendJavaStringArrayToStringVector(env, string_fields_obj, &string_fields); auto sub = string_fields[0]; @@ -71,8 +73,11 @@ auto name = string_fields[2]; auto given_name = string_fields[3]; + Account::LoginState login_state = + is_sign_in ? Account::LoginState::kSignIn : Account::LoginState::kSignUp; + GURL picture_url = *url::GURLAndroid::ToNativeGURL(env, picture_url_obj); - return Account(sub, email, name, given_name, picture_url); + return Account(sub, email, name, given_name, picture_url, login_state); } } // namespace @@ -91,7 +96,8 @@ void AccountSelectionViewAndroid::Show(const GURL& rp_url, const GURL& idp_url, - base::span<const Account> accounts) { + base::span<const Account> accounts, + bool is_auto_sign_in) { if (!RecreateJavaObject()) { // It's possible that the constructor cannot access the bottom sheet clank // component. That case may be temporary but we can't let users in a @@ -107,21 +113,27 @@ ConvertToJavaAccounts(env, accounts, idp_url); Java_AccountSelectionBridge_showAccounts( env, java_object_internal_, ConvertUTF8ToJavaString(env, rp_url.spec()), - accounts_obj); + accounts_obj, is_auto_sign_in); } void AccountSelectionViewAndroid::OnAccountSelected( JNIEnv* env, const JavaParamRef<jobjectArray>& account_string_fields, - const JavaParamRef<jobject>& account_picture_url) { - delegate_->OnAccountSelected( - ConvertFieldsToAccount(env, account_string_fields, account_picture_url)); + const JavaParamRef<jobject>& account_picture_url, + bool is_sign_in) { + delegate_->OnAccountSelected(ConvertFieldsToAccount( + env, account_string_fields, account_picture_url, is_sign_in)); } void AccountSelectionViewAndroid::OnDismiss(JNIEnv* env) { delegate_->OnDismiss(); } +void AccountSelectionViewAndroid::OnAutoSignInCancelled(JNIEnv* env) { + // TODO(yigu): Alternatively we could fall back to manual sign in flow. + delegate_->OnDismiss(); +} + bool AccountSelectionViewAndroid::RecreateJavaObject() { if (delegate_->GetNativeView() == nullptr || delegate_->GetNativeView()->GetWindowAndroid() == nullptr) {
diff --git a/chrome/browser/ui/android/webid/account_selection_view_android.h b/chrome/browser/ui/android/webid/account_selection_view_android.h index e68cb24..cbf2e2e 100644 --- a/chrome/browser/ui/android/webid/account_selection_view_android.h +++ b/chrome/browser/ui/android/webid/account_selection_view_android.h
@@ -20,13 +20,16 @@ // AccountSelectionView: void Show(const GURL& rp_url, const GURL& idp_url, - base::span<const Account> accounts) override; + base::span<const Account> accounts, + bool is_auto_sign_in) override; void OnAccountSelected( JNIEnv* env, const base::android::JavaParamRef<jobjectArray>& account_string_fields, - const base::android::JavaParamRef<jobject>& account_picture_url); + const base::android::JavaParamRef<jobject>& account_picture_url, + bool is_sign_in); void OnDismiss(JNIEnv* env); + void OnAutoSignInCancelled(JNIEnv* env); private: // Returns either true if the java counterpart of this bridge is initialized
diff --git a/chrome/browser/ui/android/webid/internal/BUILD.gn b/chrome/browser/ui/android/webid/internal/BUILD.gn index c6392c45..6ba5efdb 100644 --- a/chrome/browser/ui/android/webid/internal/BUILD.gn +++ b/chrome/browser/ui/android/webid/internal/BUILD.gn
@@ -53,8 +53,10 @@ sources = [ "java/res/layout/account_selection_account_item.xml", "java/res/layout/account_selection_continue_button.xml", + "java/res/layout/account_selection_data_sharing_consent_item.xml", "java/res/layout/account_selection_header_item.xml", "java/res/layout/account_selection_sheet.xml", + "java/res/layout/auto_sign_in_cancel_button.xml", "java/res/values/dimens.xml", ] }
diff --git a/chrome/browser/ui/android/webid/internal/java/res/layout/account_selection_data_sharing_consent_item.xml b/chrome/browser/ui/android/webid/internal/java/res/layout/account_selection_data_sharing_consent_item.xml new file mode 100644 index 0000000..a7846f51 --- /dev/null +++ b/chrome/browser/ui/android/webid/internal/java/res/layout/account_selection_data_sharing_consent_item.xml
@@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright 2021 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. --> + +<org.chromium.ui.widget.TextViewWithLeading + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:id="@+id/user_data_sharing_consent" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal" + android:gravity="center" + android:textAppearance="@style/TextAppearance.TextMedium.Secondary" + android:minHeight="@dimen/account_selection_sheet_title_height" + android:layout_marginBottom="@dimen/account_selection_sheet_title_margin_bottom"/>
diff --git a/chrome/browser/ui/android/webid/internal/java/res/layout/auto_sign_in_cancel_button.xml b/chrome/browser/ui/android/webid/internal/java/res/layout/auto_sign_in_cancel_button.xml new file mode 100644 index 0000000..90edd9c --- /dev/null +++ b/chrome/browser/ui/android/webid/internal/java/res/layout/auto_sign_in_cancel_button.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright 2021 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. --> + +<org.chromium.ui.widget.ButtonCompat + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/auto_sign_in_cancel_btn" + android:descendantFocusability="blocksDescendants" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/account_selection_sheet_button_margin" + android:layout_marginBottom="@dimen/account_selection_sheet_button_margin" + android:text="@string/cancel" + android:ellipsize="end" + android:singleLine="true" + style="@style/FilledButton.Flat"/>
diff --git a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionBridge.java b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionBridge.java index 46e5980..a4aa9e1 100644 --- a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionBridge.java +++ b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionBridge.java
@@ -50,11 +50,12 @@ * * @param url is the URL for RP that has initiated the WebID flow. * @param accounts is the list of accounts to be shown. + * @param isAutoSignIn represents whether this is an auto sign in flow. */ @CalledByNative - private void showAccounts(String url, Account[] accounts) { + private void showAccounts(String url, Account[] accounts, boolean isAutoSignIn) { assert accounts != null && accounts.length > 0; - mAccountSelectionComponent.showAccounts(url, Arrays.asList(accounts)); + mAccountSelectionComponent.showAccounts(url, Arrays.asList(accounts), isAutoSignIn); } @Override @@ -70,15 +71,26 @@ // This call passes the account fields directly as String and GURL parameters as an // optimization to avoid needing multiple JNI getters on the Account class on for each // field. - AccountSelectionBridgeJni.get().onAccountSelected( - mNativeView, account.getStringFields(), account.getPictureUrl()); + AccountSelectionBridgeJni.get().onAccountSelected(mNativeView, + account.getStringFields(), account.getPictureUrl(), account.isSignIn()); + } + } + + @Override + public void onAutoSignInCancelled() { + if (mNativeView != 0) { + // This call passes the account fields directly as String and GURL parameters as an + // optimization to avoid needing multiple JNI getters on the Account class on for each + // field. + AccountSelectionBridgeJni.get().onAutoSignInCancelled(mNativeView); } } @NativeMethods interface Natives { void onAccountSelected(long nativeAccountSelectionViewAndroid, String[] accountFields, - GURL accountPictureUrl); + GURL accountPictureUrl, boolean isSignedIn); void onDismiss(long nativeAccountSelectionViewAndroid); + void onAutoSignInCancelled(long nativeAccountSelectionViewAndroid); } }
diff --git a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionControllerTest.java b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionControllerTest.java index 35920aca..d435395 100644 --- a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionControllerTest.java +++ b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionControllerTest.java
@@ -5,6 +5,7 @@ package org.chromium.chrome.browser.ui.android.webid; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.mockito.ArgumentMatchers.any; @@ -13,14 +14,15 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; import static org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.AccountProperties.ACCOUNT; import static org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.AccountProperties.AVATAR; import static org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.AccountProperties.FAVICON_OR_FALLBACK; -import static org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.AccountProperties.ON_CLICK_LISTENER; +import static org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.DataSharingConsentProperties.PROVIDER_URL; import static org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.HeaderProperties.FORMATTED_URL; -import static org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.HeaderProperties.SINGLE_ACCOUNT; +import static org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.HeaderProperties.TYPE; import android.graphics.Bitmap; @@ -35,12 +37,16 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; +import org.robolectric.shadows.ShadowLooper; import org.chromium.base.Callback; import org.chromium.base.test.BaseRobolectricTestRunner; import org.chromium.base.test.util.JniMocker; +import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.AccountProperties; import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.AccountProperties.Avatar; import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.AccountProperties.FaviconOrFallback; +import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.AutoSignInCancelButtonProperties; +import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.HeaderProperties.HeaderType; import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.ItemType; import org.chromium.chrome.browser.ui.android.webid.data.Account; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; @@ -71,12 +77,15 @@ private static final GURL TEST_PROFILE_PIC = JUnitTestGURLs.getGURL(JUnitTestGURLs.URL_1_WITH_PATH); - private static final Account ANA = - new Account("Ana", "ana@one.test", "Ana Doe", "Ana", TEST_PROFILE_PIC, TEST_URL_1); + private static final Account ANA = new Account( + "Ana", "ana@one.test", "Ana Doe", "Ana", TEST_PROFILE_PIC, TEST_URL_1, true); private static final Account BOB = - new Account("Bob", "", "Bob", "", TEST_PROFILE_PIC, TEST_URL_2); - private static final Account CARL = - new Account("Carl", "carl@three.test", "Carl Test", ":)", TEST_PROFILE_PIC, TEST_URL_3); + new Account("Bob", "", "Bob", "", TEST_PROFILE_PIC, TEST_URL_2, true); + private static final Account CARL = new Account( + "Carl", "carl@three.test", "Carl Test", ":)", TEST_PROFILE_PIC, TEST_URL_3, true); + private static final Account NEW_USER = new Account("602214076", "goto@email.example", + "Sam E. Goto", "Sam", TEST_PROFILE_PIC, TEST_URL_3, false); + private static final @Px int DESIRED_FAVICON_SIZE = 64; private static final @Px int DESIRED_AVATAR_SIZE = 100; @@ -109,6 +118,9 @@ when(mUrlFormatterJniMock.formatStringUrlForSecurityDisplay( anyString(), eq(SchemeDisplay.OMIT_HTTP_AND_HTTPS))) .then(inv -> formatForSecurityDisplay(inv.getArgument(0))); + when(mUrlFormatterJniMock.formatUrlForSecurityDisplay( + any(GURL.class), eq(SchemeDisplay.OMIT_HTTP_AND_HTTPS))) + .then(inv -> formatForSecurityDisplay(((GURL) inv.getArgument(0)).getSpec())); mMediator = new AccountSelectionMediator(mMockDelegate, mSheetItems, mMockBottomSheetController, null, mMockImageFetcher, DESIRED_AVATAR_SIZE, @@ -117,27 +129,27 @@ @Test public void testShowAccountsCreatesHeader() { - mMediator.showAccounts(TEST_URL, Arrays.asList(ANA, BOB)); + mMediator.showAccounts(TEST_URL, Arrays.asList(ANA, BOB), false); assertEquals("Incorrect header type", ItemType.HEADER, mSheetItems.get(0).type); - assertEquals("Incorrect header multiple accounts", false, - mSheetItems.get(0).model.get(SINGLE_ACCOUNT)); + assertNotEquals("Incorrect header multiple accounts", HeaderType.SINGLE_ACCOUNT, + mSheetItems.get(0).model.get(TYPE)); assertEquals("Incorrect header url", formatForSecurityDisplay(TEST_URL), mSheetItems.get(0).model.get(FORMATTED_URL)); } @Test public void testShowAccountWithSingleEntryCreatesHeader() { - mMediator.showAccounts(TEST_URL, Arrays.asList(ANA)); + mMediator.showAccounts(TEST_URL, Arrays.asList(ANA), false); assertEquals("Incorrect header type", ItemType.HEADER, mSheetItems.get(0).type); - assertEquals("Incorrect header single account", true, - mSheetItems.get(0).model.get(SINGLE_ACCOUNT)); + assertEquals("Incorrect header single account", HeaderType.SINGLE_ACCOUNT, + mSheetItems.get(0).model.get(TYPE)); assertEquals("Incorrect header url", formatForSecurityDisplay(TEST_URL), mSheetItems.get(0).model.get(FORMATTED_URL)); } @Test public void testShowAccountsSetsAccountListAndRequestsFavicons() { - mMediator.showAccounts(TEST_URL, Arrays.asList(ANA, CARL, BOB)); + mMediator.showAccounts(TEST_URL, Arrays.asList(ANA, CARL, BOB), false); assertEquals( "Incorrect item sheet count", 4, mSheetItems.size()); // Header + three Accounts assertEquals("Incorrect type", ItemType.ACCOUNT, mSheetItems.get(1).type); @@ -160,7 +172,7 @@ @Test public void testShowAccountsSetsAccountListAndRequestsAvatar() { - mMediator.showAccounts(TEST_URL, Arrays.asList(ANA, BOB)); + mMediator.showAccounts(TEST_URL, Arrays.asList(ANA, BOB), false); assertEquals("Incorrect item sheet count", 3, mSheetItems.size()); assertNull(mSheetItems.get(1).model.get(AVATAR)); assertNull(mSheetItems.get(2).model.get(AVATAR)); @@ -175,7 +187,7 @@ @Test public void testFetchFaviconUpdatesModel() { - mMediator.showAccounts(TEST_URL, Collections.singletonList(CARL)); + mMediator.showAccounts(TEST_URL, Collections.singletonList(CARL), false); assertEquals("Incorrect item sheet count", 3, mSheetItems.size()); // Header + Account + Continue Button assertEquals("Incorrect type", ItemType.ACCOUNT, mSheetItems.get(1).type); @@ -198,7 +210,7 @@ @Test public void testFetchAvatarUpdatesModel() { - mMediator.showAccounts(TEST_URL, Collections.singletonList(CARL)); + mMediator.showAccounts(TEST_URL, Collections.singletonList(CARL), false); assertEquals("Incorrect item sheet count", 3, mSheetItems.size()); assertEquals("Incorrect type", ItemType.ACCOUNT, mSheetItems.get(1).type); assertEquals("Incorrect account", CARL, mSheetItems.get(1).model.get(ACCOUNT)); @@ -223,7 +235,7 @@ @Test public void testShowAccountsFormatPslOrigins() { - mMediator.showAccounts(TEST_URL, Arrays.asList(ANA, BOB)); + mMediator.showAccounts(TEST_URL, Arrays.asList(ANA, BOB), false); assertEquals("Incorrect item sheet count", 3, mSheetItems.size()); // Header + two Accounts assertEquals("Incorrect item type", ItemType.ACCOUNT, mSheetItems.get(1).type); assertEquals("Incorrect item type", ItemType.ACCOUNT, mSheetItems.get(2).type); @@ -231,7 +243,7 @@ @Test public void testClearsAccountListWhenShowingAgain() { - mMediator.showAccounts(TEST_URL, Collections.singletonList(ANA)); + mMediator.showAccounts(TEST_URL, Collections.singletonList(ANA), false); assertEquals("Incorrect item sheet count", 3, mSheetItems.size()); // Header + Account + Continue Button assertEquals("Incorrect item type", ItemType.ACCOUNT, mSheetItems.get(1).type); @@ -239,7 +251,7 @@ assertNull(mSheetItems.get(1).model.get(FAVICON_OR_FALLBACK)); // Showing the sheet a second time should replace all changed accounts. - mMediator.showAccounts(TEST_URL, Collections.singletonList(BOB)); + mMediator.showAccounts(TEST_URL, Collections.singletonList(BOB), false); assertEquals("Incorrect item sheet count", 3, mSheetItems.size()); // Header + Account + Continue Button assertEquals("Incorrect item type", ItemType.ACCOUNT, mSheetItems.get(1).type); @@ -250,7 +262,7 @@ @Test public void testShowAccountsSetsVisibile() { when(mMockBottomSheetController.requestShowContent(any(), anyBoolean())).thenReturn(true); - mMediator.showAccounts(TEST_URL, Arrays.asList(ANA, CARL, BOB)); + mMediator.showAccounts(TEST_URL, Arrays.asList(ANA, CARL, BOB), false); verify(mMockBottomSheetController, times(1)).requestShowContent(eq(null), eq(true)); assertEquals("Incorrectly hidden", true, mMediator.isVisible()); @@ -259,11 +271,11 @@ @Test public void testCallsCallbackAndHidesOnSelectingItemDoesNotRecordIndexForSingleAccount() { when(mMockBottomSheetController.requestShowContent(any(), anyBoolean())).thenReturn(true); - mMediator.showAccounts(TEST_URL, Arrays.asList(ANA)); + mMediator.showAccounts(TEST_URL, Arrays.asList(ANA), false); assertEquals("Incorrectly hidden", true, mMediator.isVisible()); - assertNotNull(mSheetItems.get(1).model.get(ON_CLICK_LISTENER)); + assertNotNull(mSheetItems.get(1).model.get(AccountProperties.ON_CLICK_LISTENER)); - mSheetItems.get(1).model.get(ON_CLICK_LISTENER).onResult(ANA); + mSheetItems.get(1).model.get(AccountProperties.ON_CLICK_LISTENER).onResult(ANA); verify(mMockDelegate).onAccountSelected(ANA); assertEquals("Incorrectly visible", false, mMediator.isVisible()); } @@ -271,11 +283,11 @@ @Test public void testCallsCallbackAndHidesOnSelectingItem() { when(mMockBottomSheetController.requestShowContent(any(), anyBoolean())).thenReturn(true); - mMediator.showAccounts(TEST_URL, Arrays.asList(ANA, CARL)); + mMediator.showAccounts(TEST_URL, Arrays.asList(ANA, CARL), false); assertEquals("Incorrectly hidden", true, mMediator.isVisible()); - assertNotNull(mSheetItems.get(1).model.get(ON_CLICK_LISTENER)); + assertNotNull(mSheetItems.get(1).model.get(AccountProperties.ON_CLICK_LISTENER)); - mSheetItems.get(1).model.get(ON_CLICK_LISTENER).onResult(CARL); + mSheetItems.get(1).model.get(AccountProperties.ON_CLICK_LISTENER).onResult(CARL); verify(mMockDelegate).onAccountSelected(CARL); assertEquals("Incorrectly visible", false, mMediator.isVisible()); } @@ -283,7 +295,7 @@ @Test public void testCallsDelegateAndHidesOnDismiss() { when(mMockBottomSheetController.requestShowContent(any(), anyBoolean())).thenReturn(true); - mMediator.showAccounts(TEST_URL, Arrays.asList(ANA, BOB)); + mMediator.showAccounts(TEST_URL, Arrays.asList(ANA, BOB), false); mMediator.onDismissed(BottomSheetController.StateChangeReason.BACK_PRESS); verify(mMockDelegate).onDismissed(); assertEquals("Incorrectly visible", false, mMediator.isVisible()); @@ -292,12 +304,70 @@ @Test public void testCallsDelegateAndHidesOnSelect() { when(mMockBottomSheetController.requestShowContent(any(), anyBoolean())).thenReturn(true); - mMediator.showAccounts(TEST_URL, Arrays.asList(ANA, BOB)); + mMediator.showAccounts(TEST_URL, Arrays.asList(ANA, BOB), false); mMediator.onAccountSelected(ANA); verify(mMockDelegate).onAccountSelected(ANA); assertEquals("Incorrectly visible", false, mMediator.isVisible()); } + @Test + public void testCallsDelegateAndHidesOnAutoSignIn() { + when(mMockBottomSheetController.requestShowContent(any(), anyBoolean())).thenReturn(true); + mMediator.showAccounts(TEST_URL, Arrays.asList(ANA), true); + // Auto signs in if no action is taken. + ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); + verify(mMockDelegate).onAccountSelected(ANA); + assertEquals("Incorrectly visible", false, mMediator.isVisible()); + } + + @Test + public void testCallsDelegateAndHidesOnCancellingAutoSignIn() { + when(mMockBottomSheetController.requestShowContent(any(), anyBoolean())).thenReturn(true); + mMediator.showAccounts(TEST_URL, Arrays.asList(ANA), true); + mMediator.onAutoSignInCancelled(); + verify(mMockDelegate).onAutoSignInCancelled(); + assertEquals("Incorrectly visible", false, mMediator.isVisible()); + } + + @Test + public void testCallsCallbackAndHidesOnCancellingAutoSignIn() { + when(mMockBottomSheetController.requestShowContent(any(), anyBoolean())).thenReturn(true); + mMediator.showAccounts(TEST_URL, Arrays.asList(ANA), true); + assertEquals("Incorrectly hidden", true, mMediator.isVisible()); + assertNotNull( + mSheetItems.get(2).model.get(AutoSignInCancelButtonProperties.ON_CLICK_LISTENER)); + + mSheetItems.get(2).model.get(AutoSignInCancelButtonProperties.ON_CLICK_LISTENER).run(); + verify(mMockDelegate).onAutoSignInCancelled(); + assertEquals("Incorrectly visible", false, mMediator.isVisible()); + } + + @Test + public void testCallsDelegateAndHidesOnlyOnceWithAutoSignIn() { + when(mMockBottomSheetController.requestShowContent(any(), anyBoolean())).thenReturn(true); + mMediator.showAccounts(TEST_URL, Arrays.asList(ANA), true); + mMediator.onDismissed(BottomSheetController.StateChangeReason.BACK_PRESS); + verify(mMockDelegate).onDismissed(); + verifyNoMoreInteractions(mMockDelegate); + assertEquals("Incorrectly visible", false, mMediator.isVisible()); + // The delayed task should not call delegate after user dismissing. + ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); + } + + @Test + public void testShowDataSharingConsentForSingleNewAccount() { + mMediator.showAccounts(TEST_URL, Arrays.asList(NEW_USER), false); + // For new user we expect header + account + consent text + continue btn + assertEquals("Incorrect item sheet count", 4, mSheetItems.size()); + assertEquals("Incorrect header type", ItemType.HEADER, mSheetItems.get(0).type); + assertEquals("Incorrect item type", ItemType.ACCOUNT, mSheetItems.get(1).type); + assertEquals( + "Incorrect consent type", ItemType.DATA_SHARING_CONSENT, mSheetItems.get(2).type); + assertEquals("Incorrect continue type", ItemType.CONTINUE_BUTTON, mSheetItems.get(3).type); + assertEquals("Incorrect provider url", formatForSecurityDisplay(TEST_URL_3.getSpec()), + mSheetItems.get(2).model.get(PROVIDER_URL)); + } + /** * Helper to verify formatted URLs. The real implementation calls {@link UrlFormatter}. It's not * useful to actually reimplement the formatter, so just modify the string in a trivial way.
diff --git a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionCoordinator.java b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionCoordinator.java index 922eede..f646525b 100644 --- a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionCoordinator.java +++ b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionCoordinator.java
@@ -90,9 +90,15 @@ adapter.registerType(AccountSelectionProperties.ItemType.ACCOUNT, AccountSelectionCoordinator::buildAccountView, AccountSelectionViewBinder::bindAccountView); + adapter.registerType(AccountSelectionProperties.ItemType.DATA_SHARING_CONSENT, + AccountSelectionCoordinator::buildDataSharingConsentView, + AccountSelectionViewBinder::bindDataSharingConsentView); adapter.registerType(AccountSelectionProperties.ItemType.CONTINUE_BUTTON, AccountSelectionCoordinator::buildContinueButtonView, AccountSelectionViewBinder::bindContinueButtonView); + adapter.registerType(AccountSelectionProperties.ItemType.AUTO_SIGN_IN_CANCEL_BUTTON, + AccountSelectionCoordinator::buildAutoSignInCancelButtonView, + AccountSelectionViewBinder::bindAutoSignInCancelButtonView); sheetItemListView.setAdapter(adapter); return contentView; @@ -108,13 +114,23 @@ .inflate(R.layout.account_selection_account_item, parent, false); } + static View buildDataSharingConsentView(ViewGroup parent) { + return LayoutInflater.from(parent.getContext()) + .inflate(R.layout.account_selection_data_sharing_consent_item, parent, false); + } + static View buildContinueButtonView(ViewGroup parent) { return LayoutInflater.from(parent.getContext()) .inflate(R.layout.account_selection_continue_button, parent, false); } + static View buildAutoSignInCancelButtonView(ViewGroup parent) { + return LayoutInflater.from(parent.getContext()) + .inflate(R.layout.auto_sign_in_cancel_button, parent, false); + } + @Override - public void showAccounts(String url, List<Account> accounts) { - mMediator.showAccounts(url, accounts); + public void showAccounts(String url, List<Account> accounts, boolean isAutoSignIn) { + mMediator.showAccounts(url, accounts, isAutoSignIn); } }
diff --git a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionIntegrationTest.java b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionIntegrationTest.java index e86a1c0..0d3ab33d 100644 --- a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionIntegrationTest.java +++ b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionIntegrationTest.java
@@ -62,10 +62,10 @@ private static final GURL TEST_PROFILE_PIC = JUnitTestGURLs.getGURL(JUnitTestGURLs.URL_1_WITH_PATH); - private static final Account ANA = - new Account("Ana", "ana@one.test", "Ana Doe", "Ana", TEST_PROFILE_PIC, TEST_URL_1); + private static final Account ANA = new Account( + "Ana", "ana@one.test", "Ana Doe", "Ana", TEST_PROFILE_PIC, TEST_URL_1, true); private static final Account BOB = - new Account("Bob", "", "Bob", "", TEST_PROFILE_PIC, TEST_URL_2); + new Account("Bob", "", "Bob", "", TEST_PROFILE_PIC, TEST_URL_2, false); private AccountSelectionComponent mAccountSelection; @@ -93,8 +93,9 @@ @Test @MediumTest public void testBackDismissesAndCallsCallback() { - runOnUiThreadBlocking( - () -> { mAccountSelection.showAccounts(EXAMPLE_URL, Arrays.asList(ANA, BOB)); }); + runOnUiThreadBlocking(() -> { + mAccountSelection.showAccounts(EXAMPLE_URL, Arrays.asList(ANA, BOB), false); + }); pollUiThread(() -> getBottomSheetState() == BottomSheetController.SheetState.FULL); Espresso.pressBack(); @@ -119,8 +120,9 @@ pollUiThread(() -> getBottomSheetState() == SheetState.PEEK); Espresso.onView(withText("Another bottom sheet content")).check(matches(isDisplayed())); - runOnUiThreadBlocking( - () -> { mAccountSelection.showAccounts(EXAMPLE_URL, Arrays.asList(ANA, BOB)); }); + runOnUiThreadBlocking(() -> { + mAccountSelection.showAccounts(EXAMPLE_URL, Arrays.asList(ANA, BOB), false); + }); waitForEvent(mMockBridge).onDismissed(); verify(mMockBridge, never()).onAccountSelected(any()); Espresso.onView(withText("Another bottom sheet content")).check(matches(isDisplayed()));
diff --git a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionMediator.java b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionMediator.java index a08aed62..d0cab95 100644 --- a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionMediator.java +++ b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionMediator.java
@@ -4,12 +4,17 @@ package org.chromium.chrome.browser.ui.android.webid; +import android.os.Handler; + import androidx.annotation.Px; import androidx.annotation.VisibleForTesting; import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.AccountProperties; +import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.AutoSignInCancelButtonProperties; import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.ContinueButtonProperties; +import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.DataSharingConsentProperties; import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.HeaderProperties; +import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.HeaderProperties.HeaderType; import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.ItemType; import org.chromium.chrome.browser.ui.android.webid.data.Account; import org.chromium.components.browser_ui.bottomsheet.BottomSheetContent; @@ -45,6 +50,10 @@ private final BottomSheetController mBottomSheetController; private final BottomSheetContent mBottomSheetContent; private final BottomSheetObserver mBottomSheetObserver; + private final Handler mAutoSignInTaskHandler = new Handler(); + // TODO(yigu): Increase the time after adding a continue button for users to + // proceed. Eventually this should be specified by IDPs. + private static final int AUTO_SIGN_IN_CANCELLATION_TIMER_MS = 5000; AccountSelectionMediator(AccountSelectionComponent.Delegate delegate, ModelList sheetItems, BottomSheetController bottomSheetController, BottomSheetContent bottomSheetContent, @@ -76,17 +85,25 @@ }; } - void showAccounts(String url, List<Account> accounts) { + void showAccounts(String url, List<Account> accounts, boolean isAutoSignIn) { mSheetItems.clear(); + HeaderType headerType; + if (isAutoSignIn) { + headerType = HeaderType.AUTO_SIGN_IN; + } else { + headerType = + accounts.size() == 1 ? HeaderType.SINGLE_ACCOUNT : HeaderType.MULTIPLE_ACCOUNT; + } + String site_url = + UrlFormatter.formatUrlForSecurityDisplay(url, SchemeDisplay.OMIT_HTTP_AND_HTTPS); + // We remove the HTTPS from URL since it is the only protocol that is // allowed with WebID. mSheetItems.add(new ListItem(ItemType.HEADER, new PropertyModel.Builder(HeaderProperties.ALL_KEYS) - .with(HeaderProperties.SINGLE_ACCOUNT, accounts.size() == 1) - .with(HeaderProperties.FORMATTED_URL, - UrlFormatter.formatUrlForSecurityDisplay( - url, SchemeDisplay.OMIT_HTTP_AND_HTTPS)) + .with(HeaderProperties.TYPE, headerType) + .with(HeaderProperties.FORMATTED_URL, site_url) .build())); for (Account account : accounts) { @@ -94,8 +111,25 @@ mSheetItems.add(new ListItem(ItemType.ACCOUNT, model)); requestIconOrFallbackImage(model); requestAvatarImage(model); - // If there is only a single account we need to show the continue button. - if (accounts.size() == 1) { + } + + if (accounts.size() == 1) { + Account account = accounts.get(0); + // Only show the user data sharing consent text for sign up. + if (!account.isSignIn()) { + String provider_url = UrlFormatter.formatUrlForSecurityDisplay( + account.getOriginUrl(), SchemeDisplay.OMIT_HTTP_AND_HTTPS); + mSheetItems.add(new ListItem( + ItemType.DATA_SHARING_CONSENT, createDataSharingConsentItem(provider_url))); + } + if (isAutoSignIn) { + assert account.isSignIn(); + final PropertyModel cancelBtnModel = createAutoSignInCancelBtnItem(); + mSheetItems.add(new ListItem(ItemType.AUTO_SIGN_IN_CANCEL_BUTTON, cancelBtnModel)); + + mAutoSignInTaskHandler.postDelayed( + () -> onAccountSelected(account), AUTO_SIGN_IN_CANCELLATION_TIMER_MS); + } else { final PropertyModel continueBtnModel = createContinueBtnItem(account); mSheetItems.add(new ListItem(ItemType.CONTINUE_BUTTON, continueBtnModel)); } @@ -163,6 +197,7 @@ } void onAccountSelected(Account account) { + if (!mVisible) return; hideContent(); mDelegate.onAccountSelected(account); } @@ -172,6 +207,11 @@ mDelegate.onDismissed(); } + void onAutoSignInCancelled() { + hideContent(); + mDelegate.onAutoSignInCancelled(); + } + private PropertyModel createAccountItem(Account account) { return new PropertyModel.Builder(AccountProperties.ALL_KEYS) .with(AccountProperties.ACCOUNT, account) @@ -185,4 +225,17 @@ .with(ContinueButtonProperties.ON_CLICK_LISTENER, this::onAccountSelected) .build(); } + + private PropertyModel createAutoSignInCancelBtnItem() { + return new PropertyModel.Builder(AutoSignInCancelButtonProperties.ALL_KEYS) + .with(AutoSignInCancelButtonProperties.ON_CLICK_LISTENER, + this::onAutoSignInCancelled) + .build(); + } + + private PropertyModel createDataSharingConsentItem(String provider) { + return new PropertyModel.Builder(DataSharingConsentProperties.ALL_KEYS) + .with(DataSharingConsentProperties.PROVIDER_URL, provider) + .build(); + } }
diff --git a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionProperties.java b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionProperties.java index 2d91da6..897d761ab 100644 --- a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionProperties.java +++ b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionProperties.java
@@ -75,12 +75,13 @@ * sheet. */ static class HeaderProperties { - static final PropertyModel.ReadableBooleanPropertyKey SINGLE_ACCOUNT = - new PropertyModel.ReadableBooleanPropertyKey("single_account"); + public enum HeaderType { SINGLE_ACCOUNT, MULTIPLE_ACCOUNT, AUTO_SIGN_IN } + static final PropertyModel.ReadableObjectPropertyKey<HeaderType> TYPE = + new PropertyModel.ReadableObjectPropertyKey<>("type"); static final PropertyModel.ReadableObjectPropertyKey<String> FORMATTED_URL = new PropertyModel.ReadableObjectPropertyKey<>("formatted_url"); - static final PropertyKey[] ALL_KEYS = {SINGLE_ACCOUNT, FORMATTED_URL}; + static final PropertyKey[] ALL_KEYS = {TYPE, FORMATTED_URL}; private HeaderProperties() {} } @@ -89,6 +90,19 @@ * Properties defined here reflect the state of the continue button in the AccountSelection * sheet. */ + static class DataSharingConsentProperties { + static final PropertyModel.ReadableObjectPropertyKey<String> PROVIDER_URL = + new PropertyModel.ReadableObjectPropertyKey<>("provider_url"); + + static final PropertyKey[] ALL_KEYS = {PROVIDER_URL}; + + private DataSharingConsentProperties() {} + } + + /** + * Properties defined here reflect the state of the continue button in the AccountSelection + * sheet. + */ static class ContinueButtonProperties { static final PropertyModel.ReadableObjectPropertyKey<Account> ACCOUNT = new PropertyModel.ReadableObjectPropertyKey<>("account"); @@ -100,7 +114,20 @@ private ContinueButtonProperties() {} } - @IntDef({ItemType.HEADER, ItemType.ACCOUNT, ItemType.CONTINUE_BUTTON}) + /** + * Properties defined here reflect the state of the cancel button used for auto sign in. + */ + static class AutoSignInCancelButtonProperties { + static final PropertyModel.ReadableObjectPropertyKey<Runnable> ON_CLICK_LISTENER = + new PropertyModel.ReadableObjectPropertyKey<>("on_click_listener"); + + static final PropertyKey[] ALL_KEYS = {ON_CLICK_LISTENER}; + + private AutoSignInCancelButtonProperties() {} + } + + @IntDef({ItemType.HEADER, ItemType.ACCOUNT, ItemType.DATA_SHARING_CONSENT, + ItemType.CONTINUE_BUTTON, ItemType.AUTO_SIGN_IN_CANCEL_BUTTON}) @Retention(RetentionPolicy.SOURCE) @interface ItemType { /** @@ -114,9 +141,20 @@ int ACCOUNT = 2; /** + * The user data sharing consent text when there is only one account and it is a sign-up + * moment. + */ + int DATA_SHARING_CONSENT = 3; + + /** * The continue button at the end of the sheet when there is only one account. */ - int CONTINUE_BUTTON = 3; + int CONTINUE_BUTTON = 4; + + /** + * The cancel button at the end of the sheet with auto sign in. + */ + int AUTO_SIGN_IN_CANCEL_BUTTON = 5; } private AccountSelectionProperties() {}
diff --git a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionViewBinder.java b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionViewBinder.java index beb387e..6d24883 100644 --- a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionViewBinder.java +++ b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionViewBinder.java
@@ -21,7 +21,9 @@ import androidx.annotation.StringRes; import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.AccountProperties; +import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.AutoSignInCancelButtonProperties; import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.ContinueButtonProperties; +import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.DataSharingConsentProperties; import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.HeaderProperties; import org.chromium.chrome.browser.ui.android.webid.data.Account; import org.chromium.chrome.browser.ui.favicon.FaviconUtils; @@ -148,6 +150,25 @@ } /** + * Called whenever a user data sharing consent is bound to this view. + * @param model The model containing the data for the view. + * @param view The view to be bound. + * @param key The key of the property to be bound. + */ + static void bindDataSharingConsentView(PropertyModel model, View view, PropertyKey key) { + if (key == DataSharingConsentProperties.PROVIDER_URL) { + String providerUrl = model.get(DataSharingConsentProperties.PROVIDER_URL); + String consentText = String.format( + view.getContext().getString(R.string.account_selection_data_sharing_consent), + providerUrl); + TextView textView = view.findViewById(R.id.user_data_sharing_consent); + textView.setText(consentText); + } else { + assert false : "Unhandled update to property:" + key; + } + } + + /** * Called whenever a continue button for a single account is bound to this view. * @param model The model containing the data for the view. * @param view The view to be bound. @@ -173,20 +194,45 @@ } /** + * Called whenever a cancel button for a single account is bound to this view. + * @param model The model containing the data for the view. + * @param view The view to be bound. + * @param key The key of the property to be bound. + */ + static void bindAutoSignInCancelButtonView(PropertyModel model, View view, PropertyKey key) { + if (key != AutoSignInCancelButtonProperties.ON_CLICK_LISTENER) { + assert false : "Unhandled update to property:" + key; + return; + } + view.setOnClickListener(clickedView -> { + model.get(AutoSignInCancelButtonProperties.ON_CLICK_LISTENER).run(); + }); + String btnText = String.format(view.getContext().getString(R.string.cancel)); + Button button = view.findViewById(R.id.auto_sign_in_cancel_btn); + button.setText(btnText); + } + + /** * Called whenever a header is bound to this view. * @param model The model containing the data for the view. * @param view The view to be bound. * @param key The key of the property to be bound. */ static void bindHeaderView(PropertyModel model, View view, PropertyKey key) { - if (key == HeaderProperties.SINGLE_ACCOUNT || key == HeaderProperties.FORMATTED_URL) { + if (key == HeaderProperties.FORMATTED_URL || key == HeaderProperties.TYPE) { TextView sheetTitleText = view.findViewById(R.id.account_selection_sheet_title); @StringRes - int titleStringId; - if (model.get(HeaderProperties.SINGLE_ACCOUNT)) { - titleStringId = R.string.account_selection_sheet_title_single; - } else { - titleStringId = R.string.account_selection_sheet_title; + int titleStringId = R.string.account_selection_sheet_title_single; + switch (model.get(HeaderProperties.TYPE)) { + case SINGLE_ACCOUNT: + titleStringId = R.string.account_selection_sheet_title_single; + break; + case MULTIPLE_ACCOUNT: + titleStringId = R.string.account_selection_sheet_title; + break; + case AUTO_SIGN_IN: + titleStringId = R.string.auto_sign_in_sheet_title; + break; } String title = String.format(view.getContext().getString(titleStringId),
diff --git a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionViewTest.java b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionViewTest.java index 26e135bb..6e0e70f5 100644 --- a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionViewTest.java +++ b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionViewTest.java
@@ -11,8 +11,6 @@ import static org.mockito.Mockito.verify; import static org.chromium.base.test.util.CriteriaHelper.pollUiThread; -import static org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.HeaderProperties.FORMATTED_URL; -import static org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.HeaderProperties.SINGLE_ACCOUNT; import static java.util.Arrays.asList; @@ -35,8 +33,11 @@ import org.chromium.base.test.util.ScalableTimeout; import org.chromium.chrome.R; import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.AccountProperties; +import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.AutoSignInCancelButtonProperties; import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.ContinueButtonProperties; +import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.DataSharingConsentProperties; import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.HeaderProperties; +import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.HeaderProperties.HeaderType; import org.chromium.chrome.browser.ui.android.webid.data.Account; import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.content_public.browser.test.util.TestThreadUtils; @@ -60,15 +61,16 @@ public class AccountSelectionViewTest { private static final GURL TEST_PROFILE_PIC = JUnitTestGURLs.getGURL(JUnitTestGURLs.EXAMPLE_URL); - private static final Account ANA = - new Account("Ana", "S3cr3t", "Ana Doe", "Ana", TEST_PROFILE_PIC, GURL.emptyGURL()); - private static final Account NO_ONE = new Account("", "***", "No Subject", "", TEST_PROFILE_PIC, - JUnitTestGURLs.getGURL(JUnitTestGURLs.URL_1)); - private static final Account BOB = new Account("Bob", "***", "Bob", "", TEST_PROFILE_PIC, - JUnitTestGURLs.getGURL(JUnitTestGURLs.URL_2)); + private static final Account ANA = new Account( + "Ana", "ana@email.example", "Ana Doe", "Ana", TEST_PROFILE_PIC, GURL.emptyGURL(), true); + private static final Account NO_ONE = new Account("", "", "No Subject", "", TEST_PROFILE_PIC, + JUnitTestGURLs.getGURL(JUnitTestGURLs.URL_1), true); + private static final Account BOB = new Account("Bob", "", "Bob", "", TEST_PROFILE_PIC, + JUnitTestGURLs.getGURL(JUnitTestGURLs.URL_2), true); @Mock private Callback<Account> mAccountCallback; + private Runnable mAutoSignInCancelCallback; private DummyUiActivity mActivity; private ModelList mSheetItems; @@ -97,8 +99,8 @@ TestThreadUtils.runOnUiThreadBlocking(() -> { mSheetItems.add(new MVCListAdapter.ListItem(AccountSelectionProperties.ItemType.HEADER, new PropertyModel.Builder(HeaderProperties.ALL_KEYS) - .with(SINGLE_ACCOUNT, true) - .with(FORMATTED_URL, "www.example.org") + .with(HeaderProperties.TYPE, HeaderType.SINGLE_ACCOUNT) + .with(HeaderProperties.FORMATTED_URL, "www.example.org") .build())); }); pollUiThread(() -> mContentView.getVisibility() == View.VISIBLE); @@ -116,8 +118,8 @@ TestThreadUtils.runOnUiThreadBlocking(() -> { mSheetItems.add(new MVCListAdapter.ListItem(AccountSelectionProperties.ItemType.HEADER, new PropertyModel.Builder(HeaderProperties.ALL_KEYS) - .with(SINGLE_ACCOUNT, false) - .with(FORMATTED_URL, "www.example.org") + .with(HeaderProperties.TYPE, HeaderType.MULTIPLE_ACCOUNT) + .with(HeaderProperties.FORMATTED_URL, "www.example.org") .build())); }); pollUiThread(() -> mContentView.getVisibility() == View.VISIBLE); @@ -185,6 +187,61 @@ waitForEvent(mAccountCallback).onResult(eq(ANA)); } + @Test + @MediumTest + public void testAutoSignInCancellButtonDisplayed() { + TestThreadUtils.runOnUiThreadBlocking(() -> { + // Create an account with no callback to ensure the button callback + // is the one that gets invoked. + final MVCListAdapter.ListItem account_without_callback = + new MVCListAdapter.ListItem(AccountSelectionProperties.ItemType.ACCOUNT, + new PropertyModel.Builder(AccountProperties.ALL_KEYS) + .with(AccountProperties.ACCOUNT, ANA) + .with(AccountProperties.ON_CLICK_LISTENER, null) + .build()); + + mSheetItems.addAll(asList(account_without_callback, buildCancelButton())); + }); + pollUiThread(() -> mContentView.getVisibility() == View.VISIBLE); + + assertNotNull(getAccounts().getChildAt(0)); + assertNotNull(getAccounts().getChildAt(1)); + } + + @Test + @MediumTest + public void testHeaderDisplayedForAutoSignIn() { + TestThreadUtils.runOnUiThreadBlocking(() -> { + mSheetItems.add(new MVCListAdapter.ListItem(AccountSelectionProperties.ItemType.HEADER, + new PropertyModel.Builder(HeaderProperties.ALL_KEYS) + .with(HeaderProperties.TYPE, HeaderType.AUTO_SIGN_IN) + .with(HeaderProperties.FORMATTED_URL, "www.example.org") + .build())); + }); + pollUiThread(() -> mContentView.getVisibility() == View.VISIBLE); + TextView title = mContentView.findViewById(R.id.account_selection_sheet_title); + + assertEquals("Incorrect title", + mActivity.getString(R.string.auto_sign_in_sheet_title, "www.example.org"), + title.getText()); + } + + @Test + @MediumTest + public void testDataSharingConsentDisplayed() { + TestThreadUtils.runOnUiThreadBlocking(() -> { + mSheetItems.addAll( + Collections.singletonList(buildDataSharingConsentItem("www.example.org"))); + }); + pollUiThread(() -> mContentView.getVisibility() == View.VISIBLE); + assertNotNull(getAccounts().getChildAt(0)); + TextView consent = mContentView.findViewById(R.id.user_data_sharing_consent); + assertEquals("Incorrect data sharing consent text", + mActivity.getString( + R.string.account_selection_data_sharing_consent, "www.example.org"), + consent.getText()); + } + private RecyclerView getAccounts() { return mContentView.findViewById(R.id.sheet_item_list); } @@ -217,4 +274,20 @@ .with(ContinueButtonProperties.ON_CLICK_LISTENER, mAccountCallback) .build()); } + + private MVCListAdapter.ListItem buildCancelButton() { + return new MVCListAdapter.ListItem( + AccountSelectionProperties.ItemType.AUTO_SIGN_IN_CANCEL_BUTTON, + new PropertyModel.Builder(AutoSignInCancelButtonProperties.ALL_KEYS) + .with(AutoSignInCancelButtonProperties.ON_CLICK_LISTENER, + mAutoSignInCancelCallback) + .build()); + } + + private MVCListAdapter.ListItem buildDataSharingConsentItem(String provider) { + return new MVCListAdapter.ListItem(AccountSelectionProperties.ItemType.DATA_SHARING_CONSENT, + new PropertyModel.Builder(DataSharingConsentProperties.ALL_KEYS) + .with(DataSharingConsentProperties.PROVIDER_URL, provider) + .build()); + } }
diff --git a/chrome/browser/ui/android/webid/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionComponent.java b/chrome/browser/ui/android/webid/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionComponent.java index 6c213fe..8ede166 100644 --- a/chrome/browser/ui/android/webid/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionComponent.java +++ b/chrome/browser/ui/android/webid/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionComponent.java
@@ -32,6 +32,11 @@ * was selected. */ void onDismissed(); + + /** + * Called when the user cancels auto sign in. + */ + void onAutoSignInCancelled(); } /** @@ -46,6 +51,7 @@ * Displays the given accounts in a new bottom sheet. * @param url A {@link String} that contains the URL to display accounts for. * @param accounts A list of {@link Account}s that will be displayed. + * @param isAutoSignIn A {@link boolean} that represents whether this is an auto sign in flow. */ - void showAccounts(String url, List<Account> accounts); + void showAccounts(String url, List<Account> accounts, boolean isAutoSignIn); }
diff --git a/chrome/browser/ui/android/webid/java/src/org/chromium/chrome/browser/ui/android/webid/data/Account.java b/chrome/browser/ui/android/webid/java/src/org/chromium/chrome/browser/ui/android/webid/data/Account.java index ba99b439..131ea4a 100644 --- a/chrome/browser/ui/android/webid/java/src/org/chromium/chrome/browser/ui/android/webid/data/Account.java +++ b/chrome/browser/ui/android/webid/java/src/org/chromium/chrome/browser/ui/android/webid/data/Account.java
@@ -18,6 +18,7 @@ private final String mGivenName; private final GURL mPictureUrl; private final GURL mOriginUrl; + private final boolean mIsSignIn; /** * @param subject Subject shown to the user. @@ -28,7 +29,7 @@ */ @CalledByNative public Account(String subject, String email, String name, String givenName, GURL pictureUrl, - GURL originUrl) { + GURL originUrl, boolean isSignIn) { assert subject != null : "Account subject is null!"; mSubject = subject; mEmail = email; @@ -36,6 +37,7 @@ mGivenName = givenName; mPictureUrl = pictureUrl; mOriginUrl = originUrl; + mIsSignIn = isSignIn; } public String getSubject() { @@ -62,6 +64,10 @@ return mOriginUrl; } + public boolean isSignIn() { + return mIsSignIn; + } + // Return all the String fields. Note that this excludes non-string fields in particular // mOriginUrl and mPictureUrl. public String[] getStringFields() {
diff --git a/chrome/browser/ui/app_list/app_list_client_impl.cc b/chrome/browser/ui/app_list/app_list_client_impl.cc index 05e844c..3372a51 100644 --- a/chrome/browser/ui/app_list/app_list_client_impl.cc +++ b/chrome/browser/ui/app_list/app_list_client_impl.cc
@@ -531,8 +531,10 @@ ChromeShelfController::instance()->profile()); } -void AppListClientImpl::CreateNewWindow(bool incognito) { - ash::NewWindowDelegate::GetInstance()->NewWindow(incognito); +void AppListClientImpl::CreateNewWindow(bool incognito, + bool should_trigger_session_restore) { + ash::NewWindowDelegate::GetInstance()->NewWindow( + incognito, should_trigger_session_restore); } void AppListClientImpl::OpenURL(Profile* profile,
diff --git a/chrome/browser/ui/app_list/app_list_client_impl.h b/chrome/browser/ui/app_list/app_list_client_impl.h index e72a13a5..fa40343 100644 --- a/chrome/browser/ui/app_list/app_list_client_impl.h +++ b/chrome/browser/ui/app_list/app_list_client_impl.h
@@ -128,7 +128,8 @@ void PinApp(const std::string& app_id) override; void UnpinApp(const std::string& app_id) override; Pinnable GetPinnable(const std::string& app_id) override; - void CreateNewWindow(bool incognito) override; + void CreateNewWindow(bool incognito, + bool should_trigger_session_restore) override; void OpenURL(Profile* profile, const GURL& url, ui::PageTransition transition,
diff --git a/chrome/browser/ui/app_list/app_list_client_impl_browsertest.cc b/chrome/browser/ui/app_list/app_list_client_impl_browsertest.cc index 4526ade4..1a7e620df 100644 --- a/chrome/browser/ui/app_list/app_list_client_impl_browsertest.cc +++ b/chrome/browser/ui/app_list/app_list_client_impl_browsertest.cc
@@ -218,10 +218,12 @@ chrome::GetBrowserCount(browser()->profile()->GetPrimaryOTRProfile( /*create_if_needed=*/true))); - controller->CreateNewWindow(/*incognito=*/false); + controller->CreateNewWindow(/*incognito=*/false, + /*should_trigger_session_restore=*/true); EXPECT_EQ(2U, chrome::GetBrowserCount(browser()->profile())); - controller->CreateNewWindow(/*incognito=*/true); + controller->CreateNewWindow(/*incognito=*/true, + /*should_trigger_session_restore=*/true); EXPECT_EQ(1U, chrome::GetBrowserCount(browser()->profile()->GetPrimaryOTRProfile( /*create_if_needed=*/true))); @@ -467,7 +469,8 @@ // Create an incognito browser so that we can close the regular one without // exiting the test. - controller->CreateNewWindow(/*incognito=*/true); + controller->CreateNewWindow(/*incognito=*/true, + /*should_trigger_session_restore=*/true); EXPECT_EQ(1U, chrome::GetBrowserCount(profile_otr)); // Creating incognito browser should not update the launch time. EXPECT_EQ(time_recorded1, @@ -482,7 +485,8 @@ // Launch another regular browser. const base::Time time_before_launch = base::Time::Now(); - controller->CreateNewWindow(/*incognito=*/false); + controller->CreateNewWindow(/*incognito=*/false, + /*should_trigger_session_restore=*/true); const base::Time time_after_launch = base::Time::Now(); EXPECT_EQ(1U, chrome::GetBrowserCount(profile)); @@ -492,7 +496,8 @@ EXPECT_GE(time_after_launch, time_recorded2); // Creating a second regular browser should not update the launch time. - controller->CreateNewWindow(/*incognito=*/false); + controller->CreateNewWindow(/*incognito=*/false, + /*should_trigger_session_restore=*/true); EXPECT_EQ(2U, chrome::GetBrowserCount(profile)); EXPECT_EQ(time_recorded2, prefs->GetLastLaunchTime(extension_misc::kChromeAppId));
diff --git a/chrome/browser/ui/app_list/app_list_controller_delegate.h b/chrome/browser/ui/app_list/app_list_controller_delegate.h index 13c42aa..331db0c 100644 --- a/chrome/browser/ui/app_list/app_list_controller_delegate.h +++ b/chrome/browser/ui/app_list/app_list_controller_delegate.h
@@ -61,7 +61,10 @@ // Handle the "create window" context menu items of Chrome App. // |incognito| is true to create an incognito window. - virtual void CreateNewWindow(bool incognito) = 0; + // |should_trigger_session_restore| is true to restore the session for a + // browser window. + virtual void CreateNewWindow(bool incognito, + bool should_trigger_session_restore) = 0; // Opens the URL. virtual void OpenURL(Profile* profile,
diff --git a/chrome/browser/ui/app_list/app_service/app_service_context_menu.cc b/chrome/browser/ui/app_list/app_service/app_service_context_menu.cc index 3d66770..7cf4e0ef 100644 --- a/chrome/browser/ui/app_list/app_service/app_service_context_menu.cc +++ b/chrome/browser/ui/app_list/app_service/app_service_context_menu.cc
@@ -133,7 +133,8 @@ if (app_type_ == apps::mojom::AppType::kStandaloneBrowser) crosapi::BrowserManager::Get()->NewWindow(is_incognito); else - controller()->CreateNewWindow(is_incognito); + controller()->CreateNewWindow(is_incognito, + /*should_trigger_session_restore=*/false); ash::full_restore::FullRestoreService::MaybeCloseNotification(profile()); break; }
diff --git a/chrome/browser/ui/app_list/search/ranking/category_ranker.h b/chrome/browser/ui/app_list/search/ranking/category_ranker.h deleted file mode 100644 index 2b38a046..0000000 --- a/chrome/browser/ui/app_list/search/ranking/category_ranker.h +++ /dev/null
@@ -1,43 +0,0 @@ -// Copyright 2021 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_UI_APP_LIST_SEARCH_RANKING_CATEGORY_RANKER_H_ -#define CHROME_BROWSER_UI_APP_LIST_SEARCH_RANKING_CATEGORY_RANKER_H_ - -#include "chrome/browser/ui/app_list/search/ranking/ranker.h" - -class Profile; - -namespace app_list { -namespace { -enum class Category; -} // namespace - -class RecurrenceRanker; - -// A ranker that groups results into categories. -class CategoryRanker : public Ranker { - public: - explicit CategoryRanker(Profile* profile); - ~CategoryRanker() override; - - CategoryRanker(const CategoryRanker&) = delete; - CategoryRanker& operator=(const CategoryRanker&) = delete; - - // Ranker: - void Start(const std::u16string& query) override; - void Rank(ResultsMap& results, ProviderType provider) override; - void Train(const LaunchData& launch) override; - - private: - void InitializeCategoryScores(); - - std::unique_ptr<RecurrenceRanker> category_ranker_; - - base::flat_map<Category, int> category_ranks_; -}; - -} // namespace app_list - -#endif // CHROME_BROWSER_UI_APP_LIST_SEARCH_RANKING_CATEGORY_RANKER_H_
diff --git a/chrome/browser/ui/app_list/search/ranking/category_ranker.cc b/chrome/browser/ui/app_list/search/ranking/category_usage_ranker.cc similarity index 64% rename from chrome/browser/ui/app_list/search/ranking/category_ranker.cc rename to chrome/browser/ui/app_list/search/ranking/category_usage_ranker.cc index 3361226ab..05c5e5f 100644 --- a/chrome/browser/ui/app_list/search/ranking/category_ranker.cc +++ b/chrome/browser/ui/app_list/search/ranking/category_usage_ranker.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/search/ranking/category_ranker.h" +#include "chrome/browser/ui/app_list/search/ranking/category_usage_ranker.h" #include "base/logging.h" #include "base/strings/strcat.h" @@ -17,78 +17,6 @@ namespace app_list { namespace { -// The different categories of search result to display in launcher search. -// Every search result type maps to one category. These values are not stable, -// and should not be used for metrics. -enum class Category { - kApp = 1, - kWeb = 2, - kFiles = 3, - kAssistant = 4, - kSettings = 5, - kHelp = 6, - kPlayStore = 7, - kMaxValue = kPlayStore, -}; - -std::u16string CategoryDebugString(const Category category) { - switch (category) { - case Category::kApp: - return u"(apps) "; - case Category::kWeb: - return u"(web) "; - case Category::kFiles: - return u"(files) "; - case Category::kAssistant: - return u"(assistant) "; - case Category::kSettings: - return u"(settings) "; - case Category::kHelp: - return u"(help) "; - case Category::kPlayStore: - return u"(play store) "; - } -} - -Category ResultTypeToCategory(ResultType result_type) { - switch (result_type) { - case ResultType::kInstalledApp: - case ResultType::kInstantApp: - case ResultType::kInternalApp: - case ResultType::kArcAppShortcut: - return Category::kApp; - case ResultType::kOmnibox: - case ResultType::kAnswerCard: - return Category::kWeb; - case ResultType::kZeroStateFile: - case ResultType::kZeroStateDrive: - case ResultType::kFileChip: - case ResultType::kDriveChip: - case ResultType::kFileSearch: - case ResultType::kDriveSearch: - return Category::kFiles; - case ResultType::kAssistantChip: - case ResultType::kAssistantText: - return Category::kAssistant; - case ResultType::kOsSettings: - return Category::kSettings; - case ResultType::kHelpApp: - return Category::kHelp; - case ResultType::kPlayStoreReinstallApp: - case ResultType::kPlayStoreApp: - return Category::kPlayStore; - // Never used in the search backend. - case ResultType::kUnknown: - // Suggested content toggle fake result type. Used only in ash, not in the - // search backend. - case ResultType::kInternalPrivacyInfo: - // Deprecated. - case ResultType::kLauncher: - NOTREACHED(); - return Category::kApp; - } -} - std::string CategoryToString(const Category value) { return base::NumberToString(static_cast<int>(value)); } @@ -101,7 +29,7 @@ } // namespace -CategoryRanker::CategoryRanker(Profile* profile) { +CategoryUsageRanker::CategoryUsageRanker(Profile* profile) { // Initialize category ranking as a most-frecently-used list. RecurrenceRankerConfigProto config; config.set_min_seconds_between_saves(1u); @@ -112,12 +40,12 @@ config.mutable_predictor()->mutable_default_predictor(); category_ranker_ = std::make_unique<RecurrenceRanker>( - "CategoryRanker", + "CategoryUsageRanker", RankerStateDirectory(profile).AppendASCII("category_ranker.pb"), config, chromeos::ProfileHelper::IsEphemeralUserProfile(profile)); } -void CategoryRanker::InitializeCategoryScores() { +void CategoryUsageRanker::InitializeCategoryScores() { // Set a default ranking for categories by recording every category once. The // |category_ranker_| has a small recency component to its scores, so the // categories will appear in reverse order to the Record calls. This must @@ -135,9 +63,9 @@ static_cast<size_t>(Category::kMaxValue)); } -CategoryRanker::~CategoryRanker() {} +CategoryUsageRanker::~CategoryUsageRanker() {} -void CategoryRanker::Start(const std::u16string& query) { +void CategoryUsageRanker::Start(const std::u16string& query) { if (!category_ranker_->is_initialized()) return; @@ -165,7 +93,7 @@ } } -void CategoryRanker::Rank(ResultsMap& results, ProviderType provider) { +void CategoryUsageRanker::Rank(ResultsMap& results, ProviderType provider) { // Update each result's score to be: // kCategoryScoreFactor*(category rank) + (result relevance) const auto it = results.find(provider); @@ -186,7 +114,7 @@ } } -void CategoryRanker::Train(const LaunchData& launch) { +void CategoryUsageRanker::Train(const LaunchData& launch) { if (launch.launched_from != ash::AppListLaunchedFrom::kLaunchedFromSearchBox) { return;
diff --git a/chrome/browser/ui/app_list/search/ranking/category_usage_ranker.h b/chrome/browser/ui/app_list/search/ranking/category_usage_ranker.h new file mode 100644 index 0000000..5c0ee63 --- /dev/null +++ b/chrome/browser/ui/app_list/search/ranking/category_usage_ranker.h
@@ -0,0 +1,41 @@ +// Copyright 2021 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_UI_APP_LIST_SEARCH_RANKING_CATEGORY_USAGE_RANKER_H_ +#define CHROME_BROWSER_UI_APP_LIST_SEARCH_RANKING_CATEGORY_USAGE_RANKER_H_ + +#include "chrome/browser/ui/app_list/search/ranking/ranker.h" +#include "chrome/browser/ui/app_list/search/ranking/types.h" + +class Profile; + +namespace app_list { + +class RecurrenceRanker; + +// A ranker that groups results into categories. +class CategoryUsageRanker : public Ranker { + public: + explicit CategoryUsageRanker(Profile* profile); + ~CategoryUsageRanker() override; + + CategoryUsageRanker(const CategoryUsageRanker&) = delete; + CategoryUsageRanker& operator=(const CategoryUsageRanker&) = delete; + + // Ranker: + void Start(const std::u16string& query) override; + void Rank(ResultsMap& results, ProviderType provider) override; + void Train(const LaunchData& launch) override; + + private: + void InitializeCategoryScores(); + + std::unique_ptr<RecurrenceRanker> category_ranker_; + + base::flat_map<Category, int> category_ranks_; +}; + +} // namespace app_list + +#endif // CHROME_BROWSER_UI_APP_LIST_SEARCH_RANKING_CATEGORY_USAGE_RANKER_H_
diff --git a/chrome/browser/ui/app_list/search/ranking/types.cc b/chrome/browser/ui/app_list/search/ranking/types.cc new file mode 100644 index 0000000..cb27478a --- /dev/null +++ b/chrome/browser/ui/app_list/search/ranking/types.cc
@@ -0,0 +1,48 @@ +// Copyright 2021 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/ui/app_list/search/ranking/types.h" + +namespace app_list { + +Category ResultTypeToCategory(ResultType result_type) { + switch (result_type) { + case ResultType::kInstalledApp: + case ResultType::kInstantApp: + case ResultType::kInternalApp: + case ResultType::kArcAppShortcut: + return Category::kApp; + case ResultType::kOmnibox: + case ResultType::kAnswerCard: + return Category::kWeb; + case ResultType::kZeroStateFile: + case ResultType::kZeroStateDrive: + case ResultType::kFileChip: + case ResultType::kDriveChip: + case ResultType::kFileSearch: + case ResultType::kDriveSearch: + return Category::kFiles; + case ResultType::kAssistantChip: + case ResultType::kAssistantText: + return Category::kAssistant; + case ResultType::kOsSettings: + return Category::kSettings; + case ResultType::kHelpApp: + return Category::kHelp; + case ResultType::kPlayStoreReinstallApp: + case ResultType::kPlayStoreApp: + return Category::kPlayStore; + // Never used in the search backend. + case ResultType::kUnknown: + // Suggested content toggle fake result type. Used only in ash, not in the + // search backend. + case ResultType::kInternalPrivacyInfo: + // Deprecated. + case ResultType::kLauncher: + NOTREACHED(); + return Category::kApp; + } +} + +} // namespace app_list
diff --git a/chrome/browser/ui/app_list/search/ranking/types.h b/chrome/browser/ui/app_list/search/ranking/types.h new file mode 100644 index 0000000..67d4a26 --- /dev/null +++ b/chrome/browser/ui/app_list/search/ranking/types.h
@@ -0,0 +1,32 @@ +// Copyright 2021 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_UI_APP_LIST_SEARCH_RANKING_TYPES_H_ +#define CHROME_BROWSER_UI_APP_LIST_SEARCH_RANKING_TYPES_H_ + +#include "base/files/file_path.h" +#include "chrome/browser/ui/app_list/search/search_controller.h" + +namespace app_list { + +// The different categories of search result to display in launcher search. +// Every search result type maps to one category. These values are not stable, +// and should not be used for metrics. +enum class Category { + kApp = 1, + kWeb = 2, + kFiles = 3, + kAssistant = 4, + kSettings = 5, + kHelp = 6, + kPlayStore = 7, + kMaxValue = kPlayStore, +}; + +// Given a search result type, returns the category it should be placed in. +Category ResultTypeToCategory(ResultType result_type); + +} // namespace app_list + +#endif // CHROME_BROWSER_UI_APP_LIST_SEARCH_RANKING_TYPES_H_
diff --git a/chrome/browser/ui/app_list/search/ranking/util.cc b/chrome/browser/ui/app_list/search/ranking/util.cc index 2b928e3..0230bd1 100644 --- a/chrome/browser/ui/app_list/search/ranking/util.cc +++ b/chrome/browser/ui/app_list/search/ranking/util.cc
@@ -22,6 +22,25 @@ return profile->GetPath().AppendASCII(kRankerStateDirectory); } +std::u16string CategoryDebugString(const Category category) { + switch (category) { + case Category::kApp: + return u"(apps) "; + case Category::kWeb: + return u"(web) "; + case Category::kFiles: + return u"(files) "; + case Category::kAssistant: + return u"(assistant) "; + case Category::kSettings: + return u"(settings) "; + case Category::kHelp: + return u"(help) "; + case Category::kPlayStore: + return u"(play store) "; + } +} + std::u16string RemoveDebugPrefix(const std::u16string str) { std::string result = base::UTF16ToUTF8(str);
diff --git a/chrome/browser/ui/app_list/search/ranking/util.h b/chrome/browser/ui/app_list/search/ranking/util.h index 4c51c7ab..f36a96a 100644 --- a/chrome/browser/ui/app_list/search/ranking/util.h +++ b/chrome/browser/ui/app_list/search/ranking/util.h
@@ -8,6 +8,7 @@ #include <string> #include "base/files/file_path.h" +#include "chrome/browser/ui/app_list/search/ranking/types.h" class Profile; @@ -20,6 +21,10 @@ // TODO(crbug.com/1199206): Once the UI has support for categories this can be // removed. +// Given a category, returns a debug string of its name suitable for the interim +// UI. +std::u16string CategoryDebugString(const Category category); + // Deletes a prefix of the form "(...) " from |str| if it exists. std::u16string RemoveDebugPrefix(std::u16string str);
diff --git a/chrome/browser/ui/app_list/search/search_controller_impl_new.cc b/chrome/browser/ui/app_list/search/search_controller_impl_new.cc index fd93ffa..4f8399f 100644 --- a/chrome/browser/ui/app_list/search/search_controller_impl_new.cc +++ b/chrome/browser/ui/app_list/search/search_controller_impl_new.cc
@@ -25,7 +25,7 @@ #include "chrome/browser/ui/app_list/app_list_model_updater.h" #include "chrome/browser/ui/app_list/search/chrome_search_result.h" #include "chrome/browser/ui/app_list/search/cros_action_history/cros_action_recorder.h" -#include "chrome/browser/ui/app_list/search/ranking/category_ranker.h" +#include "chrome/browser/ui/app_list/search/ranking/category_usage_ranker.h" #include "chrome/browser/ui/app_list/search/ranking/filtering_ranker.h" #include "chrome/browser/ui/app_list/search/ranking/ranker_delegate.h" #include "chrome/browser/ui/app_list/search/ranking/score_normalizing_ranker.h" @@ -93,7 +93,7 @@ void SearchControllerImplNew::InitializeRankers() { ranker_->AddRanker(std::make_unique<ScoreNormalizingRanker>(profile_)); - ranker_->AddRanker(std::make_unique<CategoryRanker>(profile_)); + ranker_->AddRanker(std::make_unique<CategoryUsageRanker>(profile_)); ranker_->AddRanker(std::make_unique<TopMatchRanker>()); ranker_->AddRanker(std::make_unique<FilteringRanker>()); } @@ -210,15 +210,6 @@ return a->relevance() > b->relevance(); }); - // TODO(crbug.com/1199206): Remove this debug output once we no longer need to - // inspect launcher scores so closely, and before the categorical search flag - // is enabled for any users. - LOG(ERROR) << "(categorical search) updating results to:"; - for (const auto* result : all_results) { - LOG(ERROR) << "(categorical search) - " << result->relevance() << " " - << result->id(); - } - if (!observer_list_.empty()) { std::vector<const ChromeSearchResult*> observer_results; for (auto* result : all_results)
diff --git a/chrome/browser/ui/app_list/search/search_result_ranker/app_search_result_ranker.cc b/chrome/browser/ui/app_list/search/search_result_ranker/app_search_result_ranker.cc index c14df6b..d4a3741 100644 --- a/chrome/browser/ui/app_list/search/search_result_ranker/app_search_result_ranker.cc +++ b/chrome/browser/ui/app_list/search/search_result_ranker/app_search_result_ranker.cc
@@ -45,7 +45,6 @@ // Save |proto| to |predictor_filename|. void SaveToDiskOnWorkerThread(const base::FilePath& predictor_filename, const AppLaunchPredictorProto& proto) { - std::string proto_str; if (!proto.SerializeToString(&proto_str)) { LOG(ERROR) @@ -95,13 +94,8 @@ bool is_ephemeral_user) : predictor_filename_( profile_path.AppendASCII(kAppLaunchPredictorFilename)) { - if (!app_list_features::IsZeroStateAppsRankerEnabled()) { - LOG(ERROR) << "AppSearchResultRanker: ZeroStateAppsRanker is not enabled."; + if (!app_list_features::IsZeroStateAppsRankerEnabled()) return; - } - // TODO(charleszhao): remove these logs once the test review is done. - LOG(ERROR) << "AppSearchResultRanker::AppSearchResultRankerPredictorName " - << app_list_features::AppSearchResultRankerPredictorName(); predictor_ = CreatePredictor(app_list_features::AppSearchResultRankerPredictorName()); @@ -161,8 +155,6 @@ predictor_.swap(predictor); } load_from_disk_completed_ = true; - LOG(ERROR) << "AppSearchResultRanker::OnLoadFromDiskComplete " - << predictor_->GetPredictorName(); } } // namespace app_list
diff --git a/chrome/browser/ui/app_list/test/test_app_list_controller_delegate.cc b/chrome/browser/ui/app_list/test/test_app_list_controller_delegate.cc index 2cc55e2..702e542 100644 --- a/chrome/browser/ui/app_list/test/test_app_list_controller_delegate.cc +++ b/chrome/browser/ui/app_list/test/test_app_list_controller_delegate.cc
@@ -53,7 +53,9 @@ const std::string& extension_id) { } -void TestAppListControllerDelegate::CreateNewWindow(bool incognito) {} +void TestAppListControllerDelegate::CreateNewWindow( + bool incognito, + bool should_trigger_session_restore) {} void TestAppListControllerDelegate::OpenURL(Profile* profile, const GURL& url,
diff --git a/chrome/browser/ui/app_list/test/test_app_list_controller_delegate.h b/chrome/browser/ui/app_list/test/test_app_list_controller_delegate.h index 947f24d..db335136 100644 --- a/chrome/browser/ui/app_list/test/test_app_list_controller_delegate.h +++ b/chrome/browser/ui/app_list/test/test_app_list_controller_delegate.h
@@ -26,7 +26,8 @@ bool IsAppOpen(const std::string& app_id) const override; void DoShowAppInfoFlow(Profile* profile, const std::string& extension_id) override; - void CreateNewWindow(bool incognito) override; + void CreateNewWindow(bool incognito, + bool should_trigger_session_restore) override; void OpenURL(Profile* profile, const GURL& url, ui::PageTransition transition,
diff --git a/chrome/browser/ui/ash/chrome_new_window_client.cc b/chrome/browser/ui/ash/chrome_new_window_client.cc index ec0757c6..4318d00 100644 --- a/chrome/browser/ui/ash/chrome_new_window_client.cc +++ b/chrome/browser/ui/ash/chrome_new_window_client.cc
@@ -325,7 +325,8 @@ OpenUrlImpl(url, from_user_interaction); } -void ChromeNewWindowClient::NewWindow(bool is_incognito) { +void ChromeNewWindowClient::NewWindow(bool is_incognito, + bool should_trigger_session_restore) { if (is_incognito && !IsIncognitoAllowed()) return; @@ -335,7 +336,8 @@ : ProfileManager::GetActiveUserProfile(); chrome::NewEmptyWindow( is_incognito ? profile->GetPrimaryOTRProfile(/*create_if_needed=*/true) - : profile); + : profile, + should_trigger_session_restore); } void ChromeNewWindowClient::OpenCalculator() {
diff --git a/chrome/browser/ui/ash/chrome_new_window_client.h b/chrome/browser/ui/ash/chrome_new_window_client.h index f2ea2f1..69e3be55 100644 --- a/chrome/browser/ui/ash/chrome_new_window_client.h +++ b/chrome/browser/ui/ash/chrome_new_window_client.h
@@ -39,7 +39,7 @@ // Overridden from ash::NewWindowDelegate: void NewTab() override; void NewTabWithUrl(const GURL& url, bool from_user_interaction) override; - void NewWindow(bool incognito) override; + void NewWindow(bool incognito, bool should_trigger_session_restore) override; void OpenCalculator() override; void OpenFileManager() override; void OpenDownloadsFolder() override;
diff --git a/chrome/browser/ui/ash/chrome_new_window_client_browsertest.cc b/chrome/browser/ui/ash/chrome_new_window_client_browsertest.cc index 4be64fea..fd39dcf 100644 --- a/chrome/browser/ui/ash/chrome_new_window_client_browsertest.cc +++ b/chrome/browser/ui/ash/chrome_new_window_client_browsertest.cc
@@ -93,7 +93,9 @@ Profile* profile1 = ProfileManager::GetActiveUserProfile(); Browser* browser1 = CreateBrowser(profile1); // The newly created window should be created for the current active profile. - ChromeNewWindowClient::Get()->NewWindow(/*incognito=*/false); + ChromeNewWindowClient::Get()->NewWindow( + /*incognito=*/false, + /*should_trigger_session_restore=*/true); EXPECT_EQ(GetLastActiveBrowser()->profile(), profile1); // Login another user and make sure the current active user changes. @@ -105,26 +107,32 @@ Browser* browser2 = CreateBrowser(profile2); // The newly created window should be created for the current active window's // profile, which is |profile2|. - ChromeNewWindowClient::Get()->NewWindow(/*incognito=*/false); + ChromeNewWindowClient::Get()->NewWindow( + /*incognito=*/false, + /*should_trigger_session_restore=*/true); EXPECT_EQ(GetLastActiveBrowser()->profile(), profile2); // After activating |browser1|, the newly created window should be created // against |browser1|'s profile. browser1->window()->Show(); - ChromeNewWindowClient::Get()->NewWindow(/*incognito=*/false); + ChromeNewWindowClient::Get()->NewWindow( + /*incognito=*/false, + /*should_trigger_session_restore=*/true); EXPECT_EQ(GetLastActiveBrowser()->profile(), profile1); // Test for incognito windows. // The newly created incognito window should be created against the current // active |browser1|'s profile. browser1->window()->Show(); - ChromeNewWindowClient::Get()->NewWindow(/*incognito=*/true); + ChromeNewWindowClient::Get()->NewWindow( + /*incognito=*/true, /*should_trigger_session_restore=*/true); EXPECT_EQ(GetLastActiveBrowser()->profile()->GetOriginalProfile(), profile1); // The newly created incognito window should be created against the current // active |browser2|'s profile. browser2->window()->Show(); - ChromeNewWindowClient::Get()->NewWindow(/*incognito=*/true); + ChromeNewWindowClient::Get()->NewWindow( + /*incognito=*/true, /*should_trigger_session_restore=*/true); EXPECT_EQ(GetLastActiveBrowser()->profile()->GetOriginalProfile(), profile2); } @@ -137,13 +145,15 @@ // Disabling incognito mode disables creation of new incognito windows. IncognitoModePrefs::SetAvailability(profile->GetPrefs(), IncognitoModePrefs::DISABLED); - ChromeNewWindowClient::Get()->NewWindow(/*incognito=*/true); + ChromeNewWindowClient::Get()->NewWindow( + /*incognito=*/true, /*should_trigger_session_restore=*/true); EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); // Enabling incognito mode enables creation of new incognito windows. IncognitoModePrefs::SetAvailability(profile->GetPrefs(), IncognitoModePrefs::ENABLED); - ChromeNewWindowClient::Get()->NewWindow(/*incognito=*/true); + ChromeNewWindowClient::Get()->NewWindow( + /*incognito=*/true, /*should_trigger_session_restore=*/true); EXPECT_EQ(2u, chrome::GetTotalBrowserCount()); EXPECT_TRUE(GetLastActiveBrowser()->profile()->IsIncognitoProfile()); }
diff --git a/chrome/browser/ui/ash/crosapi_new_window_delegate.cc b/chrome/browser/ui/ash/crosapi_new_window_delegate.cc index e127b035..5866a96 100644 --- a/chrome/browser/ui/ash/crosapi_new_window_delegate.cc +++ b/chrome/browser/ui/ash/crosapi_new_window_delegate.cc
@@ -27,7 +27,8 @@ delegate_->NewTabWithUrl(url, from_user_interaction); } -void CrosapiNewWindowDelegate::NewWindow(bool incognito) { +void CrosapiNewWindowDelegate::NewWindow(bool incognito, + bool should_trigger_session_restore) { crosapi::BrowserManager::Get()->NewWindow(incognito); }
diff --git a/chrome/browser/ui/ash/crosapi_new_window_delegate.h b/chrome/browser/ui/ash/crosapi_new_window_delegate.h index c41a6852..cd85de81 100644 --- a/chrome/browser/ui/ash/crosapi_new_window_delegate.h +++ b/chrome/browser/ui/ash/crosapi_new_window_delegate.h
@@ -23,7 +23,7 @@ // Overridden from ash::NewWindowDelegate: void NewTab() override; void NewTabWithUrl(const GURL& url, bool from_user_interaction) override; - void NewWindow(bool incognito) override; + void NewWindow(bool incognito, bool should_trigger_session_restore) override; void OpenCalculator() override; void OpenFileManager() override; void OpenDownloadsFolder() override;
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_downloads_delegate.cc b/chrome/browser/ui/ash/holding_space/holding_space_downloads_delegate.cc index 758789e..e182779 100644 --- a/chrome/browser/ui/ash/holding_space/holding_space_downloads_delegate.cc +++ b/chrome/browser/ui/ash/holding_space/holding_space_downloads_delegate.cc
@@ -207,11 +207,13 @@ } // Returns the current progress of the underlying download. + // NOTE: Progress is hidden if the download is dangerous or mixed content. HoldingSpaceProgress GetProgress() const { if (IsComplete(mojo_download_item_.get())) return HoldingSpaceProgress(); return HoldingSpaceProgress(GetReceivedBytes(), GetTotalBytes(), - /*complete=*/false); + /*complete=*/false, + /*hidden=*/IsDangerous() || IsMixedContent()); } // Returns the number of bytes received for the underlying download.
diff --git a/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_arc_tracker.cc b/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_arc_tracker.cc index cab3c2bd..3e4b8f47 100644 --- a/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_arc_tracker.cc +++ b/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_arc_tracker.cc
@@ -226,7 +226,7 @@ // Update |state|. The app must be started, and running state. If visible, // set it as |kVisible|, otherwise, clear the visible bit. auto* proxy = apps::AppServiceProxyFactory::GetForProfile(observed_profile_); - apps::Instance::InstanceKey instance_key(window); + auto instance_key = apps::Instance::InstanceKey::ForWindowBasedApp(window); apps::InstanceState state = proxy->InstanceRegistry().GetState(instance_key); state = static_cast<apps::InstanceState>( state | apps::InstanceState::kStarted | apps::InstanceState::kRunning); @@ -283,7 +283,7 @@ // instance though the window has been closed, and the task has been // destroyed. app_service_controller_->app_service_instance_helper()->OnInstances( - apps::Instance::InstanceKey(window), + apps::Instance::InstanceKey::ForWindowBasedApp(window), it->second.get()->app_shelf_id().app_id(), std::string(), apps::InstanceState::kDestroyed); app_service_controller_->UnregisterWindow(window); @@ -330,7 +330,7 @@ : ArcAppWindow::FullScreenMode::kNonActive); } if (previous_arc_app_window_info->window()) { - apps::Instance::InstanceKey instance_key( + auto instance_key = apps::Instance::InstanceKey::ForWindowBasedApp( previous_arc_app_window_info->window()); apps::InstanceState state = app_service_controller_->app_service_instance_helper() @@ -359,7 +359,7 @@ app_service_controller_->owner()->SetItemStatus( current_arc_app_window_info->shelf_id(), ash::STATUS_RUNNING); - apps::Instance::InstanceKey instance_key(window); + auto instance_key = apps::Instance::InstanceKey::ForWindowBasedApp(window); apps::InstanceState state = app_service_controller_->app_service_instance_helper() ->CalculateActivatedState(instance_key, true /* active */); @@ -669,7 +669,7 @@ aura::Window* const window = it->second.get()->window(); if (window) { app_service_controller_->app_service_instance_helper()->OnInstances( - apps::Instance::InstanceKey(window), + apps::Instance::InstanceKey::ForWindowBasedApp(window), it->second.get()->app_shelf_id().app_id(), std::string(), apps::InstanceState::kDestroyed); app_service_controller_->UnregisterWindow(window);
diff --git a/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_browsertest.cc b/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_browsertest.cc index a8b75f9..3331c30 100644 --- a/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_browsertest.cc +++ b/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_browsertest.cc
@@ -222,21 +222,24 @@ EXPECT_EQ(apps::InstanceState::kStarted | apps::InstanceState::kRunning | apps::InstanceState::kActive | apps::InstanceState::kVisible, GetAppInstanceState(app->id(), - apps::Instance::InstanceKey(*windows.begin()))); + apps::Instance::InstanceKey::ForWindowBasedApp( + *windows.begin()))); const ash::ShelfItem& item = GetLastShelfItem(); // Since it is already active, clicking it should minimize. SelectItem(item.id); EXPECT_EQ(apps::InstanceState::kStarted | apps::InstanceState::kRunning, GetAppInstanceState(app->id(), - apps::Instance::InstanceKey(*windows.begin()))); + apps::Instance::InstanceKey::ForWindowBasedApp( + *windows.begin()))); // Click the item again to activate the app. SelectItem(item.id); EXPECT_EQ(apps::InstanceState::kStarted | apps::InstanceState::kRunning | apps::InstanceState::kActive | apps::InstanceState::kVisible, GetAppInstanceState(app->id(), - apps::Instance::InstanceKey(*windows.begin()))); + apps::Instance::InstanceKey::ForWindowBasedApp( + *windows.begin()))); CloseAppWindow(window); windows = @@ -270,13 +273,15 @@ EXPECT_EQ( apps::InstanceState::kStarted | apps::InstanceState::kRunning | apps::InstanceState::kVisible, - GetAppInstanceState(app->id(), apps::Instance::InstanceKey(window1))); + GetAppInstanceState( + app->id(), apps::Instance::InstanceKey::ForWindowBasedApp(window1))); // The window2 is active. EXPECT_EQ( apps::InstanceState::kStarted | apps::InstanceState::kRunning | apps::InstanceState::kActive | apps::InstanceState::kVisible, - GetAppInstanceState(app->id(), apps::Instance::InstanceKey(window2))); + GetAppInstanceState( + app->id(), apps::Instance::InstanceKey::ForWindowBasedApp(window2))); // Close the second window; confirm the shelf item stays; check the app menu. CloseAppWindow(app_window2); @@ -288,7 +293,8 @@ EXPECT_EQ( apps::InstanceState::kStarted | apps::InstanceState::kRunning | apps::InstanceState::kActive | apps::InstanceState::kVisible, - GetAppInstanceState(app->id(), apps::Instance::InstanceKey(window1))); + GetAppInstanceState( + app->id(), apps::Instance::InstanceKey::ForWindowBasedApp(window1))); // Close the first window; the shelf item should be removed. CloseAppWindow(app_window1); @@ -379,7 +385,8 @@ EXPECT_EQ(apps::InstanceState::kStarted | apps::InstanceState::kRunning | apps::InstanceState::kActive | apps::InstanceState::kVisible, GetAppInstanceState(kLacrosAppId, - apps::Instance::InstanceKey(*windows.begin()))); + apps::Instance::InstanceKey::ForWindowBasedApp( + *windows.begin()))); // Find the Lacros shelf item. int lacros_index = shelf_model()->ItemIndexByAppID(kLacrosAppId); @@ -390,14 +397,16 @@ SelectItem(item.id); EXPECT_EQ(apps::InstanceState::kStarted | apps::InstanceState::kRunning, GetAppInstanceState(kLacrosAppId, - apps::Instance::InstanceKey(*windows.begin()))); + apps::Instance::InstanceKey::ForWindowBasedApp( + *windows.begin()))); // Click the item again to activate the window. SelectItem(item.id); EXPECT_EQ(apps::InstanceState::kStarted | apps::InstanceState::kRunning | apps::InstanceState::kActive | apps::InstanceState::kVisible, GetAppInstanceState(kLacrosAppId, - apps::Instance::InstanceKey(*windows.begin()))); + apps::Instance::InstanceKey::ForWindowBasedApp( + *windows.begin()))); widget->CloseNow(); windows = app_service_proxy_->InstanceRegistry().GetEnclosingAppWindows( @@ -753,13 +762,13 @@ aura::Window* window1 = *windows.begin(); apps::InstanceState latest_state = app_service_proxy_->InstanceRegistry().GetState( - apps::Instance::InstanceKey(window1)); + apps::Instance::InstanceKey::ForWindowBasedApp(window1)); EXPECT_EQ(apps::InstanceState::kStarted | apps::InstanceState::kRunning, latest_state); app_host()->OnTaskSetActive(1); latest_state = app_service_proxy_->InstanceRegistry().GetState( - apps::Instance::InstanceKey(window1)); + apps::Instance::InstanceKey::ForWindowBasedApp(window1)); EXPECT_EQ(apps::InstanceState::kStarted | apps::InstanceState::kRunning | apps::InstanceState::kActive | apps::InstanceState::kVisible, latest_state); @@ -779,14 +788,14 @@ EXPECT_EQ(1u, windows.size()); aura::Window* window2 = *windows.begin(); latest_state = app_service_proxy_->InstanceRegistry().GetState( - apps::Instance::InstanceKey(window2)); + apps::Instance::InstanceKey::ForWindowBasedApp(window2)); EXPECT_EQ(apps::InstanceState::kStarted | apps::InstanceState::kRunning | apps::InstanceState::kActive | apps::InstanceState::kVisible, latest_state); // App1 is inactive. latest_state = app_service_proxy_->InstanceRegistry().GetState( - apps::Instance::InstanceKey(window1)); + apps::Instance::InstanceKey::ForWindowBasedApp(window1)); EXPECT_EQ(apps::InstanceState::kStarted | apps::InstanceState::kRunning | apps::InstanceState::kVisible, latest_state); @@ -794,12 +803,12 @@ // Select the app1 SelectItem(ash::ShelfID(app_id1)); latest_state = app_service_proxy_->InstanceRegistry().GetState( - apps::Instance::InstanceKey(window1)); + apps::Instance::InstanceKey::ForWindowBasedApp(window1)); EXPECT_EQ(apps::InstanceState::kStarted | apps::InstanceState::kRunning | apps::InstanceState::kActive | apps::InstanceState::kVisible, latest_state); latest_state = app_service_proxy_->InstanceRegistry().GetState( - apps::Instance::InstanceKey(window2)); + apps::Instance::InstanceKey::ForWindowBasedApp(window2)); EXPECT_EQ(apps::InstanceState::kStarted | apps::InstanceState::kRunning | apps::InstanceState::kVisible, latest_state); @@ -813,7 +822,7 @@ // App2 is activated. latest_state = app_service_proxy_->InstanceRegistry().GetState( - apps::Instance::InstanceKey(window2)); + apps::Instance::InstanceKey::ForWindowBasedApp(window2)); EXPECT_EQ(apps::InstanceState::kStarted | apps::InstanceState::kRunning | apps::InstanceState::kActive | apps::InstanceState::kVisible, latest_state); @@ -871,11 +880,11 @@ apps::InstanceState latest_state = app_service_proxy_->InstanceRegistry().GetState( - apps::Instance::InstanceKey(window1)); + apps::Instance::InstanceKey::ForWindowBasedApp(window1)); EXPECT_EQ(apps::InstanceState::kStarted | apps::InstanceState::kRunning, latest_state); latest_state = app_service_proxy_->InstanceRegistry().GetState( - apps::Instance::InstanceKey(window2)); + apps::Instance::InstanceKey::ForWindowBasedApp(window2)); EXPECT_EQ(apps::InstanceState::kStarted | apps::InstanceState::kRunning, latest_state); @@ -883,7 +892,7 @@ // the shelf. app_host()->OnTaskSetActive(2); latest_state = app_service_proxy_->InstanceRegistry().GetState( - apps::Instance::InstanceKey(window2)); + apps::Instance::InstanceKey::ForWindowBasedApp(window2)); EXPECT_EQ(apps::InstanceState::kStarted | apps::InstanceState::kRunning | apps::InstanceState::kActive | apps::InstanceState::kVisible, latest_state);
diff --git a/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_shelf_controller.cc b/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_shelf_controller.cc index 74d5ba1..af00ad15 100644 --- a/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_shelf_controller.cc +++ b/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_shelf_controller.cc
@@ -129,7 +129,7 @@ // user, and activates the app windows for the active user. for (auto* window : window_list_) { ash::ShelfID shelf_id = proxy_->InstanceRegistry().GetShelfId( - apps::Instance::InstanceKey(window)); + apps::Instance::InstanceKey::ForWindowBasedApp(window)); if (!shelf_id.IsNull()) { RegisterWindow(window, shelf_id); } else { @@ -184,7 +184,7 @@ widget->IsMinimized()) { // Update |state|. The app must be started, and running state. If visible, // set it as |kVisible|, otherwise, clear the visible bit. - apps::Instance::InstanceKey instance_key(window); + auto instance_key = apps::Instance::InstanceKey::ForWindowBasedApp(window); apps::InstanceState state = app_service_instance_helper_->CalculateVisibilityState( instance_key, /*visible=*/false); @@ -210,9 +210,9 @@ if (GetAppType(shelf_id.app_id) != apps::mojom::AppType::kBuiltIn) return; - app_service_instance_helper_->OnInstances(apps::Instance::InstanceKey(window), - shelf_id.app_id, shelf_id.launch_id, - apps::InstanceState::kUnknown); + app_service_instance_helper_->OnInstances( + apps::Instance::InstanceKey::ForWindowBasedApp(window), shelf_id.app_id, + shelf_id.launch_id, apps::InstanceState::kUnknown); RegisterWindow(window, shelf_id); } @@ -241,7 +241,7 @@ // Update |state|. The app must be started, and running state. If visible, // set it as |kVisible|, otherwise, clear the visible bit. - apps::Instance::InstanceKey instance_key(window); + auto instance_key = apps::Instance::InstanceKey::ForWindowBasedApp(window); apps::InstanceState state = app_service_instance_helper_->CalculateVisibilityState(instance_key, visible); @@ -250,7 +250,8 @@ // Only register the visible non-browser |window| for the active user. if (!visible || shelf_id.app_id == extension_misc::kChromeAppId || - !proxy_->InstanceRegistry().Exists(apps::Instance::InstanceKey(window))) { + !proxy_->InstanceRegistry().Exists( + apps::Instance::InstanceKey::ForWindowBasedApp(window))) { return; } @@ -277,7 +278,7 @@ if (crostini_tracker_) crostini_tracker_->OnWindowDestroying(window); - apps::Instance::InstanceKey instance_key(window); + auto instance_key = apps::Instance::InstanceKey::ForWindowBasedApp(window); // When the window is destroyed, we should search all proxies, because the // window could be teleported from the inactive user, and isn't saved in the // proxy of the active user's profile, but it should still be removed from @@ -398,7 +399,7 @@ auto app_window_it = aura_window_to_app_window_.find(window); if (app_window_it != aura_window_to_app_window_.end() && proxy_->InstanceRegistry().Exists( - apps::Instance::InstanceKey(window))) { + apps::Instance::InstanceKey::ForWindowBasedApp(window))) { RemoveAppWindowFromShelf(app_window_it->second.get()); aura_window_to_app_window_.erase(app_window_it); } @@ -499,7 +500,7 @@ return; } - apps::Instance::InstanceKey instance_key(window); + auto instance_key = apps::Instance::InstanceKey::ForWindowBasedApp(window); apps::InstanceState state = app_service_instance_helper_->CalculateActivatedState(instance_key, active); @@ -667,7 +668,7 @@ for (auto* profile : profile_list_) { auto* proxy = apps::AppServiceProxyFactory::GetForProfile(profile); shelf_id = proxy->InstanceRegistry().GetShelfId( - apps::Instance::InstanceKey(window)); + apps::Instance::InstanceKey::ForWindowBasedApp(window)); if (!shelf_id.IsNull()) break; } @@ -699,7 +700,8 @@ content::BrowserContext* browser_context) { // If the window was created for the active user, register it to show an item // on the shelf. - if (proxy_->InstanceRegistry().Exists(apps::Instance::InstanceKey(window))) { + if (proxy_->InstanceRegistry().Exists( + apps::Instance::InstanceKey::ForWindowBasedApp(window))) { RegisterWindow(window, shelf_id); return; }
diff --git a/chrome/browser/ui/ash/shelf/app_service/app_service_instance_registry_helper.cc b/chrome/browser/ui/ash/shelf/app_service/app_service_instance_registry_helper.cc index d9bc2fb..340c46e 100644 --- a/chrome/browser/ui/ash/shelf/app_service/app_service_instance_registry_helper.cc +++ b/chrome/browser/ui/ash/shelf/app_service/app_service_instance_registry_helper.cc
@@ -236,7 +236,8 @@ // delays the shelf id setting for windows. So check the top window's visible // and activated status when we have the shelf id. window = window->GetToplevelWindow(); - const std::string top_app_id = GetAppId(apps::Instance::InstanceKey(window)); + const std::string top_app_id = + GetAppId(apps::Instance::InstanceKey::ForWindowBasedApp(window)); if (!top_app_id.empty()) app_id = top_app_id; OnWindowVisibilityChanged(ash::ShelfID(app_id), window, window->IsVisible()); @@ -277,7 +278,7 @@ return; } - apps::Instance::InstanceKey instance_key(window); + auto instance_key = apps::Instance::InstanceKey::ForWindowBasedApp(window); apps::InstanceState state = CalculateVisibilityState(instance_key, visible); OnInstances(instance_key, extension_misc::kChromeAppId, std::string(), state); @@ -322,7 +323,7 @@ return; } - apps::Instance::InstanceKey instance_key(window); + auto instance_key = apps::Instance::InstanceKey::ForWindowBasedApp(window); apps::InstanceState state = CalculateActivatedState(instance_key, active); OnInstances(instance_key, extension_misc::kChromeAppId, std::string(), state); @@ -445,7 +446,7 @@ auto* proxy = apps::AppServiceProxyFactory::GetForProfile(profile); bool found = false; proxy->InstanceRegistry().ForOneInstance( - apps::Instance::InstanceKey(window), + apps::Instance::InstanceKey::ForWindowBasedApp(window), [&browser_context, &found](const apps::InstanceUpdate& update) { browser_context = update.BrowserContext(); found = true;
diff --git a/chrome/browser/ui/ash/shelf/app_service/app_service_shelf_context_menu.cc b/chrome/browser/ui/ash/shelf/app_service/app_service_shelf_context_menu.cc index 7351ed1..6cedfca 100644 --- a/chrome/browser/ui/ash/shelf/app_service/app_service_shelf_context_menu.cc +++ b/chrome/browser/ui/ash/shelf/app_service/app_service_shelf_context_menu.cc
@@ -135,7 +135,9 @@ } else if (app_type_ == apps::mojom::AppType::kStandaloneBrowser) { crosapi::BrowserManager::Get()->NewWindow(/*incongnito=*/false); } else { - ash::NewWindowDelegate::GetInstance()->NewWindow(/*incognito=*/false); + ash::NewWindowDelegate::GetInstance()->NewWindow( + /*incognito=*/false, + /*should_trigger_session_restore=*/false); } ash::full_restore::FullRestoreService::MaybeCloseNotification( controller()->profile()); @@ -145,7 +147,9 @@ if (app_type_ == apps::mojom::AppType::kStandaloneBrowser) { crosapi::BrowserManager::Get()->NewWindow(/*incognito=*/true); } else { - ash::NewWindowDelegate::GetInstance()->NewWindow(/*incognito=*/true); + ash::NewWindowDelegate::GetInstance()->NewWindow( + /*incognito=*/true, + /*should_trigger_session_restore=*/false); } ash::full_restore::FullRestoreService::MaybeCloseNotification( controller()->profile());
diff --git a/chrome/browser/ui/ash/shelf/app_window_shelf_item_controller.cc b/chrome/browser/ui/ash/shelf/app_window_shelf_item_controller.cc index a0adbea..e2b9acf 100644 --- a/chrome/browser/ui/ash/shelf/app_window_shelf_item_controller.cc +++ b/chrome/browser/ui/ash/shelf/app_window_shelf_item_controller.cc
@@ -76,7 +76,9 @@ } } - ash::NewWindowDelegate::GetPrimary()->NewWindow(/*incognito=*/false); + ash::NewWindowDelegate::GetPrimary()->NewWindow( + /*incognito=*/false, + /*should_trigger_session_restore=*/true); return true; }
diff --git a/chrome/browser/ui/ash/shelf/browser_shortcut_shelf_item_controller.cc b/chrome/browser/ui/ash/shelf/browser_shortcut_shelf_item_controller.cc index cafb486..b7e0238 100644 --- a/chrome/browser/ui/ash/shelf/browser_shortcut_shelf_item_controller.cc +++ b/chrome/browser/ui/ash/shelf/browser_shortcut_shelf_item_controller.cc
@@ -96,7 +96,9 @@ ash::full_restore::FullRestoreService::MaybeCloseNotification(profile); if (event && (event->flags() & ui::EF_CONTROL_DOWN)) { - ash::NewWindowDelegate::GetInstance()->NewWindow(/*incognito=*/false); + ash::NewWindowDelegate::GetInstance()->NewWindow( + /*incognito=*/false, + /*should_trigger_session_restore=*/true); std::move(callback).Run(ash::SHELF_ACTION_NEW_WINDOW_CREATED, {}); return; } @@ -119,7 +121,9 @@ } if (!last_browser) { - ash::NewWindowDelegate::GetInstance()->NewWindow(/*incognito=*/false); + ash::NewWindowDelegate::GetInstance()->NewWindow( + /*incognito=*/false, + /*should_trigger_session_restore=*/true); std::move(callback).Run(ash::SHELF_ACTION_NEW_WINDOW_CREATED, {}); return; } @@ -257,7 +261,9 @@ } // If there are no suitable browsers we create a new one. if (items.empty()) { - ash::NewWindowDelegate::GetInstance()->NewWindow(/*incognito=*/false); + ash::NewWindowDelegate::GetInstance()->NewWindow( + /*incognito=*/false, + /*should_trigger_session_restore=*/true); return ash::SHELF_ACTION_NEW_WINDOW_CREATED; } Browser* browser = BrowserList::GetInstance()->GetLastActive();
diff --git a/chrome/browser/ui/ash/shelf/extension_shelf_context_menu.cc b/chrome/browser/ui/ash/shelf/extension_shelf_context_menu.cc index ec2cabe..8fe7062e 100644 --- a/chrome/browser/ui/ash/shelf/extension_shelf_context_menu.cc +++ b/chrome/browser/ui/ash/shelf/extension_shelf_context_menu.cc
@@ -176,10 +176,14 @@ SetLaunchType(extensions::LAUNCH_TYPE_FULLSCREEN); break; case ash::MENU_NEW_WINDOW: - ash::NewWindowDelegate::GetInstance()->NewWindow(/*incognito=*/false); + ash::NewWindowDelegate::GetInstance()->NewWindow( + /*incognito=*/false, + /*should_trigger_session_restore=*/false); break; case ash::MENU_NEW_INCOGNITO_WINDOW: - ash::NewWindowDelegate::GetInstance()->NewWindow(/*incognito=*/true); + ash::NewWindowDelegate::GetInstance()->NewWindow( + /*incognito=*/true, + /*should_trigger_session_restore=*/false); break; default: if (extension_items_) {
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc index c522e513..dc82e4f 100644 --- a/chrome/browser/ui/browser.cc +++ b/chrome/browser/ui/browser.cc
@@ -464,6 +464,7 @@ is_trusted_source_(params.trusted_source), session_id_(SessionID::NewUnique()), omit_from_session_restore_(params.omit_from_session_restore), + should_trigger_session_restore_(params.should_trigger_session_restore), cancel_download_confirmation_state_(NOT_PROMPTED), override_bounds_(params.initial_bounds), initial_show_state_(params.initial_show_state),
diff --git a/chrome/browser/ui/browser.h b/chrome/browser/ui/browser.h index 17c3233..7649c59 100644 --- a/chrome/browser/ui/browser.h +++ b/chrome/browser/ui/browser.h
@@ -242,6 +242,12 @@ // Browser should be omitted from being saved/restored by session restore. bool omit_from_session_restore = false; + // Specifies the browser `should_trigger_session_restore` value. If true, a + // new window opening should be treated like the start of a session (with + // potential session restore, startup URLs, etc.). Otherwise, don't restore + // the session. + bool should_trigger_session_restore = true; + // The bounds of the window to open. gfx::Rect initial_bounds; @@ -396,6 +402,9 @@ } const SessionID& session_id() const { return session_id_; } bool omit_from_session_restore() const { return omit_from_session_restore_; } + bool should_trigger_session_restore() const { + return should_trigger_session_restore_; + } BrowserContentSettingBubbleModelDelegate* content_setting_bubble_model_delegate() { return content_setting_bubble_model_delegate_.get(); @@ -1133,6 +1142,11 @@ // restore. bool omit_from_session_restore_ = false; + // If true, a new window opening should be treated like the start of a session + // (with potential session restore, startup URLs, etc.). Otherwise, don't + // restore the session. + const bool should_trigger_session_restore_; + // The model for the toolbar view. std::unique_ptr<LocationBarModel> location_bar_model_;
diff --git a/chrome/browser/ui/browser_commands.cc b/chrome/browser/ui/browser_commands.cc index 0ac2c631..d13f0593 100644 --- a/chrome/browser/ui/browser_commands.cc +++ b/chrome/browser/ui/browser_commands.cc
@@ -437,7 +437,7 @@ return content_restrictions; } -void NewEmptyWindow(Profile* profile) { +void NewEmptyWindow(Profile* profile, bool should_trigger_session_restore) { bool off_the_record = profile->IsOffTheRecord(); PrefService* prefs = profile->GetPrefs(); if (off_the_record) { @@ -460,7 +460,12 @@ base::RecordAction(UserMetricsAction("NewGuestWindow")); else base::RecordAction(UserMetricsAction("NewIncognitoWindow2")); - OpenEmptyWindow(profile->GetPrimaryOTRProfile(/*create_if_needed=*/true)); + OpenEmptyWindow(profile->GetPrimaryOTRProfile(/*create_if_needed=*/true), + should_trigger_session_restore); + } else if (!should_trigger_session_restore) { + base::RecordAction(UserMetricsAction("NewWindow")); + OpenEmptyWindow(profile->GetOriginalProfile(), + /*should_trigger_session_restore=*/false); } else { base::RecordAction(UserMetricsAction("NewWindow")); SessionService* session_service = @@ -474,13 +479,16 @@ } } -Browser* OpenEmptyWindow(Profile* profile) { +Browser* OpenEmptyWindow(Profile* profile, + bool should_trigger_session_restore) { if (Browser::GetCreationStatusForProfile(profile) != Browser::CreationStatus::kOk) { return nullptr; } - Browser* browser = Browser::Create( - Browser::CreateParams(Browser::TYPE_NORMAL, profile, true)); + Browser::CreateParams params = + Browser::CreateParams(Browser::TYPE_NORMAL, profile, true); + params.should_trigger_session_restore = should_trigger_session_restore; + Browser* browser = Browser::Create(params); AddTabAt(browser, GURL(), -1, true); browser->window()->Show(); return browser;
diff --git a/chrome/browser/ui/browser_commands.h b/chrome/browser/ui/browser_commands.h index f304ef05..2e23434 100644 --- a/chrome/browser/ui/browser_commands.h +++ b/chrome/browser/ui/browser_commands.h
@@ -48,13 +48,21 @@ int GetContentRestrictions(const Browser* browser); -// Opens a new window with the default blank tab. -void NewEmptyWindow(Profile* profile); +// Opens a new window. If the |should_trigger_session_restore| is true, a new +// window opening should be treated like the start of a session (with potential +// session restore, startup URLs, etc.). Otherwise, don't restore the session, +// opens a new window with the default blank tab. +void NewEmptyWindow(Profile* profile, + bool should_trigger_session_restore = true); -// Opens a new window with the default blank tab. This bypasses metrics and +// Opens a new window. If the |should_trigger_session_restore| is true, a new +// window opening should be treated like the start of a session (with potential +// session restore, startup URLs, etc.). Otherwise, don't restore the session, +// opens a new window with the default blank tab. This bypasses metrics and // various internal bookkeeping; NewEmptyWindow (above) is preferred. // Returns nullptr if browser creation is not possible. -Browser* OpenEmptyWindow(Profile* profile); +Browser* OpenEmptyWindow(Profile* profile, + bool should_trigger_session_restore = true); // Opens a new window with the tabs from |profile|'s TabRestoreService. void OpenWindowWithRestoredTabs(Profile* profile);
diff --git a/chrome/browser/ui/omnibox/omnibox_pedals_unittest.cc b/chrome/browser/ui/omnibox/omnibox_pedals_unittest.cc index f2a57e3e..3cbe06e 100644 --- a/chrome/browser/ui/omnibox/omnibox_pedals_unittest.cc +++ b/chrome/browser/ui/omnibox/omnibox_pedals_unittest.cc
@@ -190,6 +190,17 @@ "google account control", "google account password change", "google chrome dinosaur", + "find phone", + "manage privacy google", + "manage google ad settings", + "manage settings", + "manage downloads", + "view history", + "share current website", + "manage accessibility", + "chrome fonts", + "manage chrome themes", + "search engines", } }, { "en-GB",
diff --git a/chrome/browser/ui/views/crostini/crostini_app_restart_dialog.cc b/chrome/browser/ui/views/crostini/crostini_app_restart_dialog.cc index d4d9354..51f511e 100644 --- a/chrome/browser/ui/views/crostini/crostini_app_restart_dialog.cc +++ b/chrome/browser/ui/views/crostini/crostini_app_restart_dialog.cc
@@ -48,6 +48,7 @@ std::unique_ptr<views::DialogDelegate> MakeCrostiniAppRestartDelegate( std::unique_ptr<views::View> contents) { auto delegate = std::make_unique<views::DialogDelegate>(); + delegate->set_internal_name("CrostiniAppRestart"); delegate->SetButtons(ui::DIALOG_BUTTON_OK); delegate->SetContentsView(std::move(contents)); delegate->SetModalType(ui::MODAL_TYPE_SYSTEM);
diff --git a/chrome/browser/ui/views/crostini/crostini_app_restart_dialog_unittest.cc b/chrome/browser/ui/views/crostini/crostini_app_restart_dialog_unittest.cc index 6d17a39..12a10fc5 100644 --- a/chrome/browser/ui/views/crostini/crostini_app_restart_dialog_unittest.cc +++ b/chrome/browser/ui/views/crostini/crostini_app_restart_dialog_unittest.cc
@@ -16,11 +16,8 @@ ~CrostiniAppRestartDialogTest() override = default; views::test::WidgetTest::WidgetAutoclosePtr ShowDialog() { - // TODO(ellyjones): the class name being "View" is kind of awkward. It - // should be possible to set the class name even when there is no actual - // class... views::NamedWidgetShownWaiter waiter(views::test::AnyWidgetTestPasskey{}, - "View"); + "CrostiniAppRestart"); crostini::ShowAppRestartDialogForTesting(GetContext()); return views::test::WidgetTest::WidgetAutoclosePtr( waiter.WaitIfNeededAndGet());
diff --git a/chrome/browser/ui/views/select_file_dialog_extension.cc b/chrome/browser/ui/views/select_file_dialog_extension.cc index 4821e16..ad4d59e 100644 --- a/chrome/browser/ui/views/select_file_dialog_extension.cc +++ b/chrome/browser/ui/views/select_file_dialog_extension.cc
@@ -10,6 +10,7 @@ #include <utility> #include "ash/constants/ash_features.h" +#include "ash/public/cpp/tablet_mode.h" #include "base/bind.h" #include "base/callback.h" #include "base/feature_list.h" @@ -41,6 +42,7 @@ #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/views/extensions/extension_dialog.h" +#include "chrome/browser/ui/webui/chromeos/system_web_dialog_delegate.h" #include "extensions/browser/app_window/app_window.h" #include "extensions/browser/app_window/native_app_window.h" #include "extensions/browser/extension_system.h" @@ -184,6 +186,51 @@ } // namespace +// A customization of SystemWebDialogDelegate that provides notifications +// to SelectFileDialogExtension about web dialog closing events. Must be outside +// anonymous namespace for the friend declaration to work. +class SystemFilesAppDialogDelegate : public chromeos::SystemWebDialogDelegate { + public: + SystemFilesAppDialogDelegate(SelectFileDialogExtension* parent, + const std::string& id, + GURL url, + std::u16string title) + : chromeos::SystemWebDialogDelegate(url, title), + id_(id), + parent_(parent) {} + ~SystemFilesAppDialogDelegate() override = default; + + void SetModal(bool modal) { + set_modal_type(modal ? ui::MODAL_TYPE_WINDOW : ui::MODAL_TYPE_NONE); + } + + void GetMinimumDialogSize(gfx::Size* size) const override { + size->set_width(kFileManagerMinimumWidth); + size->set_height(kFileManagerMinimumHeight); + } + + void GetDialogSize(gfx::Size* size) const override { + *size = SystemWebDialogDelegate::ComputeDialogSizeForInternalScreen( + {kFileManagerWidth, kFileManagerHeight}); + } + + void OnDialogShown(content::WebUI* webui) override { + parent_->OnSystemDialogShown(webui->GetWebContents(), id_); + chromeos::SystemWebDialogDelegate::OnDialogShown(webui); + } + + void OnDialogWillClose() override { parent_->OnSystemDialogWillClose(); } + + private: + // The routing ID. We store it so that we can call back into the + // SelectFileDialog to inform it about contents::WebContents and + // the ID associated with it. + const std::string id_; + + // The parent of this delegate. + SelectFileDialogExtension* parent_; +}; + ///////////////////////////////////////////////////////////////////////////// SelectFileDialogExtension::Owner::Owner() = default; @@ -199,7 +246,8 @@ SelectFileDialogExtension::SelectFileDialogExtension( Listener* listener, std::unique_ptr<ui::SelectFilePolicy> policy) - : SelectFileDialog(listener, std::move(policy)) {} + : SelectFileDialog(listener, std::move(policy)), + system_files_app_web_contents_(nullptr) {} SelectFileDialogExtension::~SelectFileDialogExtension() { if (extension_dialog_.get()) @@ -223,6 +271,7 @@ owner_window_ = nullptr; // Release our reference to the underlying dialog to allow it to close. extension_dialog_ = nullptr; + system_files_app_web_contents_ = nullptr; PendingDialog::GetInstance()->Remove(routing_id_); // Actually invoke the appropriate callback on our listener. NotifyListener(); @@ -256,6 +305,18 @@ dialog->GetWidget()->Close(); } +void SelectFileDialogExtension::OnSystemDialogShown( + content::WebContents* web_contents, + const std::string& id) { + system_files_app_web_contents_ = web_contents; + SelectFileDialogExtensionUserData::SetRoutingIdForWebContents(web_contents, + id); +} + +void SelectFileDialogExtension::OnSystemDialogWillClose() { + ExtensionDialogClosing(nullptr); +} + // static void SelectFileDialogExtension::OnFileSelected( RoutingID routing_id, @@ -298,9 +359,66 @@ content::RenderFrameHost* SelectFileDialogExtension::GetMainFrame() { if (extension_dialog_) return extension_dialog_->host()->main_frame_host(); + else if (system_files_app_web_contents_) + return system_files_app_web_contents_->GetMainFrame(); return nullptr; } +GURL SelectFileDialogExtension::MakeDialogURL( + Type type, + const std::u16string& title, + const base::FilePath& default_path, + const FileTypeInfo* file_types, + int file_type_index, + const std::string& search_query, + bool show_android_picker_apps, + Profile* profile) { + base::FilePath download_default_path( + DownloadPrefs::FromBrowserContext(profile)->DownloadPath()); + base::FilePath selection_path = + default_path.IsAbsolute() + ? default_path + : download_default_path.Append(default_path.BaseName()); + base::FilePath fallback_path = profile->last_selected_directory().empty() + ? download_default_path + : profile->last_selected_directory(); + + // Convert the above absolute paths to file system URLs. + GURL selection_url; + if (!file_manager::util::ConvertAbsoluteFilePathToFileSystemUrl( + profile, selection_path, file_manager::util::GetFileManagerURL(), + &selection_url)) { + // Due to the current design, an invalid temporal cache file path may passed + // as |default_path| (crbug.com/178013 #9-#11). In such a case, we use the + // last selected directory as a workaround. Real fix is tracked at + // crbug.com/110119. + if (!file_manager::util::ConvertAbsoluteFilePathToFileSystemUrl( + profile, fallback_path.Append(default_path.BaseName()), + file_manager::util::GetFileManagerURL(), &selection_url)) { + DVLOG(1) << "Unable to resolve the selection URL."; + } + } + + GURL current_directory_url; + base::FilePath current_directory_path = selection_path.DirName(); + if (!file_manager::util::ConvertAbsoluteFilePathToFileSystemUrl( + profile, current_directory_path, + file_manager::util::GetFileManagerURL(), ¤t_directory_url)) { + // Fallback if necessary, see the comment above. + if (!file_manager::util::ConvertAbsoluteFilePathToFileSystemUrl( + profile, fallback_path, file_manager::util::GetFileManagerURL(), + ¤t_directory_url)) { + DVLOG(1) << "Unable to resolve the current directory URL for: " + << fallback_path.value(); + } + } + + return file_manager::util::GetFileManagerMainPageUrlWithParams( + type, title, current_directory_url, selection_url, + default_path.BaseName().value(), file_types, file_type_index, + search_query, show_android_picker_apps); +} + void SelectFileDialogExtension::SelectFileWithFileManagerParams( Type type, const std::u16string& title, @@ -342,81 +460,60 @@ if (PendingExists(routing_id)) return; - base::FilePath download_default_path( - DownloadPrefs::FromBrowserContext(profile_)->DownloadPath()); - - base::FilePath selection_path = default_path.IsAbsolute() ? - default_path : download_default_path.Append(default_path.BaseName()); - - base::FilePath fallback_path = profile_->last_selected_directory().empty() ? - download_default_path : profile_->last_selected_directory(); - - // Convert the above absolute paths to file system URLs. - GURL selection_url; - if (!file_manager::util::ConvertAbsoluteFilePathToFileSystemUrl( - profile_, selection_path, file_manager::util::GetFileManagerURL(), - &selection_url)) { - // Due to the current design, an invalid temporal cache file path may passed - // as |default_path| (crbug.com/178013 #9-#11). In such a case, we use the - // last selected directory as a workaround. Real fix is tracked at - // crbug.com/110119. - if (!file_manager::util::ConvertAbsoluteFilePathToFileSystemUrl( - profile_, fallback_path.Append(default_path.BaseName()), - file_manager::util::GetFileManagerURL(), &selection_url)) { - DVLOG(1) << "Unable to resolve the selection URL."; - } - } - - GURL current_directory_url; - base::FilePath current_directory_path = selection_path.DirName(); - if (!file_manager::util::ConvertAbsoluteFilePathToFileSystemUrl( - profile_, current_directory_path, - file_manager::util::GetFileManagerURL(), ¤t_directory_url)) { - // Fallback if necessary, see the comment above. - if (!file_manager::util::ConvertAbsoluteFilePathToFileSystemUrl( - profile_, fallback_path, file_manager::util::GetFileManagerURL(), - ¤t_directory_url)) { - DVLOG(1) << "Unable to resolve the current directory URL for: " - << fallback_path.value(); - } - } + GURL file_manager_url = SelectFileDialogExtension::MakeDialogURL( + type, title, default_path, file_types, file_type_index, search_query, + show_android_picker_apps, profile_); has_multiple_file_type_choices_ = !file_types || (file_types->extensions.size() > 1); - GURL file_manager_url = - file_manager::util::GetFileManagerMainPageUrlWithParams( - type, title, current_directory_url, selection_url, - default_path.BaseName().value(), file_types, file_type_index, - search_query, show_android_picker_apps); - - ExtensionDialog::InitParams dialog_params( - {kFileManagerWidth, kFileManagerHeight}); - dialog_params.is_modal = (owner.window != nullptr); - dialog_params.min_size = {kFileManagerMinimumWidth, - kFileManagerMinimumHeight}; - dialog_params.title = + std::u16string dialog_title = !title.empty() ? title : file_manager::util::GetSelectFileDialogTitle(type); - dialog_params.title_color = kFilePickerActiveTitleColor; - dialog_params.title_inactive_color = kFilePickerInactiveTitleColor; + gfx::NativeWindow parent_window = + base_window ? base_window->GetNativeWindow() : owner.window; - ExtensionDialog* dialog = ExtensionDialog::Show( - file_manager_url, - base_window ? base_window->GetNativeWindow() : owner.window, profile_, - web_contents, this /* ExtensionDialog::Observer */, dialog_params); - if (!dialog) { - LOG(ERROR) << "Unable to create extension dialog"; - return; +#if BUILDFLAG(IS_CHROMEOS_ASH) + can_resize_ = !ash::TabletMode::IsInTabletMode(); +#endif + + if (ash::features::IsFileManagerSwaEnabled()) { + // SystemFilesAppDialogDelegate is a self-deleting class that calls the + // delete operator once the dialog for which it was created has been closed. + // Hence this memory-leak looking code pattern. + auto* dialog_delegate = new SystemFilesAppDialogDelegate( + this, routing_id, file_manager_url, dialog_title); + dialog_delegate->SetModal(owner.window != nullptr); + dialog_delegate->set_can_resize(can_resize_); + dialog_delegate->ShowSystemDialog(parent_window); + } else { + ExtensionDialog::InitParams dialog_params( + {kFileManagerWidth, kFileManagerHeight}); + dialog_params.is_modal = (owner.window != nullptr); + dialog_params.min_size = {kFileManagerMinimumWidth, + kFileManagerMinimumHeight}; + dialog_params.title = dialog_title; + dialog_params.title_color = kFilePickerActiveTitleColor; + dialog_params.title_inactive_color = kFilePickerInactiveTitleColor; + + ExtensionDialog* dialog = ExtensionDialog::Show( + file_manager_url, parent_window, profile_, web_contents, + /*ExtensionDialogObserver=*/this, dialog_params); + if (!dialog) { + LOG(ERROR) << "Unable to create extension dialog"; + return; + } + + dialog->SetCanResize(can_resize_); + SelectFileDialogExtensionUserData::SetRoutingIdForWebContents( + dialog->host()->host_contents(), routing_id); + + extension_dialog_ = dialog; } - SelectFileDialogExtensionUserData::SetRoutingIdForWebContents( - dialog->host()->host_contents(), routing_id); - // Connect our listener to FileDialogFunction's per-tab callbacks. AddPending(routing_id); - extension_dialog_ = dialog; params_ = params; routing_id_ = routing_id; owner_window_ = owner.window; @@ -445,8 +542,7 @@ } bool SelectFileDialogExtension::IsResizeable() const { - DCHECK(extension_dialog_.get()); - return extension_dialog_->CanResize(); + return can_resize_; } void SelectFileDialogExtension::NotifyListener() {
diff --git a/chrome/browser/ui/views/select_file_dialog_extension.h b/chrome/browser/ui/views/select_file_dialog_extension.h index 5da439b..ff23ab12 100644 --- a/chrome/browser/ui/views/select_file_dialog_extension.h +++ b/chrome/browser/ui/views/select_file_dialog_extension.h
@@ -9,40 +9,42 @@ #include <string> #include <vector> -#include "base/macros.h" #include "base/memory/ref_counted.h" #include "chrome/browser/ui/views/extensions/extension_dialog_observer.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/gfx/native_widget_types.h" // gfx::NativeWindow #include "ui/shell_dialogs/select_file_dialog.h" +#include "url/gurl.h" class ExtensionDialog; class Profile; namespace aura { class Window; -} +} // namespace aura namespace content { class RenderFrameHost; class WebContents; -} +} // namespace content namespace ui { struct SelectedFileInfo; class SelectFilePolicy; -} +} // namespace ui // Shows a dialog box for selecting a file or a folder, using the // file manager extension implementation. -class SelectFileDialogExtension - : public ui::SelectFileDialog, - public ExtensionDialogObserver { +class SelectFileDialogExtension : public ui::SelectFileDialog, + public ExtensionDialogObserver { public: // Opaque ID type for identifying the tab spawned each dialog, unique for // every WebContents or every Android task ID. typedef std::string RoutingID; + SelectFileDialogExtension(const SelectFileDialogExtension&) = delete; + SelectFileDialogExtension& operator=(SelectFileDialogExtension&) = delete; + static SelectFileDialogExtension* Create( ui::SelectFileDialog::Listener* listener, std::unique_ptr<ui::SelectFilePolicy> policy); @@ -65,6 +67,18 @@ const std::vector<ui::SelectedFileInfo>& files); static void OnFileSelectionCanceled(RoutingID routing_id); + // Helper method that given parameters that are passed to the + // SelectFileWithFileManagerParams method creates a URL for launching File + // Manager as a dialog. + static GURL MakeDialogURL(Type type, + const std::u16string& title, + const base::FilePath& default_path, + const FileTypeInfo* file_types, + int file_type_index, + const std::string& search_query, + bool show_android_picker_apps, + Profile* profile); + // Allows access to the extension's main frame for injecting javascript. content::RenderFrameHost* GetMainFrame(); @@ -108,6 +122,12 @@ friend class BaseSelectFileDialogExtensionBrowserTest; friend class SelectFileDialogExtensionTest; friend class SelectFileDialogExtensionTestFactory; + friend class SystemFilesAppDialogDelegate; + + // For the benefit of SystemFilesAppDialogDelegate. + void OnSystemDialogShown(content::WebContents* content, + const std::string& id); + void OnSystemDialogWillClose(); // Object is ref-counted, use Create(). explicit SelectFileDialogExtension( @@ -133,6 +153,11 @@ // Host for the extension that implements this dialog. scoped_refptr<ExtensionDialog> extension_dialog_; + // If System Files App is enabled it stores the web contents associated with + // System File App dialog. Not owned by this class. Set only while System + // Files App dialog is opened. + content::WebContents* system_files_app_web_contents_; + // ID of the tab that spawned this dialog, used to route callbacks. RoutingID routing_id_; @@ -153,9 +178,8 @@ SelectionType selection_type_ = CANCEL; std::vector<ui::SelectedFileInfo> selection_files_; int selection_index_ = 0; + bool can_resize_ = true; void* params_ = nullptr; - - DISALLOW_COPY_AND_ASSIGN(SelectFileDialogExtension); }; #endif // CHROME_BROWSER_UI_VIEWS_SELECT_FILE_DIALOG_EXTENSION_H_
diff --git a/chrome/browser/ui/views/select_file_dialog_extension_unittest.cc b/chrome/browser/ui/views/select_file_dialog_extension_unittest.cc index 7fac07da..c0757afd 100644 --- a/chrome/browser/ui/views/select_file_dialog_extension_unittest.cc +++ b/chrome/browser/ui/views/select_file_dialog_extension_unittest.cc
@@ -4,8 +4,13 @@ #include "chrome/browser/ui/views/select_file_dialog_extension.h" +#include <memory> + +#include "ash/constants/ash_features.h" +#include "base/feature_list.h" #include "base/files/file_path.h" #include "base/macros.h" +#include "base/test/scoped_feature_list.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/shell_dialogs/select_file_policy.h" #include "ui/shell_dialogs/selected_file_info.h" @@ -17,11 +22,22 @@ } // namespace +// Enumerates possible version of tests. We support extension mode (Chrome App) +// and System App (SWA) mode. +enum TestMode { + EXTENSION_FILES_APP_MODE, + SYSTEM_FILES_APP_MODE, +}; + // Must be a class so it can be a friend of SelectFileDialogExtension. -class SelectFileDialogExtensionTest : public testing::Test { +class SelectFileDialogExtensionTest + : public ::testing::TestWithParam<TestMode> { public: - SelectFileDialogExtensionTest() {} - ~SelectFileDialogExtensionTest() override {} + SelectFileDialogExtensionTest() { + if (GetParam() == SYSTEM_FILES_APP_MODE) { + feature_list_.InitAndEnableFeature(ash::features::kFilesSWA); + } + } static SelectFileDialogExtension* CreateDialog( ui::SelectFileDialog::Listener* listener) { @@ -35,6 +51,8 @@ } private: + base::test::ScopedFeatureList feature_list_; + DISALLOW_COPY_AND_ASSIGN(SelectFileDialogExtensionTest); }; @@ -88,9 +106,9 @@ scoped_refptr<SelectFileDialogExtension> dialog_; }; -TEST_F(SelectFileDialogExtensionTest, FileSelected) { +TEST_P(SelectFileDialogExtensionTest, FileSelected) { const int kFileIndex = 5; - std::unique_ptr<TestListener> listener(new TestListener); + auto listener = std::make_unique<TestListener>(); scoped_refptr<SelectFileDialogExtension> dialog = CreateDialog(listener.get()); // Simulate selecting a file. @@ -98,29 +116,34 @@ SelectFileDialogExtension::OnFileSelected(kDefaultRoutingID, info, kFileIndex); // Simulate closing the dialog so the listener gets invoked. - dialog->ExtensionDialogClosing(NULL); + dialog->ExtensionDialogClosing(nullptr); EXPECT_TRUE(listener->selected()); EXPECT_EQ(kFileIndex, listener->file_index()); } -TEST_F(SelectFileDialogExtensionTest, FileSelectionCanceled) { - std::unique_ptr<TestListener> listener(new TestListener); +TEST_P(SelectFileDialogExtensionTest, FileSelectionCanceled) { + auto listener = std::make_unique<TestListener>(); scoped_refptr<SelectFileDialogExtension> dialog = CreateDialog(listener.get()); // Simulate cancelling the dialog. SelectFileDialogExtension::OnFileSelectionCanceled(kDefaultRoutingID); // Simulate closing the dialog so the listener gets invoked. - dialog->ExtensionDialogClosing(NULL); + dialog->ExtensionDialogClosing(nullptr); EXPECT_FALSE(listener->selected()); EXPECT_EQ(-1, listener->file_index()); } -TEST_F(SelectFileDialogExtensionTest, SelfDeleting) { +TEST_P(SelectFileDialogExtensionTest, SelfDeleting) { SelfDeletingClient* client = new SelfDeletingClient(); // Ensure we don't crash or trip an Address Sanitizer warning about // use-after-free. ui::SelectedFileInfo file_info; SelectFileDialogExtension::OnFileSelected(kDefaultRoutingID, file_info, 0); // Simulate closing the dialog so the listener gets invoked. - client->dialog()->ExtensionDialogClosing(NULL); + client->dialog()->ExtensionDialogClosing(nullptr); } + +INSTANTIATE_TEST_SUITE_P(SelectFileDialogExtension, + SelectFileDialogExtensionTest, + ::testing::Values(EXTENSION_FILES_APP_MODE, + SYSTEM_FILES_APP_MODE));
diff --git a/chrome/browser/ui/web_applications/web_app_file_handling_browsertest.cc b/chrome/browser/ui/web_applications/web_app_file_handling_browsertest.cc index d117ead..21d2e6e2a 100644 --- a/chrome/browser/ui/web_applications/web_app_file_handling_browsertest.cc +++ b/chrome/browser/ui/web_applications/web_app_file_handling_browsertest.cc
@@ -1172,4 +1172,42 @@ #endif // BUILDFLAG(IS_CHROMEOS_ASH) +class WebAppFileHandlingIconBrowserTest + : public InProcessBrowserTest, + public testing::WithParamInterface<bool> { + public: + WebAppFileHandlingIconBrowserTest() { + feature_list_.InitWithFeatures({blink::features::kFileHandlingAPI, + blink::features::kFileHandlingIcons}, + {}); + FileHandlerManager::SetIconsSupportedByOsForTesting(GetParam()); + } + ~WebAppFileHandlingIconBrowserTest() override = default; + + private: + base::test::ScopedFeatureList feature_list_; +}; + +IN_PROC_BROWSER_TEST_P(WebAppFileHandlingIconBrowserTest, Basic) { + ASSERT_TRUE(embedded_test_server()->Start()); + const GURL app_url( + embedded_test_server()->GetURL("/web_app_file_handling/icons_app.html")); + const AppId app_id = InstallWebAppFromManifest(browser(), app_url); + auto* provider = WebAppProvider::Get(browser()->profile()); + const WebApp* web_app = provider->registrar().GetAppById(app_id); + ASSERT_TRUE(web_app); + + ASSERT_EQ(1U, web_app->file_handlers().size()); + if (FileHandlerManager::IconsEnabled()) { + ASSERT_EQ(1U, web_app->file_handlers()[0].icons.size()); + EXPECT_EQ(20, web_app->file_handlers()[0].icons[0].square_size_px); + } else { + EXPECT_TRUE(web_app->file_handlers()[0].icons.empty()); + } +} + +// TODO(crbug.com/1218210): add more tests. + +INSTANTIATE_TEST_SUITE_P(, WebAppFileHandlingIconBrowserTest, testing::Bool()); + } // namespace web_app
diff --git a/chrome/browser/ui/webid/account_selection_view.h b/chrome/browser/ui/webid/account_selection_view.h index 71cd652..e599170 100644 --- a/chrome/browser/ui/webid/account_selection_view.h +++ b/chrome/browser/ui/webid/account_selection_view.h
@@ -16,8 +16,8 @@ using Account = content::IdentityRequestAccount; -// This class represents the interface used for communicating between the Touch -// To Fill controller with the Android frontend. +// This class represents the interface used for communicating between the +// identity dialog controller with the Android frontend. class AccountSelectionView { public: class Delegate { @@ -39,11 +39,13 @@ // Instructs the view to show the provided |accounts| to the user. // |rp_url| is the relying party's url which is normally the current page's // url, and |idp_url| is the identity provider's url that is providing - // the accounts. After user interaction either OnAccountSelected() or + // the accounts. |is_auto_sign_in| represents whether this is an auto sign in + // flow. After user interaction either OnAccountSelected() or // OnDismiss() gets invoked. virtual void Show(const GURL& rp_url, const GURL& idp_url, - base::span<const Account> accounts) = 0; + base::span<const Account> accounts, + bool is_auto_sign_in) = 0; protected: Delegate* delegate_ = nullptr;
diff --git a/chrome/browser/ui/webid/identity_dialog_controller.cc b/chrome/browser/ui/webid/identity_dialog_controller.cc index 4354560..c670a1e11 100644 --- a/chrome/browser/ui/webid/identity_dialog_controller.cc +++ b/chrome/browser/ui/webid/identity_dialog_controller.cc
@@ -99,6 +99,7 @@ content::WebContents* idp_web_contents, const GURL& idp_url, AccountList accounts, + bool is_auto_sign_in, AccountSelectionCallback on_selected) { // IDP scheme is expected to always be `https://`. CHECK(idp_url.SchemeIs(url::kHttpsScheme)); @@ -112,7 +113,7 @@ if (!account_view_) account_view_ = AccountSelectionView::Create(this); - account_view_->Show(rp_url, idp_url, accounts); + account_view_->Show(rp_url, idp_url, accounts, is_auto_sign_in); #endif }
diff --git a/chrome/browser/ui/webid/identity_dialog_controller.h b/chrome/browser/ui/webid/identity_dialog_controller.h index 59fcbcd..747a1b8 100644 --- a/chrome/browser/ui/webid/identity_dialog_controller.h +++ b/chrome/browser/ui/webid/identity_dialog_controller.h
@@ -52,6 +52,7 @@ content::WebContents* idp_web_contents, const GURL& idp_url, AccountList accounts, + bool is_auto_sign_in, AccountSelectionCallback on_selected) override; void ShowIdProviderWindow(content::WebContents* rp_web_contents,
diff --git a/chrome/browser/ui/webui/settings/chromeos/device_section.cc b/chrome/browser/ui/webui/settings/chromeos/device_section.cc index 11e1cc8f..e833c28b 100644 --- a/chrome/browser/ui/webui/settings/chromeos/device_section.cc +++ b/chrome/browser/ui/webui/settings/chromeos/device_section.cc
@@ -591,9 +591,6 @@ IDS_SETTINGS_DISPLAY_NIGHT_LIGHT_SCHEDULE_NEVER}, {"displayNightLightScheduleSunsetToSunRise", IDS_SETTINGS_DISPLAY_NIGHT_LIGHT_SCHEDULE_SUNSET_TO_SUNRISE}, - {"displayNightLightStartTime", - IDS_SETTINGS_DISPLAY_NIGHT_LIGHT_START_TIME}, - {"displayNightLightStopTime", IDS_SETTINGS_DISPLAY_NIGHT_LIGHT_STOP_TIME}, {"displayNightLightText", IDS_SETTINGS_DISPLAY_NIGHT_LIGHT_TEXT}, {"displayNightLightTemperatureLabel", IDS_SETTINGS_DISPLAY_NIGHT_LIGHT_TEMPERATURE_LABEL},
diff --git a/chrome/browser/ui/webui/settings/chromeos/main_section.cc b/chrome/browser/ui/webui/settings/chromeos/main_section.cc index c5bc09d..526499a 100644 --- a/chrome/browser/ui/webui/settings/chromeos/main_section.cc +++ b/chrome/browser/ui/webui/settings/chromeos/main_section.cc
@@ -121,6 +121,7 @@ {"dismiss", IDS_SETTINGS_DISMISS}, {"done", IDS_DONE}, {"edit", IDS_SETTINGS_EDIT}, + {"endTime", IDS_SETTINGS_END_TIME}, {"extensionsLinkTooltip", IDS_SETTINGS_MENU_EXTENSIONS_LINK_TOOLTIP}, {"learnMore", IDS_LEARN_MORE}, {"shortcutBannerDismissed", IDS_SETTINGS_SHORTCUT_BANNER_DISMISSED}, @@ -134,6 +135,7 @@ {"searchResultsBubbleText", IDS_SEARCH_RESULTS_BUBBLE_TEXT}, {"settings", IDS_SETTINGS_SETTINGS}, {"settingsAltPageTitle", IDS_SETTINGS_ALT_PAGE_TITLE}, + {"startTime", IDS_SETTINGS_START_TIME}, {"subpageArrowRoleDescription", IDS_SETTINGS_SUBPAGE_BUTTON}, {"subpageBackButtonAriaLabel", IDS_SETTINGS_SUBPAGE_BACK_BUTTON_ARIA_LABEL},
diff --git a/chrome/browser/vr/win/graphics_delegate_win.cc b/chrome/browser/vr/win/graphics_delegate_win.cc index 3696a42..99b7b13 100644 --- a/chrome/browser/vr/win/graphics_delegate_win.cc +++ b/chrome/browser/vr/win/graphics_delegate_win.cc
@@ -184,11 +184,11 @@ gpu_memory_buffer_ = nullptr; } -void GraphicsDelegateWin::SetVRDisplayInfo( - device::mojom::VRDisplayInfoPtr info) { +void GraphicsDelegateWin::UpdateViews( + std::vector<device::mojom::XRViewPtr> views) { // Store the first left and right views. VRUiHostImpl::SetVRDisplayInfo has // already validated that the left and right views exist. - for (auto& view : info->views) { + for (auto& view : views) { if (view->eye == device::mojom::XREye::kLeft) { left_ = std::move(view); } else if (view->eye == device::mojom::XREye::kRight) { @@ -200,6 +200,11 @@ DCHECK(right_); } +void GraphicsDelegateWin::SetVRDisplayInfo( + device::mojom::VRDisplayInfoPtr info) { + UpdateViews(std::move(info->views)); +} + FovRectangles GraphicsDelegateWin::GetRecommendedFovs() { DCHECK(left_); DCHECK(right_); @@ -226,15 +231,16 @@ namespace { -CameraModel CameraModelViewProjFromXRView(const device::mojom::XRViewPtr& view, - gfx::Transform head_from_world) { +CameraModel CameraModelViewProjFromXRView( + const device::mojom::XRViewPtr& view) { CameraModel model = {}; - DCHECK(view->head_from_eye.IsInvertible()); - gfx::Transform eye_from_head; - if (view->head_from_eye.GetInverse(&eye_from_head)) { - model.view_matrix = eye_from_head * head_from_world; - } + // TODO(https://crbug.com/1070380): mojo space is currently equivalent to + // world space, so the view matrix is world_from_view. + model.view_matrix = view->mojo_from_view; + + bool is_invertible = model.view_matrix.GetInverse(&model.view_matrix); + DCHECK(is_invertible); float up_tan = tanf(view->field_of_view->up_degrees * base::kPiFloat / 180.0); float left_tan = @@ -264,13 +270,13 @@ RenderInfo info; info.head_pose = head_pose; - CameraModel left = CameraModelViewProjFromXRView(left_, head_pose); + CameraModel left = CameraModelViewProjFromXRView(left_); left.eye_type = kLeftEye; left.viewport = gfx::Rect(0, 0, left_->viewport.width(), left_->viewport.height()); info.left_eye_model = left; - CameraModel right = CameraModelViewProjFromXRView(right_, head_pose); + CameraModel right = CameraModelViewProjFromXRView(right_); right.eye_type = kRightEye; right.viewport = gfx::Rect(left_->viewport.width(), 0, right_->viewport.width(),
diff --git a/chrome/browser/vr/win/graphics_delegate_win.h b/chrome/browser/vr/win/graphics_delegate_win.h index 1de884e..198a580 100644 --- a/chrome/browser/vr/win/graphics_delegate_win.h +++ b/chrome/browser/vr/win/graphics_delegate_win.h
@@ -50,6 +50,7 @@ void ResetMemoryBuffer(); bool BindContext(); void ClearContext(); + void UpdateViews(std::vector<device::mojom::XRViewPtr> views); private: // GraphicsDelegate:
diff --git a/chrome/browser/vr/win/vr_browser_renderer_thread_win.cc b/chrome/browser/vr/win/vr_browser_renderer_thread_win.cc index 30365f4..5857f52 100644 --- a/chrome/browser/vr/win/vr_browser_renderer_thread_win.cc +++ b/chrome/browser/vr/win/vr_browser_renderer_thread_win.cc
@@ -392,6 +392,11 @@ ret->pose->position = gfx::Point3F(); } + ret->views.resize(data->views.size()); + for (size_t i = 0; i < data->views.size(); i++) { + ret->views[i] = std::move(data->views[i]); + } + ret->frame_id = data->frame_id; return ret; @@ -413,11 +418,16 @@ return; } + data = ValidateFrameData(std::move(data)); + + // If we're getting poses and should be drawing, StartOverlay() should have + // initialized graphics_. + DCHECK(graphics_); + graphics_->UpdateViews(std::move(data->views)); + if (!PreRender()) return; - data = ValidateFrameData(std::move(data)); - // Deliver pose to input and scheduler. DCHECK(data); DCHECK(data->pose);
diff --git a/chrome/browser/web_applications/components/file_handler_manager.h b/chrome/browser/web_applications/components/file_handler_manager.h index f4b1de6..dfdcfaf 100644 --- a/chrome/browser/web_applications/components/file_handler_manager.h +++ b/chrome/browser/web_applications/components/file_handler_manager.h
@@ -51,6 +51,11 @@ // completed this can be removed. int TriggerFileHandlerCleanupForTesting(); + // Called by tests to enable file handling icon infrastructure on a platform + // independently of whether it's needed or used in production. Note that the + // feature flag must also separately be enabled. + static void SetIconsSupportedByOsForTesting(bool value); + // Set a callback which is fired when the file handling expiry time is // updated. void SetOnFileHandlingExpiryUpdatedForTesting( @@ -105,6 +110,9 @@ // Indicates whether file handlers have been registered for an app. bool AreFileHandlersEnabled(const AppId& app_id) const; + // Returns true when the system supports file type association icons. + static bool IconsEnabled(); + protected: Profile* profile() const { return profile_; } WebAppRegistrar* registrar() { return registrar_; }
diff --git a/chrome/browser/web_applications/components/web_app_file_handler_registration.cc b/chrome/browser/web_applications/components/web_app_file_handler_registration.cc index c4bda194..9700b1d9 100644 --- a/chrome/browser/web_applications/components/web_app_file_handler_registration.cc +++ b/chrome/browser/web_applications/components/web_app_file_handler_registration.cc
@@ -18,6 +18,10 @@ return false; } +bool FileHandlingIconsSupportedByOs() { + return false; +} + void RegisterFileHandlersWithOs(const AppId& app_id, const std::string& app_name, Profile* profile,
diff --git a/chrome/browser/web_applications/components/web_app_file_handler_registration.h b/chrome/browser/web_applications/components/web_app_file_handler_registration.h index 9086b59e..75317ee 100644 --- a/chrome/browser/web_applications/components/web_app_file_handler_registration.h +++ b/chrome/browser/web_applications/components/web_app_file_handler_registration.h
@@ -24,6 +24,9 @@ // know how to register file handlers. bool ShouldRegisterFileHandlersWithOs(); +// Returns true if file type association icons are supported by the OS. +bool FileHandlingIconsSupportedByOs(); + // Do OS-specific registration to handle opening files with the specified // |file_extensions| and |mime_types| with the PWA with the specified |app_id|. // This may also involve creating a shim app to launch Chrome from.
diff --git a/chrome/browser/web_applications/components/web_app_file_handler_registration_mac.cc b/chrome/browser/web_applications/components/web_app_file_handler_registration_mac.cc index f1563c0..f1a70f0a 100644 --- a/chrome/browser/web_applications/components/web_app_file_handler_registration_mac.cc +++ b/chrome/browser/web_applications/components/web_app_file_handler_registration_mac.cc
@@ -10,6 +10,11 @@ return true; } +bool FileHandlingIconsSupportedByOs() { + // TODO(crbug/1218237): implement and flip this to true. + return false; +} + void RegisterFileHandlersWithOs(const AppId& app_id, const std::string& app_name, Profile* profile,
diff --git a/chrome/browser/web_applications/components/web_app_file_handler_registration_win.cc b/chrome/browser/web_applications/components/web_app_file_handler_registration_win.cc index 7718b98..32158a1 100644 --- a/chrome/browser/web_applications/components/web_app_file_handler_registration_win.cc +++ b/chrome/browser/web_applications/components/web_app_file_handler_registration_win.cc
@@ -26,6 +26,11 @@ return true; } +bool FileHandlingIconsSupportedByOs() { + // TODO(crbug/1218234): implement and flip this to true. + return false; +} + void RegisterFileHandlersWithOsTask( const AppId& app_id, const std::wstring& app_name,
diff --git a/chrome/browser/web_applications/components/web_app_install_utils.cc b/chrome/browser/web_applications/components/web_app_install_utils.cc index fa53bf6..24e9d1a9 100644 --- a/chrome/browser/web_applications/components/web_app_install_utils.cc +++ b/chrome/browser/web_applications/components/web_app_install_utils.cc
@@ -13,7 +13,10 @@ #include "base/strings/utf_string_conversions.h" #include "base/time/time.h" #include "chrome/browser/banners/app_banner_manager_desktop.h" +#include "chrome/browser/web_applications/components/file_handler_manager.h" +#include "chrome/browser/web_applications/components/web_app_file_handler_registration.h" #include "chrome/browser/web_applications/components/web_app_icon_generator.h" +#include "chrome/browser/web_applications/components/web_app_utils.h" #include "chrome/common/chrome_features.h" #include "components/services/app_service/public/cpp/share_target.h" #include "components/webapps/browser/banners/app_banner_manager.h" @@ -216,6 +219,82 @@ return protocol_handlers; } +void PopulateShortcutItemIcons(WebApplicationInfo* web_app_info, + const IconsMap& icons_map) { + web_app_info->shortcuts_menu_icon_bitmaps.clear(); + for (auto& shortcut : web_app_info->shortcuts_menu_item_infos) { + IconBitmaps shortcut_icon_bitmaps; + + for (IconPurpose purpose : kIconPurposes) { + std::map<SquareSizePx, SkBitmap> bitmaps; + for (const auto& icon : + shortcut.GetShortcutIconInfosForPurpose(purpose)) { + auto it = icons_map.find(icon.url); + if (it != icons_map.end()) { + std::set<SquareSizePx> sizes_to_generate; + sizes_to_generate.emplace(icon.square_size_px); + SizeToBitmap resized_bitmaps( + ConstrainBitmapsToSizes(it->second, sizes_to_generate)); + + // Don't overwrite as a shortcut item could have multiple icon urls. + bitmaps.insert(resized_bitmaps.begin(), resized_bitmaps.end()); + } + } + shortcut_icon_bitmaps.SetBitmapsForPurpose(purpose, std::move(bitmaps)); + } + + web_app_info->shortcuts_menu_icon_bitmaps.emplace_back( + std::move(shortcut_icon_bitmaps)); + } +} + +// Reconcile the file handling icons that were specified in the manifest with +// the icons we were successfully able to download. Store the actual bitmaps and +// update the icon metadata in `web_app_info`. +void PopulateFileHandlingIcons(WebApplicationInfo* web_app_info, + const IconsMap& icons_map) { + IconsMap& other_icon_bitmaps = web_app_info->other_icon_bitmaps; + other_icon_bitmaps.clear(); + + // Before starting, each `apps::IconInfo` in `web_app_info` has a source URL + // and a purpose, but no size. Replace with structs that copy the URL and + // purpose and set the size based on what is found in `icons_map`. + for (auto& file_handler : web_app_info->file_handlers) { + if (!FileHandlerManager::IconsEnabled()) { + DCHECK(file_handler.icons.empty()); + continue; + } + + std::vector<apps::IconInfo> icon_infos; + + for (const auto& icon_info_without_size : file_handler.icons) { + const GURL& src = icon_info_without_size.url; + // Only store bitmaps for this URL if it's the first time we've seen it. + bool bitmaps_already_saved_for_url = + other_icon_bitmaps.find(src) != other_icon_bitmaps.end(); + const auto& downloaded_bitmaps_for_url = icons_map.find(src); + if (downloaded_bitmaps_for_url == icons_map.end()) + continue; + + for (const SkBitmap& bitmap : downloaded_bitmaps_for_url->second) { + // Filter out non-square or too large icons. + if (bitmap.width() != bitmap.height() || bitmap.width() > kMaxIconSize) + continue; + + // Add the size to the FileHandler icon metadata. + apps::IconInfo icon_info_with_size(icon_info_without_size); + icon_info_with_size.square_size_px = bitmap.width(); + icon_infos.push_back(std::move(icon_info_with_size)); + + // Add the bitmap to `other_icon_bitmaps`. + if (!bitmaps_already_saved_for_url) + other_icon_bitmaps[src].push_back(bitmap); + } + } + file_handler.icons = std::move(icon_infos); + } +} + } // namespace apps::FileHandlers CreateFileHandlersFromManifest( @@ -239,6 +318,28 @@ web_app_file_handler.accept.push_back(std::move(web_app_accept_entry)); } + if (FileHandlerManager::IconsEnabled()) { + for (const auto& image_resource : manifest_file_handler->icons) { + for (const auto manifest_purpose : image_resource.purpose) { + apps::IconInfo icon_info; + icon_info.url = image_resource.src; + // The sizes are not filled in until images are actually downloaded. + switch (manifest_purpose) { + case IconPurpose::ANY: + icon_info.purpose = apps::IconInfo::Purpose::kAny; + break; + case IconPurpose::MONOCHROME: + icon_info.purpose = apps::IconInfo::Purpose::kMonochrome; + break; + case IconPurpose::MASKABLE: + icon_info.purpose = apps::IconInfo::Purpose::kMaskable; + break; + } + web_app_file_handler.icons.push_back(std::move(icon_info)); + } + } + } + web_app_file_handlers.push_back(std::move(web_app_file_handler)); if (web_app_file_handlers.size() == kMaxFileHandlers && @@ -388,36 +489,22 @@ } } + // File handling icons. + for (const auto& file_handler : web_app_info.file_handlers) { + for (const auto& icon : file_handler.icons) { + if (!icon.url.is_valid()) + continue; + web_app_info_icon_urls.push_back(icon.url); + } + } + return web_app_info_icon_urls; } -void PopulateShortcutItemIcons(WebApplicationInfo* web_app_info, - const IconsMap& icons_map) { - web_app_info->shortcuts_menu_icon_bitmaps.clear(); - for (auto& shortcut : web_app_info->shortcuts_menu_item_infos) { - IconBitmaps shortcut_icon_bitmaps; - - for (IconPurpose purpose : kIconPurposes) { - std::map<SquareSizePx, SkBitmap> bitmaps; - for (const auto& icon : - shortcut.GetShortcutIconInfosForPurpose(purpose)) { - auto it = icons_map.find(icon.url); - if (it != icons_map.end()) { - std::set<SquareSizePx> sizes_to_generate; - sizes_to_generate.emplace(icon.square_size_px); - SizeToBitmap resized_bitmaps( - ConstrainBitmapsToSizes(it->second, sizes_to_generate)); - - // Don't overwrite as a shortcut item could have multiple icon urls. - bitmaps.insert(resized_bitmaps.begin(), resized_bitmaps.end()); - } - } - shortcut_icon_bitmaps.SetBitmapsForPurpose(purpose, std::move(bitmaps)); - } - - web_app_info->shortcuts_menu_icon_bitmaps.emplace_back( - std::move(shortcut_icon_bitmaps)); - } +void PopulateOtherIcons(WebApplicationInfo* web_app_info, + const IconsMap& icons_map) { + PopulateShortcutItemIcons(web_app_info, icons_map); + PopulateFileHandlingIcons(web_app_info, icons_map); } void PopulateProductIcons(WebApplicationInfo* web_app_info,
diff --git a/chrome/browser/web_applications/components/web_app_install_utils.h b/chrome/browser/web_applications/components/web_app_install_utils.h index b9c3f23..67e6181 100644 --- a/chrome/browser/web_applications/components/web_app_install_utils.h +++ b/chrome/browser/web_applications/components/web_app_install_utils.h
@@ -49,12 +49,11 @@ std::vector<GURL> GetValidIconUrlsToDownload( const WebApplicationInfo& web_app_info); -// Populate shortcut item icon maps in WebApplicationInfo using the IconsMap. -// This ignores icons that might have already existed in `web_app_info`. -// TODO(estade): also save bitmaps in `icons_map` that are relevant to file -// handling in `web_app_info->other_icon_bitmaps`. -void PopulateShortcutItemIcons(WebApplicationInfo* web_app_info, - const IconsMap& icons_map); +// Populate non-product icons in WebApplicationInfo using the IconsMap. This +// currently covers shortcut item icons and file handler icons. It ignores +// icons that might have already existed in `web_app_info`. +void PopulateOtherIcons(WebApplicationInfo* web_app_info, + const IconsMap& icons_map); // Populates main product icons into `web_app_info`. This method filters icons // from `icons_map` to only square icons and ensures that the necessary-sized
diff --git a/chrome/browser/web_applications/components/web_app_install_utils_unittest.cc b/chrome/browser/web_applications/components/web_app_install_utils_unittest.cc index 5432aa52..66db1c0 100644 --- a/chrome/browser/web_applications/components/web_app_install_utils_unittest.cc +++ b/chrome/browser/web_applications/components/web_app_install_utils_unittest.cc
@@ -11,14 +11,18 @@ #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "base/test/scoped_feature_list.h" +#include "chrome/browser/web_applications/components/file_handler_manager.h" #include "chrome/browser/web_applications/components/web_app_constants.h" #include "chrome/browser/web_applications/components/web_app_icon_generator.h" +#include "chrome/browser/web_applications/components/web_app_utils.h" #include "chrome/browser/web_applications/components/web_application_info.h" #include "chrome/browser/web_applications/test/web_app_icon_test_utils.h" #include "chrome/common/chrome_features.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/public/common/features.h" #include "third_party/blink/public/mojom/manifest/manifest.mojom.h" +#include "ui/gfx/image/image_unittest_util.h" +#include "ui/gfx/skia_util.h" #include "url/gurl.h" #include "url/origin.h" @@ -630,7 +634,7 @@ icons_map.emplace(kIconUrl2, bmp2); icons_map.emplace(GURL("http://www.chromium.org/shortcuts/icon3.png"), bmp3); - PopulateShortcutItemIcons(&web_app_info, icons_map); + PopulateOtherIcons(&web_app_info, icons_map); } // Ensure that reused shortcut icons are processed correctly. @@ -640,7 +644,7 @@ EXPECT_EQ(0U, web_app_info.shortcuts_menu_icon_bitmaps[1].maskable.size()); } -// Tests that when PopulateShortcutItemIcons is called with no shortcut icon +// Tests that when PopulateOtherItemIcons is called with no shortcut icon // urls specified, no data is written to shortcuts_menu_item_infos. TEST(WebAppInstallUtils, PopulateShortcutItemIconsNoShortcutIcons) { WebApplicationInfo web_app_info; @@ -652,7 +656,7 @@ icons_map.emplace(GURL("http://www.chromium.org/shortcuts/icon2.png"), bmp2); icons_map.emplace(GURL("http://www.chromium.org/shortcuts/icon3.png"), bmp3); - PopulateShortcutItemIcons(&web_app_info, icons_map); + PopulateOtherIcons(&web_app_info, icons_map); EXPECT_EQ(0U, web_app_info.shortcuts_menu_item_infos.size()); } @@ -748,43 +752,204 @@ } } -TEST(WebAppInstallUtils, CreateFileHandlersFromManifest_MaxFileHandlers) { - const GURL start_url = GURL("https://www.example.com/index.html"); - - auto action_url = [&start_url](unsigned index) { - return start_url.Resolve(base::StringPrintf("a%u", index)); - }; - - auto mime_type = [](unsigned index) { - return base::StringPrintf("application/x-%u", index); - }; - - auto extension = [](unsigned index) { - return base::StringPrintf(".e%u", index); - }; - - // Add more than |kMaxFileHandlers| file handlers. - std::vector<blink::mojom::ManifestFileHandlerPtr> manifest_file_handlers; - for (unsigned i = 0; i <= 2 * kMaxFileHandlers; ++i) { - auto file_handler = blink::mojom::ManifestFileHandler::New(); - file_handler->action = action_url(i); - file_handler->name = base::UTF8ToUTF16(base::StringPrintf("n%u", i)); - file_handler->accept[base::UTF8ToUTF16(mime_type(i))] = { - base::UTF8ToUTF16(extension(i))}; - manifest_file_handlers.push_back(std::move(file_handler)); +class FileHandlersFromManifestTest : public ::testing::TestWithParam<bool> { + public: + FileHandlersFromManifestTest() { + feature_list_.InitWithFeatures({blink::features::kFileHandlingIcons}, {}); + FileHandlerManager::SetIconsSupportedByOsForTesting(GetParam()); } + ~FileHandlersFromManifestTest() override = default; + + protected: + static std::vector<blink::mojom::ManifestFileHandlerPtr> + CreateManifestFileHandlers(unsigned count) { + std::vector<blink::mojom::ManifestFileHandlerPtr> manifest_file_handlers; + for (unsigned i = 0; i < count; ++i) { + auto file_handler = blink::mojom::ManifestFileHandler::New(); + file_handler->action = MakeActionUrl(i); + file_handler->name = base::UTF8ToUTF16(base::StringPrintf("n%u", i)); + file_handler->accept[base::UTF8ToUTF16(MakeMimeType(i))] = { + base::UTF8ToUTF16(MakeExtension(i))}; + + blink::Manifest::ImageResource icon; + icon.src = MakeImageUrl(i); + icon.sizes = {{16, 16}, {32, 32}, {64, 64}}; + icon.purpose = {blink::mojom::ManifestImageResource_Purpose::ANY}; + file_handler->icons.push_back(std::move(icon)); + + blink::Manifest::ImageResource icon2; + icon2.src = MakeImageUrlForSecondImage(i); + icon2.sizes = {{16, 16}}; + icon2.purpose = {blink::mojom::ManifestImageResource_Purpose::ANY, + blink::mojom::ManifestImageResource_Purpose::MASKABLE}; + file_handler->icons.push_back(std::move(icon2)); + + manifest_file_handlers.push_back(std::move(file_handler)); + } + return manifest_file_handlers; + } + + static GURL MakeActionUrl(unsigned index) { + return GetStartUrl().Resolve(base::StringPrintf("a%u", index)); + } + + static GURL MakeImageUrl(unsigned index) { + return GetStartUrl().Resolve(base::StringPrintf("image%u.png", index)); + } + + static GURL MakeImageUrlForSecondImage(unsigned index) { + return GetStartUrl().Resolve(base::StringPrintf("image%u-2.png", index)); + } + + static std::string MakeMimeType(unsigned index) { + return base::StringPrintf("application/x-%u", index); + } + + static std::string MakeExtension(unsigned index) { + return base::StringPrintf(".e%u", index); + } + + static GURL GetStartUrl() { + return GURL("https://www.example.com/index.html"); + } + + base::test::ScopedFeatureList feature_list_; +}; + +TEST_P(FileHandlersFromManifestTest, Basic) { + std::vector<blink::mojom::ManifestFileHandlerPtr> manifest_file_handlers = + CreateManifestFileHandlers(6); + apps::FileHandlers file_handlers = - CreateFileHandlersFromManifest(manifest_file_handlers, start_url); - EXPECT_EQ(file_handlers.size(), kMaxFileHandlers); - for (unsigned i = 0; i < kMaxFileHandlers; ++i) { - EXPECT_EQ(file_handlers[i].action, action_url(i)); - EXPECT_EQ(file_handlers[i].accept.size(), 1U); - EXPECT_EQ(file_handlers[i].accept[0].mime_type, mime_type(i)); + CreateFileHandlersFromManifest(manifest_file_handlers, GetStartUrl()); + ASSERT_EQ(file_handlers.size(), 6U); + for (unsigned i = 0; i < 6U; ++i) { + EXPECT_EQ(file_handlers[i].action, MakeActionUrl(i)); + ASSERT_EQ(file_handlers[i].accept.size(), 1U); + EXPECT_EQ(file_handlers[i].accept[0].mime_type, MakeMimeType(i)); EXPECT_EQ(file_handlers[i].accept[0].file_extensions.size(), 1U); EXPECT_EQ(*file_handlers[i].accept[0].file_extensions.begin(), - extension(i)); + MakeExtension(i)); + + if (FileHandlerManager::IconsEnabled()) { + ASSERT_EQ(file_handlers[i].icons.size(), 3U); + + // The manifest-specified `sizes` are ignored. + EXPECT_FALSE(file_handlers[i].icons[0].square_size_px); + EXPECT_EQ(MakeImageUrl(i), file_handlers[i].icons[0].url); + EXPECT_EQ(apps::IconInfo::Purpose::kAny, + file_handlers[i].icons[0].purpose); + + EXPECT_FALSE(file_handlers[i].icons[1].square_size_px); + EXPECT_EQ(MakeImageUrlForSecondImage(i), file_handlers[i].icons[1].url); + EXPECT_EQ(apps::IconInfo::Purpose::kAny, + file_handlers[i].icons[1].purpose); + + EXPECT_FALSE(file_handlers[i].icons[2].square_size_px); + EXPECT_EQ(MakeImageUrlForSecondImage(i), file_handlers[i].icons[2].url); + EXPECT_EQ(apps::IconInfo::Purpose::kMaskable, + file_handlers[i].icons[2].purpose); + } else { + EXPECT_TRUE(file_handlers[i].icons.empty()); + } } } +TEST_P(FileHandlersFromManifestTest, MaxFileHandlers) { + // Add more than |kMaxFileHandlers| file handlers. + std::vector<blink::mojom::ManifestFileHandlerPtr> manifest_file_handlers = + CreateManifestFileHandlers(2 * kMaxFileHandlers); + + apps::FileHandlers file_handlers = + CreateFileHandlersFromManifest(manifest_file_handlers, GetStartUrl()); + EXPECT_EQ(file_handlers.size(), kMaxFileHandlers); + for (unsigned i = 0; i < kMaxFileHandlers; ++i) { + EXPECT_EQ(file_handlers[i].action, MakeActionUrl(i)); + EXPECT_EQ(file_handlers[i].accept.size(), 1U); + EXPECT_EQ(file_handlers[i].accept[0].mime_type, MakeMimeType(i)); + EXPECT_EQ(file_handlers[i].accept[0].file_extensions.size(), 1U); + EXPECT_EQ(*file_handlers[i].accept[0].file_extensions.begin(), + MakeExtension(i)); + } +} + +TEST_P(FileHandlersFromManifestTest, PopulateFileHandlerIcons) { + if (!FileHandlerManager::IconsEnabled()) + return; + + std::vector<blink::mojom::ManifestFileHandlerPtr> manifest_file_handlers = + CreateManifestFileHandlers(1); + WebApplicationInfo web_app_info; + web_app_info.file_handlers = + CreateFileHandlersFromManifest(manifest_file_handlers, GetStartUrl()); + + const GURL first_image_url = MakeImageUrl(0); + const GURL second_image_url = MakeImageUrlForSecondImage(0); + IconsMap icons_map; + // The first URL returns two valid bitmaps and one invalid (non-square), which + // should be ignored. + std::vector<SkBitmap> bmps1 = {CreateSquareIcon(17, SK_ColorWHITE), + CreateSquareIcon(29, SK_ColorBLUE), + gfx::test::CreateBitmap(16, 15)}; + icons_map.emplace(first_image_url, bmps1); + std::vector<SkBitmap> bmps2 = {CreateSquareIcon(79, SK_ColorRED), + CreateSquareIcon(134, SK_ColorRED)}; + icons_map.emplace(second_image_url, bmps2); + PopulateOtherIcons(&web_app_info, icons_map); + + // Make sure bitmaps are copied from `icons_map` into `web_app_info`. + // Images downloaded from two distinct URLs. + ASSERT_EQ(2U, web_app_info.other_icon_bitmaps.size()); + // First URL correlates to two bitmaps. + ASSERT_EQ(2U, web_app_info.other_icon_bitmaps[first_image_url].size()); + EXPECT_TRUE( + gfx::BitmapsAreEqual(web_app_info.other_icon_bitmaps[first_image_url][0], + icons_map[first_image_url][0])); + EXPECT_TRUE( + gfx::BitmapsAreEqual(web_app_info.other_icon_bitmaps[first_image_url][1], + icons_map[first_image_url][1])); + // Second URL correlates to two more bitmaps. + ASSERT_EQ(2U, web_app_info.other_icon_bitmaps[second_image_url].size()); + EXPECT_TRUE( + gfx::BitmapsAreEqual(web_app_info.other_icon_bitmaps[second_image_url][0], + icons_map[second_image_url][0])); + EXPECT_TRUE( + gfx::BitmapsAreEqual(web_app_info.other_icon_bitmaps[second_image_url][1], + icons_map[second_image_url][1])); + + // We end up with one file handler with 6 icon infos. The second URL produces + // 4 IconInfos because it has two bitmaps and two purposes: 2 x 2 = 4. + ASSERT_EQ(1U, web_app_info.file_handlers.size()); + + // The metadata we expect to be saved after icons are finished downloading and + // processing. Note that the icon sizes saved to `apps::FileHandler::icons` + // match downloaded sizes, not those specified in the manifest. + struct { + GURL expected_url; + apps::IconInfo::SquareSizePx expected_size; + apps::IconInfo::Purpose expected_purpose; + } expectations[] = { + {first_image_url, 17, apps::IconInfo::Purpose::kAny}, + {first_image_url, 29, apps::IconInfo::Purpose::kAny}, + {second_image_url, 79, apps::IconInfo::Purpose::kAny}, + {second_image_url, 134, apps::IconInfo::Purpose::kAny}, + {second_image_url, 79, apps::IconInfo::Purpose::kMaskable}, + {second_image_url, 134, apps::IconInfo::Purpose::kMaskable}, + }; + + const size_t num_expectations = + sizeof(expectations) / sizeof(expectations[0]); + ASSERT_EQ(num_expectations, web_app_info.file_handlers[0].icons.size()); + + for (size_t i = 0; i < num_expectations; ++i) { + const auto& icon = web_app_info.file_handlers[0].icons[i]; + EXPECT_EQ(expectations[i].expected_url, icon.url); + EXPECT_EQ(expectations[i].expected_size, icon.square_size_px); + EXPECT_EQ(expectations[i].expected_purpose, icon.purpose); + } +} + +INSTANTIATE_TEST_SUITE_P(, FileHandlersFromManifestTest, testing::Bool()); + } // namespace web_app
diff --git a/chrome/browser/web_applications/components/web_app_run_on_os_login_win_unittest.cc b/chrome/browser/web_applications/components/web_app_run_on_os_login_win_unittest.cc index 49eb540b..12480a70 100644 --- a/chrome/browser/web_applications/components/web_app_run_on_os_login_win_unittest.cc +++ b/chrome/browser/web_applications/components/web_app_run_on_os_login_win_unittest.cc
@@ -6,9 +6,11 @@ #include <vector> +#include "base/base_paths_win.h" #include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/strings/utf_string_conversions.h" +#include "base/test/scoped_path_override.h" #include "base/win/shortcut.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/web_applications/components/web_app_constants.h" @@ -88,6 +90,9 @@ std::vector<base::FilePath> shortcuts = GetShortcuts(); EXPECT_EQ(shortcuts.size(), 0u); } + + private: + base::ScopedPathOverride override_user_startup{base::DIR_USER_STARTUP}; }; TEST_F(WebAppRunOnOsLoginWinTest, Register) {
diff --git a/chrome/browser/web_applications/components/web_app_stubs.cc b/chrome/browser/web_applications/components/web_app_stubs.cc index 61f7bcf..c420827 100644 --- a/chrome/browser/web_applications/components/web_app_stubs.cc +++ b/chrome/browser/web_applications/components/web_app_stubs.cc
@@ -16,6 +16,10 @@ return false; } +bool FileHandlingIconsSupportedByOs() { + return false; +} + void RegisterFileHandlersWithOs(const AppId& app_id, const std::string& app_name, Profile* profile,
diff --git a/chrome/browser/web_applications/file_handler_manager.cc b/chrome/browser/web_applications/file_handler_manager.cc index 2126156..2b53a4cc 100644 --- a/chrome/browser/web_applications/file_handler_manager.cc +++ b/chrome/browser/web_applications/file_handler_manager.cc
@@ -36,10 +36,14 @@ // // Do not change this value, because it is persisted to disk. const double kMaxOriginTrialExpiryTime = 9007199254740; -} // namespace -bool FileHandlerManager::disable_automatic_file_handler_cleanup_for_testing_ = - false; +// Used to enable running tests on platforms that don't support file handling +// icons. +absl::optional<bool> g_icons_supported_by_os_override; + +bool g_disable_automatic_file_handler_cleanup_for_testing = false; + +} // namespace FileHandlerManager::FileHandlerManager(Profile* profile) : profile_(profile) {} @@ -52,8 +56,7 @@ void FileHandlerManager::Start() { DCHECK(registrar_); - if (!FileHandlerManager:: - disable_automatic_file_handler_cleanup_for_testing_) { + if (!g_disable_automatic_file_handler_cleanup_for_testing) { content::GetUIThreadTaskRunner({base::TaskPriority::BEST_EFFORT}) ->PostTask( FROM_HERE, @@ -71,6 +74,11 @@ return CleanupAfterOriginTrials(); } +// static +void FileHandlerManager::SetIconsSupportedByOsForTesting(bool value) { + g_icons_supported_by_os_override = value; +} + void FileHandlerManager::SetOnFileHandlingExpiryUpdatedForTesting( base::RepeatingCallback<void()> on_file_handling_expiry_updated) { on_file_handling_expiry_updated_for_testing_ = @@ -202,6 +210,13 @@ return GetBoolWebAppPref(profile()->GetPrefs(), app_id, kFileHandlersEnabled); } +// static +bool FileHandlerManager::IconsEnabled() { + return g_icons_supported_by_os_override.value_or( + FileHandlingIconsSupportedByOs()) && + base::FeatureList::IsEnabled(blink::features::kFileHandlingIcons); +} + void FileHandlerManager::OnOriginTrialExpiryTimeReceived( mojo::AssociatedRemote<blink::mojom::FileHandlingExpiry> /*interface*/, const AppId& app_id, @@ -239,7 +254,7 @@ } void FileHandlerManager::DisableAutomaticFileHandlerCleanupForTesting() { - disable_automatic_file_handler_cleanup_for_testing_ = true; + g_disable_automatic_file_handler_cleanup_for_testing = true; } int FileHandlerManager::CleanupAfterOriginTrials() {
diff --git a/chrome/browser/web_applications/manifest_update_task.cc b/chrome/browser/web_applications/manifest_update_task.cc index 9e3a6eb..1c81c24 100644 --- a/chrome/browser/web_applications/manifest_update_task.cc +++ b/chrome/browser/web_applications/manifest_update_task.cc
@@ -361,8 +361,7 @@ stage_ = Stage::kPendingAppIdentityCheck; Observe(nullptr); - PopulateShortcutItemIcons(&web_application_info_.value(), - downloaded_icons_map); + PopulateOtherIcons(&web_application_info_.value(), downloaded_icons_map); if (!AllowUnpromptedNameUpdate(app_id_, registrar_) && !AllowUnpromptedIconUpdate(app_id_, registrar_) &&
diff --git a/chrome/browser/web_applications/proto/web_app.proto b/chrome/browser/web_applications/proto/web_app.proto index 91d1e269..a929d75 100644 --- a/chrome/browser/web_applications/proto/web_app.proto +++ b/chrome/browser/web_applications/proto/web_app.proto
@@ -27,6 +27,7 @@ message WebAppFileHandlerProto { required string action = 1; repeated WebAppFileHandlerAcceptProto accept = 2; + repeated sync_pb.WebAppIconInfo icon_infos = 3; } message WebAppProtocolHandler {
diff --git a/chrome/browser/web_applications/test/web_app_test_utils.cc b/chrome/browser/web_applications/test/web_app_test_utils.cc index e9f8471..67abc8c4 100644 --- a/chrome/browser/web_applications/test/web_app_test_utils.cc +++ b/chrome/browser/web_applications/test/web_app_test_utils.cc
@@ -68,6 +68,8 @@ file_handler.action = GURL("https://example.com/open-" + suffix_str); file_handler.accept.push_back(std::move(accept_entry1)); file_handler.accept.push_back(std::move(accept_entry2)); + file_handler.icons.emplace_back(GURL("https://example.com/image.png"), 16); + file_handler.icons.emplace_back(GURL("https://example.com/image2.png"), 48); file_handlers.push_back(std::move(file_handler)); }
diff --git a/chrome/browser/web_applications/web_app_database.cc b/chrome/browser/web_applications/web_app_database.cc index 2efcedf..d550761 100644 --- a/chrome/browser/web_applications/web_app_database.cc +++ b/chrome/browser/web_applications/web_app_database.cc
@@ -12,6 +12,7 @@ #include "base/callback.h" #include "base/containers/contains.h" #include "base/strings/utf_string_conversions.h" +#include "chrome/browser/web_applications/components/file_handler_manager.h" #include "chrome/browser/web_applications/components/web_app_chromeos_data.h" #include "chrome/browser/web_applications/components/web_app_helpers.h" #include "chrome/browser/web_applications/components/web_app_utils.h" @@ -328,6 +329,11 @@ for (const auto& file_extension : accept_entry.file_extensions) accept_entry_proto->add_file_extensions(file_extension); } + + for (const apps::IconInfo& icon_info : file_handler.icons) { + *(file_handler_proto->add_icon_infos()) = + AppIconInfoToSyncProto(icon_info); + } } if (web_app.share_target()) { @@ -688,6 +694,16 @@ file_handler.accept.push_back(std::move(accept_entry)); } + if (FileHandlerManager::IconsEnabled()) { + absl::optional<std::vector<apps::IconInfo>> parsed_icon_infos = + ParseAppIconInfos("WebApp", file_handler_proto.icon_infos()); + if (!parsed_icon_infos.has_value()) { + // ParseAppIconInfos() reports any errors. + return nullptr; + } + file_handler.icons = std::move(parsed_icon_infos.value()); + } + file_handlers.push_back(std::move(file_handler)); } web_app->SetFileHandlers(std::move(file_handlers));
diff --git a/chrome/browser/web_applications/web_app_file_handler_registration_linux.cc b/chrome/browser/web_applications/web_app_file_handler_registration_linux.cc index 104bbbd1..b4c9f6ac 100644 --- a/chrome/browser/web_applications/web_app_file_handler_registration_linux.cc +++ b/chrome/browser/web_applications/web_app_file_handler_registration_linux.cc
@@ -141,6 +141,11 @@ return true; } +bool FileHandlingIconsSupportedByOs() { + // File type icons are not supported on Linux: see https://crbug.com/1218235 + return false; +} + void RegisterFileHandlersWithOs(const AppId& app_id, const std::string& app_name, Profile* profile,
diff --git a/chrome/browser/web_applications/web_app_install_task.cc b/chrome/browser/web_applications/web_app_install_task.cc index d21755a..030ee8f 100644 --- a/chrome/browser/web_applications/web_app_install_task.cc +++ b/chrome/browser/web_applications/web_app_install_task.cc
@@ -704,7 +704,7 @@ DCHECK(web_app_info); PopulateProductIcons(web_app_info.get(), &icons_map); - PopulateShortcutItemIcons(web_app_info.get(), icons_map); + PopulateOtherIcons(web_app_info.get(), icons_map); install_finalizer_->FinalizeInstall( *web_app_info, finalize_options, @@ -721,7 +721,7 @@ DCHECK(web_app_info); PopulateProductIcons(web_app_info.get(), &icons_map); - PopulateShortcutItemIcons(web_app_info.get(), icons_map); + PopulateOtherIcons(web_app_info.get(), icons_map); if (background_installation_) { DCHECK(!dialog_callback_); @@ -749,7 +749,7 @@ if (update_product_icons) PopulateProductIcons(web_app_info.get(), &icons_map); - PopulateShortcutItemIcons(web_app_info.get(), icons_map); + PopulateOtherIcons(web_app_info.get(), icons_map); install_finalizer_->FinalizeUpdate( *web_app_info, web_contents(),
diff --git a/chrome/browser/web_applications/web_app_proto_utils.cc b/chrome/browser/web_applications/web_app_proto_utils.cc index e2c1ac6a..292690e 100644 --- a/chrome/browser/web_applications/web_app_proto_utils.cc +++ b/chrome/browser/web_applications/web_app_proto_utils.cc
@@ -6,6 +6,8 @@ #include "third_party/blink/public/mojom/manifest/manifest.mojom.h" +#include "components/services/app_service/public/cpp/icon_info.h" + namespace web_app { namespace { @@ -26,6 +28,22 @@ } } +absl::optional<apps::IconInfo::Purpose> SyncPurposeToIconInfoPurpose( + sync_pb::WebAppIconInfo_Purpose purpose) { + switch (purpose) { + // Treat UNSPECIFIED purpose as invalid. It means a new purpose was added + // that this client does not understand. + case sync_pb::WebAppIconInfo_Purpose_UNSPECIFIED: + return absl::nullopt; + case sync_pb::WebAppIconInfo_Purpose_ANY: + return apps::IconInfo::Purpose::kAny; + case sync_pb::WebAppIconInfo_Purpose_MASKABLE: + return apps::IconInfo::Purpose::kMaskable; + case sync_pb::WebAppIconInfo_Purpose_MONOCHROME: + return apps::IconInfo::Purpose::kMonochrome; + } +} + sync_pb::WebAppIconInfo_Purpose BlinkPurposeToSyncPurpose( blink::mojom::ManifestImageResource_Purpose purpose) { switch (purpose) { @@ -38,6 +56,18 @@ } } +sync_pb::WebAppIconInfo_Purpose IconInfoPurposeToSyncPurpose( + apps::IconInfo::Purpose purpose) { + switch (purpose) { + case apps::IconInfo::Purpose::kAny: + return sync_pb::WebAppIconInfo_Purpose_ANY; + case apps::IconInfo::Purpose::kMonochrome: + return sync_pb::WebAppIconInfo_Purpose_MONOCHROME; + case apps::IconInfo::Purpose::kMaskable: + return sync_pb::WebAppIconInfo_Purpose_MASKABLE; + } +} + } // namespace absl::optional<std::vector<WebApplicationIconInfo>> ParseWebAppIconInfos( @@ -78,6 +108,44 @@ return icon_infos; } +absl::optional<std::vector<apps::IconInfo>> ParseAppIconInfos( + const char* container_name_for_logging, + RepeatedIconInfosProto icon_infos_proto) { + std::vector<apps::IconInfo> icon_infos; + for (const sync_pb::WebAppIconInfo& icon_info_proto : icon_infos_proto) { + apps::IconInfo icon_info; + + if (icon_info_proto.has_size_in_px()) + icon_info.square_size_px = icon_info_proto.size_in_px(); + + if (!icon_info_proto.has_url()) { + DLOG(ERROR) << container_name_for_logging << " IconInfo has missing url"; + return absl::nullopt; + } + icon_info.url = GURL(icon_info_proto.url()); + if (!icon_info.url.is_valid()) { + DLOG(ERROR) << container_name_for_logging << " IconInfo has invalid url: " + << icon_info.url.possibly_invalid_spec(); + return absl::nullopt; + } + + if (icon_info_proto.has_purpose()) { + absl::optional<apps::IconInfo::Purpose> opt_purpose = + SyncPurposeToIconInfoPurpose(icon_info_proto.purpose()); + if (!opt_purpose.has_value()) + return absl::nullopt; + icon_info.purpose = opt_purpose.value(); + } else { + // Treat unset purpose as ANY so that old data without the field is + // interpreted correctly. + icon_info.purpose = apps::IconInfo::Purpose::kAny; + } + + icon_infos.push_back(std::move(icon_info)); + } + return icon_infos; +} + sync_pb::WebAppSpecifics WebAppToSyncProto(const WebApp& app) { sync_pb::WebAppSpecifics sync_proto; if (app.manifest_id().has_value()) @@ -115,6 +183,17 @@ return icon_info_proto; } +sync_pb::WebAppIconInfo AppIconInfoToSyncProto( + const apps::IconInfo& icon_info) { + sync_pb::WebAppIconInfo icon_info_proto; + if (icon_info.square_size_px.has_value()) + icon_info_proto.set_size_in_px(icon_info.square_size_px.value()); + DCHECK(!icon_info.url.is_empty()); + icon_info_proto.set_url(icon_info.url.spec()); + icon_info_proto.set_purpose(IconInfoPurposeToSyncPurpose(icon_info.purpose)); + return icon_info_proto; +} + absl::optional<WebApp::SyncFallbackData> ParseSyncFallbackDataStruct( const sync_pb::WebAppSpecifics& sync_proto) { WebApp::SyncFallbackData parsed_sync_fallback_data;
diff --git a/chrome/browser/web_applications/web_app_proto_utils.h b/chrome/browser/web_applications/web_app_proto_utils.h index bdab41df..90f9d2a2d 100644 --- a/chrome/browser/web_applications/web_app_proto_utils.h +++ b/chrome/browser/web_applications/web_app_proto_utils.h
@@ -12,6 +12,10 @@ #include "components/sync/protocol/web_app_specifics.pb.h" #include "third_party/abseil-cpp/absl/types/optional.h" +namespace apps { +struct IconInfo; +} + namespace web_app { enum class RunOnOsLoginMode; @@ -23,6 +27,13 @@ const char* container_name_for_logging, RepeatedIconInfosProto icon_infos_proto); +// As above, but uses the type defined in //components. TODO(estade): replace +// `WebApplicationIconInfo` with `apps::IconInfo` and eliminate this +// duplication. +absl::optional<std::vector<apps::IconInfo>> ParseAppIconInfos( + const char* container_name_for_logging, + RepeatedIconInfosProto icon_infos_proto); + // Use the given |app| to populate a |WebAppSpecifics| sync proto. sync_pb::WebAppSpecifics WebAppToSyncProto(const WebApp& app); @@ -30,6 +41,11 @@ sync_pb::WebAppIconInfo WebAppIconInfoToSyncProto( const WebApplicationIconInfo& icon_info); +// As above, but uses the type defined in //components. TODO(estade): replace +// `WebApplicationIconInfo` with `apps::IconInfo` and eliminate this +// duplication. +sync_pb::WebAppIconInfo AppIconInfoToSyncProto(const apps::IconInfo& icon_info); + absl::optional<WebApp::SyncFallbackData> ParseSyncFallbackDataStruct( const sync_pb::WebAppSpecifics& sync_proto);
diff --git a/chrome/browser/web_applications/web_app_unittest.cc b/chrome/browser/web_applications/web_app_unittest.cc index 09c3a3f..e6f396b8 100644 --- a/chrome/browser/web_applications/web_app_unittest.cc +++ b/chrome/browser/web_applications/web_app_unittest.cc
@@ -264,7 +264,16 @@ "file_extensions": [ ".13087720410a", ".13087720410b" ], "mime_type": "application/13087720410+bar" } ], - "action": "https://example.com/open-13087720410" + "action": "https://example.com/open-13087720410", + "icons": [ { + "purpose": 0, + "square_size_px": 16, + "url": "https://example.com/image.png" + }, { + "purpose": 0, + "square_size_px": 48, + "url": "https://example.com/image2.png" + } ] }, { "accept": [ { "file_extensions": [ ".13087720411a", ".13087720411b" ], @@ -273,7 +282,16 @@ "file_extensions": [ ".13087720411a", ".13087720411b" ], "mime_type": "application/13087720411+bar" } ], - "action": "https://example.com/open-13087720411" + "action": "https://example.com/open-13087720411", + "icons": [ { + "purpose": 0, + "square_size_px": 16, + "url": "https://example.com/image.png" + }, { + "purpose": 0, + "square_size_px": 48, + "url": "https://example.com/image2.png" + } ] }, { "accept": [ { "file_extensions": [ ".13087720412a", ".13087720412b" ], @@ -282,7 +300,16 @@ "file_extensions": [ ".13087720412a", ".13087720412b" ], "mime_type": "application/13087720412+bar" } ], - "action": "https://example.com/open-13087720412" + "action": "https://example.com/open-13087720412", + "icons": [ { + "purpose": 0, + "square_size_px": 16, + "url": "https://example.com/image.png" + }, { + "purpose": 0, + "square_size_px": 48, + "url": "https://example.com/image2.png" + } ] }, { "accept": [ { "file_extensions": [ ".13087720413a", ".13087720413b" ], @@ -291,7 +318,16 @@ "file_extensions": [ ".13087720413a", ".13087720413b" ], "mime_type": "application/13087720413+bar" } ], - "action": "https://example.com/open-13087720413" + "action": "https://example.com/open-13087720413", + "icons": [ { + "purpose": 0, + "square_size_px": 16, + "url": "https://example.com/image.png" + }, { + "purpose": 0, + "square_size_px": 48, + "url": "https://example.com/image2.png" + } ] }, { "accept": [ { "file_extensions": [ ".13087720414a", ".13087720414b" ], @@ -300,7 +336,16 @@ "file_extensions": [ ".13087720414a", ".13087720414b" ], "mime_type": "application/13087720414+bar" } ], - "action": "https://example.com/open-13087720414" + "action": "https://example.com/open-13087720414", + "icons": [ { + "purpose": 0, + "square_size_px": 16, + "url": "https://example.com/image.png" + }, { + "purpose": 0, + "square_size_px": 48, + "url": "https://example.com/image2.png" + } ] } ], "icon_infos": [ { "purpose": "ANY",
diff --git a/chrome/services/sharing/nearby/nearby_connections.cc b/chrome/services/sharing/nearby/nearby_connections.cc index 4a901b62..d7db9b0 100644 --- a/chrome/services/sharing/nearby/nearby_connections.cc +++ b/chrome/services/sharing/nearby/nearby_connections.cc
@@ -18,7 +18,6 @@ #include "chromeos/services/nearby/public/mojom/webrtc.mojom.h" #include "services/network/public/mojom/p2p.mojom.h" #include "third_party/nearby/src/cpp/core/core.h" -#include "third_party/nearby/src/cpp/core/internal/offline_service_controller.h" namespace location { namespace nearby { @@ -26,127 +25,6 @@ namespace { -// Delegates all ServiceController calls to the ServiceController instance -// passed to its constructor. This proxy class is required because although we -// share one ServiceController among multiple Cores, each Core takes ownership -// of the pointer that it is provided. Using this proxy allows each Core to -// delete the pointer it is provided without deleting the shared instance. -class ServiceControllerProxy : public ServiceController { - public: - explicit ServiceControllerProxy( - std::unique_ptr<ServiceController>& inner_service_controller) - : inner_service_controller_(inner_service_controller) {} - ~ServiceControllerProxy() override = default; - - // ServiceController: - Status StartAdvertising(ClientProxy* client, - const std::string& service_id, - const ConnectionOptions& options, - const ConnectionRequestInfo& info) override { - if (!inner_service_controller_) - return {Status::kError}; - return inner_service_controller_->StartAdvertising(client, service_id, - options, info); - } - - void StopAdvertising(ClientProxy* client) override { - if (!inner_service_controller_) - return; - inner_service_controller_->StopAdvertising(client); - } - - Status StartDiscovery(ClientProxy* client, - const std::string& service_id, - const ConnectionOptions& options, - const DiscoveryListener& listener) override { - if (!inner_service_controller_) - return {Status::kError}; - return inner_service_controller_->StartDiscovery(client, service_id, - options, listener); - } - - void StopDiscovery(ClientProxy* client) override { - if (!inner_service_controller_) - return; - inner_service_controller_->StopDiscovery(client); - } - - void InjectEndpoint(ClientProxy* client, - const std::string& service_id, - const OutOfBandConnectionMetadata& metadata) override { - if (!inner_service_controller_) - return; - inner_service_controller_->InjectEndpoint(client, service_id, metadata); - } - - Status RequestConnection(ClientProxy* client, - const std::string& endpoint_id, - const ConnectionRequestInfo& info, - const ConnectionOptions& options) override { - if (!inner_service_controller_) - return {Status::kError}; - return inner_service_controller_->RequestConnection(client, endpoint_id, - info, options); - } - - Status AcceptConnection(ClientProxy* client, - const std::string& endpoint_id, - const PayloadListener& listener) override { - return inner_service_controller_->AcceptConnection(client, endpoint_id, - listener); - } - - Status RejectConnection(ClientProxy* client, - const std::string& endpoint_id) override { - if (!inner_service_controller_) - return {Status::kError}; - return inner_service_controller_->RejectConnection(client, endpoint_id); - } - - void InitiateBandwidthUpgrade(ClientProxy* client, - const std::string& endpoint_id) override { - if (!inner_service_controller_) - return; - inner_service_controller_->InitiateBandwidthUpgrade(client, endpoint_id); - } - - void SendPayload(ClientProxy* client, - const std::vector<std::string>& endpoint_ids, - Payload payload) override { - if (!inner_service_controller_) - return; - inner_service_controller_->SendPayload(client, endpoint_ids, - std::move(payload)); - } - - Status CancelPayload(ClientProxy* client, Payload::Id payload_id) override { - if (!inner_service_controller_) - return {Status::kError}; - return inner_service_controller_->CancelPayload(client, - std::move(payload_id)); - } - - void DisconnectFromEndpoint(ClientProxy* client, - const std::string& endpoint_id) override { - if (!inner_service_controller_) - return; - inner_service_controller_->DisconnectFromEndpoint(client, endpoint_id); - } - - void Stop() override { - // TODO(https://crbug.com/1182428): we purposefully do nothing here so we - // don't shutdown the share OfflineServiceController. - } - - private: - // This is intentionally a reference to the unique_ptr owned by - // NearbyConnections. During the shutdown flow, NearbyConnection will clean up - // it's service controller before this proxy is destroyed. The reference - // allows us to stop forwarding calls if NearbyConnections has already cleaned - // it up. - std::unique_ptr<ServiceController>& inner_service_controller_; -}; - ConnectionRequestInfo CreateConnectionRequestInfo( const std::vector<uint8_t>& endpoint_info, mojo::PendingRemote<mojom::ConnectionLifecycleListener> listener) { @@ -279,36 +157,16 @@ } NearbyConnections::~NearbyConnections() { - // We need to clean up the shared OfflineServiceController before cleaning up - // Core objects. This ensures that any tasks queued up on threads get run - // before the ClientProxy owned by Core is deleted. The ServiceControllerProxy - // for each Core uses a reference to the unique_ptr so it will understand that - // it can no longer forward calls once it is reset here. - // See http://b/177336457 and https://crbug.com/1149773 for more details. - - // We call StopAllEndpoints() for each Core which is the same as - // ClientDisconnecting() to simulate what happens when the - // ServiceControllerRouter shuts down. - CountDownLatch latch(service_id_to_core_map_.size()); - for (auto& pair : service_id_to_core_map_) { - pair.second->StopAllEndpoints( - {.result_cb = [&latch](Status status) { latch.CountDown(); }}); - } - VLOG(1) << "Nearby Connections: waiting for Core objects to finish stopping " - << "all endpoints."; - if (!latch.Await(absl::Seconds(5)).result()) { - LOG(FATAL) << __func__ << ": Failed to stop all endpoints on each Core in " - << "time. Look for deadlocks in the threads tab of this crash."; - } - - VLOG(1) << "Nearby Connections: shutting down the shared service controller " - << "prior to taking down Core objects"; - service_controller_.reset(); - // Note that deleting active Core objects invokes their shutdown flows. This - // is required to ensure that Nearby cleans itself up. + // is required to ensure that Nearby cleans itself up. We must bring down the + // Cores before destroying their shared ServiceControllerRouter. VLOG(1) << "Nearby Connections: cleaning up Core objects"; service_id_to_core_map_.clear(); + + VLOG(1) << "Nearby Connections: shutting down the shared service controller " + << "router after taking down Core objects"; + service_controller_router_.reset(); + g_instance = nullptr; VLOG(1) << "Nearby Connections: shutdown complete"; @@ -727,29 +585,22 @@ std::unique_ptr<Core>& core = service_id_to_core_map_[service_id]; if (!core) { - // Note: Some tests will use SetServiceControllerForTesting to set a - // |service_controller| instance, but this value is expected to be null for - // the first GetCore() call during normal operation. - if (!service_controller_) { - service_controller_ = std::make_unique<OfflineServiceController>(); + // Note: Some tests will use SetServiceControllerRouterForTesting to set a + // |service_controller_router| instance, but this value is expected to be + // null for the first GetCore() call during normal operation. + if (!service_controller_router_) { + service_controller_router_ = std::make_unique<ServiceControllerRouter>(); } - core = std::make_unique<Core>([&]() { - // Core expects to take ownership of the pointer provided, but since we - // share a single ServiceController among all Core objects created, we - // provide a proxy which calls into our shared instance. - // The |service_controller_| is passed by reference to the unique_ptr so - // the proxy knows if |service_controller_| has been reset. - return new ServiceControllerProxy(service_controller_); - }); + core = std::make_unique<Core>(service_controller_router_.get()); } return core.get(); } -void NearbyConnections::SetServiceControllerForTesting( - std::unique_ptr<ServiceController> service_controller) { - service_controller_ = std::move(service_controller); +void NearbyConnections::SetServiceControllerRouterForTesting( + std::unique_ptr<ServiceControllerRouter> service_controller_router) { + service_controller_router_ = std::move(service_controller_router); } } // namespace connections
diff --git a/chrome/services/sharing/nearby/nearby_connections.h b/chrome/services/sharing/nearby/nearby_connections.h index d6a504a7..fe08953 100644 --- a/chrome/services/sharing/nearby/nearby_connections.h +++ b/chrome/services/sharing/nearby/nearby_connections.h
@@ -26,7 +26,8 @@ #include "mojo/public/cpp/bindings/pending_remote.h" #include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/shared_remote.h" -#include "third_party/nearby/src/cpp/core/internal/service_controller.h" +#include "third_party/abseil-cpp/absl/types/optional.h" +#include "third_party/nearby/src/cpp/core/internal/service_controller_router.h" namespace location { namespace nearby { @@ -152,8 +153,8 @@ // Returns the task runner for the thread that created |this|. scoped_refptr<base::SingleThreadTaskRunner> GetThreadTaskRunner(); - void SetServiceControllerForTesting( - std::unique_ptr<ServiceController> service_controller); + void SetServiceControllerRouterForTesting( + std::unique_ptr<ServiceControllerRouter> service_controller_router); private: // These values are used for metrics. Entries should not be renumbered and @@ -188,11 +189,11 @@ mojo::SharedRemote<sharing::mojom::WebRtcSignalingMessenger> webrtc_signaling_messenger_; - std::unique_ptr<ServiceController> service_controller_; + std::unique_ptr<ServiceControllerRouter> service_controller_router_; // Map from service ID to the Core object to be used for that service. Each // service uses its own Core object, but all Core objects share the underlying - // ServiceController instance. + // ServiceControllerRouter instance. base::flat_map<std::string, std::unique_ptr<Core>> service_id_to_core_map_; // Handles incoming stream payloads. This object buffers partial streams as
diff --git a/chrome/services/sharing/nearby/nearby_connections_unittest.cc b/chrome/services/sharing/nearby/nearby_connections_unittest.cc index 9f6a62c..5be2009 100644 --- a/chrome/services/sharing/nearby/nearby_connections_unittest.cc +++ b/chrome/services/sharing/nearby/nearby_connections_unittest.cc
@@ -28,7 +28,7 @@ #include "mojo/public/cpp/bindings/self_owned_receiver.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/nearby/src/cpp/core/internal/mock_service_controller.h" +#include "third_party/nearby/src/cpp/core/internal/mock_service_controller_router.h" namespace location { namespace nearby { @@ -203,16 +203,23 @@ auto dependencies = mojom::NearbyConnectionsDependencies::New( bluetooth_adapter_.adapter_.BindNewPipeAndPassRemote(), std::move(webrtc_dependencies), api::LogMessage::Severity::kInfo); - auto service_controller = - std::make_unique<testing::NiceMock<MockServiceController>>(); - service_controller_ptr_ = service_controller.get(); + auto service_controller_router = + std::make_unique<testing::NiceMock<MockServiceControllerRouter>>(); + service_controller_router_ptr_ = service_controller_router.get(); nearby_connections_ = std::make_unique<NearbyConnections>( remote_.BindNewPipeAndPassReceiver(), std::move(dependencies), /*io_task_runner=*/nullptr, base::BindOnce(&NearbyConnectionsTest::OnDisconnect, base::Unretained(this))); - nearby_connections_->SetServiceControllerForTesting( - std::move(service_controller)); + nearby_connections_->SetServiceControllerRouterForTesting( + std::move(service_controller_router)); + + // Called when Cores are destroyed. + ON_CALL(*service_controller_router_ptr_, StopAllEndpoints) + .WillByDefault( + [&](ClientProxy* client, const ResultCallback& callback) { + callback.result_cb({Status::kSuccess}); + }); } void OnDisconnect() { disconnect_run_loop_.Quit(); } @@ -221,10 +228,11 @@ FakeEndpointDiscoveryListener& fake_discovery_listener, bool is_out_of_band_connection = false) { ClientProxy* client_proxy; - EXPECT_CALL(*service_controller_ptr_, StartDiscovery) - .WillOnce([&](ClientProxy* client, const std::string& service_id, + EXPECT_CALL(*service_controller_router_ptr_, StartDiscovery) + .WillOnce([&](ClientProxy* client, absl::string_view service_id, const ConnectionOptions& options, - const DiscoveryListener& listener) { + const DiscoveryListener& listener, + const ResultCallback& callback) { client_proxy = client; EXPECT_EQ(kServiceId, service_id); EXPECT_EQ(Strategy::kP2pPointToPoint, options.strategy); @@ -239,9 +247,10 @@ EXPECT_EQ(kFastAdvertisementServiceUuid, options.fast_advertisement_service_uuid); } - client->StartedDiscovery(service_id, options.strategy, listener, + client->StartedDiscovery(std::string(service_id), options.strategy, + listener, /*mediums=*/{}); - return Status{Status::kAlreadyDiscovering}; + callback.result_cb({Status::kAlreadyDiscovering}); }); base::RunLoop start_discovery_run_loop; nearby_connections_->StartDiscovery( @@ -270,10 +279,11 @@ ClientProxy* client_proxy; std::vector<uint8_t> endpoint_info(std::begin(kEndpointInfo), std::end(kEndpointInfo)); - EXPECT_CALL(*service_controller_ptr_, StartAdvertising) - .WillOnce([&](ClientProxy* client, const std::string& service_id, + EXPECT_CALL(*service_controller_router_ptr_, StartAdvertising) + .WillOnce([&](ClientProxy* client, absl::string_view service_id, const ConnectionOptions& options, - const ConnectionRequestInfo& info) { + const ConnectionRequestInfo& info, + const ResultCallback& callback) { client_proxy = client; EXPECT_EQ(kServiceId, service_id); EXPECT_EQ(Strategy::kP2pPointToPoint, options.strategy); @@ -284,8 +294,8 @@ EXPECT_TRUE(options.enforce_topology_constraints); EXPECT_EQ(endpoint_info, ByteArrayToMojom(info.endpoint_info)); - client_proxy->StartedAdvertising(service_id, options.strategy, - info.listener, + client_proxy->StartedAdvertising(std::string(service_id), + options.strategy, info.listener, /*mediums=*/{}); client_proxy->OnConnectionInitiated( endpoint_data.remote_endpoint_id, @@ -296,7 +306,7 @@ kRawAuthenticationToken, sizeof(kRawAuthenticationToken)), .is_incoming_connection = false}, options, info.listener); - return Status{Status::kSuccess}; + callback.result_cb({Status::kSuccess}); }); base::RunLoop start_advertising_run_loop; @@ -321,10 +331,11 @@ ClientProxy* client_proxy; std::vector<uint8_t> endpoint_info(std::begin(kEndpointInfo), std::end(kEndpointInfo)); - EXPECT_CALL(*service_controller_ptr_, RequestConnection) - .WillOnce([&](ClientProxy* client, const std::string& endpoint_id, + EXPECT_CALL(*service_controller_router_ptr_, RequestConnection) + .WillOnce([&](ClientProxy* client, absl::string_view endpoint_id, const ConnectionRequestInfo& info, - const ConnectionOptions& options) { + const ConnectionOptions& options, + const ResultCallback& callback) { client_proxy = client; EXPECT_EQ(endpoint_data.remote_endpoint_id, endpoint_id); EXPECT_EQ(endpoint_info, ByteArrayToMojom(info.endpoint_info)); @@ -342,7 +353,7 @@ EXPECT_TRUE(options.remote_bluetooth_mac_address.Empty()); } client_proxy->OnConnectionInitiated( - endpoint_id, + std::string(endpoint_id), {.remote_endpoint_info = ByteArrayFromMojom(endpoint_data.remote_endpoint_info), .authentication_token = kAuthenticationToken, @@ -350,7 +361,7 @@ kRawAuthenticationToken, sizeof(kRawAuthenticationToken)), .is_incoming_connection = false}, options, info.listener); - return Status{Status::kSuccess}; + callback.result_cb({Status::kSuccess}); }); base::RunLoop request_connection_run_loop; @@ -371,15 +382,17 @@ ClientProxy* AcceptConnection(FakePayloadListener& fake_payload_listener, const std::string& remote_endpoint_id) { ClientProxy* client_proxy; - EXPECT_CALL(*service_controller_ptr_, AcceptConnection) + EXPECT_CALL(*service_controller_router_ptr_, AcceptConnection) .WillOnce([&client_proxy, &remote_endpoint_id]( - ClientProxy* client, const std::string& endpoint_id, - const PayloadListener& listener) { + ClientProxy* client, absl::string_view endpoint_id, + const PayloadListener& listener, + const ResultCallback& callback) { client_proxy = client; EXPECT_EQ(remote_endpoint_id, endpoint_id); - client_proxy->LocalEndpointAcceptedConnection(endpoint_id, listener); - client_proxy->OnConnectionAccepted(endpoint_id); - return Status{Status::kSuccess}; + client_proxy->LocalEndpointAcceptedConnection( + std::string(endpoint_id), listener); + client_proxy->OnConnectionAccepted(std::string(endpoint_id)); + callback.result_cb({Status::kSuccess}); }); base::RunLoop accept_connection_run_loop; @@ -401,7 +414,8 @@ bluetooth::FakeAdapter bluetooth_adapter_; sharing::MockWebRtcDependencies webrtc_dependencies_; std::unique_ptr<NearbyConnections> nearby_connections_; - testing::NiceMock<MockServiceController>* service_controller_ptr_; + testing::NiceMock<MockServiceControllerRouter>* + service_controller_router_ptr_; base::RunLoop disconnect_run_loop_; }; @@ -470,7 +484,10 @@ FakeEndpointDiscoveryListener fake_discovery_listener; StartDiscovery(fake_discovery_listener); - EXPECT_CALL(*service_controller_ptr_, StopDiscovery(testing::_)).Times(1); + EXPECT_CALL(*service_controller_router_ptr_, StopDiscovery) + .WillOnce([](ClientProxy* client, const ResultCallback& callback) { + callback.result_cb({Status::kSuccess}); + }); base::RunLoop stop_discovery_run_loop; nearby_connections_->StopDiscovery( @@ -479,9 +496,6 @@ stop_discovery_run_loop.Quit(); })); stop_discovery_run_loop.Run(); - - // StopDiscovery is also called when Core is destroyed. - EXPECT_CALL(*service_controller_ptr_, StopDiscovery(testing::_)).Times(1); } TEST_F(NearbyConnectionsTest, InjectEndpoint) { @@ -503,9 +517,10 @@ ClientProxy* client_proxy = StartDiscovery( fake_discovery_listener, /*is_out_of_band_connection=*/true); - EXPECT_CALL(*service_controller_ptr_, InjectEndpoint) - .WillOnce([&](ClientProxy* client, const std::string& service_id, - const OutOfBandConnectionMetadata& metadata) { + EXPECT_CALL(*service_controller_router_ptr_, InjectEndpoint) + .WillOnce([&](ClientProxy* client, absl::string_view service_id, + const OutOfBandConnectionMetadata& metadata, + const ResultCallback& callback) { EXPECT_EQ(kServiceId, service_id); EXPECT_EQ(Medium::BLUETOOTH, metadata.medium); EXPECT_EQ(endpoint_data.remote_endpoint_id, metadata.endpoint_id); @@ -517,7 +532,7 @@ kServiceId, endpoint_data.remote_endpoint_id, ByteArrayFromMojom(endpoint_data.remote_endpoint_info), /*mediums=*/{}); - return Status{Status::kSuccess}; + callback.result_cb({Status::kSuccess}); }); base::RunLoop inject_run_loop; @@ -653,12 +668,14 @@ }); // Requesting a bandwidth upgrade should succeed. - EXPECT_CALL(*service_controller_ptr_, InitiateBandwidthUpgrade) - .WillOnce([&](ClientProxy* client, const std::string& endpoint_id) { + EXPECT_CALL(*service_controller_router_ptr_, InitiateBandwidthUpgrade) + .WillOnce([&](ClientProxy* client, absl::string_view endpoint_id, + const ResultCallback& callback) { client_proxy = client; EXPECT_EQ(endpoint_data.remote_endpoint_id, endpoint_id); - client_proxy->OnBandwidthChanged(endpoint_id, Medium::WEB_RTC); - return Status{Status::kSuccess}; + client_proxy->OnBandwidthChanged(std::string(endpoint_id), + Medium::WEB_RTC); + callback.result_cb({Status::kSuccess}); }); base::RunLoop bandwidth_upgrade_run_loop; nearby_connections_->InitiateBandwidthUpgrade( @@ -715,11 +732,12 @@ FakePayloadListener fake_payload_listener; AcceptConnection(fake_payload_listener, endpoint_data.remote_endpoint_id); - EXPECT_CALL(*service_controller_ptr_, DisconnectFromEndpoint) - .WillOnce([&](ClientProxy* client, const std::string& endpoint_id) { - EXPECT_EQ(endpoint_data.remote_endpoint_id, endpoint_id); - client->OnDisconnected(endpoint_id, /*notify=*/true); - return Status{Status::kSuccess}; + EXPECT_CALL(*service_controller_router_ptr_, DisconnectFromEndpoint) + .WillOnce([&](ClientProxy* client, absl::string_view endpoint_id, + const ResultCallback& callback) { + EXPECT_EQ(endpoint_data.remote_endpoint_id, std::string(endpoint_id)); + client->OnDisconnected(std::string(endpoint_id), /*notify=*/true); + callback.result_cb({Status::kSuccess}); }); base::RunLoop disconnected_run_loop; @@ -786,15 +804,16 @@ FakePayloadListener fake_payload_listener; AcceptConnection(fake_payload_listener, endpoint_data.remote_endpoint_id); - EXPECT_CALL(*service_controller_ptr_, SendPayload) + EXPECT_CALL(*service_controller_router_ptr_, SendPayload) .WillOnce([&](ClientProxy* client, - const std::vector<std::string>& endpoint_ids, - Payload payload) { + absl::Span<const std::string> endpoint_ids, Payload payload, + const ResultCallback& callback) { ASSERT_EQ(1u, endpoint_ids.size()); EXPECT_EQ(endpoint_data.remote_endpoint_id, endpoint_ids.front()); EXPECT_EQ(Payload::Type::kBytes, payload.GetType()); std::string payload_bytes(payload.AsBytes()); EXPECT_EQ(expected_payload, ByteArrayToMojom(payload.AsBytes())); + callback.result_cb({Status::kSuccess}); }); base::RunLoop send_payload_run_loop; @@ -830,15 +849,16 @@ client_proxy = AcceptConnection(fake_payload_listener, endpoint_data.remote_endpoint_id); - EXPECT_CALL(*service_controller_ptr_, SendPayload) + EXPECT_CALL(*service_controller_router_ptr_, SendPayload) .WillOnce([&](ClientProxy* client, - const std::vector<std::string>& endpoint_ids, - Payload payload) { + absl::Span<const std::string> endpoint_ids, Payload payload, + const ResultCallback& callback) { ASSERT_EQ(1u, endpoint_ids.size()); EXPECT_EQ(endpoint_data.remote_endpoint_id, endpoint_ids.front()); EXPECT_EQ(Payload::Type::kBytes, payload.GetType()); std::string payload_bytes(payload.AsBytes()); EXPECT_EQ(expected_payload, ByteArrayToMojom(payload.AsBytes())); + callback.result_cb({Status::kSuccess}); }); base::RunLoop send_payload_run_loop; @@ -853,9 +873,13 @@ })); send_payload_run_loop.Run(); - EXPECT_CALL(*service_controller_ptr_, - CancelPayload(testing::_, testing::Eq(kPayloadId))) - .WillOnce(testing::Return(Status{Status::kSuccess})); + EXPECT_CALL( + *service_controller_router_ptr_, + CancelPayload(testing::_, testing::Eq((uint64_t)kPayloadId), testing::_)) + .WillOnce([&](ClientProxy* client, std::uint64_t payload_id, + const ResultCallback& callback) { + callback.result_cb({Status::kSuccess}); + }); base::RunLoop cancel_payload_run_loop; nearby_connections_->CancelPayload( @@ -885,10 +909,10 @@ FakePayloadListener fake_payload_listener; AcceptConnection(fake_payload_listener, endpoint_data.remote_endpoint_id); - EXPECT_CALL(*service_controller_ptr_, SendPayload) + EXPECT_CALL(*service_controller_router_ptr_, SendPayload) .WillOnce([&](ClientProxy* client, - const std::vector<std::string>& endpoint_ids, - Payload payload) { + absl::Span<const std::string> endpoint_ids, Payload payload, + const ResultCallback& callback) { ASSERT_EQ(1u, endpoint_ids.size()); EXPECT_EQ(endpoint_data.remote_endpoint_id, endpoint_ids.front()); EXPECT_EQ(Payload::Type::kFile, payload.GetType()); @@ -897,6 +921,7 @@ ExceptionOr<ByteArray> bytes = file->Read(file->GetTotalSize()); ASSERT_TRUE(bytes.ok()); EXPECT_EQ(expected_payload, ByteArrayToMojom(bytes.result())); + callback.result_cb({Status::kSuccess}); }); base::FilePath path; @@ -998,8 +1023,10 @@ EndpointData endpoint_data = CreateEndpointData(1); StartAdvertising(fake_connection_life_cycle_listener, endpoint_data); - EXPECT_CALL(*service_controller_ptr_, StopAdvertising) - .WillOnce([](ClientProxy* client) { client->StoppedAdvertising(); }); + EXPECT_CALL(*service_controller_router_ptr_, StopAdvertising) + .WillOnce([](ClientProxy* client, const ResultCallback& callback) { + callback.result_cb({Status::kSuccess}); + }); base::RunLoop stop_advertising_run_loop; nearby_connections_->StopAdvertising( @@ -1008,9 +1035,6 @@ stop_advertising_run_loop.Quit(); })); stop_advertising_run_loop.Run(); - - // Expect one more call during shutdown. - EXPECT_CALL(*service_controller_ptr_, StopAdvertising); } TEST_F(NearbyConnectionsTest, DisconnectAllEndpoints) { @@ -1041,20 +1065,11 @@ ConnectionListener connections_listener2; RequestConnection(fake_connection_life_cycle_listener2, endpoint_data2); - // Stop all endpoints should invoke disconnect for both endpoints. - EXPECT_CALL(*service_controller_ptr_, - DisconnectFromEndpoint(_, endpoint_data.remote_endpoint_id)) - .WillOnce([](ClientProxy* client, const std::string& endpoint_id) { - return Status{Status::kSuccess}; + EXPECT_CALL(*service_controller_router_ptr_, StopAllEndpoints) + .Times(2) + .WillRepeatedly([&](ClientProxy* client, const ResultCallback& callback) { + callback.result_cb({Status::kSuccess}); }); - EXPECT_CALL(*service_controller_ptr_, - DisconnectFromEndpoint(_, endpoint_data2.remote_endpoint_id)) - .WillOnce([](ClientProxy* client, const std::string& endpoint_id) { - return Status{Status::kSuccess}; - }); - // Stop all endpoints should stop both advertising and discovery. - EXPECT_CALL(*service_controller_ptr_, StopAdvertising); - EXPECT_CALL(*service_controller_ptr_, StopDiscovery); base::RunLoop stop_endpoints_run_loop; nearby_connections_->StopAllEndpoints( @@ -1066,79 +1081,13 @@ } TEST_F(NearbyConnectionsTest, InitiateBandwidthUpgrade) { - // TODO(nmusgrave) test upgrade - // upgrade should fail if not advertising or discovering - // upgrade should fail if not a connection in place -} - -TEST_F(NearbyConnectionsTest, InitiateBandwidthUpgradeFails) { EndpointData endpoint_data = CreateEndpointData(1); - base::RunLoop bandwidth_upgrade_run_loop; - nearby_connections_->InitiateBandwidthUpgrade( - kServiceId, endpoint_data.remote_endpoint_id, - base::BindLambdaForTesting([&](mojom::Status status) { - EXPECT_EQ(mojom::Status::kOutOfOrderApiCall, status); - bandwidth_upgrade_run_loop.Quit(); - })); - bandwidth_upgrade_run_loop.Run(); -} - -TEST_F(NearbyConnectionsTest, InitiateBandwidthUpgradeAfterDiscoveringFails) { - FakeEndpointDiscoveryListener fake_discovery_listener; - EndpointData endpoint_data = CreateEndpointData(1); - ClientProxy* client_proxy = StartDiscovery(fake_discovery_listener); - client_proxy->OnEndpointFound( - kServiceId, endpoint_data.remote_endpoint_id, - ByteArrayFromMojom(endpoint_data.remote_endpoint_info), - /*mediums=*/{}); - - // Requesting a bandwidth upgrade should fail. - base::RunLoop bandwidth_upgrade_run_loop; - nearby_connections_->InitiateBandwidthUpgrade( - kServiceId, endpoint_data.remote_endpoint_id, - base::BindLambdaForTesting([&](mojom::Status status) { - EXPECT_EQ(mojom::Status::kOutOfOrderApiCall, status); - bandwidth_upgrade_run_loop.Quit(); - })); - bandwidth_upgrade_run_loop.Run(); -} - -TEST_F(NearbyConnectionsTest, InitiateBandwidthUpgradeAfterAdvertisingFails) { - FakeConnectionLifecycleListener fake_connection_life_cycle_listener; - EndpointData endpoint_data = CreateEndpointData(1); - - StartAdvertising(fake_connection_life_cycle_listener, endpoint_data); - - // Requesting a bandwidth upgrade should fail. - base::RunLoop bandwidth_upgrade_run_loop; - nearby_connections_->InitiateBandwidthUpgrade( - kServiceId, endpoint_data.remote_endpoint_id, - base::BindLambdaForTesting([&](mojom::Status status) { - EXPECT_EQ(mojom::Status::kOutOfOrderApiCall, status); - bandwidth_upgrade_run_loop.Quit(); - })); - bandwidth_upgrade_run_loop.Run(); -} - -TEST_F(NearbyConnectionsTest, InitiateBandwidthUpgradeAfterConnectionSucceeds) { - // This endpoint starts discovery. - FakeConnectionLifecycleListener fake_connection_life_cycle_listener; - EndpointData endpoint_data = CreateEndpointData(1); - StartAdvertising(fake_connection_life_cycle_listener, endpoint_data); - - // An incoming connection request is accepted at this endpoint. - base::RunLoop accepted_run_loop; - fake_connection_life_cycle_listener.accepted_cb = - base::BindLambdaForTesting([&](const std::string& endpoint_id) { + EXPECT_CALL(*service_controller_router_ptr_, InitiateBandwidthUpgrade) + .WillOnce([&](ClientProxy* client, absl::string_view endpoint_id, + const ResultCallback& callback) { EXPECT_EQ(endpoint_data.remote_endpoint_id, endpoint_id); - accepted_run_loop.Quit(); + callback.result_cb({Status::kSuccess}); }); - - FakePayloadListener fake_payload_listener; - AcceptConnection(fake_payload_listener, endpoint_data.remote_endpoint_id); - accepted_run_loop.Run(); - - // Requesting a bandwidth upgrade should succeed. base::RunLoop bandwidth_upgrade_run_loop; nearby_connections_->InitiateBandwidthUpgrade( kServiceId, endpoint_data.remote_endpoint_id, @@ -1149,6 +1098,24 @@ bandwidth_upgrade_run_loop.Run(); } +TEST_F(NearbyConnectionsTest, InitiateBandwidthUpgradeFails) { + EndpointData endpoint_data = CreateEndpointData(1); + EXPECT_CALL(*service_controller_router_ptr_, InitiateBandwidthUpgrade) + .WillOnce([&](ClientProxy* client, absl::string_view endpoint_id, + const ResultCallback& callback) { + EXPECT_EQ(endpoint_data.remote_endpoint_id, endpoint_id); + callback.result_cb({Status::kOutOfOrderApiCall}); + }); + base::RunLoop bandwidth_upgrade_run_loop; + nearby_connections_->InitiateBandwidthUpgrade( + kServiceId, endpoint_data.remote_endpoint_id, + base::BindLambdaForTesting([&](mojom::Status status) { + EXPECT_EQ(mojom::Status::kOutOfOrderApiCall, status); + bandwidth_upgrade_run_loop.Quit(); + })); + bandwidth_upgrade_run_loop.Run(); +} + TEST_F(NearbyConnectionsTest, ReceiveBytesPayload) { const std::vector<uint8_t> expected_payload(std::begin(kPayload), std::end(kPayload)); @@ -1273,9 +1240,13 @@ NOTREACHED(); }); - EXPECT_CALL(*service_controller_ptr_, - CancelPayload(testing::_, testing::Eq(kPayloadId))) - .WillOnce(testing::Return(Status{Status::kSuccess})); + EXPECT_CALL( + *service_controller_router_ptr_, + CancelPayload(testing::_, testing::Eq((uint64_t)kPayloadId), testing::_)) + .WillOnce([&](ClientProxy* client, std::uint64_t payload_id, + const ResultCallback& callback) { + callback.result_cb({Status::kSuccess}); + }); client_proxy->OnPayload( endpoint_data.remote_endpoint_id,
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 942fc32..cebdb11e 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -2152,6 +2152,7 @@ "../browser/importer/ie_importer_browsertest_win.cc", "../browser/policy/test/locale_policy_browsertest.cc", "../browser/process_singleton_browsertest.cc", + "../browser/profiles/profile_shortcut_manager_browsertest_win.cc", "../browser/safe_browsing/chrome_cleaner/reporter_runner_browsertest_win.cc", "../browser/ui/startup/startup_browser_creator_corrupt_profiles_browsertest_win.cc", "../browser/ui/startup/startup_browser_creator_triggered_reset_browsertest_win.cc",
diff --git a/chrome/test/data/web_app_file_handling/icon128.png b/chrome/test/data/web_app_file_handling/icon128.png new file mode 100644 index 0000000..d10dd49 --- /dev/null +++ b/chrome/test/data/web_app_file_handling/icon128.png Binary files differ
diff --git a/chrome/test/data/web_app_file_handling/icon20.png b/chrome/test/data/web_app_file_handling/icon20.png new file mode 100644 index 0000000..27f7b27 --- /dev/null +++ b/chrome/test/data/web_app_file_handling/icon20.png Binary files differ
diff --git a/chrome/test/data/web_app_file_handling/icons_app.html b/chrome/test/data/web_app_file_handling/icons_app.html new file mode 100644 index 0000000..1e45aef --- /dev/null +++ b/chrome/test/data/web_app_file_handling/icons_app.html
@@ -0,0 +1,15 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <link rel="manifest" href="icons_app_manifest.json"> +</head> +<body> + <h1>Web app that handles file opening</h1> + <script> + window.onload = () => { + navigator.serviceWorker.register('/web_app_file_handling/service_worker.js'); + }; + </script> +</body> +</html>
diff --git a/chrome/test/data/web_app_file_handling/icons_app_manifest.json b/chrome/test/data/web_app_file_handling/icons_app_manifest.json new file mode 100644 index 0000000..b429d317 --- /dev/null +++ b/chrome/test/data/web_app_file_handling/icons_app_manifest.json
@@ -0,0 +1,28 @@ +{ + "short_name": "file editor", + "name": "super duper file editor", + "icons": [ + { + "src": "icon128.png", + "sizes": "128x128" + } + ], + "start_url": "/icons_app.html", + "display": "standalone", + "scope": "/", + "file_handlers": [ + { + "action": "/icons_app.html", + "name": "Plain Text", + "accept": { + "text/plain": [".txt", ".md", ".csv", ".text"] + }, + "icons": [ + { + "src": "icon20.png", + "sizes": "16x16" + } + ] + } + ] +}
diff --git a/chrome/test/data/web_app_file_handling/service_worker.js b/chrome/test/data/web_app_file_handling/service_worker.js new file mode 100644 index 0000000..f1978bd --- /dev/null +++ b/chrome/test/data/web_app_file_handling/service_worker.js
@@ -0,0 +1,12 @@ +// Copyright 2021 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. + +self.addEventListener('install', function() { + // Activate worker immediately. + return self.skipWaiting(); +}); + +self.addEventListener('fetch', function(event) { + event.respondWith(fetch(event.request)); +});
diff --git a/chrome/test/data/webui/BUILD.gn b/chrome/test/data/webui/BUILD.gn index 9209520..599723b 100644 --- a/chrome/test/data/webui/BUILD.gn +++ b/chrome/test/data/webui/BUILD.gn
@@ -381,6 +381,7 @@ "$root_gen_dir/chrome/test/data/webui/settings/chromeos/os_files_page_test.m.js", "$root_gen_dir/chrome/test/data/webui/settings/chromeos/os_languages_page_v2_tests.m.js", "$root_gen_dir/chrome/test/data/webui/settings/chromeos/app_notifications_subpage_tests.m.js", + "$root_gen_dir/chrome/test/data/webui/settings/chromeos/settings_scheduler_slider_test.m.js", "$root_gen_dir/chrome/test/data/webui/settings/chromeos/os_settings_main_test.m.js", "$root_gen_dir/chrome/test/data/webui/settings/chromeos/os_settings_ui_test.m.js", "$root_gen_dir/chrome/test/data/webui/settings/chromeos/os_settings_ui_test_2.m.js",
diff --git a/chrome/test/data/webui/chromeos/scanning/action_toolbar_test.js b/chrome/test/data/webui/chromeos/scanning/action_toolbar_test.js index 87f4d8a..1541a31 100644 --- a/chrome/test/data/webui/chromeos/scanning/action_toolbar_test.js +++ b/chrome/test/data/webui/chromeos/scanning/action_toolbar_test.js
@@ -28,15 +28,15 @@ // Verify the page count text updates when the number of scanned images // changes. test('totalPageCountIncrements', () => { - assertEquals('', actionToolbar.$$('#pageNumbers').textContent.trim()); - - actionToolbar.numTotalPages = 3; - assertEquals('', actionToolbar.$$('#pageNumbers').textContent.trim()); - - actionToolbar.numTotalPages = 3; actionToolbar.currentPageInView = 1; + assertEquals('', actionToolbar.$$('#pageNumbers').textContent.trim()); + + actionToolbar.numTotalPages = 3; assertEquals('1 of 3', actionToolbar.$$('#pageNumbers').textContent.trim()); + actionToolbar.currentPageInView = -1; + assertEquals('', actionToolbar.$$('#pageNumbers').textContent.trim()); + actionToolbar.numTotalPages = 4; actionToolbar.currentPageInView = 2; assertEquals('2 of 4', actionToolbar.$$('#pageNumbers').textContent.trim());
diff --git a/chrome/test/data/webui/chromeos/scanning/scan_preview_test.js b/chrome/test/data/webui/chromeos/scanning/scan_preview_test.js index 674bff4c..a7ade4c 100644 --- a/chrome/test/data/webui/chromeos/scanning/scan_preview_test.js +++ b/chrome/test/data/webui/chromeos/scanning/scan_preview_test.js
@@ -204,25 +204,52 @@ }); }); - // Tests that the remove page dialog opens and shows the correct page number. + // Tests that the remove page dialog opens, shows the correct page number, + // then fires the correct event when the action button is clicked. test('removePageDialog', () => { - const pageNum = 5; + const pageNumberToRemove = 5; + let pageIndexFromEvent; + scanPreview.addEventListener('remove-page', (e) => { + pageIndexFromEvent = e.detail; + }); + scanPreview.objectUrls = ['svg/ready_to_scan.svg']; + + assertFalse(scanPreview.$$('#scanPreviewDialog').open); scanPreview.$$('action-toolbar') - .dispatchEvent( - new CustomEvent('show-remove-page-dialog', {detail: pageNum})); + .dispatchEvent(new CustomEvent( + 'show-remove-page-dialog', {detail: pageNumberToRemove})); return flushTasks().then(() => { assertTrue(scanPreview.$$('#scanPreviewDialog').open); assertEquals( - 'Remove page ' + pageNum, + 'Remove page ' + pageNumberToRemove, scanPreview.$$('#dialogTitle').textContent.trim()); assertEquals( - 'Remove page ' + pageNum, + 'Remove page ' + pageNumberToRemove, scanPreview.$$('#actionButton').textContent.trim()); assertEquals( - loadTimeData.getStringF('removePageConfirmationText', pageNum), + loadTimeData.getStringF( + 'removePageConfirmationText', pageNumberToRemove), scanPreview.$$('#dialogConfirmationText').textContent.trim()); + + scanPreview.$$('#actionButton').click(); + assertFalse(scanPreview.$$('#scanPreviewDialog').open); + assertEquals(pageNumberToRemove - 1, pageIndexFromEvent); + }); + }); + + // Tests that clicking the cancel button closes the remove page dialog. + test('cancelRemovePageDialog', () => { + assertFalse(scanPreview.$$('#scanPreviewDialog').open); + scanPreview.$$('action-toolbar') + .dispatchEvent(new CustomEvent('show-remove-page-dialog')); + + return flushTasks().then(() => { + assertTrue(scanPreview.$$('#scanPreviewDialog').open); + + scanPreview.$$('#cancelButton').click(); + assertFalse(scanPreview.$$('#scanPreviewDialog').open); }); });
diff --git a/chrome/test/data/webui/chromeos/scanning/scanning_app_test.js b/chrome/test/data/webui/chromeos/scanning/scanning_app_test.js index 8b3736c..86230e26 100644 --- a/chrome/test/data/webui/chromeos/scanning/scanning_app_test.js +++ b/chrome/test/data/webui/chromeos/scanning/scanning_app_test.js
@@ -297,6 +297,9 @@ close() {}, }; + /** @private {number} */ + this.pageIndexToRemove_ = -1; + this.resetForTest(); } @@ -347,11 +350,19 @@ }); } - removePage() {} + /** @param {number} pageIndex */ + removePage(pageIndex) { + this.pageIndexToRemove_ = pageIndex; + } completeMultiPageScan() { this.methodCalled('completeMultiPageScan'); } + + /** @return {number}*/ + getPageIndexToRemove() { + return this.pageIndexToRemove_; + } } export function scanningAppTest() { @@ -960,6 +971,73 @@ }); }); + // Verify the correct page can be removed from a multi-page scan job by + // scanning three pages then removing the second page. + test('MultiPageScanPageRemoved', () => { + const pageNumberToRemove = 2; + let expectedObjectUrls; + return initializeScanningApp(expectedScanners, capabilities) + .then(() => { + return getScannerCapabilities(); + }) + .then(() => { + scanningApp.selectedSource = PLATEN; + scanningApp.selectedFileType = FileType.PDF.toString(); + return waitAfterNextRender(/** @type {!HTMLElement} */ (scanningApp)); + }) + .then(() => { + scanningApp.multiPageScanChecked = true; + }) + .then(() => { + scanningApp.$$('#scanButton').click(); + return fakeScanService_.whenCalled('startMultiPageScan'); + }) + .then(() => { + return fakeScanService_.simulatePageComplete(1); + }) + .then(() => { + scanningApp.$$('multi-page-scan').$$('#scanButton').click(); + return fakeMultiPageScanController_.whenCalled('scanNextPage'); + }) + .then(() => { + return fakeScanService_.simulatePageComplete(1); + }) + .then(() => { + scanningApp.$$('multi-page-scan').$$('#scanButton').click(); + return fakeMultiPageScanController_.whenCalled('scanNextPage'); + }) + .then(() => { + return fakeScanService_.simulatePageComplete(1); + }) + .then(() => { + // Save the current scanned images + expectedObjectUrls = scanningApp.$$('#scanPreview').objectUrls; + assertEquals(3, expectedObjectUrls.length); + + // Open the remove page dialog. + scanningApp.$$('#scanPreview') + .$$('action-toolbar') + .dispatchEvent(new CustomEvent( + 'show-remove-page-dialog', {detail: pageNumberToRemove})); + return flushTasks(); + }) + .then(() => { + scanningApp.$$('#scanPreview').$$('#actionButton').click(); + return flushTasks(); + }) + .then(() => { + assertEquals( + pageNumberToRemove - 1, + fakeMultiPageScanController_.getPageIndexToRemove()); + + // Remove the second page from the expected scanned images and verify + // the correct image was removed from the actual scanned images. + expectedObjectUrls.splice(pageNumberToRemove - 1, 1); + assertArrayEquals( + expectedObjectUrls, scanningApp.$$('#scanPreview').objectUrls); + }); + }); + // Verify the correct message is shown in the scan failed dialog based on the // error type. test('ScanResults', () => {
diff --git a/chrome/test/data/webui/settings/chromeos/BUILD.gn b/chrome/test/data/webui/settings/chromeos/BUILD.gn index 1f96e93..db6012e 100644 --- a/chrome/test/data/webui/settings/chromeos/BUILD.gn +++ b/chrome/test/data/webui/settings/chromeos/BUILD.gn
@@ -151,6 +151,7 @@ "personalization_page_test.js", "search_subpage_test.js", "search_engine_test.js", + "settings_scheduler_slider_test.js", "smart_inputs_page_test.js", "smb_shares_page_tests.js", "switch_access_action_assignment_dialog_test.js",
diff --git a/chrome/test/data/webui/settings/chromeos/os_settings_v3_browsertest.js b/chrome/test/data/webui/settings/chromeos/os_settings_v3_browsertest.js index 2a4e58a..9bea62cf 100644 --- a/chrome/test/data/webui/settings/chromeos/os_settings_v3_browsertest.js +++ b/chrome/test/data/webui/settings/chromeos/os_settings_v3_browsertest.js
@@ -422,6 +422,7 @@ ['PersonalizationPage', 'personalization_page_test.m.js'], ['PrintingPage', 'os_printing_page_tests.m.js'], ['ResetPage', 'os_reset_page_test.m.js'], + ['SettingsSchedulerSlider', 'settings_scheduler_slider_test.m.js'], ['SearchEngine', 'search_engine_test.m.js'], ['SearchSubpage', 'search_subpage_test.m.js'], ['SmartInputsPage', 'smart_inputs_page_test.m.js'],
diff --git a/chrome/test/data/webui/settings/chromeos/settings_scheduler_slider_test.js b/chrome/test/data/webui/settings/chromeos/settings_scheduler_slider_test.js new file mode 100644 index 0000000..daf62724 --- /dev/null +++ b/chrome/test/data/webui/settings/chromeos/settings_scheduler_slider_test.js
@@ -0,0 +1,106 @@ +// Copyright 2021 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. + +// clang-format off +// #import 'chrome://os-settings/chromeos/os_settings.js'; +// #import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js'; +// #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +// #import {keyDownOn, keyUpOn} from 'chrome://resources/polymer/v3_0/iron-test-helpers/mock-interactions.js'; +// clang-format on + +/** @fileoverview Suite of tests for settings-scheduler-slider. */ +suite('SettingsSchedulerSlider', function() { + /** @type {!SettingsSchedulerSliderElement} */ + let slider; + + setup(function() { + PolymerTest.clearBody(); + slider = document.createElement('settings-scheduler-slider'); + assertTrue(!!slider); + slider.prefStartTime = { + key: 'ash.night_light.custom_start_time', + type: chrome.settingsPrivate.PrefType.NUMBER, + value: 60, + }; + slider.prefEndTime = { + key: 'ash.night_light.custom_end_time', + type: chrome.settingsPrivate.PrefType.NUMBER, + value: 120, + }; + slider.prefs = { + ash: { + night_light: { + custom_start_time: { + key: 'ash.night_light.custom_start_time', + type: chrome.settingsPrivate.PrefType.NUMBER, + value: 60, + }, + custom_end_time: { + key: 'ash.night_light.custom_start_time', + type: chrome.settingsPrivate.PrefType.NUMBER, + value: 120, + }, + } + }, + settings: { + clock: { + use_24hour_clock: { + key: 'settings.clock.use_24hour_clock', + type: chrome.settingsPrivate.PrefType.BOOLEAN, + value: false, + }, + }, + } + }; + document.body.appendChild(slider); + flush(); + }); + + test('pref value update time string', function() { + // Test that the slider time string is updated after the pref is + // saved. + assertTrue(!!slider.$$('#startLabel')); + assertTrue(!!slider.$$('#endLabel')); + + const getStartTimeString = () => { + return slider.$$('#startLabel').innerHTML.trim(); + }; + + const getEndTimeString = () => { + return slider.$$('#endLabel').innerHTML.trim(); + }; + + assertEquals('1:00 AM', getStartTimeString()); + assertEquals('2:00 AM', getEndTimeString()); + + slider.prefStartTime.value = 70; + slider.setPrefValue( + 'ash.night_light.custom_start_time', 70); + flush(); + + assertEquals('1:10 AM', getStartTimeString()); + assertEquals('2:00 AM', getEndTimeString()); + + slider.prefEndTime.value = 900; + slider.setPrefValue( + 'ash.night_light.custom_end_time', slider.prefEndTime.value); + flush(); + assertEquals('1:10 AM', getStartTimeString()); + assertEquals('3:00 PM', getEndTimeString()); + }); + + test('prefStartTime and prefEndTime should have default values', function() { + // Test that prefStartTime.value and prefEndTime.value are set + // (crbug.com/1232075). + PolymerTest.clearBody(); + slider = document.createElement('settings-scheduler-slider'); + flush(); + const kDefaultStartTimeOffsetMinutes = 18 * 60; + const kDefaultEndTimeOffsetMinutes = 6 * 60; + assertNotEquals(slider.prefStartTime, undefined); + assertNotEquals(slider.prefEndTime, undefined); + assertEquals(slider.prefStartTime.value, kDefaultStartTimeOffsetMinutes); + assertEquals(slider.prefEndTime.value, kDefaultEndTimeOffsetMinutes); + }); +});
diff --git a/chromeos/components/camera_app_ui/resources/strings/camera_strings_gu.xtb b/chromeos/components/camera_app_ui/resources/strings/camera_strings_gu.xtb index 3373c35..f1c2dfa 100644 --- a/chromeos/components/camera_app_ui/resources/strings/camera_strings_gu.xtb +++ b/chromeos/components/camera_app_ui/resources/strings/camera_strings_gu.xtb
@@ -43,6 +43,7 @@ <translation id="3227137524299004712">માઇક્રોફોન</translation> <translation id="3240426699337459095">લિંક કૉપિ કરી</translation> <translation id="3259149966178251584">કૅમેરાનું રિઝોલ્યુશન</translation> +<translation id="3260401663013584785">કોઈ દસ્તાવેજની ભાળ મળી શકી નથી</translation> <translation id="3448774564454087943">વીડિયો ખૂબ જ ટૂંકો હોવાથી તે સાચવવામાં આવ્યો નથી</translation> <translation id="3517926952904427380">પોર્ટ્રેટ ફોટો લઈ શકાતો નથી</translation> <translation id="3569311554794739032">શું તમે ખરેખર <ph name="FILE" />ને કાઢી નાખવા માગો છો?</translation> @@ -50,6 +51,7 @@ <translation id="3838931309141338733">બારકોડ સ્કૅન કરો</translation> <translation id="3892148308691398805">ટેક્સ્ટ કૉપિ કરો</translation> <translation id="4118525110028899586">રેકોર્ડિંગ થોભાવો</translation> +<translation id="4121305183798804752">દસ્તાવેજની ભાળ મળી</translation> <translation id="4269820728363426813">લિંક સરનામું કૉપિ કરો</translation> <translation id="4279490309300973883">પ્રતિબિંબત થઈ રહ્યું છે</translation> <translation id="4329152592498422850">વર્ગાકાર ફોટો લેવા માટે સ્વિચ કરો</translation>
diff --git a/chromeos/components/camera_app_ui/resources/strings/camera_strings_hi.xtb b/chromeos/components/camera_app_ui/resources/strings/camera_strings_hi.xtb index 7670fbe5..7a56da9b 100644 --- a/chromeos/components/camera_app_ui/resources/strings/camera_strings_hi.xtb +++ b/chromeos/components/camera_app_ui/resources/strings/camera_strings_hi.xtb
@@ -43,7 +43,7 @@ <translation id="3227137524299004712">माइक्रोफ़ोन</translation> <translation id="3240426699337459095">लिंक कॉपी की गई</translation> <translation id="3259149966178251584">कैमरे का रिज़ॉल्यूशन</translation> -<translation id="3260401663013584785">दस्तावेज़ नहीं मिला है</translation> +<translation id="3260401663013584785">कोई दस्तावेज़ नहीं मिला</translation> <translation id="3448774564454087943">वीडियो बहुत छोटा होने की वजह से सेव नहीं किया गया है</translation> <translation id="3517926952904427380">पोर्ट्रेट फ़ोटो नहीं ली जा सकी</translation> <translation id="3569311554794739032">क्या आप वाकई <ph name="FILE" /> को हटाना चाहते हैं?</translation>
diff --git a/chromeos/components/camera_app_ui/resources/strings/camera_strings_iw.xtb b/chromeos/components/camera_app_ui/resources/strings/camera_strings_iw.xtb index a1ace9e..60c573b 100644 --- a/chromeos/components/camera_app_ui/resources/strings/camera_strings_iw.xtb +++ b/chromeos/components/camera_app_ui/resources/strings/camera_strings_iw.xtb
@@ -43,7 +43,7 @@ <translation id="3227137524299004712">מיקרופון</translation> <translation id="3240426699337459095">הקישור הועתק</translation> <translation id="3259149966178251584">רזולוציית המצלמה</translation> -<translation id="3260401663013584785">לא ניתן היה לזהות מסמך</translation> +<translation id="3260401663013584785">לא זוהה מסמך</translation> <translation id="3448774564454087943">הסרטון לא נשמר כי הוא קצר מדי</translation> <translation id="3517926952904427380">לא ניתן לצלם לאורך</translation> <translation id="3569311554794739032">להסיר את <ph name="FILE" />?</translation>
diff --git a/chromeos/components/camera_app_ui/resources/strings/camera_strings_mr.xtb b/chromeos/components/camera_app_ui/resources/strings/camera_strings_mr.xtb index a9147c0..ad2a06a2 100644 --- a/chromeos/components/camera_app_ui/resources/strings/camera_strings_mr.xtb +++ b/chromeos/components/camera_app_ui/resources/strings/camera_strings_mr.xtb
@@ -43,6 +43,7 @@ <translation id="3227137524299004712">मायक्रोफोन</translation> <translation id="3240426699337459095">लिंक कॉपी केला</translation> <translation id="3259149966178251584">कॅमेरा रिझोल्यूशन</translation> +<translation id="3260401663013584785">दस्तऐवज डिटेक्ट करता आले नाही</translation> <translation id="3448774564454087943">व्हिडिओ खूप लहान असल्याने तो सेव्ह केलेला नाही</translation> <translation id="3517926952904427380">पोर्ट्रेट फोटो काढता आला नाही</translation> <translation id="3569311554794739032">तुम्हाला <ph name="FILE" /> खरोखर काढायची आहे का?</translation> @@ -50,6 +51,7 @@ <translation id="3838931309141338733">बारकोड स्कॅन करा</translation> <translation id="3892148308691398805">मजकूर कॉपी करा</translation> <translation id="4118525110028899586">रेकॉर्डिंग थांबवा</translation> +<translation id="4121305183798804752">दस्तऐवज डिटेक्ट केले</translation> <translation id="4269820728363426813">लिंकचा पत्ता कॉपी करा</translation> <translation id="4279490309300973883">मिररिंग</translation> <translation id="4329152592498422850">चौरस फोटो काढण्यासाठी स्विच करा</translation>
diff --git a/chromeos/components/camera_app_ui/resources/strings/camera_strings_pa.xtb b/chromeos/components/camera_app_ui/resources/strings/camera_strings_pa.xtb index 52af106..2648d87 100644 --- a/chromeos/components/camera_app_ui/resources/strings/camera_strings_pa.xtb +++ b/chromeos/components/camera_app_ui/resources/strings/camera_strings_pa.xtb
@@ -43,6 +43,7 @@ <translation id="3227137524299004712">ਮਾਈਕ੍ਰੋਫੋਨ</translation> <translation id="3240426699337459095">ਲਿੰਕ ਕਾਪੀ ਕੀਤਾ</translation> <translation id="3259149966178251584">ਕੈਮਰਾ ਰੈਜ਼ੋਲਿਊਸ਼ਨ</translation> +<translation id="3260401663013584785">ਦਸਤਾਵੇਜ਼ ਦਾ ਪਤਾ ਨਹੀਂ ਲੱਗ ਸਕਿਆ</translation> <translation id="3448774564454087943">ਵੀਡੀਓ ਬਹੁਤ ਛੋਟਾ ਹੋਣ ਕਰਕੇ ਇਸਨੂੰ ਰੱਖਿਅਤ ਨਹੀਂ ਕੀਤਾ ਗਿਆ</translation> <translation id="3517926952904427380">ਪੋਰਟਰੇਟ ਫ਼ੋਟੋ ਖਿੱਚੀ ਨਹੀਂ ਜਾ ਸਕੀ</translation> <translation id="3569311554794739032">ਕੀ ਤੁਸੀਂ ਪੱਕਾ <ph name="FILE" /> ਨੂੰ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?</translation> @@ -50,6 +51,7 @@ <translation id="3838931309141338733">ਬਾਰਕੋਡ ਸਕੈਨ ਕਰੋ</translation> <translation id="3892148308691398805">ਲਿਖਤ ਕਾਪੀ ਕਰੋ</translation> <translation id="4118525110028899586">ਰਿਕਾਰਡਿੰਗ ਰੋਕੋ</translation> +<translation id="4121305183798804752">ਦਸਤਾਵੇਜ਼ ਦਾ ਪਤਾ ਲੱਗਿਆ</translation> <translation id="4269820728363426813">ਲਿੰਕ ਪਤਾ ਕਾਪੀ ਕਰੋ</translation> <translation id="4279490309300973883">ਪ੍ਰਤਿਬਿੰਬੀਕਰਨ</translation> <translation id="4329152592498422850">'ਵਰਗਾਕਾਰ ਫ਼ੋਟੋ ਖਿੱਚੋ' ਮੋਡ 'ਤੇ ਜਾਓ</translation>
diff --git a/chromeos/components/camera_app_ui/resources/strings/camera_strings_sq.xtb b/chromeos/components/camera_app_ui/resources/strings/camera_strings_sq.xtb index cc8b41e..dc025dd 100644 --- a/chromeos/components/camera_app_ui/resources/strings/camera_strings_sq.xtb +++ b/chromeos/components/camera_app_ui/resources/strings/camera_strings_sq.xtb
@@ -43,6 +43,7 @@ <translation id="3227137524299004712">Mikrofoni</translation> <translation id="3240426699337459095">Lidhja u kopjua</translation> <translation id="3259149966178251584">Rezolucioni i kamerës</translation> +<translation id="3260401663013584785">Nuk mund të zbulohej një dokument</translation> <translation id="3448774564454087943">Videoja nuk është ruajtur duke qenë se është shumë e shkurtër</translation> <translation id="3517926952904427380">Nuk mund të nxjerrësh një fotografi portret</translation> <translation id="3569311554794739032">Vërtet dëshiron të heqësh <ph name="FILE" />?</translation> @@ -50,6 +51,7 @@ <translation id="3838931309141338733">Skano bardkodin</translation> <translation id="3892148308691398805">Kopjo tekstin</translation> <translation id="4118525110028899586">Vendose në pauzë regjistrimin</translation> +<translation id="4121305183798804752">U zbulua një dokument</translation> <translation id="4269820728363426813">Kopjo adresën e lidhjes</translation> <translation id="4279490309300973883">Pasqyrim</translation> <translation id="4329152592498422850">Ndërroje për të nxjerrë një fotografi katrore</translation>
diff --git a/chromeos/components/camera_app_ui/resources/strings/camera_strings_te.xtb b/chromeos/components/camera_app_ui/resources/strings/camera_strings_te.xtb index 6c9734a..59a85eaf 100644 --- a/chromeos/components/camera_app_ui/resources/strings/camera_strings_te.xtb +++ b/chromeos/components/camera_app_ui/resources/strings/camera_strings_te.xtb
@@ -43,6 +43,7 @@ <translation id="3227137524299004712">మైక్రోఫోన్</translation> <translation id="3240426699337459095">లింక్ కాపీ చేయబడింది</translation> <translation id="3259149966178251584">కెమెరా రిజల్యూషన్</translation> +<translation id="3260401663013584785">డాక్యుమెంట్ను గుర్తించడం సాధ్యపడలేదు</translation> <translation id="3448774564454087943">వీడియో చాలా చిన్నగా ఉన్నందున అది సేవ్ కాలేదు</translation> <translation id="3517926952904427380">పోర్ట్రెయిట్ ఫోటోను తీయలేకపోయింది</translation> <translation id="3569311554794739032">మీరు <ph name="FILE" />ను ఖచ్చితంగా తీసివేయాలనుకుంటున్నారా?</translation> @@ -50,6 +51,7 @@ <translation id="3838931309141338733">బార్కోడ్ను స్కాన్ చేయండి</translation> <translation id="3892148308691398805">టెక్స్ట్ను కాపీ చేయి</translation> <translation id="4118525110028899586">రికార్డింగ్ను పాజ్ చేయి</translation> +<translation id="4121305183798804752">డాక్యుమెంట్ గుర్తించబడింది</translation> <translation id="4269820728363426813">లింక్ అడ్రస్ను కాపీ చేయండి</translation> <translation id="4279490309300973883">మిర్రరింగ్</translation> <translation id="4329152592498422850">చతురస్ర ఆకారంలో ఫోటోను తీసేలా మార్చు</translation>
diff --git a/chromeos/components/camera_app_ui/resources/strings/camera_strings_ur.xtb b/chromeos/components/camera_app_ui/resources/strings/camera_strings_ur.xtb index 3a31038..a287fc00 100644 --- a/chromeos/components/camera_app_ui/resources/strings/camera_strings_ur.xtb +++ b/chromeos/components/camera_app_ui/resources/strings/camera_strings_ur.xtb
@@ -43,6 +43,7 @@ <translation id="3227137524299004712">مائیکروفون</translation> <translation id="3240426699337459095">لنک کاپی ہوگیا</translation> <translation id="3259149966178251584">کیمرہ ریزولیوشن</translation> +<translation id="3260401663013584785">دستاویز کا پتا نہیں لگ سکا</translation> <translation id="3448774564454087943">ویڈیو بہت چھوٹی ہونے کی وجہ سے محفوظ نہیں ہوئی</translation> <translation id="3517926952904427380">پورٹریٹ تصویر لینے سے قاصر</translation> <translation id="3569311554794739032">کیا آپ واقعی <ph name="FILE" /> کو ہٹانا چاہتے ہیں؟</translation> @@ -50,6 +51,7 @@ <translation id="3838931309141338733">بارکوڈ اسکین کریں</translation> <translation id="3892148308691398805">ٹیکسٹ کاپی کریں</translation> <translation id="4118525110028899586">ریکارڈنگ موقوف کریں</translation> +<translation id="4121305183798804752">دستاویز کا پتہ چلا</translation> <translation id="4269820728363426813">لنک کا پتہ کاپی کریں</translation> <translation id="4279490309300973883">مررنگ</translation> <translation id="4329152592498422850">مربع تصویر لینے کی وضع پر سوئچ کریں</translation>
diff --git a/chromeos/network/onc/onc_signature.cc b/chromeos/network/onc/onc_signature.cc index 7dc9b3dc..0719596 100644 --- a/chromeos/network/onc/onc_signature.cc +++ b/chromeos/network/onc/onc_signature.cc
@@ -311,6 +311,7 @@ {::onc::cellular::kAPN, &kCellularApnSignature}, {::onc::cellular::kAPNList, &kCellularApnListSignature}, {::onc::cellular::kAutoConnect, &kBoolSignature}, + {::onc::cellular::kSMDPAddress, &kStringSignature}, {nullptr}}; const OncFieldSignature cellular_with_state_fields[] = { @@ -340,7 +341,6 @@ {::onc::cellular::kSignalStrength, &kIntegerSignature}, {::onc::cellular::kSIMLockStatus, &kSIMLockStatusSignature}, {::onc::cellular::kSIMPresent, &kBoolSignature}, - {::onc::cellular::kSMDPAddress, &kStringSignature}, {::onc::cellular::kSupportNetworkScan, &kBoolSignature}, {nullptr}};
diff --git a/chromeos/network/onc/onc_validator.cc b/chromeos/network/onc/onc_validator.cc index d7ec1f0..8acdf54 100644 --- a/chromeos/network/onc/onc_validator.cc +++ b/chromeos/network/onc/onc_validator.cc
@@ -681,13 +681,14 @@ std::string type = GetStringFromDict(*result, ::onc::network_config::kType); - // Prohibit anything but WiFi, Ethernet and VPN for device-level policy - // (which corresponds to shared networks). See also + // Prohibit anything but WiFi, Ethernet, VPN and Cellular for device-level + // policy (which corresponds to shared networks). See also // http://crosbug.com/28741. if (onc_source_ == ::onc::ONC_SOURCE_DEVICE_POLICY && !type.empty() && type != ::onc::network_type::kVPN && type != ::onc::network_type::kWiFi && - type != ::onc::network_type::kEthernet) { + type != ::onc::network_type::kEthernet && + type != ::onc::network_type::kCellular) { std::ostringstream msg; msg << "Networks of type '" << type << "' are prohibited in ONC device policies."; @@ -710,6 +711,9 @@ } else if (type == ::onc::network_type::kTether) { all_required_exist &= RequireField(*result, ::onc::network_config::kTether); + } else if (type == ::onc::network_type::kCellular) { + all_required_exist &= + RequireField(*result, ::onc::network_config::kCellular); } }
diff --git a/chromeos/network/onc/onc_validator_unittest.cc b/chromeos/network/onc/onc_validator_unittest.cc index 4519725..34b5bc6 100644 --- a/chromeos/network/onc/onc_validator_unittest.cc +++ b/chromeos/network/onc/onc_validator_unittest.cc
@@ -220,6 +220,10 @@ OncParams("ethernet_with_eap.onc", &kNetworkConfigurationSignature, true), + OncParams("cellular_with_smdp.onc", + &kNetworkConfigurationSignature, + true, + ::onc::ONC_SOURCE_DEVICE_POLICY), OncParams("translation_of_shill_ethernet_with_ipconfig.onc", &kNetworkWithStateSignature, true),
diff --git a/chromeos/services/libassistant/BUILD.gn b/chromeos/services/libassistant/BUILD.gn index b26cf99..0967223 100644 --- a/chromeos/services/libassistant/BUILD.gn +++ b/chromeos/services/libassistant/BUILD.gn
@@ -26,7 +26,10 @@ "libassistant_service.h", ] - public_deps = [ "//chromeos/services/libassistant/public/mojom" ] + public_deps = [ + "//chromeos/assistant/internal/proto:assistant", + "//chromeos/services/libassistant/public/mojom", + ] deps = [ ":internal",
diff --git a/chromeos/services/libassistant/grpc/assistant_client_impl.cc b/chromeos/services/libassistant/grpc/assistant_client_impl.cc index 86b78cd4..f0ad280c 100644 --- a/chromeos/services/libassistant/grpc/assistant_client_impl.cc +++ b/chromeos/services/libassistant/grpc/assistant_client_impl.cc
@@ -4,10 +4,13 @@ #include "chromeos/services/libassistant/grpc/assistant_client_impl.h" +#include <memory> + #include "base/check.h" #include "base/containers/flat_set.h" #include "base/notreached.h" #include "base/threading/sequenced_task_runner_handle.h" +#include "chromeos/assistant/internal/internal_constants.h" #include "chromeos/services/assistant/public/cpp/features.h" #include "chromeos/services/libassistant/grpc/assistant_client_v1.h" #include "chromeos/services/libassistant/grpc/grpc_libassistant_client.h" @@ -21,7 +24,8 @@ assistant_client::AssistantManagerInternal* assistant_manager_internal, const std::string& libassistant_service_address, const std::string& assistant_service_address) - : AssistantClient(std::move(assistant_manager), assistant_manager_internal), + : AssistantClientV1(std::move(assistant_manager), + assistant_manager_internal), grpc_services_(libassistant_service_address, assistant_service_address), client_(grpc_services_.GrpcLibassistantClient()), task_runner_(base::SequencedTaskRunnerHandle::Get()) {} @@ -30,6 +34,12 @@ DCHECK(task_runner_->RunsTasksInCurrentSequence()); } +void AssistantClientImpl::StartServices() { + StartGrpcServices(); + + AssistantClientV1::StartServices(); +} + bool AssistantClientImpl::StartGrpcServices() { return grpc_services_.Start(); } @@ -37,13 +47,26 @@ void AssistantClientImpl::AddExperimentIds( const std::vector<std::string>& exp_ids) {} +void AssistantClientImpl::SendVoicelessInteraction( + const ::assistant::api::Interaction& interaction, + const std::string& description, + const ::assistant::api::VoicelessOptions& options, + base::OnceCallback<void(bool)> on_done) { + NOTIMPLEMENTED(); +} + // static std::unique_ptr<AssistantClient> AssistantClient::Create( std::unique_ptr<assistant_client::AssistantManager> assistant_manager, assistant_client::AssistantManagerInternal* assistant_manager_internal) { if (chromeos::assistant::features::IsLibAssistantV2Enabled()) { - // not supported yet - return nullptr; + // Note that we should *not* depend on |assistant_manager_internal| for V2, + // so |assistant_manager_internal| will be nullptr after the migration has + // done. + return std::make_unique<AssistantClientImpl>( + std::move(assistant_manager), assistant_manager_internal, + assistant::kLibassistantServiceAddress, + assistant::kAssistantServiceAddress); } return std::make_unique<AssistantClientV1>(std::move(assistant_manager),
diff --git a/chromeos/services/libassistant/grpc/assistant_client_impl.h b/chromeos/services/libassistant/grpc/assistant_client_impl.h index 11fba10..612cfab 100644 --- a/chromeos/services/libassistant/grpc/assistant_client_impl.h +++ b/chromeos/services/libassistant/grpc/assistant_client_impl.h
@@ -10,7 +10,7 @@ #include "base/memory/weak_ptr.h" #include "base/sequenced_task_runner.h" -#include "chromeos/services/libassistant/grpc/assistant_client.h" +#include "chromeos/services/libassistant/grpc/assistant_client_v1.h" #include "chromeos/services/libassistant/grpc/external_services/grpc_services_initializer.h" namespace chromeos { @@ -20,7 +20,7 @@ // This class wraps the libassistant grpc client and exposes V2 APIs for // ChromeOS to use. -class AssistantClientImpl : public AssistantClient { +class AssistantClientImpl : public AssistantClientV1 { public: AssistantClientImpl( std::unique_ptr<assistant_client::AssistantManager> assistant_manager, @@ -31,8 +31,14 @@ ~AssistantClientImpl() override; // chromeos::libassistant::AssistantClient overrides: + void StartServices() override; bool StartGrpcServices() override; void AddExperimentIds(const std::vector<std::string>& exp_ids) override; + void SendVoicelessInteraction( + const ::assistant::api::Interaction& interaction, + const std::string& description, + const ::assistant::api::VoicelessOptions& options, + base::OnceCallback<void(bool)> on_done) override; private: chromeos::libassistant::GrpcServicesInitializer grpc_services_;
diff --git a/chromeos/services/libassistant/util.cc b/chromeos/services/libassistant/util.cc index 85249c9..1f840ef7 100644 --- a/chromeos/services/libassistant/util.cc +++ b/chromeos/services/libassistant/util.cc
@@ -195,6 +195,14 @@ device.SetKey("model_revision", Value(1)); config.SetKey("device", std::move(device)); + // Enables Libassistant gRPC server for V2. + if (chromeos::assistant::features::IsLibAssistantV2Enabled()) { + Value libas_server(Type::DICTIONARY); + libas_server.SetKey("libas_server_address", + Value(assistant::kLibassistantServiceAddress)); + config.SetKey("libas_server", std::move(libas_server)); + } + Value discovery(Type::DICTIONARY); discovery.SetKey("enable_mdns", Value(false)); config.SetKey("discovery", std::move(discovery));
diff --git a/chromeos/strings/chromeos_strings_es-419.xtb b/chromeos/strings/chromeos_strings_es-419.xtb index 1a39a90..82f481c 100644 --- a/chromeos/strings/chromeos_strings_es-419.xtb +++ b/chromeos/strings/chromeos_strings_es-419.xtb
@@ -37,7 +37,7 @@ <translation id="1621067168122174824">Ejecutar prueba de carga</translation> <translation id="1639239467298939599">Cargando</translation> <translation id="1641857168437328880">Alimentador de documentos (una cara)</translation> -<translation id="1643449475550628585">Cambiar la imagen del fondo de pantalla cada día</translation> +<translation id="1643449475550628585">Cambiar la imagen del fondo de pantalla diariamente</translation> <translation id="1644574205037202324">Historial</translation> <translation id="1662989795263954667">Se detuvo: sin tinta</translation> <translation id="1703835215927279855">Letter</translation>
diff --git a/chromeos/strings/chromeos_strings_gu.xtb b/chromeos/strings/chromeos_strings_gu.xtb index ec46aa9..3f85cd7 100644 --- a/chromeos/strings/chromeos_strings_gu.xtb +++ b/chromeos/strings/chromeos_strings_gu.xtb
@@ -37,6 +37,7 @@ <translation id="1621067168122174824">ચાર્જિંગનું પરીક્ષણ ચાલુ કરો</translation> <translation id="1639239467298939599">લોડ કરી રહ્યું છે</translation> <translation id="1641857168437328880">દસ્તાવેજનું ફીડર (એક બાજુથી)</translation> +<translation id="1643449475550628585">વૉલપેપરની છબી દરરોજ બદલો</translation> <translation id="1644574205037202324">ઇતિહાસ</translation> <translation id="1662989795263954667">બંધ - શાહી ખલાસ થઈ ગઈ</translation> <translation id="1703835215927279855">અક્ષર</translation> @@ -76,6 +77,7 @@ <translation id="2448312741937722512">પ્રકાર</translation> <translation id="2461822463642141190">વર્તમાન</translation> <translation id="249323605434939166"><ph name="QUERY_TEXT" /> · <ph name="SOURCE_LANGUAGE_NAME" /></translation> +<translation id="2505327257735685095">હાલની વૉલપેપર છબી રિફ્રેશ કરો</translation> <translation id="2517472476991765520">સ્કૅન કરો</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> પરીક્ષણ ચલાવી રહ્યાં છીએ…</translation> <translation id="2585245331261708204">Chrome OSમાં નવું શું છે</translation>
diff --git a/chromeos/strings/chromeos_strings_hi.xtb b/chromeos/strings/chromeos_strings_hi.xtb index 4768e6c..9b1ba5a 100644 --- a/chromeos/strings/chromeos_strings_hi.xtb +++ b/chromeos/strings/chromeos_strings_hi.xtb
@@ -37,7 +37,7 @@ <translation id="1621067168122174824">चार्ज टेस्ट चलाएं</translation> <translation id="1639239467298939599">लोड हो रहा है</translation> <translation id="1641857168437328880">डॉक्यूमेंट फ़ीडर (एक तरफ़ वाला)</translation> -<translation id="1643449475550628585">वॉलपेपर की इमेज रोज़ बदलें</translation> +<translation id="1643449475550628585">वॉलपेपर रोज़ बदलें</translation> <translation id="1644574205037202324">इतिहास</translation> <translation id="1662989795263954667">बंद हो गया - स्याही खत्म हो गई</translation> <translation id="1703835215927279855">लेटर</translation> @@ -77,7 +77,7 @@ <translation id="2448312741937722512">प्रकार</translation> <translation id="2461822463642141190">मौजूदा</translation> <translation id="249323605434939166"><ph name="QUERY_TEXT" /> · <ph name="SOURCE_LANGUAGE_NAME" /></translation> -<translation id="2505327257735685095">मौजूदा वॉलपेपर की इमेज रीफ़्रेश करें</translation> +<translation id="2505327257735685095">मौजूदा वॉलपेपर रीफ़्रेश करें</translation> <translation id="2517472476991765520">स्कैन करें</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> की जांच की जा रही है...</translation> <translation id="2585245331261708204">Chrome OS में नया क्या है</translation>
diff --git a/chromeos/strings/chromeos_strings_iw.xtb b/chromeos/strings/chromeos_strings_iw.xtb index 34337c8..bbc5aa0 100644 --- a/chromeos/strings/chromeos_strings_iw.xtb +++ b/chromeos/strings/chromeos_strings_iw.xtb
@@ -37,7 +37,7 @@ <translation id="1621067168122174824">הפעלה של בדיקת טעינה</translation> <translation id="1639239467298939599">בטעינה</translation> <translation id="1641857168437328880">הכנסת מסמכים (צד אחד)</translation> -<translation id="1643449475550628585">שינוי התמונה בטפט מדי יום</translation> +<translation id="1643449475550628585">החלפה של תמונת הטפט מדי יום</translation> <translation id="1644574205037202324">היסטוריה</translation> <translation id="1662989795263954667">הפסיקה – הדיו נגמר</translation> <translation id="1703835215927279855">Letter</translation> @@ -77,7 +77,7 @@ <translation id="2448312741937722512">סוג</translation> <translation id="2461822463642141190">כרגע</translation> <translation id="249323605434939166"><ph name="QUERY_TEXT" /> · <ph name="SOURCE_LANGUAGE_NAME" /></translation> -<translation id="2505327257735685095">רענון התמונה הנוכחית בטפט</translation> +<translation id="2505327257735685095">רענון של תמונת הטפט</translation> <translation id="2517472476991765520">סריקה</translation> <translation id="2570743873672969996">הבדיקה של <ph name="TEST_NAME" /> בתהליך…</translation> <translation id="2585245331261708204">מה חדש ב-Chrome OS</translation>
diff --git a/chromeos/strings/chromeos_strings_mr.xtb b/chromeos/strings/chromeos_strings_mr.xtb index 4ee55c49..91561e2 100644 --- a/chromeos/strings/chromeos_strings_mr.xtb +++ b/chromeos/strings/chromeos_strings_mr.xtb
@@ -37,6 +37,7 @@ <translation id="1621067168122174824">चार्ज चाचणी रन करा</translation> <translation id="1639239467298939599">लोड करीत आहे</translation> <translation id="1641857168437328880">दस्तऐवज फीडर (एक बाजू असलेले)</translation> +<translation id="1643449475550628585">वॉलपेपर इमेज रोज बदला</translation> <translation id="1644574205037202324">इतिहास</translation> <translation id="1662989795263954667">थांबले - शाई संपली आहे</translation> <translation id="1703835215927279855">Letter</translation> @@ -76,6 +77,7 @@ <translation id="2448312741937722512">प्रकार</translation> <translation id="2461822463642141190">सद्य</translation> <translation id="249323605434939166"><ph name="QUERY_TEXT" /> · <ph name="SOURCE_LANGUAGE_NAME" /></translation> +<translation id="2505327257735685095">सध्याची वॉलपेपर इमेज रिफ्रेश करा</translation> <translation id="2517472476991765520">स्कॅन करा</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> चाचणी रन होत आहे...</translation> <translation id="2585245331261708204">Chrome OS मध्ये नवीन</translation>
diff --git a/chromeos/strings/chromeos_strings_pa.xtb b/chromeos/strings/chromeos_strings_pa.xtb index 13b844a7..534f7d1 100644 --- a/chromeos/strings/chromeos_strings_pa.xtb +++ b/chromeos/strings/chromeos_strings_pa.xtb
@@ -37,6 +37,7 @@ <translation id="1621067168122174824">ਚਾਰਜ ਟੈਸਟ ਚਲਾਓ</translation> <translation id="1639239467298939599">ਲੋਡ ਕਰ ਰਿਹਾ ਹੈ</translation> <translation id="1641857168437328880">ਦਸਤਾਵੇਜ਼ ਫ਼ੀਡਰ (ਇੱਕ ਪਾਸੜ)</translation> +<translation id="1643449475550628585">ਵਾਲਪੇਪਰ ਚਿੱਤਰ ਨੂੰ ਰੋਜ਼ਾਨਾ ਬਦਲੋ</translation> <translation id="1644574205037202324">ਇਤਿਹਾਸ</translation> <translation id="1662989795263954667">ਬੰਦ ਹੋ ਗਿਆ - ਸਿਆਹੀ ਖਤਮ ਹੋ ਗਈ ਹੈ</translation> <translation id="1703835215927279855">ਚਿੱਠੀ</translation> @@ -76,6 +77,7 @@ <translation id="2448312741937722512">ਟਾਈਪ ਕਰੋ</translation> <translation id="2461822463642141190">ਮੌਜੂਦਾ</translation> <translation id="249323605434939166"><ph name="QUERY_TEXT" /> · <ph name="SOURCE_LANGUAGE_NAME" /></translation> +<translation id="2505327257735685095">ਮੌਜੂਦਾ ਵਾਲਪੇਪਰ ਚਿੱਤਰ ਨੂੰ ਰਿਫ੍ਰੈਸ਼ ਕਰੋ</translation> <translation id="2517472476991765520">ਸਕੈਨ ਕਰੋ</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> ਜਾਂਚ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ...</translation> <translation id="2585245331261708204">Chrome OS 'ਚ ਨਵਾਂ ਕੀ ਹੈ</translation>
diff --git a/chromeos/strings/chromeos_strings_sq.xtb b/chromeos/strings/chromeos_strings_sq.xtb index f3d8d3b..860fe53 100644 --- a/chromeos/strings/chromeos_strings_sq.xtb +++ b/chromeos/strings/chromeos_strings_sq.xtb
@@ -37,6 +37,7 @@ <translation id="1621067168122174824">Ekzekuto testin e karikimit</translation> <translation id="1639239467298939599">Po ngarkohet...</translation> <translation id="1641857168437328880">Furnizuesi i dokumentit (një anë)</translation> +<translation id="1643449475550628585">Ndryshoje çdo ditë imazhin e sfondit</translation> <translation id="1644574205037202324">Historiku</translation> <translation id="1662989795263954667">Ndaloi - Nuk ka bojë</translation> <translation id="1703835215927279855">Letter</translation> @@ -76,6 +77,7 @@ <translation id="2448312741937722512">Shkruaj</translation> <translation id="2461822463642141190">Rryma</translation> <translation id="249323605434939166"><ph name="QUERY_TEXT" /> · <ph name="SOURCE_LANGUAGE_NAME" /></translation> +<translation id="2505327257735685095">Rifresko imazhin aktual të sfondit</translation> <translation id="2517472476991765520">Skano</translation> <translation id="2570743873672969996">Po ekzekuton testin <ph name="TEST_NAME" />...</translation> <translation id="2585245331261708204">Të rejat me Chrome OS</translation>
diff --git a/chromeos/strings/chromeos_strings_te.xtb b/chromeos/strings/chromeos_strings_te.xtb index 6eeee83e..54b0f0d 100644 --- a/chromeos/strings/chromeos_strings_te.xtb +++ b/chromeos/strings/chromeos_strings_te.xtb
@@ -37,6 +37,7 @@ <translation id="1621067168122174824">ఛార్జ్ పరీక్షను రన్ చేయండి</translation> <translation id="1639239467298939599">లోడ్ అవుతోంది</translation> <translation id="1641857168437328880">డాక్యుమెంట్ ఫీడర్ (ఒక వైపున)</translation> +<translation id="1643449475550628585">ప్రతిరోజూ వాల్పేపర్ ఇమేజ్ను మార్చండి</translation> <translation id="1644574205037202324">హిస్టరీ</translation> <translation id="1662989795263954667">ఆగిపోయింది - ఇంక్ లేదు</translation> <translation id="1703835215927279855">లెటర్</translation> @@ -76,6 +77,7 @@ <translation id="2448312741937722512">రకం</translation> <translation id="2461822463642141190">ప్రస్తుత</translation> <translation id="249323605434939166"><ph name="QUERY_TEXT" /> · <ph name="SOURCE_LANGUAGE_NAME" /></translation> +<translation id="2505327257735685095">ప్రస్తుత వాల్పేపర్ ఇమేజ్ను రిఫ్రెష్ చేయండి</translation> <translation id="2517472476991765520">స్కాన్ చేయి</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> పరీక్షను రన్ చేస్తోంది...</translation> <translation id="2585245331261708204">Chrome OSలో కొత్తవి ఏంటి</translation>
diff --git a/chromeos/strings/chromeos_strings_ur.xtb b/chromeos/strings/chromeos_strings_ur.xtb index 6416cbc..a4181b9 100644 --- a/chromeos/strings/chromeos_strings_ur.xtb +++ b/chromeos/strings/chromeos_strings_ur.xtb
@@ -37,6 +37,7 @@ <translation id="1621067168122174824">چارج ٹیسٹ چلائیں</translation> <translation id="1639239467298939599">لوڈ ہو رہی ہے</translation> <translation id="1641857168437328880">دستاویز فیڈر (یک طرفہ)</translation> +<translation id="1643449475550628585">وال پیپر کی تصویر کو روزانہ تبدیل کریں</translation> <translation id="1644574205037202324">سرگزشت</translation> <translation id="1662989795263954667">رک گیا - سیاہی ختم ہو گئی</translation> <translation id="1703835215927279855">Letter</translation> @@ -76,6 +77,7 @@ <translation id="2448312741937722512">قسم</translation> <translation id="2461822463642141190">حالیہ</translation> <translation id="249323605434939166"><ph name="QUERY_TEXT" /> · <ph name="SOURCE_LANGUAGE_NAME" /></translation> +<translation id="2505327257735685095">وال پیپر کی موجودہ تصویر کو ریفریش کریں</translation> <translation id="2517472476991765520">اسکین کریں</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> ٹیسٹ چل رہا ہے...</translation> <translation id="2585245331261708204">Chrome OS میں نیا کیا ہے</translation>
diff --git a/chromeos/test/data/network/cellular_with_smdp.onc b/chromeos/test/data/network/cellular_with_smdp.onc new file mode 100644 index 0000000..e8fec9b --- /dev/null +++ b/chromeos/test/data/network/cellular_with_smdp.onc
@@ -0,0 +1,10 @@ +{ + "Type": "Cellular", + "GUID": "cellularGuid", + "Name": "Test cellular", + "Cellular": { + "AllowRoaming": true, + "AutoConnect": false, + "SMDPAddress" : "BogusSMDPAddress" + } +}
diff --git a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/MaterialCardViewNoShadow.java b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/MaterialCardViewNoShadow.java index d854b311..c18ef09 100644 --- a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/MaterialCardViewNoShadow.java +++ b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/MaterialCardViewNoShadow.java
@@ -5,29 +5,28 @@ package org.chromium.components.browser_ui.widget; import android.content.Context; +import android.graphics.drawable.GradientDrawable; import android.util.AttributeSet; +import android.widget.FrameLayout; -import com.google.android.material.card.MaterialCardView; +import org.chromium.components.browser_ui.styles.ChromeColors; /** - * Extension of {@link MaterialCardView} that set outline provider to null - * in order to remove shadow. + * Extension of {@link FrameLayout} that sets background resource to a rounded corner rectangle, + * with dynamic background color from ElevationOverlayProvider based on card elevation. + * Reuse the name of MaterialCardViewNoShadow to keep the same usage. + * But this class is no longer an extension of MaterialCardView. */ -public class MaterialCardViewNoShadow extends MaterialCardView { - /** - * Constructs an instance of MaterialCardViewNoShadow, - * which is an extension of {@link MaterialCardView} with shadow removed. - */ +public class MaterialCardViewNoShadow extends FrameLayout { public MaterialCardViewNoShadow(Context context, AttributeSet attrs) { - this(context, attrs, R.attr.materialCardViewStyle); + this(context, attrs, 0); } - /** - * Constructs an instance of MaterialCardViewNoShadow, - * which is an extension of {@link MaterialCardView} with shadow removed. - */ public MaterialCardViewNoShadow(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); - this.setOutlineProvider(null); + setBackgroundResource(R.drawable.card_with_corners_background); + GradientDrawable gradientDrawable = (GradientDrawable) getBackground(); + gradientDrawable.setColor( + ChromeColors.getSurfaceColor(getContext(), R.dimen.card_elevation)); } }
diff --git a/components/feed/content/renderer/rss_link_reader.cc b/components/feed/content/renderer/rss_link_reader.cc index c92419ee..65b3ee1 100644 --- a/components/feed/content/renderer/rss_link_reader.cc +++ b/components/feed/content/renderer/rss_link_reader.cc
@@ -4,6 +4,9 @@ #include "components/feed/content/renderer/rss_link_reader.h" +#include <string> + +#include "base/strings/string_util.h" #include "components/feed/mojom/rss_link_reader.mojom.h" #include "content/public/renderer/render_frame.h" #include "services/service_manager/public/cpp/binder_registry.h" @@ -20,41 +23,58 @@ constexpr int kMaxRssUrls = 50; // Returns the RSS URL embedded in `link_element`, or any empty GURL if no RSS -// url is contained. -GURL GetRssUrlFromLinkElement(const blink::WebDocument& document, - const blink::WebElement& link_element) { - GURL result; - if (link_element.HasAttribute("type") && link_element.HasAttribute("href")) { - blink::WebString type = link_element.GetAttribute("type"); - if (type.Equals("application/rss+xml") || - type.Equals("application/rss+atom") || - type.Equals("application/atom+xml")) { - blink::WebURL url = - document.CompleteURL(link_element.GetAttribute("href")); - if (url.IsValid()) - result = url; - } +// url is contained. This code is based on this internal implementation: +// http://shortn/_PIHj2svUjF +GURL GetRssUrlFromLinkElement(const blink::WebElement& link_element) { + if (!(link_element.HasAttribute("type") && link_element.HasAttribute("rel") && + link_element.HasAttribute("href"))) { + return GURL(); } - return result; + blink::WebString web_type = link_element.GetAttribute("type"); + blink::WebString web_rel = link_element.GetAttribute("rel"); + if (!web_type.ContainsOnlyASCII() || !web_rel.ContainsOnlyASCII()) + return GURL(); + std::string type = web_type.Ascii(); + if (!(base::LowerCaseEqualsASCII(type, "application/rss+xml") || + base::LowerCaseEqualsASCII(type, "application/rss+atom") || + base::LowerCaseEqualsASCII(type, "application/atom+xml"))) { + return GURL(); + } + std::string rel = web_rel.Ascii(); + if (!(base::LowerCaseEqualsASCII(rel, "alternate") || + base::LowerCaseEqualsASCII(rel, "service.feed"))) { + return GURL(); + } + blink::WebURL url = + link_element.GetDocument().CompleteURL(link_element.GetAttribute("href")); + return url.IsValid() ? GURL(url) : GURL(); +} + +void AddRssLinksFromElement(const blink::WebElement& element, + std::vector<GURL>* rss_urls) { + if (element.IsNull()) + return; + blink::WebElementCollection link_iter = + element.GetElementsByHTMLTagName("link"); + if (link_iter.IsNull()) + return; + for (blink::WebElement link = link_iter.FirstItem(); + !link.IsNull() && rss_urls->size() < kMaxRssUrls; + link = link_iter.NextItem()) { + GURL url = GetRssUrlFromLinkElement(link); + if (url.is_valid()) + rss_urls->push_back(url); + } } std::vector<GURL> GetRssLinksFromDocument(blink::WebDocument document) { std::vector<GURL> rss_urls; if (document.IsNull()) return rss_urls; - const blink::WebElement head = document.Head(); - if (head.IsNull()) - return rss_urls; - blink::WebElementCollection link_iter = head.GetElementsByHTMLTagName("link"); - if (link_iter.IsNull()) - return rss_urls; - for (blink::WebElement element = link_iter.FirstItem(); - !element.IsNull() && rss_urls.size() < kMaxRssUrls; - element = link_iter.NextItem()) { - GURL url = GetRssUrlFromLinkElement(document, element); - if (url.is_valid()) - rss_urls.push_back(url); - } + AddRssLinksFromElement(document.Head(), &rss_urls); + // If head contained no RSS feed links, fallback to scanning the body. + if (rss_urls.empty()) + AddRssLinksFromElement(document.Body(), &rss_urls); return rss_urls; }
diff --git a/components/omnibox/browser/actions/omnibox_pedal_concepts.h b/components/omnibox/browser/actions/omnibox_pedal_concepts.h index fe72317..3e5d2052 100644 --- a/components/omnibox/browser/actions/omnibox_pedal_concepts.h +++ b/components/omnibox/browser/actions/omnibox_pedal_concepts.h
@@ -10,7 +10,7 @@ // This value is generated during Pedal concept data processing, and written // to all data files as well as the source code here to ensure synchrony. // The runtime loaded data must match this version exactly or it won't load. -constexpr int OMNIBOX_PEDAL_CONCEPTS_DATA_VERSION = 15996517; +constexpr int OMNIBOX_PEDAL_CONCEPTS_DATA_VERSION = 15998484; // Unique identifiers for Pedals, used to bind loaded data to implementations. // Also used in the Omnibox.SuggestionUsed.Pedal histogram. Do not remove or
diff --git a/components/omnibox/browser/actions/omnibox_pedal_implementations.cc b/components/omnibox/browser/actions/omnibox_pedal_implementations.cc index 45eeb32a..f38ba90 100644 --- a/components/omnibox/browser/actions/omnibox_pedal_implementations.cc +++ b/components/omnibox/browser/actions/omnibox_pedal_implementations.cc
@@ -1094,6 +1094,202 @@ // ============================================================================= +class OmniboxPedalFindMyPhone : public OmniboxPedal { + public: + OmniboxPedalFindMyPhone() + : OmniboxPedal( + OmniboxPedalId::FIND_MY_PHONE, + LabelStrings(IDS_OMNIBOX_PEDAL_FIND_MY_PHONE_HINT, + IDS_OMNIBOX_PEDAL_FIND_MY_PHONE_SUGGESTION_CONTENTS, + IDS_ACC_OMNIBOX_PEDAL_FIND_MY_PHONE_SUFFIX, + IDS_ACC_OMNIBOX_PEDAL_FIND_MY_PHONE), + GURL()) {} + + protected: + ~OmniboxPedalFindMyPhone() override = default; +}; + +// ============================================================================= + +class OmniboxPedalManageGooglePrivacy : public OmniboxPedal { + public: + OmniboxPedalManageGooglePrivacy() + : OmniboxPedal( + OmniboxPedalId::MANAGE_GOOGLE_PRIVACY, + LabelStrings( + IDS_OMNIBOX_PEDAL_MANAGE_GOOGLE_PRIVACY_HINT, + IDS_OMNIBOX_PEDAL_MANAGE_GOOGLE_PRIVACY_SUGGESTION_CONTENTS, + IDS_ACC_OMNIBOX_PEDAL_MANAGE_GOOGLE_PRIVACY_SUFFIX, + IDS_ACC_OMNIBOX_PEDAL_MANAGE_GOOGLE_PRIVACY), + GURL()) {} + + protected: + ~OmniboxPedalManageGooglePrivacy() override = default; +}; + +// ============================================================================= + +class OmniboxPedalManageGoogleAdSettings : public OmniboxPedal { + public: + OmniboxPedalManageGoogleAdSettings() + : OmniboxPedal( + OmniboxPedalId::MANAGE_GOOGLE_AD_SETTINGS, + LabelStrings( + IDS_OMNIBOX_PEDAL_MANAGE_GOOGLE_AD_SETTINGS_HINT, + IDS_OMNIBOX_PEDAL_MANAGE_GOOGLE_AD_SETTINGS_SUGGESTION_CONTENTS, + IDS_ACC_OMNIBOX_PEDAL_MANAGE_GOOGLE_AD_SETTINGS_SUFFIX, + IDS_ACC_OMNIBOX_PEDAL_MANAGE_GOOGLE_AD_SETTINGS), + GURL()) {} + + protected: + ~OmniboxPedalManageGoogleAdSettings() override = default; +}; + +// ============================================================================= + +class OmniboxPedalManageChromeSettings : public OmniboxPedal { + public: + OmniboxPedalManageChromeSettings() + : OmniboxPedal( + OmniboxPedalId::MANAGE_CHROME_SETTINGS, + LabelStrings( + IDS_OMNIBOX_PEDAL_MANAGE_CHROME_SETTINGS_HINT, + IDS_OMNIBOX_PEDAL_MANAGE_CHROME_SETTINGS_SUGGESTION_CONTENTS, + IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_SETTINGS_SUFFIX, + IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_SETTINGS), + GURL()) {} + + protected: + ~OmniboxPedalManageChromeSettings() override = default; +}; + +// ============================================================================= + +class OmniboxPedalManageChromeDownloads : public OmniboxPedal { + public: + OmniboxPedalManageChromeDownloads() + : OmniboxPedal( + OmniboxPedalId::MANAGE_CHROME_DOWNLOADS, + LabelStrings( + IDS_OMNIBOX_PEDAL_MANAGE_CHROME_DOWNLOADS_HINT, + IDS_OMNIBOX_PEDAL_MANAGE_CHROME_DOWNLOADS_SUGGESTION_CONTENTS, + IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_DOWNLOADS_SUFFIX, + IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_DOWNLOADS), + GURL()) {} + + protected: + ~OmniboxPedalManageChromeDownloads() override = default; +}; + +// ============================================================================= + +class OmniboxPedalViewChromeHistory : public OmniboxPedal { + public: + OmniboxPedalViewChromeHistory() + : OmniboxPedal( + OmniboxPedalId::VIEW_CHROME_HISTORY, + LabelStrings( + IDS_OMNIBOX_PEDAL_VIEW_CHROME_HISTORY_HINT, + IDS_OMNIBOX_PEDAL_VIEW_CHROME_HISTORY_SUGGESTION_CONTENTS, + IDS_ACC_OMNIBOX_PEDAL_VIEW_CHROME_HISTORY_SUFFIX, + IDS_ACC_OMNIBOX_PEDAL_VIEW_CHROME_HISTORY), + GURL()) {} + + protected: + ~OmniboxPedalViewChromeHistory() override = default; +}; + +// ============================================================================= + +class OmniboxPedalShareThisPage : public OmniboxPedal { + public: + OmniboxPedalShareThisPage() + : OmniboxPedal( + OmniboxPedalId::SHARE_THIS_PAGE, + LabelStrings(IDS_OMNIBOX_PEDAL_SHARE_THIS_PAGE_HINT, + IDS_OMNIBOX_PEDAL_SHARE_THIS_PAGE_SUGGESTION_CONTENTS, + IDS_ACC_OMNIBOX_PEDAL_SHARE_THIS_PAGE_SUFFIX, + IDS_ACC_OMNIBOX_PEDAL_SHARE_THIS_PAGE), + GURL()) {} + + protected: + ~OmniboxPedalShareThisPage() override = default; +}; + +// ============================================================================= + +class OmniboxPedalManageChromeAccessibility : public OmniboxPedal { + public: + OmniboxPedalManageChromeAccessibility() + : OmniboxPedal( + OmniboxPedalId::MANAGE_CHROME_ACCESSIBILITY, + LabelStrings( + IDS_OMNIBOX_PEDAL_MANAGE_CHROME_ACCESSIBILITY_HINT, + IDS_OMNIBOX_PEDAL_MANAGE_CHROME_ACCESSIBILITY_SUGGESTION_CONTENTS, + IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_ACCESSIBILITY_SUFFIX, + IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_ACCESSIBILITY), + GURL()) {} + + protected: + ~OmniboxPedalManageChromeAccessibility() override = default; +}; + +// ============================================================================= + +class OmniboxPedalCustomizeChromeFonts : public OmniboxPedal { + public: + OmniboxPedalCustomizeChromeFonts() + : OmniboxPedal( + OmniboxPedalId::CUSTOMIZE_CHROME_FONTS, + LabelStrings( + IDS_OMNIBOX_PEDAL_CUSTOMIZE_CHROME_FONTS_HINT, + IDS_OMNIBOX_PEDAL_CUSTOMIZE_CHROME_FONTS_SUGGESTION_CONTENTS, + IDS_ACC_OMNIBOX_PEDAL_CUSTOMIZE_CHROME_FONTS_SUFFIX, + IDS_ACC_OMNIBOX_PEDAL_CUSTOMIZE_CHROME_FONTS), + GURL()) {} + + protected: + ~OmniboxPedalCustomizeChromeFonts() override = default; +}; + +// ============================================================================= + +class OmniboxPedalManageChromeThemes : public OmniboxPedal { + public: + OmniboxPedalManageChromeThemes() + : OmniboxPedal( + OmniboxPedalId::MANAGE_CHROME_THEMES, + LabelStrings( + IDS_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES_HINT, + IDS_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES_SUGGESTION_CONTENTS, + IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES_SUFFIX, + IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES), + GURL()) {} + + protected: + ~OmniboxPedalManageChromeThemes() override = default; +}; + +// ============================================================================= + +class OmniboxPedalCustomizeSearchEngines : public OmniboxPedal { + public: + OmniboxPedalCustomizeSearchEngines() + : OmniboxPedal( + OmniboxPedalId::CUSTOMIZE_SEARCH_ENGINES, + LabelStrings( + IDS_OMNIBOX_PEDAL_CUSTOMIZE_SEARCH_ENGINES_HINT, + IDS_OMNIBOX_PEDAL_CUSTOMIZE_SEARCH_ENGINES_SUGGESTION_CONTENTS, + IDS_ACC_OMNIBOX_PEDAL_CUSTOMIZE_SEARCH_ENGINES_SUFFIX, + IDS_ACC_OMNIBOX_PEDAL_CUSTOMIZE_SEARCH_ENGINES), + GURL()) {} + + protected: + ~OmniboxPedalCustomizeSearchEngines() override = default; +}; + +// ============================================================================= + std::unordered_map<OmniboxPedalId, scoped_refptr<OmniboxPedal>> GetPedalImplementations(bool with_branding, bool incognito) { std::unordered_map<OmniboxPedalId, scoped_refptr<OmniboxPedal>> pedals; @@ -1131,6 +1327,17 @@ add(new OmniboxPedalCloseIncognitoWindows()); } add(new OmniboxPedalPlayChromeDinoGame()); + add(new OmniboxPedalFindMyPhone()); + add(new OmniboxPedalManageGooglePrivacy()); + add(new OmniboxPedalManageGoogleAdSettings()); + add(new OmniboxPedalManageChromeSettings()); + add(new OmniboxPedalManageChromeDownloads()); + add(new OmniboxPedalViewChromeHistory()); + add(new OmniboxPedalShareThisPage()); + add(new OmniboxPedalManageChromeAccessibility()); + add(new OmniboxPedalCustomizeChromeFonts()); + add(new OmniboxPedalManageChromeThemes()); + add(new OmniboxPedalCustomizeSearchEngines()); } return pedals; }
diff --git a/components/omnibox/browser/actions/omnibox_pedal_implementations_unittest.cc b/components/omnibox/browser/actions/omnibox_pedal_implementations_unittest.cc index 085fedbe..868f05c 100644 --- a/components/omnibox/browser/actions/omnibox_pedal_implementations_unittest.cc +++ b/components/omnibox/browser/actions/omnibox_pedal_implementations_unittest.cc
@@ -16363,6 +16363,160 @@ "run google chrome game dinosaur", }, + // ID#28 + { + // Generated suggestions: + "find phone", + "phone find", + }, + + // ID#29 + { + // Generated suggestions: + "google manage privacy", + "google privacy manage", + "manage google privacy", + "manage privacy google", + "privacy google manage", + "privacy manage google", + }, + + // ID#30 + { + // Generated suggestions: + "ad settings google manage", + "ad settings manage google", + "google ad settings manage", + "google manage ad settings", + "manage ad settings google", + "manage google ad settings", + }, + + // ID#31 + { + // Generated suggestions: + "chrome manage settings", + "chrome settings manage", + "manage chrome settings", + "manage settings", + "manage settings chrome", + "settings chrome manage", + "settings manage", + "settings manage chrome", + }, + + // ID#32 + { + // Generated suggestions: + "chrome downloads manage", + "chrome manage downloads", + "downloads chrome manage", + "downloads manage", + "downloads manage chrome", + "manage chrome downloads", + "manage downloads", + "manage downloads chrome", + }, + + // ID#33 + { + // Generated suggestions: + "chrome history view", + "chrome view history", + "history chrome view", + "history view", + "history view chrome", + "view chrome history", + "view history", + "view history chrome", + }, + + // ID#34 + { + // Generated suggestions: + "current page share", + "current share page", + "current share site", + "current share website", + "current site share", + "current website share", + "page current share", + "page share current", + "page share this", + "page this share", + "share current page", + "share current site", + "share current website", + "share page current", + "share page this", + "share site current", + "share site this", + "share this page", + "share this site", + "share this website", + "share website current", + "share website this", + "site current share", + "site share current", + "site share this", + "site this share", + "this page share", + "this share page", + "this share site", + "this share website", + "this site share", + "this website share", + "website current share", + "website share current", + "website share this", + "website this share", + }, + + // ID#35 + { + // Generated suggestions: + "accessibility chrome manage", + "accessibility manage", + "accessibility manage chrome", + "chrome accessibility manage", + "chrome manage accessibility", + "manage accessibility", + "manage accessibility chrome", + "manage chrome accessibility", + }, + + // ID#36 + { + // Generated suggestions: + "chrome customize fonts", + "chrome fonts", + "chrome fonts customize", + "customize chrome fonts", + "customize fonts chrome", + "fonts chrome", + "fonts chrome customize", + "fonts customize chrome", + }, + + // ID#37 + { + // Generated suggestions: + "chrome manage themes", + "chrome themes manage", + "manage chrome themes", + "manage themes chrome", + "themes chrome manage", + "themes manage chrome", + }, + + // ID#38 + { + // Generated suggestions: + "customize search engines", + "search engines", + "search engines customize", + }, + // End of generated test code // clang-format on };
diff --git a/components/omnibox/resources/omnibox_pedal_concepts.json b/components/omnibox/resources/omnibox_pedal_concepts.json index 8e6246b43..e8ab90d 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts.json +++ b/components/omnibox/resources/omnibox_pedal_concepts.json
@@ -1,7 +1,7 @@ { "schema": "pedals_translation_model", "schema_version": 3, - "time_generated": "2021-08-16T16:08:38.709Z", + "time_generated": "2021-08-18T01:24:20.962Z", "primary_language_code": "en", "pedal_definitions": [ { @@ -296,7 +296,7 @@ "id": 37, "name": "MANAGE_CHROME_THEMES", "enabled": true, - "url": "https://chrome.google.com/webstore/category/themes", + "url": "chrome://new-tab-page?open-customize-menu", "description": "Change themes in Chrome\n\nUser-facing strings for this Pedal:\nIDS_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES_HINT\nIDS_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES_SUGGESTION_CONTENTS\nIDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES_SUFFIX\nIDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES\n", "tags": "batch3" }, @@ -10438,7 +10438,7 @@ } ], "cover_cases": [], - "enabled": false, + "enabled": true, "omnibox_ui_strings": { "button_text": "Find my phone", "description_text": "Find my phone", @@ -10473,7 +10473,7 @@ } ], "cover_cases": [], - "enabled": false, + "enabled": true, "omnibox_ui_strings": { "button_text": "Manage my privacy on Google", "description_text": "Manage my privacy on Google", @@ -10508,7 +10508,7 @@ } ], "cover_cases": [], - "enabled": false, + "enabled": true, "omnibox_ui_strings": { "button_text": "Manage my Google Ad Settings", "description_text": "Manage my Google Ad Settings", @@ -10543,7 +10543,7 @@ } ], "cover_cases": [], - "enabled": false, + "enabled": true, "omnibox_ui_strings": { "button_text": "Manage Chrome settings", "description_text": "Manage your Chrome settings", @@ -10578,7 +10578,7 @@ } ], "cover_cases": [], - "enabled": false, + "enabled": true, "omnibox_ui_strings": { "button_text": "Manage downloads in Chrome", "description_text": "Manage files you have downloaded in Chrome", @@ -10613,7 +10613,7 @@ } ], "cover_cases": [], - "enabled": false, + "enabled": true, "omnibox_ui_strings": { "button_text": "View your Chrome history", "description_text": "View and manage your browsing history in Chrome settings", @@ -10651,7 +10651,7 @@ } ], "cover_cases": [], - "enabled": false, + "enabled": true, "omnibox_ui_strings": { "button_text": "Share this page", "description_text": "Share this page by sharing the link, creating a QR code, casting, and more.", @@ -10686,7 +10686,7 @@ } ], "cover_cases": [], - "enabled": false, + "enabled": true, "omnibox_ui_strings": { "button_text": "Manage accessibility settings", "description_text": "Personalize your accessibility tools in Chrome settings", @@ -10721,7 +10721,7 @@ } ], "cover_cases": [], - "enabled": false, + "enabled": true, "omnibox_ui_strings": { "button_text": "Customize fonts in Chrome", "description_text": "Customize font sizes and typefaces in Chrome", @@ -10756,7 +10756,7 @@ } ], "cover_cases": [], - "enabled": false, + "enabled": true, "omnibox_ui_strings": { "button_text": "Manage Chrome themes", "description_text": "Customize the look of your browser with themes", @@ -10784,7 +10784,7 @@ } ], "cover_cases": [], - "enabled": false, + "enabled": true, "omnibox_ui_strings": { "button_text": "Manage site search", "description_text": "Manage site search and your default search engine",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_am.json b/components/omnibox/resources/omnibox_pedal_concepts_am.json index cf6a196..04010e1 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_am.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_am.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_ar.json b/components/omnibox/resources/omnibox_pedal_concepts_ar.json index 432b481ae..16133d8 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_ar.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_ar.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_bg.json b/components/omnibox/resources/omnibox_pedal_concepts_bg.json index f962679..da25074 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_bg.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_bg.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_bn.json b/components/omnibox/resources/omnibox_pedal_concepts_bn.json index 1c39e89..d92aa68 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_bn.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_bn.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_ca.json b/components/omnibox/resources/omnibox_pedal_concepts_ca.json index cdee8e2..561febf3 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_ca.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_ca.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_cs.json b/components/omnibox/resources/omnibox_pedal_concepts_cs.json index f08e2728..9a4e016 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_cs.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_cs.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "aktualizovat",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_da.json b/components/omnibox/resources/omnibox_pedal_concepts_da.json index f9bc9bb..277f7303 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_da.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_da.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "adgangskode",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_de.json b/components/omnibox/resources/omnibox_pedal_concepts_de.json index 67597bf..b9f1efd 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_de.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_de.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "aktualisieren",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_el.json b/components/omnibox/resources/omnibox_pedal_concepts_el.json index 74d1bcb..c7fa403 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_el.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_el.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_en-GB.json b/components/omnibox/resources/omnibox_pedal_concepts_en-GB.json index 67cf167..c094ac75 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_en-GB.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_en-GB.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_en.json b/components/omnibox/resources/omnibox_pedal_concepts_en.json index 4cf5fe4d..387ac78 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_en.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_en.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "a", @@ -1900,6 +1900,428 @@ "spoken_button_focus_announcement": "Play Dino Run button, Enter to play the Dino Run game in Chrome" }, "url": "chrome://dino" + }, + { + "id": 28, + "groups": [ + { + "required": true, + "single": true, + "synonyms": [ + [ + 63 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 113 + ] + ] + } + ], + "omnibox_ui_strings": { + "button_text": "Find my phone", + "description_text": "Find my phone", + "spoken_suggestion_description_suffix": "$1, Find my phone", + "spoken_button_focus_announcement": "Find my phone" + }, + "url": "https://www.google.com/android/find?u=0?" + }, + { + "id": 29, + "groups": [ + { + "required": true, + "single": true, + "synonyms": [ + [ + 90 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 117 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 72 + ] + ] + } + ], + "omnibox_ui_strings": { + "button_text": "Manage my privacy on Google", + "description_text": "Manage my privacy on Google", + "spoken_suggestion_description_suffix": "$1, Manage my privacy on Google", + "spoken_button_focus_announcement": "Manage my privacy on Google" + }, + "url": "https://myaccount.google.com/data-and-privacy" + }, + { + "id": 30, + "groups": [ + { + "required": true, + "single": true, + "synonyms": [ + [ + 90 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 72 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 4, + 135 + ] + ] + } + ], + "omnibox_ui_strings": { + "button_text": "Manage my Google Ad Settings", + "description_text": "Manage my Google Ad Settings", + "spoken_suggestion_description_suffix": "$1, Manage my Google Ad Settings", + "spoken_button_focus_announcement": "Manage my Google Ad Settings" + }, + "url": "https://adssettings.google.com/authenticated?hl=en" + }, + { + "id": 31, + "groups": [ + { + "required": true, + "single": true, + "synonyms": [ + [ + 90 + ] + ] + }, + { + "required": false, + "single": true, + "synonyms": [ + [ + 29 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 135 + ] + ] + } + ], + "omnibox_ui_strings": { + "button_text": "Manage Chrome settings", + "description_text": "Manage your Chrome settings", + "spoken_suggestion_description_suffix": "$1, Press Tab then Enter to manage your Chrome settings", + "spoken_button_focus_announcement": "Manage Chrome settings button, press Enter to visit your Chrome settings" + }, + "url": "chrome://settings" + }, + { + "id": 32, + "groups": [ + { + "required": true, + "single": true, + "synonyms": [ + [ + 90 + ] + ] + }, + { + "required": false, + "single": true, + "synonyms": [ + [ + 29 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 52 + ] + ] + } + ], + "omnibox_ui_strings": { + "button_text": "Manage downloads in Chrome", + "description_text": "Manage files you have downloaded in Chrome", + "spoken_suggestion_description_suffix": "$1, Press Tab then Enter to manage files you have downloaded in Chrome", + "spoken_button_focus_announcement": "Manage downloads in Chrome button, press Enter to manage files you have downloaded in Chrome." + }, + "url": "chrome://downloads" + }, + { + "id": 33, + "groups": [ + { + "required": true, + "single": true, + "synonyms": [ + [ + 167 + ] + ] + }, + { + "required": false, + "single": true, + "synonyms": [ + [ + 29 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 74 + ] + ] + } + ], + "omnibox_ui_strings": { + "button_text": "View your Chrome history", + "description_text": "View and manage your browsing history in Chrome settings", + "spoken_suggestion_description_suffix": "$1, Press tab then Enter to view your browsing history in Chrome", + "spoken_button_focus_announcement": "View your Chrome history button, Enter to view and manage your browsing history in Chrome settings" + }, + "url": "chrome://history" + }, + { + "id": 34, + "groups": [ + { + "required": true, + "single": true, + "synonyms": [ + [ + 136 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 39 + ], + [ + 156 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 171 + ], + [ + 105 + ], + [ + 141 + ] + ] + } + ], + "omnibox_ui_strings": { + "button_text": "Share this page", + "description_text": "Share this page by sharing the link, creating a QR code, casting, and more.", + "spoken_suggestion_description_suffix": "$1, Press tab then Enter to share this page, with options to share the link, create a QR code, cast, and more.", + "spoken_button_focus_announcement": "Share this page button, Enter to share this page with options to share the link, create a QR code, cast, and more." + }, + "url": "" + }, + { + "id": 35, + "groups": [ + { + "required": true, + "single": true, + "synonyms": [ + [ + 90 + ] + ] + }, + { + "required": false, + "single": true, + "synonyms": [ + [ + 29 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 1 + ] + ] + } + ], + "omnibox_ui_strings": { + "button_text": "Manage accessibility settings", + "description_text": "Personalize your accessibility tools in Chrome settings", + "spoken_suggestion_description_suffix": "$1, Press tab then Enter to personalize your accessibility tools in Chrome settings.", + "spoken_button_focus_announcement": "Manage accessibility settings button, Enter to personalize your accessibility tools in Chrome settings." + }, + "url": "chrome://settings/accessibility" + }, + { + "id": 36, + "groups": [ + { + "required": false, + "single": true, + "synonyms": [ + [ + 40 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 29 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 65 + ] + ] + } + ], + "omnibox_ui_strings": { + "button_text": "Customize fonts in Chrome", + "description_text": "Customize font sizes and typefaces in Chrome", + "spoken_suggestion_description_suffix": "$1, Press tab then Enter to customize font sizes and typefaces in Chrome", + "spoken_button_focus_announcement": "Customize fonts in Chrome button, Enter to customize font sizes and typefaces in Chrome" + }, + "url": "chrome://settings/fonts" + }, + { + "id": 37, + "groups": [ + { + "required": true, + "single": true, + "synonyms": [ + [ + 90 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 29 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 154 + ] + ] + } + ], + "omnibox_ui_strings": { + "button_text": "Manage Chrome themes", + "description_text": "Customize the look of your browser with themes", + "spoken_suggestion_description_suffix": "$1, Press tab then Enter to customize the look of your browser with themes.", + "spoken_button_focus_announcement": "Manage Chrome themes button, Enter to customize the look of your browser with themes." + }, + "url": "chrome://new-tab-page?open-customize-menu" + }, + { + "id": 38, + "groups": [ + { + "required": false, + "single": true, + "synonyms": [ + [ + 40 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 129, + 55 + ] + ] + } + ], + "omnibox_ui_strings": { + "button_text": "Manage site search", + "description_text": "Manage site search and your default search engine", + "spoken_suggestion_description_suffix": "$1, Press tab then Enter to manage site search and your default search engine", + "spoken_button_focus_announcement": "Manage site search button, press Enter to manage site search and your default search engine" + }, + "url": "chrome://settings/searchEngines" } ], "ignore_group": {
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_es-419.json b/components/omnibox/resources/omnibox_pedal_concepts_es-419.json index 56feb48a..d6341ee 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_es-419.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_es-419.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "abrir",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_es.json b/components/omnibox/resources/omnibox_pedal_concepts_es.json index 9d4e635..d36a0dc 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_es.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_es.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_et.json b/components/omnibox/resources/omnibox_pedal_concepts_et.json index 0a13c10d0..4b9ceaaf 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_et.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_et.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "ajalugu",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_fa.json b/components/omnibox/resources/omnibox_pedal_concepts_fa.json index 7a38478..4debe7d 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_fa.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_fa.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_fi.json b/components/omnibox/resources/omnibox_pedal_concepts_fi.json index 02c6f32..dfb5b341 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_fi.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_fi.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "asenna",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_fil.json b/components/omnibox/resources/omnibox_pedal_concepts_fil.json index c1d9111..5774b90b 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_fil.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_fil.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "akin",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_fr.json b/components/omnibox/resources/omnibox_pedal_concepts_fr.json index 71eb41f..13b3dbe 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_fr.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_fr.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "actualise",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_gu.json b/components/omnibox/resources/omnibox_pedal_concepts_gu.json index ef739a0..f6cf9b73 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_gu.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_gu.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_he.json b/components/omnibox/resources/omnibox_pedal_concepts_he.json index 5fc809e7..47b1e44 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_he.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_he.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_hi.json b/components/omnibox/resources/omnibox_pedal_concepts_hi.json index d2abaa6..ada9a6f 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_hi.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_hi.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_hr.json b/components/omnibox/resources/omnibox_pedal_concepts_hr.json index fb867b0..d8770cb 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_hr.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_hr.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "anonimna",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_hu.json b/components/omnibox/resources/omnibox_pedal_concepts_hu.json index 8292c3a3..602a6bfe 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_hu.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_hu.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_id.json b/components/omnibox/resources/omnibox_pedal_concepts_id.json index d63a894..19b523f 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_id.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_id.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "bagaimana",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_it.json b/components/omnibox/resources/omnibox_pedal_concepts_it.json index 79f9bec..727499a1 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_it.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_it.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_ja.json b/components/omnibox/resources/omnibox_pedal_concepts_ja.json index cf292b2..320e8ac 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_ja.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_ja.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": true, "dictionary": [ " ",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_kn.json b/components/omnibox/resources/omnibox_pedal_concepts_kn.json index bcb32c2..ca313895 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_kn.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_kn.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_ko.json b/components/omnibox/resources/omnibox_pedal_concepts_ko.json index beca4ea3..dbafad6 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_ko.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_ko.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_lt.json b/components/omnibox/resources/omnibox_pedal_concepts_lt.json index eba35e0..36ab240d 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_lt.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_lt.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_lv.json b/components/omnibox/resources/omnibox_pedal_concepts_lv.json index 91423bf..7e3d2b5 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_lv.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_lv.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_ml.json b/components/omnibox/resources/omnibox_pedal_concepts_ml.json index 8f744e6d..625609c5 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_ml.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_ml.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_mr.json b/components/omnibox/resources/omnibox_pedal_concepts_mr.json index 3e9dfcc..9d2fee3 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_mr.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_mr.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_ms.json b/components/omnibox/resources/omnibox_pedal_concepts_ms.json index 1aa395f..8db47d89 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_ms.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_ms.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "alih",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_nl.json b/components/omnibox/resources/omnibox_pedal_concepts_nl.json index 2a556123..b04c796f 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_nl.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_nl.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "aan",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_pl.json b/components/omnibox/resources/omnibox_pedal_concepts_pl.json index ce1a328..7a8962a 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_pl.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_pl.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_pt-BR.json b/components/omnibox/resources/omnibox_pedal_concepts_pt-BR.json index 6ed81ac..dbbc3cc 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_pt-BR.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_pt-BR.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "abrir",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_pt-PT.json b/components/omnibox/resources/omnibox_pedal_concepts_pt-PT.json index 68fe306c..ad9fd4e5 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_pt-PT.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_pt-PT.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "abrir",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_ro.json b/components/omnibox/resources/omnibox_pedal_concepts_ro.json index 770447d05..80c3098 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_ro.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_ro.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_ru.json b/components/omnibox/resources/omnibox_pedal_concepts_ru.json index 882e15b..5ec5837e 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_ru.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_ru.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_sk.json b/components/omnibox/resources/omnibox_pedal_concepts_sk.json index 0a2dee4..138cde3 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_sk.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_sk.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_sl.json b/components/omnibox/resources/omnibox_pedal_concepts_sl.json index 2f4ca2c..a601c32 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_sl.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_sl.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "beleženja",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_sr.json b/components/omnibox/resources/omnibox_pedal_concepts_sr.json index 724b1c6..e341346 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_sr.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_sr.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_sv.json b/components/omnibox/resources/omnibox_pedal_concepts_sv.json index 240d6de..a320b0d4 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_sv.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_sv.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "aktivera",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_sw.json b/components/omnibox/resources/omnibox_pedal_concepts_sw.json index 5a0d233..85478c2 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_sw.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_sw.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "anza",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_ta.json b/components/omnibox/resources/omnibox_pedal_concepts_ta.json index 23c256c..9b581d1f 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_ta.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_ta.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_te.json b/components/omnibox/resources/omnibox_pedal_concepts_te.json index db53fbca..1661d3d 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_te.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_te.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_th.json b/components/omnibox/resources/omnibox_pedal_concepts_th.json index 74e6992..08841167 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_th.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_th.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_tr.json b/components/omnibox/resources/omnibox_pedal_concepts_tr.json index aa6eb17..11b50ba 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_tr.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_tr.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "aç",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_uk.json b/components/omnibox/resources/omnibox_pedal_concepts_uk.json index 0234db1..df26b832 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_uk.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_uk.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_vi.json b/components/omnibox/resources/omnibox_pedal_concepts_vi.json index 8024ce2..2c3a92d 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_vi.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_vi.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_zh-CN.json b/components/omnibox/resources/omnibox_pedal_concepts_zh-CN.json index da5ceb1..518719c 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_zh-CN.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_zh-CN.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": true, "dictionary": [ " ",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_zh-TW.json b/components/omnibox/resources/omnibox_pedal_concepts_zh-TW.json index e4a8019..b3d30e85 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_zh-TW.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_zh-TW.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15996517, + "data_version": 15998484, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_synonyms.grd_unused b/components/omnibox/resources/omnibox_pedal_synonyms.grd_unused index 5a7d902a..b40bc96 100644 --- a/components/omnibox/resources/omnibox_pedal_synonyms.grd_unused +++ b/components/omnibox/resources/omnibox_pedal_synonyms.grd_unused
@@ -348,13 +348,13 @@ </message> <!-- Pedal #37: MANAGE_CHROME_THEMES --> - <message name="IDS_OMNIBOX_PEDAL_SYNONYMS_MANAGE_CHROME_THEMES_ONE_REQUIRED_MANAGE" is_accessibility_with_no_ui="true" desc="Synonyms for the MANAGE_CHROME_THEMES Pedal's 'manage' group. To trigger, exactly ONE of this group is REQUIRED. Context: The user is typing into the omnibox to find a way to 'Change themes in Chrome' via https://chrome.google.com/webstore/category/themes but the user is not sure how to describe this action. The input text is scanned for any words included in this synonym group to determine whether this concept is present in the query. Do not translate the list word for word; rather, list the various ways users typing in the target language might describe this synonym group's concept when trying to perform this Pedal's action. Each Pedal has a few such groups, some required and some optional, and this list represents just one (the 'manage' group). Being able to identify presence of specific concepts in the query enables the Pedals system to help the user perform the desired action."> + <message name="IDS_OMNIBOX_PEDAL_SYNONYMS_MANAGE_CHROME_THEMES_ONE_REQUIRED_MANAGE" is_accessibility_with_no_ui="true" desc="Synonyms for the MANAGE_CHROME_THEMES Pedal's 'manage' group. To trigger, exactly ONE of this group is REQUIRED. Context: The user is typing into the omnibox to find a way to 'Change themes in Chrome' via chrome://new-tab-page?open-customize-menu but the user is not sure how to describe this action. The input text is scanned for any words included in this synonym group to determine whether this concept is present in the query. Do not translate the list word for word; rather, list the various ways users typing in the target language might describe this synonym group's concept when trying to perform this Pedal's action. Each Pedal has a few such groups, some required and some optional, and this list represents just one (the 'manage' group). Being able to identify presence of specific concepts in the query enables the Pedals system to help the user perform the desired action."> manage </message> - <message name="IDS_OMNIBOX_PEDAL_SYNONYMS_MANAGE_CHROME_THEMES_ONE_REQUIRED_CHROME" is_accessibility_with_no_ui="true" desc="Synonyms for the MANAGE_CHROME_THEMES Pedal's 'chrome' group. To trigger, exactly ONE of this group is REQUIRED. Context: The user is typing into the omnibox to find a way to 'Change themes in Chrome' via https://chrome.google.com/webstore/category/themes but the user is not sure how to describe this action. The input text is scanned for any words included in this synonym group to determine whether this concept is present in the query. Do not translate the list word for word; rather, list the various ways users typing in the target language might describe this synonym group's concept when trying to perform this Pedal's action. Each Pedal has a few such groups, some required and some optional, and this list represents just one (the 'chrome' group). Being able to identify presence of specific concepts in the query enables the Pedals system to help the user perform the desired action."> + <message name="IDS_OMNIBOX_PEDAL_SYNONYMS_MANAGE_CHROME_THEMES_ONE_REQUIRED_CHROME" is_accessibility_with_no_ui="true" desc="Synonyms for the MANAGE_CHROME_THEMES Pedal's 'chrome' group. To trigger, exactly ONE of this group is REQUIRED. Context: The user is typing into the omnibox to find a way to 'Change themes in Chrome' via chrome://new-tab-page?open-customize-menu but the user is not sure how to describe this action. The input text is scanned for any words included in this synonym group to determine whether this concept is present in the query. Do not translate the list word for word; rather, list the various ways users typing in the target language might describe this synonym group's concept when trying to perform this Pedal's action. Each Pedal has a few such groups, some required and some optional, and this list represents just one (the 'chrome' group). Being able to identify presence of specific concepts in the query enables the Pedals system to help the user perform the desired action."> chrome </message> - <message name="IDS_OMNIBOX_PEDAL_SYNONYMS_MANAGE_CHROME_THEMES_ONE_REQUIRED_THEMES" is_accessibility_with_no_ui="true" desc="Synonyms for the MANAGE_CHROME_THEMES Pedal's 'themes' group. To trigger, exactly ONE of this group is REQUIRED. Context: The user is typing into the omnibox to find a way to 'Change themes in Chrome' via https://chrome.google.com/webstore/category/themes but the user is not sure how to describe this action. The input text is scanned for any words included in this synonym group to determine whether this concept is present in the query. Do not translate the list word for word; rather, list the various ways users typing in the target language might describe this synonym group's concept when trying to perform this Pedal's action. Each Pedal has a few such groups, some required and some optional, and this list represents just one (the 'themes' group). Being able to identify presence of specific concepts in the query enables the Pedals system to help the user perform the desired action."> + <message name="IDS_OMNIBOX_PEDAL_SYNONYMS_MANAGE_CHROME_THEMES_ONE_REQUIRED_THEMES" is_accessibility_with_no_ui="true" desc="Synonyms for the MANAGE_CHROME_THEMES Pedal's 'themes' group. To trigger, exactly ONE of this group is REQUIRED. Context: The user is typing into the omnibox to find a way to 'Change themes in Chrome' via chrome://new-tab-page?open-customize-menu but the user is not sure how to describe this action. The input text is scanned for any words included in this synonym group to determine whether this concept is present in the query. Do not translate the list word for word; rather, list the various ways users typing in the target language might describe this synonym group's concept when trying to perform this Pedal's action. Each Pedal has a few such groups, some required and some optional, and this list represents just one (the 'themes' group). Being able to identify presence of specific concepts in the query enables the Pedals system to help the user perform the desired action."> themes </message>
diff --git a/components/omnibox_strings.grdp b/components/omnibox_strings.grdp index 7485893..47eef83 100644 --- a/components/omnibox_strings.grdp +++ b/components/omnibox_strings.grdp
@@ -420,6 +420,161 @@ Resume journey button, press Enter to resume your journey and see relevant activity in your Chrome history </message> + + + + + + + <message name="IDS_OMNIBOX_PEDAL_FIND_MY_PHONE_HINT" desc="The button text contents to suggest pedal action, FIND_MY_PHONE"> + Find my phone + </message> + <message name="IDS_OMNIBOX_PEDAL_FIND_MY_PHONE_SUGGESTION_CONTENTS" desc="The button hover tooltip text to describe pedal action, FIND_MY_PHONE"> + Find my phone + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_FIND_MY_PHONE_SUFFIX" desc="Suffix for spoken suggestion description with pedal action button, to explain keystroke used to FIND_MY_PHONE."> + <ph name="FIND_MY_PHONE_FOCUSED_FRIENDLY_MATCH_TEXT">$1<ex>The Chromium Projects http://www.chromium.org bookmark</ex></ph>, Find my phone + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_FIND_MY_PHONE" desc="Announcement when pedal action button is focused, FIND_MY_PHONE"> + Find my phone + </message> + + <message name="IDS_OMNIBOX_PEDAL_MANAGE_GOOGLE_PRIVACY_HINT" desc="The button text contents to suggest pedal action, MANAGE_GOOGLE_PRIVACY"> + Manage my privacy on Google + </message> + <message name="IDS_OMNIBOX_PEDAL_MANAGE_GOOGLE_PRIVACY_SUGGESTION_CONTENTS" desc="The button hover tooltip text to describe pedal action, MANAGE_GOOGLE_PRIVACY"> + Manage my privacy on Google + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_MANAGE_GOOGLE_PRIVACY_SUFFIX" desc="Suffix for spoken suggestion description with pedal action button, to explain keystroke used to MANAGE_GOOGLE_PRIVACY."> + <ph name="MANAGE_GOOGLE_PRIVACY_FOCUSED_FRIENDLY_MATCH_TEXT">$1<ex>The Chromium Projects http://www.chromium.org bookmark</ex></ph>, Manage my privacy on Google + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_MANAGE_GOOGLE_PRIVACY" desc="Announcement when pedal action button is focused, MANAGE_GOOGLE_PRIVACY"> + Manage my privacy on Google + </message> + + <message name="IDS_OMNIBOX_PEDAL_MANAGE_GOOGLE_AD_SETTINGS_HINT" desc="The button text contents to suggest pedal action, MANAGE_GOOGLE_AD_SETTINGS"> + Manage my Google Ad Settings + </message> + <message name="IDS_OMNIBOX_PEDAL_MANAGE_GOOGLE_AD_SETTINGS_SUGGESTION_CONTENTS" desc="The button hover tooltip text to describe pedal action, MANAGE_GOOGLE_AD_SETTINGS"> + Manage my Google Ad Settings + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_MANAGE_GOOGLE_AD_SETTINGS_SUFFIX" desc="Suffix for spoken suggestion description with pedal action button, to explain keystroke used to MANAGE_GOOGLE_AD_SETTINGS."> + <ph name="MANAGE_GOOGLE_AD_SETTINGS_FOCUSED_FRIENDLY_MATCH_TEXT">$1<ex>The Chromium Projects http://www.chromium.org bookmark</ex></ph>, Manage my Google Ad Settings + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_MANAGE_GOOGLE_AD_SETTINGS" desc="Announcement when pedal action button is focused, MANAGE_GOOGLE_AD_SETTINGS"> + Manage my Google Ad Settings + </message> + + <message name="IDS_OMNIBOX_PEDAL_MANAGE_CHROME_SETTINGS_HINT" desc="The button text contents to suggest pedal action, MANAGE_CHROME_SETTINGS"> + Manage Chrome settings + </message> + <message name="IDS_OMNIBOX_PEDAL_MANAGE_CHROME_SETTINGS_SUGGESTION_CONTENTS" desc="The button hover tooltip text to describe pedal action, MANAGE_CHROME_SETTINGS"> + Manage your Chrome settings + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_SETTINGS_SUFFIX" desc="Suffix for spoken suggestion description with pedal action button, to explain keystroke used to MANAGE_CHROME_SETTINGS."> + <ph name="MANAGE_CHROME_SETTINGS_FOCUSED_FRIENDLY_MATCH_TEXT">$1<ex>The Chromium Projects http://www.chromium.org bookmark</ex></ph>, Press Tab then Enter to manage your Chrome settings + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_SETTINGS" desc="Announcement when pedal action button is focused, MANAGE_CHROME_SETTINGS"> + Manage Chrome settings button, press Enter to visit your Chrome settings + </message> + + <message name="IDS_OMNIBOX_PEDAL_MANAGE_CHROME_DOWNLOADS_HINT" desc="The button text contents to suggest pedal action, MANAGE_CHROME_DOWNLOADS"> + Manage downloads in Chrome + </message> + <message name="IDS_OMNIBOX_PEDAL_MANAGE_CHROME_DOWNLOADS_SUGGESTION_CONTENTS" desc="The button hover tooltip text to describe pedal action, MANAGE_CHROME_DOWNLOADS"> + Manage files you have downloaded in Chrome + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_DOWNLOADS_SUFFIX" desc="Suffix for spoken suggestion description with pedal action button, to explain keystroke used to MANAGE_CHROME_DOWNLOADS."> + <ph name="MANAGE_CHROME_DOWNLOADS_FOCUSED_FRIENDLY_MATCH_TEXT">$1<ex>The Chromium Projects http://www.chromium.org bookmark</ex></ph>, Press Tab then Enter to manage files you have downloaded in Chrome + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_DOWNLOADS" desc="Announcement when pedal action button is focused, MANAGE_CHROME_DOWNLOADS"> + Manage downloads in Chrome button, press Enter to manage files you have downloaded in Chrome. + </message> + + <message name="IDS_OMNIBOX_PEDAL_VIEW_CHROME_HISTORY_HINT" desc="The button text contents to suggest pedal action, VIEW_CHROME_HISTORY"> + View your Chrome history + </message> + <message name="IDS_OMNIBOX_PEDAL_VIEW_CHROME_HISTORY_SUGGESTION_CONTENTS" desc="The button hover tooltip text to describe pedal action, VIEW_CHROME_HISTORY"> + View and manage your browsing history in Chrome settings + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_VIEW_CHROME_HISTORY_SUFFIX" desc="Suffix for spoken suggestion description with pedal action button, to explain keystroke used to VIEW_CHROME_HISTORY."> + <ph name="VIEW_CHROME_HISTORY_FOCUSED_FRIENDLY_MATCH_TEXT">$1<ex>The Chromium Projects http://www.chromium.org bookmark</ex></ph>, Press tab then Enter to view your browsing history in Chrome + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_VIEW_CHROME_HISTORY" desc="Announcement when pedal action button is focused, VIEW_CHROME_HISTORY"> + View your Chrome history button, Enter to view and manage your browsing history in Chrome settings + </message> + + <message name="IDS_OMNIBOX_PEDAL_SHARE_THIS_PAGE_HINT" desc="The button text contents to suggest pedal action, SHARE_THIS_PAGE"> + Share this page + </message> + <message name="IDS_OMNIBOX_PEDAL_SHARE_THIS_PAGE_SUGGESTION_CONTENTS" desc="The button hover tooltip text to describe pedal action, SHARE_THIS_PAGE"> + Share this page by sharing the link, creating a QR code, casting, and more. + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_SHARE_THIS_PAGE_SUFFIX" desc="Suffix for spoken suggestion description with pedal action button, to explain keystroke used to SHARE_THIS_PAGE."> + <ph name="SHARE_THIS_PAGE_FOCUSED_FRIENDLY_MATCH_TEXT">$1<ex>The Chromium Projects http://www.chromium.org bookmark</ex></ph>, Press tab then Enter to share this page, with options to share the link, create a QR code, cast, and more. + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_SHARE_THIS_PAGE" desc="Announcement when pedal action button is focused, SHARE_THIS_PAGE"> + Share this page button, Enter to share this page with options to share the link, create a QR code, cast, and more. + </message> + + <message name="IDS_OMNIBOX_PEDAL_MANAGE_CHROME_ACCESSIBILITY_HINT" desc="The button text contents to suggest pedal action, MANAGE_CHROME_ACCESSIBILITY"> + Manage accessibility settings + </message> + <message name="IDS_OMNIBOX_PEDAL_MANAGE_CHROME_ACCESSIBILITY_SUGGESTION_CONTENTS" desc="The button hover tooltip text to describe pedal action, MANAGE_CHROME_ACCESSIBILITY"> + Personalize your accessibility tools in Chrome settings + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_ACCESSIBILITY_SUFFIX" desc="Suffix for spoken suggestion description with pedal action button, to explain keystroke used to MANAGE_CHROME_ACCESSIBILITY."> + <ph name="MANAGE_CHROME_ACCESSIBILITY_FOCUSED_FRIENDLY_MATCH_TEXT">$1<ex>The Chromium Projects http://www.chromium.org bookmark</ex></ph>, Press tab then Enter to personalize your accessibility tools in Chrome settings. + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_ACCESSIBILITY" desc="Announcement when pedal action button is focused, MANAGE_CHROME_ACCESSIBILITY"> + Manage accessibility settings button, Enter to personalize your accessibility tools in Chrome settings. + </message> + + <message name="IDS_OMNIBOX_PEDAL_CUSTOMIZE_CHROME_FONTS_HINT" desc="The button text contents to suggest pedal action, CUSTOMIZE_CHROME_FONTS"> + Customize fonts in Chrome + </message> + <message name="IDS_OMNIBOX_PEDAL_CUSTOMIZE_CHROME_FONTS_SUGGESTION_CONTENTS" desc="The button hover tooltip text to describe pedal action, CUSTOMIZE_CHROME_FONTS"> + Customize font sizes and typefaces in Chrome + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_CUSTOMIZE_CHROME_FONTS_SUFFIX" desc="Suffix for spoken suggestion description with pedal action button, to explain keystroke used to CUSTOMIZE_CHROME_FONTS."> + <ph name="CUSTOMIZE_CHROME_FONTS_FOCUSED_FRIENDLY_MATCH_TEXT">$1<ex>The Chromium Projects http://www.chromium.org bookmark</ex></ph>, Press tab then Enter to customize font sizes and typefaces in Chrome + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_CUSTOMIZE_CHROME_FONTS" desc="Announcement when pedal action button is focused, CUSTOMIZE_CHROME_FONTS"> + Customize fonts in Chrome button, Enter to customize font sizes and typefaces in Chrome + </message> + + <message name="IDS_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES_HINT" desc="The button text contents to suggest pedal action, MANAGE_CHROME_THEMES"> + Manage Chrome themes + </message> + <message name="IDS_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES_SUGGESTION_CONTENTS" desc="The button hover tooltip text to describe pedal action, MANAGE_CHROME_THEMES"> + Customize the look of your browser with themes + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES_SUFFIX" desc="Suffix for spoken suggestion description with pedal action button, to explain keystroke used to MANAGE_CHROME_THEMES."> + <ph name="MANAGE_CHROME_THEMES_FOCUSED_FRIENDLY_MATCH_TEXT">$1<ex>The Chromium Projects http://www.chromium.org bookmark</ex></ph>, Press tab then Enter to customize the look of your browser with themes. + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES" desc="Announcement when pedal action button is focused, MANAGE_CHROME_THEMES"> + Manage Chrome themes button, Enter to customize the look of your browser with themes. + </message> + + <message name="IDS_OMNIBOX_PEDAL_CUSTOMIZE_SEARCH_ENGINES_HINT" desc="The button text contents to suggest pedal action, CUSTOMIZE_SEARCH_ENGINES"> + Manage site search + </message> + <message name="IDS_OMNIBOX_PEDAL_CUSTOMIZE_SEARCH_ENGINES_SUGGESTION_CONTENTS" desc="The button hover tooltip text to describe pedal action, CUSTOMIZE_SEARCH_ENGINES"> + Manage site search and your default search engine + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_CUSTOMIZE_SEARCH_ENGINES_SUFFIX" desc="Suffix for spoken suggestion description with pedal action button, to explain keystroke used to CUSTOMIZE_SEARCH_ENGINES."> + <ph name="CUSTOMIZE_SEARCH_ENGINES_FOCUSED_FRIENDLY_MATCH_TEXT">$1<ex>The Chromium Projects http://www.chromium.org bookmark</ex></ph>, Press tab then Enter to manage site search and your default search engine + </message> + <message name="IDS_ACC_OMNIBOX_PEDAL_CUSTOMIZE_SEARCH_ENGINES" desc="Announcement when pedal action button is focused, CUSTOMIZE_SEARCH_ENGINES"> + Manage site search button, press Enter to manage site search and your default search engine + </message> + + + + + + + <!-- Accessibility labels for autocomplete match types. These are parameterized on the text being completed into the omnibox. -->
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_CUSTOMIZE_CHROME_FONTS.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_CUSTOMIZE_CHROME_FONTS.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_CUSTOMIZE_CHROME_FONTS.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_CUSTOMIZE_CHROME_FONTS_SUFFIX.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_CUSTOMIZE_CHROME_FONTS_SUFFIX.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_CUSTOMIZE_CHROME_FONTS_SUFFIX.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_CUSTOMIZE_SEARCH_ENGINES.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_CUSTOMIZE_SEARCH_ENGINES.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_CUSTOMIZE_SEARCH_ENGINES.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_CUSTOMIZE_SEARCH_ENGINES_SUFFIX.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_CUSTOMIZE_SEARCH_ENGINES_SUFFIX.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_CUSTOMIZE_SEARCH_ENGINES_SUFFIX.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_FIND_MY_PHONE.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_FIND_MY_PHONE.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_FIND_MY_PHONE.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_FIND_MY_PHONE_SUFFIX.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_FIND_MY_PHONE_SUFFIX.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_FIND_MY_PHONE_SUFFIX.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_ACCESSIBILITY.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_ACCESSIBILITY.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_ACCESSIBILITY.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_ACCESSIBILITY_SUFFIX.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_ACCESSIBILITY_SUFFIX.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_ACCESSIBILITY_SUFFIX.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_DOWNLOADS.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_DOWNLOADS.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_DOWNLOADS.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_DOWNLOADS_SUFFIX.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_DOWNLOADS_SUFFIX.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_DOWNLOADS_SUFFIX.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_SETTINGS.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_SETTINGS.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_SETTINGS.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_SETTINGS_SUFFIX.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_SETTINGS_SUFFIX.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_SETTINGS_SUFFIX.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES_SUFFIX.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES_SUFFIX.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES_SUFFIX.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_GOOGLE_AD_SETTINGS.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_GOOGLE_AD_SETTINGS.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_GOOGLE_AD_SETTINGS.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_GOOGLE_AD_SETTINGS_SUFFIX.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_GOOGLE_AD_SETTINGS_SUFFIX.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_GOOGLE_AD_SETTINGS_SUFFIX.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_GOOGLE_PRIVACY.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_GOOGLE_PRIVACY.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_GOOGLE_PRIVACY.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_GOOGLE_PRIVACY_SUFFIX.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_GOOGLE_PRIVACY_SUFFIX.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_MANAGE_GOOGLE_PRIVACY_SUFFIX.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_SHARE_THIS_PAGE.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_SHARE_THIS_PAGE.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_SHARE_THIS_PAGE.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_SHARE_THIS_PAGE_SUFFIX.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_SHARE_THIS_PAGE_SUFFIX.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_SHARE_THIS_PAGE_SUFFIX.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_VIEW_CHROME_HISTORY.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_VIEW_CHROME_HISTORY.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_VIEW_CHROME_HISTORY.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_VIEW_CHROME_HISTORY_SUFFIX.png.sha1 b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_VIEW_CHROME_HISTORY_SUFFIX.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_ACC_OMNIBOX_PEDAL_VIEW_CHROME_HISTORY_SUFFIX.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_CUSTOMIZE_CHROME_FONTS_HINT.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_CUSTOMIZE_CHROME_FONTS_HINT.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_CUSTOMIZE_CHROME_FONTS_HINT.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_CUSTOMIZE_CHROME_FONTS_SUGGESTION_CONTENTS.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_CUSTOMIZE_CHROME_FONTS_SUGGESTION_CONTENTS.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_CUSTOMIZE_CHROME_FONTS_SUGGESTION_CONTENTS.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_CUSTOMIZE_SEARCH_ENGINES_HINT.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_CUSTOMIZE_SEARCH_ENGINES_HINT.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_CUSTOMIZE_SEARCH_ENGINES_HINT.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_CUSTOMIZE_SEARCH_ENGINES_SUGGESTION_CONTENTS.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_CUSTOMIZE_SEARCH_ENGINES_SUGGESTION_CONTENTS.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_CUSTOMIZE_SEARCH_ENGINES_SUGGESTION_CONTENTS.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_FIND_MY_PHONE_HINT.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_FIND_MY_PHONE_HINT.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_FIND_MY_PHONE_HINT.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_FIND_MY_PHONE_SUGGESTION_CONTENTS.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_FIND_MY_PHONE_SUGGESTION_CONTENTS.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_FIND_MY_PHONE_SUGGESTION_CONTENTS.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_ACCESSIBILITY_HINT.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_ACCESSIBILITY_HINT.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_ACCESSIBILITY_HINT.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_ACCESSIBILITY_SUGGESTION_CONTENTS.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_ACCESSIBILITY_SUGGESTION_CONTENTS.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_ACCESSIBILITY_SUGGESTION_CONTENTS.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_DOWNLOADS_HINT.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_DOWNLOADS_HINT.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_DOWNLOADS_HINT.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_DOWNLOADS_SUGGESTION_CONTENTS.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_DOWNLOADS_SUGGESTION_CONTENTS.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_DOWNLOADS_SUGGESTION_CONTENTS.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_SETTINGS_HINT.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_SETTINGS_HINT.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_SETTINGS_HINT.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_SETTINGS_SUGGESTION_CONTENTS.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_SETTINGS_SUGGESTION_CONTENTS.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_SETTINGS_SUGGESTION_CONTENTS.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES_HINT.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES_HINT.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES_HINT.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES_SUGGESTION_CONTENTS.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES_SUGGESTION_CONTENTS.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_CHROME_THEMES_SUGGESTION_CONTENTS.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_GOOGLE_AD_SETTINGS_HINT.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_GOOGLE_AD_SETTINGS_HINT.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_GOOGLE_AD_SETTINGS_HINT.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_GOOGLE_AD_SETTINGS_SUGGESTION_CONTENTS.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_GOOGLE_AD_SETTINGS_SUGGESTION_CONTENTS.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_GOOGLE_AD_SETTINGS_SUGGESTION_CONTENTS.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_GOOGLE_PRIVACY_HINT.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_GOOGLE_PRIVACY_HINT.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_GOOGLE_PRIVACY_HINT.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_GOOGLE_PRIVACY_SUGGESTION_CONTENTS.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_GOOGLE_PRIVACY_SUGGESTION_CONTENTS.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_MANAGE_GOOGLE_PRIVACY_SUGGESTION_CONTENTS.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_SHARE_THIS_PAGE_HINT.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_SHARE_THIS_PAGE_HINT.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_SHARE_THIS_PAGE_HINT.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_SHARE_THIS_PAGE_SUGGESTION_CONTENTS.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_SHARE_THIS_PAGE_SUGGESTION_CONTENTS.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_SHARE_THIS_PAGE_SUGGESTION_CONTENTS.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_VIEW_CHROME_HISTORY_HINT.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_VIEW_CHROME_HISTORY_HINT.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_VIEW_CHROME_HISTORY_HINT.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_VIEW_CHROME_HISTORY_SUGGESTION_CONTENTS.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_VIEW_CHROME_HISTORY_SUGGESTION_CONTENTS.png.sha1 new file mode 100644 index 0000000..886ba28c --- /dev/null +++ b/components/omnibox_strings_grdp/IDS_OMNIBOX_PEDAL_VIEW_CHROME_HISTORY_SUGGESTION_CONTENTS.png.sha1
@@ -0,0 +1 @@ +c23fd95bf791f5e6b4a28f3b98fe574fc56f1e57 \ No newline at end of file
diff --git a/components/policy/resources/policy_templates_de.xtb b/components/policy/resources/policy_templates_de.xtb index 325b963..bdf8ae1 100644 --- a/components/policy/resources/policy_templates_de.xtb +++ b/components/policy/resources/policy_templates_de.xtb
@@ -209,7 +209,6 @@ <translation id="1265053460044691532">Zeit beschränken, für die sich ein über SAML authentifizierter Nutzer offline anmelden kann</translation> <translation id="127264587838521316">Mit dieser Richtlinie werden Anfragen für die Installation von Erweiterungen für <ph name="PRODUCT_NAME" /> aktiviert</translation> <translation id="1274997165432133392">Cookies und andere Websitedaten</translation> -<translation id="127699919157094139">Deaktiviert die Datensynchronisierung in <ph name="PRODUCT_NAME" /> über von Google gehostete Synchronisierungsdienste und verhindert, dass Nutzer diese Einstellung ändern. Wenn Sie diese Einstellung aktivieren, so können Nutzer diese Einstellung in <ph name="PRODUCT_NAME" /> nicht ändern oder außer Kraft setzen. Sollte die Richtlinie nicht konfiguriert sein, so können die Nutzer entscheiden, ob Sie Google Sync in Anspruch nehmen möchten. Zur vollständigen Deaktivierung von Google Sync sollten Sie den Google Sync-Dienst in der Google Admin-Konsole deaktivieren.</translation> <translation id="128059397544257017">Wenn diese Richtlinie aktiviert ist und <ph name="CHROME_CLEANUP_NAME" /> unerwünschte Software erkennt, können gemäß der durch <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> festgelegten Richtlinie Informationen zum Scan an Google gesendet werden. <ph name="CHROME_CLEANUP_NAME" /> fragt den Nutzer, ob die Bereinigung erwünscht ist. Ergebnisse werden an Google gesendet. Wenn die Richtlinie deaktiviert ist und <ph name="CHROME_CLEANUP_NAME" /> unerwünschte Software erkennt, werden unabhängig davon, wie <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> festgelegt ist, keine Informationen zum Scan an Google gesendet. <ph name="CHROME_CLEANUP_NAME" /> fragt den Nutzer, ob die Bereinigung erwünscht ist. Die Ergebnisse werden nicht an Google gesendet. @@ -2773,9 +2772,6 @@ Wenn die Richtlinie nicht konfiguriert ist, ist der intelligente Akkulademodus immer deaktiviert. Zulässige Werte für das Feld „<ph name="MINUTE_FIELD_NAME" />“ in „<ph name="CHARGE_START_TIME_FIELD_NAME" />“ und „<ph name="CHARGE_END_TIME_FIELD_NAME" />“ sind 0, 15, 30 und 45.</translation> -<translation id="4450222911834151460">Wenn Sie diese Richtlinie konfigurieren, werden alle angegebenen Datentypen von der Synchronisierung ausgeschlossen. Dies gilt sowohl für Google Sync als auch für die Synchronisierung von Roaming-Profilen. Dadurch lässt sich die Größe von Roaming-Profilen reduzieren und Sie können einschränken, welche Arten von Daten auf die Google Sync-Server hochgeladen werden. - - Aktuell werden folgende Datentypen unterstützt: „bookmarks“, „readingList“, „preferences“, „passwords“, „autofill“, „themes“, „typedUrls“, „extensions“, „apps“, „tabs“ und „wifiConfigurations“. Bei diesen Namen muss die Groß- und Kleinschreibung beachtet werden.</translation> <translation id="4452653762766030431">Steuert die Verfügbarkeit von Netzwerkfreigaben unter Chrome OS</translation> <translation id="445270821089253489">Legt fest, welche Art von Nutzer- und Geräteinformationen gesendet wird.</translation> <translation id="4453913621209182880">Drucken nur mit Hintergrundgrafiken zulassen</translation> @@ -4208,11 +4204,6 @@ <translation id="6371561334154580937">Dialogfeld für die Abmeldung beim Schließen des letzten Fensters anzeigen.</translation> <translation id="6372105930898423193">Ermöglicht die Aktivierung der AppCache-Funktion, selbst wenn sie standardmäßig deaktiviert ist.</translation> <translation id="6376659517206731212">Kann verbindlich sein</translation> -<translation id="6377355597423503887">Diese Richtlinie wird nicht mehr angeboten. Sie können stattdessen "BrowserSignin" verwenden. - -Die Richtlinie erlaubt dem Nutzer die Anmeldung in <ph name="PRODUCT_NAME" />. - -Durch Festlegen dieser Richtlinie bestimmen Sie, ob sich ein Nutzer in <ph name="PRODUCT_NAME" /> anmelden darf oder nicht. Wenn Sie für diese Richtlinie "False" festlegen, funktionieren Apps und Erweiterungen nicht mehr, die die chrome.identity API verwenden. Aus diesem Grund ist es empfehlenswert, stattdessen "SyncDisabled" zu verwenden.</translation> <translation id="6378076389057087301">Angaben zum Einfluss von Audioaktivitäten auf den Energiesparmodus</translation> <translation id="6378393933102834628">Wenn die Richtlinie auf "True" gesetzt ist, wird die Apps-Verknüpfung eingeblendet. Ist sie auf "False" gesetzt, wird die Verknüpfung nie eingeblendet. @@ -5149,13 +5140,6 @@ Wenn diese Richtlinie nicht konfiguriert ist, wird die Ruhemodus-Aktion ausgeführt. Hinweis: Falls das Gerät in den Ruhemodus versetzt werden soll, kann separat konfiguriert werden, ob <ph name="PRODUCT_OS_NAME" /> den Bildschirm vorher sperren soll oder nicht.</translation> -<translation id="7476621944304431784">Wenn diese Einstellung aktiviert ist, können Nutzer WLAN-Konfigurationen zwischen <ph name="PRODUCT_OS_NAME" />-Gerät(en) und einem verbundenen Android-Smartphone synchronisieren. Damit die WLAN-Konfigurationen synchronisiert werden können, muss diese Funktion durch die Nutzer eingerichtet und explizit freigeschaltet werden. - - Ist diese Einstellung deaktiviert, können Nutzer die WLAN-Konfigurationen nicht synchronisieren. - - Für diese Funktion muss der Datentyp „<ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" />“ in der Chrome-Synchronisierung aktiviert sein. Wenn „<ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" />“ in der Richtlinie „<ph name="SYNC_TYPES_LIST_DISABLED_POLICY_NAME" />“ deaktiviert ist oder die Chrome-Synchronisierung in der Richtlinie „<ph name="SYNC_DISABLED_POLICY_NAME" />“ deaktiviert ist, ist diese Funktion nicht aktiviert. - - Ist diese Richtlinie nicht konfiguriert, kann die Funktion nicht standardmäßig von verwalteten Nutzern verwendet werden.</translation> <translation id="7477149584454865826">Boolescher Parameter, der angibt, ob zum Einrichten des Druckers IPP Everywhere verwendet werden soll.</translation> <translation id="7477231245051133709">Bedienungshilfe "Mono-Audio" aktivieren</translation> <translation id="7477239290070847560">Zeroconf-basierte (mDNS + DNS-SD) Protokollziele</translation> @@ -5461,7 +5445,6 @@ <translation id="7882585827992171421">Diese Richtlinie ist nur im Händlermodus aktiv. Bestimmt die ID der Erweiterung, die als Bildschirmschoner auf der Anmeldeseite verwendet werden soll. Die Erweiterung muss Teil des App-Pakets sein, das in der DeviceAppPack-Richtlinie für diese Domain konfiguriert wurde.</translation> -<translation id="7882857838942884046">Wenn Sie Google Sync deaktivieren, funktioniert die Android Sicherung & Wiederherstellung nicht mehr richtig.</translation> <translation id="7882890448959833986">Warnung für nicht unterstützte Betriebssysteme unterdrücken</translation> <translation id="7887379840451099426">Einstellungen für die Energieverwaltung, die nur im Akkubetrieb gelten</translation> <translation id="7891884447851425349">Wenn "<ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" />" aktiviert ist, gibt "<ph name="DEFAULT_SEARCH_PROVIDER_SEARCH_URL_POLICY_NAME" />" die URL der Standardsuchmaschine an. Die URL sollte den String <ph name="SEARCH_TERM_MARKER" /> enthalten, der während des Suchvorgangs durch die Suchbegriffe des Nutzers ersetzt wird.
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb index b704b0f..0e8fe233 100644 --- a/components/policy/resources/policy_templates_es-419.xtb +++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -209,13 +209,6 @@ <translation id="1265053460044691532">Permite limitar el tiempo durante el cual un usuario autenticado mediante SAML puede acceder sin conexión.</translation> <translation id="127264587838521316">Habilita las solicitudes de instalación de extensiones de <ph name="PRODUCT_NAME" /></translation> <translation id="1274997165432133392">Cookies y otros datos de sitios</translation> -<translation id="127699919157094139">Inhabilita la sincronización de datos en <ph name="PRODUCT_NAME" /> a través de los servicios de sincronización alojados en Google y evita que los usuarios cambien esta configuración. - - Si habilitas esta configuración, los usuarios no podrán cambiarla ni anularla en <ph name="PRODUCT_NAME" />. - - Si no estableces esta política, Google Sync estará disponible para que el usuario elija si desea utilizarlo o no. - - Para inhabilitar Google Sync por completo, se recomienda inhabilitar el servicio de Google Sync en la Consola del administrador de Google.</translation> <translation id="128059397544257017">Si habilitas la política, <ph name="CHROME_CLEANUP_NAME" /> informará a Google sobre el análisis cuando detecte software no deseado, en caso de que así lo establezca <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> en la política. <ph name="CHROME_CLEANUP_NAME" /> les preguntará a los usuarios si desean realizar la limpieza y le enviará los resultados a Google. Si inhabilitas la política, <ph name="CHROME_CLEANUP_NAME" /> no informará a Google sobre el análisis cuando detecte software no deseado, independientemente del valor de <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> les preguntará a los usuarios si desean realizar la limpieza, pero no le informará los resultados a Google. @@ -315,13 +308,13 @@ Para obtener información detallada sobre los patrones de <ph name="URL_LABEL" /> válidos, consulta https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. <ph name="WILDCARD_VALUE" /> no es un valor aceptado para esta política. Ten en cuenta que esta política estaba habilitada en Android por error, pero esta funcionalidad nunca fue totalmente compatible en ese SO.</translation> -<translation id="1435493974546396517">Controla cómo <ph name="PRODUCT_NAME" /> muestra la opción Imprimir como imagen en <ph name="MS_WIN_NAME" /> y <ph name="MAC_OS_NAME" /> cuando el usuario imprime archivos PDF. +<translation id="1435493974546396517">Controla cómo <ph name="PRODUCT_NAME" /> muestra la opción Imprimir como imagen en <ph name="MS_WIN_NAME" /> y <ph name="MAC_OS_NAME" /> cuando se imprimen archivos PDF. - Cuando el usuario imprime un archivo PDF en <ph name="MS_WIN_NAME" /> o <ph name="MAC_OS_NAME" />, a veces, es necesario que los trabajos de impresión se rastericen en una imagen a fin de que determinadas impresoras logren un resultado preciso. + Al imprimir archivos PDF en <ph name="MS_WIN_NAME" /> o <ph name="MAC_OS_NAME" />, a veces es necesario rasterizar los trabajos de impresión en imágenes para que determinadas impresoras logren el resultado buscado. Si habilitas esta política, <ph name="PRODUCT_NAME" /> hará que la opción Imprimir como imagen esté disponible en el menú Vista previa de impresión cuando el usuario imprima un archivo PDF. - Si no habilitas o no estableces la política, <ph name="PRODUCT_NAME" /> hará que la opción Imprimir como imagen no esté disponible para los usuarios en el menú Vista previa de impresión. Además, los archivos PDF se imprimirán de forma normal, sin ser rasterizados en una imagen antes de enviarse a destino.</translation> + Si no habilitas o no estableces la política, <ph name="PRODUCT_NAME" /> hará que la opción Imprimir como imagen no esté disponible para los usuarios en el menú Vista previa de impresión y los archivos PDF se imprimirán del modo habitual, sin rasterizarse en imágenes antes de su envío a destino.</translation> <translation id="1435659902881071157">Configuración de red de dispositivo</translation> <translation id="1438739959477268107">Configuración predeterminada de generación de claves</translation> <translation id="1449083855104537880">Si estableces el valor "True" para la política, se mostrarán las opciones de accesibilidad en el menú de la bandeja del sistema. Si estableces el valor "False", no se mostrarán las opciones en el menú. @@ -561,7 +554,7 @@ <translation id="169467210981344373">Inhabilitar la caché de autenticación de HTTP con alcance global</translation> <translation id="1698810555265314018">Controla la resolución de las imágenes de impresión cuando <ph name="PRODUCT_NAME" /> imprime archivos PDF con rasterización. - Cuando el usuario imprime archivos PDF con la opción Imprimir como imagen, puede ser útil especificar una resolución de impresión diferente a la configuración de la impresora del dispositivo o el valor predeterminado para archivos PDF. Una resolución alta aumentará enormemente el tiempo de procesamiento y de impresión, mientras que una resolución baja puede generar una calidad de la imagen pobre. + Cuando el usuario imprime archivos PDF con la opción Imprimir como imagen, puede ser útil especificar una resolución de impresión diferente a la configuración de la impresora del dispositivo o el valor predeterminado para archivos PDF. Una resolución alta aumentará enormemente el tiempo de procesamiento y de impresión, mientras que una resolución baja puede generar una baja calidad de imagen. Esta política permite especificar una resolución para usarla cuando se rasterizan archivos PDF para la impresión. @@ -2102,7 +2095,7 @@ <translation id="348495353354674884">Habilitar el teclado virtual</translation> <translation id="3485200437120267231">Inhabilita la intercepción de acceso</translation> <translation id="3487651201232258606">Mensajería nativa</translation> -<translation id="3492351353716550742">No usar una política de referente predeterminado con el valor "sin referente cuando cambia a una versión inferior"</translation> +<translation id="3492351353716550742">No usar una política de referente predeterminado con el valor no-referrer-when-downgrade</translation> <translation id="3492834335089638487">Esta política controla la forma en que un dispositivo usa las apps para Android de fuentes no confiables (que no provienen de Google Play Store). Si no se establece el valor para esta política, no se permitirá la funcionalidad. @@ -2737,7 +2730,7 @@ <translation id="4372704773119750918">No permitir que el usuario de empresa forme parte de la función de varios perfiles (usuario principal o secundario)</translation> <translation id="4377599627073874279">Permitir a todos los sitios que muestren todas las imágenes</translation> <translation id="437791893267799639">No se estableció la política; no permitir la migración de datos y ARC</translation> -<translation id="4381227367939912539">Inhabilitar el juego de huevo de pascua del dinosaurio</translation> +<translation id="4381227367939912539">Inhabilitar el juego del huevo de pascua del dinosaurio</translation> <translation id="4382413175336720282">Inhabilita la verificación de URL en tiempo real</translation> <translation id="4387741272680827493">Si estableces la política, se especifica una lista de nombres de host que evitan las actualizaciones de HSTS precargadas de http a https. @@ -2796,7 +2789,7 @@ Si bien la política se admite en plataformas posteriores, es posible que la función que habilita no esté disponible en todas ellas. No todas las funciones de Web Platform que dejaron de estar disponibles se pueden volver a habilitar; solo las que se indican explícitamente a continuación y durante un período limitado que varía según cada función. El formato general de la etiqueta de cadena será [NombreDeFunciónNoDisponible]_EffectiveUntil[aaaammdd]. Como referencia, se puede encontrar el propósito de los cambios de la función de Web Platform en https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Habilitar el bloqueo cuando el dispositivo esté inactivo o suspendido</translation> -<translation id="4443711908766051441">Habilitar el juego de huevo de pascua del dinosaurio</translation> +<translation id="4443711908766051441">Habilitar el juego del huevo de pascua del dinosaurio</translation> <translation id="4447668084338250480">Comportamiento de la redirección de intranet</translation> <translation id="4449469846627734399">Establecer la configuración diurna para el cambio de pico de consumo de energía</translation> <translation id="4449545651113180484">Rotar la pantalla hacia la derecha 270 grados</translation> @@ -2805,9 +2798,6 @@ Si no estableces la política, el modo avanzado para la carga de la batería se mantendrá desactivado. Los valores válidos para el campo <ph name="MINUTE_FIELD_NAME" /> en <ph name="CHARGE_START_TIME_FIELD_NAME" /> y <ph name="CHARGE_END_TIME_FIELD_NAME" /> son 0, 15, 30 y 45.</translation> -<translation id="4450222911834151460">Si estableces esta política, se excluirán todos los tipos de datos especificados de la sincronización para Google Sync y de la sincronización de perfiles en roaming. Esta política puede ayudar a reducir el tamaño del perfil en roaming o limitar los tipos de datos que se suben a los servidores de Google Sync. - - Los tipos de datos actuales para esta política son los siguientes: "bookmarks", "readingList", "preferences", "passwords", "autofill", "themes", "typedUrls", "extensions", "apps", "tabs", "wifiConfigurations". Estos nombres distinguen mayúsculas de minúsculas.</translation> <translation id="4452653762766030431">Controlar la disponibilidad del sistema de archivos compartidos en red para Chrome OS</translation> <translation id="445270821089253489">Controla el tipo de información sobre el dispositivo y el usuario que se envía.</translation> <translation id="4453913621209182880">Habilitar la impresión solo con los gráficos de fondo</translation> @@ -4249,11 +4239,6 @@ <translation id="6371561334154580937">Mostrar el diálogo de salida cuando se cierra la última ventana</translation> <translation id="6372105930898423193">Permite volver a habilitar la función AppCache, incluso si se encuentra desactivada de forma predeterminada</translation> <translation id="6376659517206731212">Puede ser obligatoria</translation> -<translation id="6377355597423503887">Esta política dejó de estar disponible; considera usar la política BrowserSignin en su lugar. - - Permite que el usuario acceda a <ph name="PRODUCT_NAME" />. - - Si configuras esta política, podrás establecer si un usuario tiene permiso para acceder a <ph name="PRODUCT_NAME" />. Si estableces esta política como "False", las apps y extensiones no podrán usar la API de chrome.identity, por lo que probablemente sea conveniente usar "SyncDisabled".</translation> <translation id="6378076389057087301">Especificar si la actividad de audio afecta a la administración de energía</translation> <translation id="6378393933102834628">Si estableces la política como verdadera, se mostrarán los accesos directos a aplicaciones. Si la estableces como falsa, no se mostrarán nunca los accesos directos. @@ -5188,13 +5173,6 @@ Si no estableces la política, se suspenderá el sistema. Nota: Si la acción es la suspensión, <ph name="PRODUCT_OS_NAME" /> se podrá configurar por separado para que la pantalla se bloquee o no antes de la suspensión.</translation> -<translation id="7476621944304431784">Si habilitas esta configuración, los usuarios podrán sincronizar los ajustes de la red Wi-Fi entre sus dispositivos con <ph name="PRODUCT_OS_NAME" /> y un teléfono Android conectado. Para poder sincronizar los ajustes de la red Wi-Fi, los usuarios deben habilitar esta función de forma explícita completando un flujo de configuración. - - Si inhabilitas esta configuración, los usuarios no podrán sincronizar los ajustes de la red Wi-Fi. - - Esta función depende del tipo de datos de <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> que se habilite en la Sincronización de Chrome. Si inhabilitas <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> en la política <ph name="SYNC_TYPES_LIST_DISABLED_POLICY_NAME" /> o inhabilitas la Sincronización de Chrome en la política <ph name="SYNC_DISABLED_POLICY_NAME" />, no se habilitará esta función. - - Si no estableces esta política, los usuarios administrados no podrán sincronizar los ajustes de forma predeterminada.</translation> <translation id="7477149584454865826">Función experimental booleana que indica si se debe usar IPP Everywhere para configurar la impresora.</translation> <translation id="7477231245051133709">Habilita la función de accesibilidad de audio mono</translation> <translation id="7477239290070847560">Destinos de los protocolos basados en la no configuración (mDNS y DNS-SD)</translation> @@ -5516,7 +5494,6 @@ <translation id="7882585827992171421">Esta política solo se encuentra activa en el modo de venta. Determina la ID de la extensión que se debe utilizar como protector de pantalla en la página de acceso. La extensión debe formar parte del AppPack configurado para este dominio a través de la política DeviceAppPack.</translation> -<translation id="7882857838942884046">Si inhabilitas Google Sync, Android Backup and Restore dejará de funcionar de manera adecuada.</translation> <translation id="7882890448959833986">Eliminar la advertencia de SO incompatible</translation> <translation id="7887379840451099426">Solo se puede aplicar la configuración de administración de la energía cuando el dispositivo esté funcionando con batería.</translation> <translation id="7891884447851425349">Si activas <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" />, establecer <ph name="DEFAULT_SEARCH_PROVIDER_SEARCH_URL_POLICY_NAME" /> especificará la URL del motor de búsqueda utilizado en una búsqueda predeterminada. La URL debe incluir la string <ph name="SEARCH_TERM_MARKER" />, que se reemplazará en la búsqueda por los términos del usuario. @@ -6192,7 +6169,7 @@ Las impresoras de extensiones, también conocidas como destinos del proveedor de impresión, incluyen los destinos que pertenecen a las extensiones de <ph name="PRODUCT_NAME" />. Las impresoras locales, también conocidas como destinos nativos de impresión, incluyen los destinos disponibles en la máquina local y las impresoras de redes compartidas.</translation> -<translation id="8753264624162178499">El usuario puede seleccionar la opción Imprimir como imagen para permitir la rasterización de archivos PDF antes de enviar el trabajo de impresión a destino</translation> +<translation id="8753264624162178499">La opción Imprimir como imagen está disponible para el usuario a fin de permitir la rasterización de archivos PDF antes de enviar el trabajo de impresión a destino</translation> <translation id="8757552286070680084">Configuración de DTC wilco</translation> <translation id="8758831693895931466">Habilitar la inscripción obligatoria en la administración de la nube</translation> <translation id="8759829385824155666">Se permiten los tipos de encriptación de Kerberos</translation> @@ -6580,7 +6557,7 @@ <translation id="9207596996305971030">No informar eventos de acceso y salida</translation> <translation id="9213751049772256263">Inhabilitar todas las variaciones</translation> <translation id="9217154963008402249">Frecuencia de envío de paquetes de red de control</translation> -<translation id="9220314833408124365">Usar una política de referente predeterminado con el valor "sin referente cuando cambia a una versión inferior"</translation> +<translation id="9220314833408124365">Usar una política de referente predeterminado con el valor no-referrer-when-downgrade</translation> <translation id="922540222991413931">Configurar fuentes de instalación de secuencias de comandos de usuario, aplicaciones y extensiones</translation> <translation id="924557436754151212">Importar las contraseñas guardadas del navegador predeterminado en la primera ejecución</translation> <translation id="927384371566552478">Si habilitas la política o no la estableces, los usuarios podrán usar la IU de importación y exportación. Si inhabilitas la política, los usuarios no podrán usar la IU de importación y exportación.</translation> @@ -6610,7 +6587,7 @@ Nota: Si bloqueas las URL internas de chrome://*, se pueden generar errores inesperados.</translation> <translation id="957778406002650056">La URL desde la cual se puede descargar la imagen de <ph name="PLUGIN_VM_NAME" />.</translation> -<translation id="971677226939413180">El usuario no puede seleccionar la opción Imprimir como imagen</translation> +<translation id="971677226939413180">La opción Imprimir como imagen no está disponible para el usuario</translation> <translation id="974349541138387272">Especifica la plantilla de URI del agente de resolución de DNS sobre HTTPS</translation> <translation id="979467274961593903">No permitir el uso de la depuración remota</translation> <translation id="980218166381006412">Si habilitas la política, se activará el modo en segundo plano. En este modo, se inicia un proceso de <ph name="PRODUCT_NAME" /> durante el acceso al SO y se mantiene en ejecución cuando se cierra la última ventana del navegador, lo que permite mantener activas las apps en segundo plano y la sesión de navegación, incluidas las cookies de sesión. En la bandeja del sistema, aparece un ícono correspondiente al proceso en segundo plano. Puedes cerrar el proceso desde allí en cualquier momento.
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb index 6b7cbbc..0e9e6b0 100644 --- a/components/policy/resources/policy_templates_es.xtb +++ b/components/policy/resources/policy_templates_es.xtb
@@ -209,13 +209,6 @@ <translation id="1265053460044691532">Limitar el tiempo durante el que un usuario autenticado a través de SAML puede iniciar sesión sin conexión</translation> <translation id="127264587838521316">Habilita las solicitudes de instalación de extensiones de <ph name="PRODUCT_NAME" /></translation> <translation id="1274997165432133392">Cookies y otros datos de sitios</translation> -<translation id="127699919157094139">Inhabilita la sincronización de datos en <ph name="PRODUCT_NAME" /> a través de los servicios de sincronización alojados en Google e impide que los usuarios cambien esta configuración. - - Si inhabilitas esta opción, los usuarios no podrán modificarla ni anularla en <ph name="PRODUCT_NAME" />. - - Si no se asigna ningún valor a esta política, el usuario podrá elegir si quiere usar Google Sync o no. - - Para inhabilitar Google Sync por completo, se recomienda inhabilitar el servicio de Google Sync en la consola de administración de Google.</translation> <translation id="128059397544257017">Si se habilita esta política y <ph name="CHROME_CLEANUP_NAME" /> detecta software no deseado, es posible que envíe los resultados del análisis a Google, según lo establecido en la política <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> preguntará a los usuarios si quieren eliminar el software no deseado y enviará los resultados a Google. Si se inhabilita esta política y <ph name="CHROME_CLEANUP_NAME" /> detecta software no deseado, no informará del análisis a Google, independientemente del valor de <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> preguntará a los usuarios si quieren eliminar el software no deseado. Los resultados no se enviarán a Google. @@ -2816,9 +2809,6 @@ Si no se asigna ningún valor a esta política, el modo avanzado de carga de la batería quedará desactivado. Los valores válidos del campo <ph name="MINUTE_FIELD_NAME" /> en <ph name="CHARGE_START_TIME_FIELD_NAME" /> y <ph name="CHARGE_END_TIME_FIELD_NAME" /> son 0, 15, 30 y 45.</translation> -<translation id="4450222911834151460">Si se establece esta política, todos los tipos de datos especificados se excluirán de la sincronización de Google Sync y de la sincronización del perfil de roaming. Esto puede ser útil para reducir el tamaño del perfil de roaming o para limitar el tipo de datos que se suben a los servidores de Google Sync. - - Los tipos de datos actuales para esta política son los siguientes: "bookmarks", "readingList", "preferences", "passwords", "autofill", "themes", "typedUrls", "extensions", "apps", "tabs" y "wifiConfigurations". Estos nombres distinguen entre mayúsculas y minúsculas.</translation> <translation id="4452653762766030431">Controla si los sistemas de archivos compartidos en red están disponibles en Chrome OS</translation> <translation id="445270821089253489">Controla el tipo de información del usuario y del dispositivo que se proporciona.</translation> <translation id="4453913621209182880">Permitir imprimir solo con gráficos de fondo</translation> @@ -4262,11 +4252,6 @@ <translation id="6371561334154580937">Muestra el cuadro de diálogo de cierre de sesión cuando se cierra la última ventana.</translation> <translation id="6372105930898423193">Permite volver a habilitar la función AppCache aunque esté desactivada de forma predeterminada.</translation> <translation id="6376659517206731212">Puede ser obligatoria</translation> -<translation id="6377355597423503887">Esta política está obsoleta, pero puedes utilizar BrowserSignin en su lugar. - - Permite a los usuarios iniciar sesión en <ph name="PRODUCT_NAME" />. - - Esta política sirve para establecer si un usuario tiene permiso para iniciar sesión en <ph name="PRODUCT_NAME" />. Si se le asigna el valor "False", impedirá que funcionen las aplicaciones y extensiones que usan la API chrome.identity, así que te recomendamos que uses SyncDisabled.</translation> <translation id="6378076389057087301">Especificar si la actividad de audio afecta a la administración de energía</translation> <translation id="6378393933102834628">Si se asigna el valor "Verdadero" a esta política, se mostrarán los accesos directos a aplicaciones. Si se le asigna el valor "Falso", no se mostrarán nunca estos accesos directos. @@ -5206,13 +5191,6 @@ Si no se le asigna ningún valor, la acción será la suspensión. Nota: Si la acción es la suspensión, <ph name="PRODUCT_OS_NAME" /> se puede configurar por separado para bloquear o no la pantalla antes de entrar en modo de suspensión.</translation> -<translation id="7476621944304431784">Si se habilita esta opción, los usuarios podrán sincronizar las configuraciones de la red Wi‑Fi en sus dispositivos <ph name="PRODUCT_OS_NAME" /> y en un teléfono Android conectado. Para poder sincronizar las configuraciones de la red Wi‑Fi, los usuarios deben aceptar explícitamente esta función completando un proceso de configuración. - - Si se inhabilita esta opción, los usuarios no podrán sincronizar las configuraciones de la red Wi‑Fi. - - Esta función depende de que se habilite el tipo de datos de <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> en la Sincronización de Chrome. Si se inhabilita <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> en la política <ph name="SYNC_TYPES_LIST_DISABLED_POLICY_NAME" /> o se inhabilita la Sincronización de Chrome en la política <ph name="SYNC_DISABLED_POLICY_NAME" />, no se habilitará esta función. - - Si no se asigna ningún valor a esta política, se inhabilitará de forma predeterminada para los usuarios administrados.</translation> <translation id="7477149584454865826">Indicador booleano que especifica si se debe usar IPP Everywhere para configurar la impresora.</translation> <translation id="7477231245051133709">Habilita la función de accesibilidad de audio en mono</translation> <translation id="7477239290070847560">Destinos de protocolo zeroconf (mDNS y DNS‑SD)</translation> @@ -5535,7 +5513,6 @@ <translation id="7882585827992171421">Esta política solo se encuentra activa en el modo comercial. Permite determinar el ID de la extensión que se debe utilizar como salvapantallas en la pantalla de inicio de sesión. La extensión debe formar parte del paquete AppPack configurado para ese dominio a través de la política DeviceAppPack.</translation> -<translation id="7882857838942884046">Inhabilitar Google Sync provocará que Android Backup and Restore no funcione correctamente.</translation> <translation id="7882890448959833986">Eliminar la advertencia de SO no admitido</translation> <translation id="7887379840451099426">Configuración de gestión de energía aplicable únicamente cuando el dispositivo funcione con la batería</translation> <translation id="7891884447851425349">Si <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> está activada y se asigna un valor a <ph name="DEFAULT_SEARCH_PROVIDER_SEARCH_URL_POLICY_NAME" />, se especificará la URL del buscador usada durante una búsqueda predeterminada. La URL debe incluir la cadena <ph name="SEARCH_TERM_MARKER" />, que en la consulta se sustituirá por los términos de búsqueda del usuario.
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb index c44a929..2d5e3d67 100644 --- a/components/policy/resources/policy_templates_fr.xtb +++ b/components/policy/resources/policy_templates_fr.xtb
@@ -209,13 +209,6 @@ <translation id="1265053460044691532">Limiter la durée pendant laquelle un utilisateur authentifié via SAML peut se connecter hors connexion</translation> <translation id="127264587838521316">Autorise les demandes d'installation d'extension de <ph name="PRODUCT_NAME" /></translation> <translation id="1274997165432133392">Cookies et autres données des sites</translation> -<translation id="127699919157094139">Cette règle permet de désactiver la synchronisation des données dans <ph name="PRODUCT_NAME" /> à l'aide des services de synchronisation hébergés par Google et d'empêcher les utilisateurs de modifier ce paramètre. - - Si vous activez ce paramètre, les utilisateurs ne peuvent pas le modifier ni l'ignorer dans <ph name="PRODUCT_NAME" />. - - Si cette règle n'est pas configurée, l'utilisateur peut choisir d'utiliser ou non le service Google Sync. - - Pour désactiver entièrement Google Sync, nous vous conseillons de le faire dans la Console d'administration Google.</translation> <translation id="128059397544257017">Si vous activez cette règle et que <ph name="CHROME_CLEANUP_NAME" /> détecte un logiciel indésirable, il peut, conformément à la règle définie par <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />, transmettre le rapport d'analyse à Google. <ph name="CHROME_CLEANUP_NAME" /> demande aux utilisateurs s'ils souhaitent qu'un nettoyage soit effectué. Les résultats sont envoyés à Google. Si vous désactivez cette règle et que <ph name="CHROME_CLEANUP_NAME" /> détecte un logiciel indésirable, le rapport d'analyse n'est pas transmis à Google, quelle que soit la valeur de <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> demande aux utilisateurs s'ils souhaitent qu'un nettoyage soit effectué. Les résultats ne sont pas envoyés à Google. @@ -2805,9 +2798,6 @@ Si cette règle n'est pas configurée, le mode avancé de recharge de la batterie est désactivé. Les valeurs autorisées dans le champ "<ph name="MINUTE_FIELD_NAME" />" de "<ph name="CHARGE_START_TIME_FIELD_NAME" />" et "<ph name="CHARGE_END_TIME_FIELD_NAME" />" sont 0, 15, 30 et 45.</translation> -<translation id="4450222911834151460">Si cette règle est configurée, tous les types de données spécifiés ne seront pas synchronisés avec Google Sync et ni avec le profil itinérant. Cela peut permettre de réduire la taille du profil itinérant ou de limiter les types de données importés sur les serveurs Google Sync. - - Les types de données actuels pour cette règle sont : "bookmarks", "readingList", "preferences", "passwords", "autofill", "themes", "typedUrls", "extensions", "apps", "tabs" et "wifiConfigurations". Ces noms sont sensibles à la casse.</translation> <translation id="4452653762766030431">Vérifie la disponibilité de Partages de fichiers en réseau pour Chrome OS</translation> <translation id="445270821089253489">Contrôle le type d'informations figurant dans les rapports sur les utilisateurs et les appareils.</translation> <translation id="4453913621209182880">Autoriser l'impression uniquement avec des images de fond</translation> @@ -4247,11 +4237,6 @@ <translation id="6371561334154580937">Afficher la boîte de dialogue de déconnexion sur la dernière fenêtre fermée.</translation> <translation id="6372105930898423193">Permet de réactiver le cache des applications même s'il est désactivé par défaut.</translation> <translation id="6376659517206731212">Peut être obligatoire</translation> -<translation id="6377355597423503887">Cette règle est obsolète. Veuillez utiliser "BrowserSignin" à la place. - - Permet à l'utilisateur de se connecter à <ph name="PRODUCT_NAME" />. - - Si vous configurez cette règle, vous pouvez déterminer si un utilisateur est autorisé à se connecter à <ph name="PRODUCT_NAME" />. La définition de cette règle sur "False" empêche les applications et les extensions qui utilisent l'API chrome.identity de fonctionner. Vous préférerez peut-être alors utiliser la règle "SyncDisabled".</translation> <translation id="6378076389057087301">Indiquer si l'activité audio a une incidence sur la gestion de l'alimentation</translation> <translation id="6378393933102834628">Si cette règle est définie sur "True", le raccourci des applications est affiché. Si cette règle est définie sur "False", ce raccourci n'est jamais affiché. @@ -5190,13 +5175,6 @@ Si cette règle n'est pas configurée, l'action exécutée est un arrêt temporaire. Remarque : Dans ce cas, <ph name="PRODUCT_OS_NAME" /> peut être configuré séparément pour verrouiller ou non l'écran avant l'arrêt provisoire.</translation> -<translation id="7476621944304431784">Si ce paramètre est activé, les utilisateurs seront autorisés à synchroniser les configurations du réseau Wi-Fi entre leurs appareils <ph name="PRODUCT_OS_NAME" /> et un téléphone Android connecté. Pour pouvoir synchroniser les configurations du réseau Wi-Fi, les utilisateurs doivent au préalable activer explicitement cette fonctionnalité en suivant une procédure de configuration. - - Si ce paramètre est désactivé, les utilisateurs ne seront pas autorisés à synchroniser les configurations du réseau Wi-Fi. - - Cette fonctionnalité dépend du type de données <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> activé pour la synchronisation Chrome. Si <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> est désactivé dans la règle <ph name="SYNC_TYPES_LIST_DISABLED_POLICY_NAME" />, ou si la synchronisation Chrome est désactivée dans la règle <ph name="SYNC_DISABLED_POLICY_NAME" />, cette fonctionnalité n'est pas activée. - - Si cette règle n'est pas configurée, l'option par défaut n'est pas autorisée pour les utilisateurs gérés.</translation> <translation id="7477149584454865826">Indicateur booléen spécifiant si IPP Everywhere doit être utilisé ou non pour configurer l'imprimante.</translation> <translation id="7477231245051133709">Activer la fonctionnalité d'accessibilité d'audio mono</translation> <translation id="7477239290070847560">Destinations des protocoles basés sur Zeroconf (mDNS + DNS-SD)</translation> @@ -5520,7 +5498,6 @@ <translation id="7882585827992171421">Cette règle n'est active qu'en mode "point de vente". Détermine l'identifiant de l'extension à utiliser comme économiseur d'écran sur l'écran de connexion. L'extension doit faire partie de l'AppPack configuré pour ce domaine via la règle DeviceAppPack.</translation> -<translation id="7882857838942884046">Si vous désactivez Google Sync, sachez que la sauvegarde et la restauration Android ne fonctionneront pas correctement.</translation> <translation id="7882890448959833986">Supprimer l'avertissement relatif au système d'exploitation non compatible</translation> <translation id="7887379840451099426">Paramètres de gestion de l'alimentation applicables uniquement si l'appareil fonctionne sur batterie.</translation> <translation id="7891884447851425349">Si la règle <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> est activée, la règle <ph name="DEFAULT_SEARCH_PROVIDER_SEARCH_URL_POLICY_NAME" /> vous permet de spécifier l'URL du moteur de recherche utilisé lors d'une recherche par défaut. L'URL doit inclure la chaîne <ph name="SEARCH_TERM_MARKER" />, qui sera remplacée dans la requête par les termes de recherche de l'utilisateur. @@ -5765,7 +5742,7 @@ <translation id="8244171102276095471">Activer des suites de chiffrement RC4 dans TLS</translation> <translation id="8244525275280476362">Délai maximal de récupération après le rejet d'une règle</translation> <translation id="8245574649143980200">Si cette règle est activée ou qu'elle n'est pas configurée, les utilisateurs peuvent voir et utiliser la recherche par zone <ph name="GOOGLE_LENS_PRODUCT_NAME" /> via le menu contextuel. Si cette règle est désactivée, les utilisateurs ne peuvent pas voir la recherche par zone <ph name="GOOGLE_LENS_PRODUCT_NAME" /> dans le menu contextuel lorsque la recherche par zone <ph name="GOOGLE_LENS_PRODUCT_NAME" /> est disponible.</translation> -<translation id="824818544897669723">Désactiver la suppression de l'historique du navigateur et de l'historique des téléchargements</translation> +<translation id="824818544897669723">Désactiver la suppression des historiques du navigateur et des téléchargements</translation> <translation id="82530263956734297">Identifiants d'extension à exclure de la liste de blocage</translation> <translation id="8256688113167012935">Définit quel nom de compte s'affiche sur l'écran de connexion de <ph name="PRODUCT_OS_NAME" /> pour le compte local de l'appareil correspondant.
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb index 43f133d8..f7ba0cc 100644 --- a/components/policy/resources/policy_templates_id.xtb +++ b/components/policy/resources/policy_templates_id.xtb
@@ -209,13 +209,6 @@ <translation id="1265053460044691532">Batasi waktu bagi pengguna yang diautentikasi melalui SAML untuk dapat masuk saat offline.</translation> <translation id="127264587838521316">Mengaktifkan permintaan penginstalan ekstensi <ph name="PRODUCT_NAME" /></translation> <translation id="1274997165432133392">Cookie dan data situs lainnya</translation> -<translation id="127699919157094139">Menonaktifkan sinkronisasi data di <ph name="PRODUCT_NAME" /> menggunakan layanan sinkronisasi yang dihosting oleh Google dan mencegah pengguna mengubah setelan ini. - - Jika Anda mengaktifkan setelan ini, pengguna tidak dapat mengubah atau mengganti setelan ini di <ph name="PRODUCT_NAME" />. - - Jika kebijakan ini dibiarkan tidak tersetel, Google Sync akan tersedia bagi pengguna tersebut untuk memilih menggunakannya atau tidak. - - Untuk menonaktifkan Google Sync sepenuhnya, sebaiknya Anda menonaktifkan layanan Google Sync di konsol Google Admin.</translation> <translation id="128059397544257017">Jika kebijakan disetel ke Aktif dan <ph name="CHROME_CLEANUP_NAME" /> mendeteksi software yang tidak diinginkan, kebijakan dapat melaporkan pemindaian software tersebut ke Google, sesuai dengan kebijakan yang disetel oleh <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> akan meminta izin pengguna untuk melakukan pembersihan. Kemudian hasilnya dikirimkan ke Google. Jika kebijakan disetel ke Nonaktif dan <ph name="CHROME_CLEANUP_NAME" /> mendeteksi software yang tidak diinginkan, kebijakan tidak akan melaporkan pemindaian software tersebut ke Google, terlepas dari nilai <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> akan meminta izin pengguna untuk melakukan pembersihan. Hasilnya tidak dilaporkan ke Google. @@ -2815,9 +2808,6 @@ Jika kebijakan tidak disetel, mode pengisian daya baterai lanjutan akan tetap nonaktif. Nilai yang valid untuk kolom <ph name="MINUTE_FIELD_NAME" /> dalam <ph name="CHARGE_START_TIME_FIELD_NAME" /> dan <ph name="CHARGE_END_TIME_FIELD_NAME" /> adalah 0, 15, 30, 45.</translation> -<translation id="4450222911834151460">Jika kebijakan ini disetel, semua jenis data yang ditentukan akan dikecualikan dari sinkronisasi, baik untuk Google Sync maupun sinkronisasi profil roaming. Hal ini berguna untuk mengurangi ukuran profil roaming atau membatasi jenis data yang diupload ke Server Google Sync. - - Jenis data saat ini untuk kebijakan ini adalah: "bookmarks", "readingList", "preferences", "passwords", "autofill", "themes", "typedUrls", "extensions", "apps", "tabs", "wifiConfigurations". Nama-nama tersebut peka huruf besar atau kecil.</translation> <translation id="4452653762766030431">Mengontrol fitur Berbagi File Dalam Jaringan untuk ketersediaan Chrome OS</translation> <translation id="445270821089253489">Mengontrol jenis informasi perangkat dan pengguna yang dilaporkan.</translation> <translation id="4453913621209182880">Izinkan pencetakan hanya dengan grafis latar belakang</translation> @@ -4265,11 +4255,6 @@ <translation id="6371561334154580937">Tampilkan dialog logout saat jendela terakhir ditutup.</translation> <translation id="6372105930898423193">Mengizinkan fitur AppCache untuk diaktifkan ulang meskipun dinonaktifkan secara default</translation> <translation id="6376659517206731212">Bisa Jadi Wajib</translation> -<translation id="6377355597423503887">Kebijakan ini tidak digunakan lagi. Pertimbangkan untuk menggunakan BrowserSignin. - - Mengizinkan pengguna untuk login ke <ph name="PRODUCT_NAME" />. - - Jika kebijakan ini ditetapkan, Anda dapat mengonfigurasi apakah pengguna diizinkan untuk login ke <ph name="PRODUCT_NAME" /> atau tidak. Jika kebijakan ini ditetapkan ke 'False', aplikasi dan ekstensi yang menggunakan chrome.identity API tidak akan berfungsi. Sebaiknya Anda menggunakan SyncDisabled saja.</translation> <translation id="6378076389057087301">Tentukan apakah aktivitas audio memengaruhi pengelolaan daya</translation> <translation id="6378393933102834628">Jika kebijakan ditetapkan ke Benar (True), pintasan aplikasi akan ditampilkan. Jika kebijakan ditetapkan ke Salah (False), pintasan tidak akan pernah muncul. @@ -5206,13 +5191,6 @@ Tidak menyetel kebijakan berarti tindakan Penangguhan akan diambil. Catatan: Jika tindakan yang diambil adalah Penangguhan, <ph name="PRODUCT_OS_NAME" /> dapat disiapkan secara terpisah untuk mengunci atau tidak mengunci layar sebelum ditangguhkan.</translation> -<translation id="7476621944304431784">Jika setelan ini diaktifkan, pengguna akan diizinkan untuk menyinkronkan konfigurasi jaringan Wi-Fi antara perangkat <ph name="PRODUCT_OS_NAME" /> dan ponsel Android yang terhubung. Sebelum konfigurasi jaringan Wi-Fi dapat disinkronkan, pengguna harus secara eksplisit memilih untuk menggunakan fitur ini dengan menyelesaikan alur penyiapan. - - Jika setelan ini dinonaktifkan, pengguna tidak akan diizinkan untuk menyinkronkan konfigurasi jaringan Wi-Fi. - - Fitur ini bergantung pada pengaktifan jenis data <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> di Sinkronisasi Chrome. Jika <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> dinonaktifkan di kebijakan <ph name="SYNC_TYPES_LIST_DISABLED_POLICY_NAME" />, atau Sinkronisasi Chrome dinonaktifkan di kebijakan <ph name="SYNC_DISABLED_POLICY_NAME" />, fitur ini tidak akan diaktifkan. - - Jika kebijakan ini tidak disetel, pengguna terkelola tidak akan diizinkan secara default.</translation> <translation id="7477149584454865826">Tanda boolean menunjukkan apakah IPP Everywhere harus digunakan untuk menyiapkan printer.</translation> <translation id="7477231245051133709">Mengaktifkan fitur aksesibilitas audio mono</translation> <translation id="7477239290070847560">Tujuan protokol berbasis Zeroconf (mDNS + DNS-SD)</translation> @@ -5534,7 +5512,6 @@ <translation id="7882585827992171421">Kebijakan ini hanya aktif dalam mode ritel. Menentukan id ekstensi untuk digunakan sebagai tirai layar pada layar masuk. Ekstensi haruslah bagian dari AppPack yang dikonfigurasi untuk domain ini melalui kebijakan DeviceAppPack.</translation> -<translation id="7882857838942884046">Menonaktifkan Google Sync akan menyebabkan Pencadangan dan Pemulihan Android tidak berfungsi dengan benar.</translation> <translation id="7882890448959833986">Sembunyikan peringatan OS tidak didukung</translation> <translation id="7887379840451099426">Setelan pengelolaan daya hanya berlaku saat menggunakan daya baterai.</translation> <translation id="7891884447851425349">Jika <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> aktif, menyetel <ph name="DEFAULT_SEARCH_PROVIDER_SEARCH_URL_POLICY_NAME" /> akan menentukan URL mesin telusur yang digunakan saat penelusuran default. URL harus menyertakan string <ph name="SEARCH_TERM_MARKER" />, yang diganti di kueri dengan istilah penelusuran pengguna.
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb index ed6bf82..e2797b88 100644 --- a/components/policy/resources/policy_templates_it.xtb +++ b/components/policy/resources/policy_templates_it.xtb
@@ -210,13 +210,6 @@ <translation id="1265053460044691532">Limita il tempo per cui un utente autenticato tramite SAML può eseguire l'accesso offline</translation> <translation id="127264587838521316">Attiva le richieste di installazione delle estensioni di <ph name="PRODUCT_NAME" /></translation> <translation id="1274997165432133392">Cookie e altri dati dei siti</translation> -<translation id="127699919157094139">Consente di disattivare la sincronizzazione dei dati in <ph name="PRODUCT_NAME" /> tramite i servizi di sincronizzazione ospitati da Google e impedisce agli utenti di modificare questa impostazione. - - Se questa impostazione viene attivata, gli utenti non possono modificare o eseguire l'override dell'impostazione in <ph name="PRODUCT_NAME" />. - - Se il criterio non viene impostato, l'utente può scegliere se utilizzare Google Sync o meno. - - Per disattivare completamente Google Sync, si consiglia di disabilitare il servizio Google Sync nella Console di amministrazione di Google.</translation> <translation id="128059397544257017">Quando il criterio viene impostato su Attivato, se <ph name="CHROME_CLEANUP_NAME" /> rileva un software indesiderato, potrebbe segnalare la scansione a Google, in linea con il criterio impostato da <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> chiede agli utenti se vogliono ripulire il software indesiderato. I risultati vengono inviati a Google. Quando il criterio viene impostato su Disattivato, se <ph name="CHROME_CLEANUP_NAME" /> rileva un software indesiderato, la scansione non viene segnalata a Google, a prescindere dal valore di <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> chiede agli utenti se vogliono ripulire il software indesiderato. I risultati non vengono inviati a Google. @@ -2790,9 +2783,6 @@ Se il criterio non viene configurato, la modalità di ricarica avanzata della batteria rimane disattivata. I valori validi per il campo <ph name="MINUTE_FIELD_NAME" /> in <ph name="CHARGE_START_TIME_FIELD_NAME" /> e <ph name="CHARGE_END_TIME_FIELD_NAME" /> sono 0, 15, 30 e 45.</translation> -<translation id="4450222911834151460">Se questo criterio viene impostato, tutti i tipi di dati specificati verranno esclusi dalla sincronizzazione sia per Google Sync sia per la sincronizzazione del profilo di roaming. Questa operazione può essere utile per ridurre le dimensioni del profilo di roaming o per limitare il tipo di dati caricati sui server di Google Sync. - - Attualmente i tipi di dati per questo criterio sono: "bookmarks", "readingList", "preferences", "passwords", "autofill", "themes", "typedUrls", "extensions", "apps", "tabs", "wifiConfigurations". Tali nomi sono sensibili alle maiuscole.</translation> <translation id="4452653762766030431">Consente di controllare la disponibilità della funzione Condivisioni file di rete per Chrome OS</translation> <translation id="445270821089253489">Consente di stabilire i tipi di informazioni su dispositivi e utenti da segnalare.</translation> <translation id="4453913621209182880">Consenti solo la stampa con immagini di sfondo</translation> @@ -4215,11 +4205,6 @@ <translation id="6371561334154580937">Mostra finestra di dialogo di disconnessione nell'ultima finestra chiusa.</translation> <translation id="6372105930898423193">Consente di riattivare la funzionalità AppCache anche se è disattivata per impostazione predefinita.</translation> <translation id="6376659517206731212">Può essere obbligatorio</translation> -<translation id="6377355597423503887">Questa norma è stata ritirata; usa la norma BrowserSignin. - - Consente all'utente di accedere a <ph name="PRODUCT_NAME" />. - - Se questa norma viene impostata, puoi stabilire se un utente può accedere o meno a <ph name="PRODUCT_NAME" />. Se la norma viene impostata su "False", le app e le estensioni che utilizzano l'API chrome.identity non funzioneranno, pertanto è consigliabile utilizzare la norma SyncDisabled.</translation> <translation id="6378076389057087301">Specifica se l'attività audio incide sulla gestione dell'alimentazione</translation> <translation id="6378393933102834628">Se il criterio è impostato su True, la scorciatoia per le app viene visualizzata. Se il criterio è impostato su False, tale scorciatoia non viene mai visualizzata. @@ -5157,13 +5142,6 @@ Se il criterio non viene configurato, viene compiuta l'azione di sospensione. Nota: se l'azione è la sospensione, è possibile configurare separatamente <ph name="PRODUCT_OS_NAME" /> in modo che blocchi o meno lo schermo prima della sospensione.</translation> -<translation id="7476621944304431784">Se questa impostazione viene attivata, gli utenti potranno sincronizzare le configurazioni di reti Wi-Fi tra i loro dispositivi <ph name="PRODUCT_OS_NAME" /> e un telefono Android collegato. Per poter sincronizzare le configurazioni di reti Wi-Fi, gli utenti devono attivare esplicitamente questa funzionalità svolgendo una procedura di configurazione. - - Se questa impostazione viene disattivata, gli utenti non potranno sincronizzare le configurazioni di reti Wi-Fi. - - Questa funzionalità dipende dall'attivazione del tipo di dati <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> in Sincronizzazione Chrome. Questa funzionalità non verrà attivata se il tipo di dati <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> viene disattivato nel criterio <ph name="SYNC_TYPES_LIST_DISABLED_POLICY_NAME" /> o se viene disattivata la funzionalità Sincronizzazione Chrome nel criterio <ph name="SYNC_DISABLED_POLICY_NAME" />. - - Se questo criterio non viene configurato, per impostazione predefinita la funzionalità non è consentita per gli utenti gestiti.</translation> <translation id="7477149584454865826">Un flag booleano che indica se deve essere usato o meno IPP Everywhere per configurare la stampante.</translation> <translation id="7477231245051133709">Attiva la funzione di accessibilità di audio in formato mono</translation> <translation id="7477239290070847560">Destinazioni protocolli (mDNS e DNS-SD) basate su configurazione automatica</translation> @@ -5486,7 +5464,6 @@ <translation id="7882585827992171421">Questa norma è attiva soltanto in modalità retail. Consente di stabilire l'ID dell'estensione da utilizzare come salvaschermo nella schermata di accesso. L'estensione deve far parte dell'AppPack configurato per il dominio tramite la norma DeviceAppPack.</translation> -<translation id="7882857838942884046">Se Google Sync viene disattivato, le funzioni di backup e ripristino di Android non funzionano correttamente.</translation> <translation id="7882890448959833986">Elimina l'avviso di sistema operativo non supportato</translation> <translation id="7887379840451099426">Le impostazioni di gestione dell'alimentazione applicabili soltanto quando viene usata la batteria.</translation> <translation id="7891884447851425349">Se il criterio <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> è attivo, l'assegnazione di un valore al criterio <ph name="DEFAULT_SEARCH_PROVIDER_SEARCH_URL_POLICY_NAME" /> consente di specificare l'URL del motore di ricerca utilizzato durante una ricerca predefinita. L'URL dovrebbe includere la stringa <ph name="SEARCH_TERM_MARKER" />, sostituita nella query dai termini di ricerca degli utenti.
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb index b440d785..b040a584 100644 --- a/components/policy/resources/policy_templates_ja.xtb +++ b/components/policy/resources/policy_templates_ja.xtb
@@ -205,13 +205,6 @@ <translation id="1265053460044691532">SAML 経由で認証されたユーザーがオフラインでログインできる時間を制限する</translation> <translation id="127264587838521316"><ph name="PRODUCT_NAME" /> 拡張機能のインストールのリクエストを有効にする</translation> <translation id="1274997165432133392">Cookie と他のサイトデータ</translation> -<translation id="127699919157094139"><ph name="PRODUCT_NAME" /> で、Google がホストする同期サービスを使用したデータの同期を無効にして、ユーザーがこの設定を変更できないようにします。 - - この設定を有効にした場合、ユーザーは <ph name="PRODUCT_NAME" /> でこの設定を変更またはオーバーライドできません。 - - このポリシーを未設定のままにした場合、Google Sync を使用するかどうかをユーザーが選択できます。 - - Google Sync を完全に無効にするには、Google 管理コンソールで Google Sync サービスを無効にするようおすすめします。</translation> <translation id="128059397544257017">このポリシーを有効に設定した場合、<ph name="CHROME_CLEANUP_NAME" /> で望ましくないソフトウェアが検出されたときに、<ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> で設定されたポリシー値に沿って、スキャンに関するレポートが Google に送信可能となります。<ph name="CHROME_CLEANUP_NAME" /> でクリーンアップを行うかどうかをユーザーに確認し、結果が Google に送信されます。 このポリシーを無効に設定した場合、<ph name="CHROME_CLEANUP_NAME" /> で望ましくないソフトウェアが検出されたときに、<ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> の値に関係なく、スキャンに関するレポートは Google に送信されません。<ph name="CHROME_CLEANUP_NAME" /> でクリーンアップを行うかどうかをユーザーに確認し、結果は Google に送信されません。 @@ -2745,9 +2738,6 @@ このポリシーを未設定のままにした場合、詳細なバッテリー充電モードは無効になります。 <ph name="CHARGE_START_TIME_FIELD_NAME" /> と <ph name="CHARGE_END_TIME_FIELD_NAME" /> の <ph name="MINUTE_FIELD_NAME" /> フィールドで指定できる有効な値は 0、15、30、45 です。</translation> -<translation id="4450222911834151460">このポリシーを設定した場合、指定したすべてのデータタイプが Google Sync とローミング プロファイルの同期から除外されます。これにより、ローミング プロファイルのサイズを抑えたり、Google Sync サーバーにアップロードされるデータのタイプを制限したりできます。 - - 現在、このポリシーで指定できるデータタイプは次のとおりです: "bookmarks"、"readingList"、"preferences"、"passwords"、"autofill"、"themes"、"typedUrls"、"extensions"、"apps"、"tabs"、"wifiConfigurations"。データタイプの名前では大文字と小文字が区別されます。</translation> <translation id="4452653762766030431">Chrome OS でネットワーク ファイル共有を使用できるかどうかを管理する</translation> <translation id="445270821089253489">レポートを送信するユーザーとデバイスの情報の種類を制御します。</translation> <translation id="4453913621209182880">背景のグラフィックありの印刷のみを許可する</translation> @@ -4124,11 +4114,6 @@ <translation id="6371561334154580937">最後のウィンドウを閉じたときにログアウト ダイアログを表示する</translation> <translation id="6372105930898423193">AppCache 機能がデフォルトで無効になっている場合でも有効化を許可します。</translation> <translation id="6376659517206731212">必須に設定可能</translation> -<translation id="6377355597423503887">このポリシーはサポート終了となりました。代わりに BrowserSignin の使用を検討してください。 - - ユーザーが <ph name="PRODUCT_NAME" /> にログインできるかどうかを設定します。 - - このポリシーを設定する場合は、ユーザーによる <ph name="PRODUCT_NAME" /> へのログインが可能かどうかを指定できます。このポリシーを「False」に設定すると、chrome.identity API を使用するアプリや拡張機能が機能しなくなるため、代わりに SyncDisabled の使用をおすすめします。</translation> <translation id="6378076389057087301">音声操作を電源管理に関連付けるかどうかを指定する</translation> <translation id="6378393933102834628">このポリシーを True に設定した場合、アプリのショートカットが表示されます。このポリシーを False に設定した場合、このショートカットは表示されません。このポリシーを設定した場合、ユーザーは設定を変更できません。設定しない場合、アプリのショートカットの表示と非表示は、ユーザーがブックマーク バーのコンテキスト メニューから指定します。</translation> <translation id="6394350458541421998">このポリシーは <ph name="PRODUCT_OS_NAME" /> バージョン 29 で廃止されました。PresentationScreenDimDelayScale ポリシーを代わりに使用してください。</translation> @@ -5023,13 +5008,6 @@ このポリシーを未設定のままにした場合は、「停止」処理が行われます。 注: 「停止」処理を指定した場合は、<ph name="PRODUCT_OS_NAME" /> で停止前に画面をロックするかどうかを別途設定できます。</translation> -<translation id="7476621944304431784">この設定を有効にした場合、ユーザーは <ph name="PRODUCT_OS_NAME" /> デバイスと接続された Android スマートフォンとの間で Wi-Fi ネットワーク設定を同期できます。Wi-Fi ネットワーク設定を同期する前に、ユーザーは設定手順を完了して、この機能を明示的に有効にする必要があります。 - - この設定を無効にした場合、ユーザーは Wi-Fi ネットワーク設定を同期できません。 - - この機能は、Chrome 同期で <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> データタイプが有効になっているかどうかに依存します。<ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> が <ph name="SYNC_TYPES_LIST_DISABLED_POLICY_NAME" /> ポリシーで無効になっている場合、または <ph name="SYNC_DISABLED_POLICY_NAME" /> ポリシーで Chrome 同期が無効になっている場合、この機能は有効にできません。 - - このポリシーを未設定のままにした場合、管理対象ユーザーはデフォルトでこの機能を有効にできません。</translation> <translation id="7477149584454865826">プリンタの設定に IPP Everywhere を使用するかどうかを示すブール値のフラグです。</translation> <translation id="7477231245051133709">「モノラル音声」のユーザー補助機能を有効にする</translation> <translation id="7477239290070847560">Zeroconf(mDNS+DNS-SD)プロトコルの送信先</translation> @@ -5339,7 +5317,6 @@ <translation id="7882585827992171421">このポリシーは小売りモードでのみアクティブになります。 ログイン画面のスクリーンセーバーとして使用する拡張機能の ID を指定します。拡張機能は、DeviceAppPack ポリシーを使用してこのドメインに設定されている AppPack のものである必要があります。</translation> -<translation id="7882857838942884046">Google Sync を無効にすると、Android のバックアップと復旧が適切に機能しなくなります。</translation> <translation id="7882890448959833986">サポート外の OS の警告を表示しない</translation> <translation id="7887379840451099426">バッテリーでの使用中にのみ適用する電源管理設定</translation> <translation id="7891884447851425349"><ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> がオンの場合に、<ph name="DEFAULT_SEARCH_PROVIDER_SEARCH_URL_POLICY_NAME" /> では、デフォルトの検索に使用する検索エンジンの URL を指定できます。この URL には <ph name="SEARCH_TERM_MARKER" /> という文字列を含めます。この文字列は、クエリの送信時にユーザーが指定した検索キーワードに置き換えられます。
diff --git a/components/policy/resources/policy_templates_ko.xtb b/components/policy/resources/policy_templates_ko.xtb index 2fcb3977..a20a5fd 100644 --- a/components/policy/resources/policy_templates_ko.xtb +++ b/components/policy/resources/policy_templates_ko.xtb
@@ -209,13 +209,6 @@ <translation id="1265053460044691532">SAML을 통해 인증한 사용자가 오프라인에서 로그인할 수 있는 기간을 제한</translation> <translation id="127264587838521316"><ph name="PRODUCT_NAME" /> 확장 프로그램 설치 요청 사용</translation> <translation id="1274997165432133392">쿠키 및 기타 사이트 데이터</translation> -<translation id="127699919157094139">Google에서 호스팅하는 동기화 서비스를 사용하는 <ph name="PRODUCT_NAME" />의 데이터 동기화를 사용 중지하고 사용자가 이 설정을 변경하지 못하게 합니다. - - 이 설정을 사용으로 지정하면 사용자가 <ph name="PRODUCT_NAME" />에서 설정을 변경하거나 무시할 수 없습니다. - - 정책을 설정하지 않으면 사용자가 Google 동기화를 사용할지 선택할 수 있습니다. - - Google 동기화를 완전히 중지하려면 Google 관리 콘솔에서 Google 동기화 서비스를 사용 중지하는 것이 좋습니다.</translation> <translation id="128059397544257017">정책을 사용 설정하면 <ph name="CHROME_CLEANUP_NAME" />에서 원치 않는 소프트웨어를 감지할 경우 <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />에 의해 설정된 정책에 따라 Google에 스캔에 관해 보고할 수 있습니다. <ph name="CHROME_CLEANUP_NAME" />에서 사용자에게 정리를 원하는지 묻습니다. 결과를 Google에 보냅니다. 정책을 사용 중지하면 <ph name="CHROME_CLEANUP_NAME" />에서 원치 않는 소프트웨어를 감지할 경우 <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> 값과 상관없이 Google에 스캔에 관해 보고하지 않습니다. <ph name="CHROME_CLEANUP_NAME" />에서 사용자에게 정리를 원하는지 묻습니다. 결과는 Google에 보고되지 않습니다. @@ -2804,9 +2797,6 @@ 정책을 설정하지 않으면 고급 배터리 충전 모드가 사용 중지됩니다. <ph name="CHARGE_START_TIME_FIELD_NAME" /> 및 <ph name="CHARGE_END_TIME_FIELD_NAME" />의 <ph name="MINUTE_FIELD_NAME" /> 필드에 허용된 값은 0, 15, 30, 45입니다.</translation> -<translation id="4450222911834151460">정책이 설정되면 지정된 모든 데이터 유형이 Google 동기화와 로밍 프로필 동기화 모두에서 제외됩니다. 이렇게 하면 로밍 프로필의 크기를 줄이거나 Google 동기화 서버에 업로드되는 데이터의 유형을 제한하는 데 도움이 될 수 있습니다. - - 정책의 현재 데이터 유형은 'bookmarks', ‘readingList’, 'preferences', 'passwords', 'autofill', 'themes', 'typedUrls', 'extensions', 'apps', 'tabs', 'wifiConfigurations'입니다. 이름은 대소문자를 구분합니다.</translation> <translation id="4452653762766030431">Chrome OS의 네트워크 파일 공유 가능 여부 제어</translation> <translation id="445270821089253489">보고되는 사용자 및 기기 정보 유형을 제어합니다.</translation> <translation id="4453913621209182880">배경 그래픽을 포함한 경우에만 인쇄 허용</translation> @@ -4252,11 +4242,6 @@ <translation id="6371561334154580937">마지막 창 종료 시 로그아웃 대화상자 표시</translation> <translation id="6372105930898423193">기본으로 사용 중지되어 있는 경우에도 AppCache 기능이 다시 사용 설정되도록 허용합니다.</translation> <translation id="6376659517206731212">필수로 설정할 수 있음</translation> -<translation id="6377355597423503887">이 정책은 지원이 중단되었으므로 대신 BrowserSignin을 사용해 보시기 바랍니다. - - 사용자가 <ph name="PRODUCT_NAME" />에 로그인하도록 허용합니다. - - 정책을 설정하면 사용자가 <ph name="PRODUCT_NAME" />에 로그인하도록 허용할지 결정할 수 있습니다. 정책을 'False'로 설정하면 chrome.identity API를 사용하는 앱과 확장 프로그램이 작동하지 않으므로 대신 SyncDisabled를 사용하는 것이 좋습니다.</translation> <translation id="6378076389057087301">오디오 활동이 전원 관리에 영향을 미치는지 여부 지정</translation> <translation id="6378393933102834628">정책을 True로 설정하면 앱 바로가기가 표시됩니다. 정책을 False로 설정하면 앱 바로가기가 표시되지 않습니다. @@ -5196,13 +5181,6 @@ 정책을 설정하지 않으면 Suspend 작업이 실행됩니다. 참고: Suspend 작업의 경우 일시중지되기 전에 <ph name="PRODUCT_OS_NAME" />의 화면을 잠그거나 잠그지 않도록 별도로 설정할 수 있습니다.</translation> -<translation id="7476621944304431784">설정을 사용하면 사용자가 <ph name="PRODUCT_OS_NAME" /> 기기 및 연결된 Android 휴대전화 간에 Wi-Fi 네트워크 구성을 동기화할 수 있습니다. Wi-Fi 네트워크 구성을 동기화하려면 사용자가 설정 절차를 완료하여 이 기능을 명시적으로 선택해야 합니다. - - 설정을 사용 중지하면 사용자가 Wi-Fi 네트워크 구성을 동기화할 수 없습니다. - - 이 기능은 Chrome 동기화에서 <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> 데이터 유형이 사용 설정되어 있는지에 따라 다르게 작동합니다. <ph name="SYNC_TYPES_LIST_DISABLED_POLICY_NAME" /> 정책에서 <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" />가 사용 중지되어 있거나 <ph name="SYNC_DISABLED_POLICY_NAME" /> 정책에서 Chrome 동기화가 사용 중지되어 있는 경우 기능이 사용되지 않습니다. - - 정책을 설정하지 않으면 관리되는 사용자에게 기능이 기본적으로 허용되지 않습니다.</translation> <translation id="7477149584454865826">프린터 설정 시 IPP Everywhere의 사용 여부를 나타내는 부울 플래그입니다.</translation> <translation id="7477231245051133709">모노 오디오 접근성 기능 사용</translation> <translation id="7477239290070847560">Zeroconf 기반(mDNS + DNS-SD) 프로토콜 목적지</translation> @@ -5524,7 +5502,6 @@ <translation id="7882585827992171421">이 정책은 판매 모드일 때만 사용할 수 있습니다. 로그인 화면에서 화면 보호기로 사용되는 확장 프로그램의 ID를 결정합니다. 확장 프로그램은 DeviceAppPack 정책을 통해 이 도메인에 구성된 AppPack의 일부여야 합니다.</translation> -<translation id="7882857838942884046">Google 동기화를 사용 중지하면 Android 백업 및 복원이 제대로 작동하지 않게 됩니다.</translation> <translation id="7882890448959833986">지원되지 않는 OS 경고 무시</translation> <translation id="7887379840451099426">배터리 전원으로 구동될 때만 적용되는 전원 관리 설정입니다.</translation> <translation id="7891884447851425349"><ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" />가 사용 설정되어 있는 경우 <ph name="DEFAULT_SEARCH_PROVIDER_SEARCH_URL_POLICY_NAME" />을 설정하여 기본 검색에서 사용되는 검색엔진의 URL을 지정합니다. URL은 <ph name="SEARCH_TERM_MARKER" /> 문자열을 포함해야 하며, 이 문자열은 쿼리 시 사용자의 검색어로 대체됩니다.
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb index 01b78e9..5aa6746 100644 --- a/components/policy/resources/policy_templates_nl.xtb +++ b/components/policy/resources/policy_templates_nl.xtb
@@ -209,13 +209,6 @@ <translation id="1265053460044691532">De offline inlogtijd beperken voor een gebruiker die is geverifieerd via SAML</translation> <translation id="127264587838521316">Hiermee worden installatieverzoeken voor <ph name="PRODUCT_NAME" />-extensies aangezet</translation> <translation id="1274997165432133392">Cookies en andere sitegegevens</translation> -<translation id="127699919157094139">Hiermee wordt gegevenssynchronisatie uitgezet in <ph name="PRODUCT_NAME" /> via door Google gehoste synchronisatieservices. Gebruikers kunnen deze instelling niet aanpassen. - - Als je deze instelling aanzet, kunnen gebruikers de instelling niet aanpassen of overschrijven in <ph name="PRODUCT_NAME" />. - - Als je dit beleid niet instelt, kan de gebruiker zelf besluiten Google Sync wel of niet te gebruiken. - - Als je Google Sync volledig wilt uitzetten, kun je de Google Sync-service het beste uitzetten in de Google Beheerdersconsole.</translation> <translation id="128059397544257017">Als je het beleid toepast en <ph name="CHROME_CLEANUP_NAME" /> ongewenste software detecteert, kan dit beleid (in overeenstemming met het beleid ingesteld door <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />) de resultaten van de scan sturen naar Google. <ph name="CHROME_CLEANUP_NAME" /> vraagt gebruikers of ze willen opschonen. De resultaten worden naar Google gestuurd. Als je het beleid niet toepast en <ph name="CHROME_CLEANUP_NAME" /> ongewenste software detecteert, worden de resultaten van de scan niet naar Google gestuurd, ongeacht de waarde van <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> vraagt gebruikers of ze willen opschonen. De resultaten worden niet naar Google gestuurd. @@ -2764,9 +2757,6 @@ Als je het beleid niet instelt, blijft de geavanceerde batterijoplaadmodus uit. Geldige waarden voor het veld <ph name="MINUTE_FIELD_NAME" /> in <ph name="CHARGE_START_TIME_FIELD_NAME" /> en <ph name="CHARGE_END_TIME_FIELD_NAME" /> zijn 0, 15, 30, 45.</translation> -<translation id="4450222911834151460">Als dit beleid is ingesteld, worden alle opgegeven gegevenstypen uitgesloten van synchronisatie voor zowel Google Sync als synchronisatie van roaming-profielen. Dit kan handig zijn om het roaming-profiel te verkleinen of het type gegevens te beperken dat wordt geüpload naar de Google Sync-servers. - - De huidige gegevenstypen voor dit beleid zijn: 'bookmarks', 'readingList', 'preferences', 'passwords', 'autofill', 'themes', 'typedUrls', 'extensions', 'apps', 'tabs', 'wifiConfigurations'. Die namen zijn hoofdlettergevoelig.</translation> <translation id="4452653762766030431">Beheert netwerk-fileshares voor Chrome OS-beschikbaarheid</translation> <translation id="445270821089253489">Beheert welke gebruikers- en apparaatgegevens worden gerapporteerd.</translation> <translation id="4453913621209182880">Alleen afdrukken met achtergrondbeelden toestaan</translation> @@ -4179,11 +4169,6 @@ <translation id="6371561334154580937">Dialoogvenster voor uitloggen tonen als het laatste venster wordt gesloten.</translation> <translation id="6372105930898423193">Hiermee sta je toe dat de AppCache-functie opnieuw wordt aangezet, ook als deze standaard is uitgezet.</translation> <translation id="6376659517206731212">Kan verplicht zijn</translation> -<translation id="6377355597423503887">Dit beleid is verouderd. Je kunt in plaats daarvan BrowserSignin gebruiken. - - Hiermee wordt toegestaan dat de gebruiker inlogt bij <ph name="PRODUCT_NAME" />. - - Als je dit beleid instelt, kun je bepalen of een gebruiker mag inloggen bij <ph name="PRODUCT_NAME" />. Als je dit beleid instelt op 'False', werken apps en extensies die de API chrome.identity gebruiken niet meer. Daarom kun je in plaats hiervan ook SyncDisabled gebruiken.</translation> <translation id="6378076389057087301">Specificeer of audioactiviteit invloed heeft op stroombeheer</translation> <translation id="6378393933102834628">Als je het beleid instelt op 'True', wordt de app-snelkoppeling weergegeven. Als je het beleid instelt op 'False', wordt deze snelkoppeling nooit weergegeven. @@ -5119,13 +5104,6 @@ Als je het beleid niet instelt, wordt de actie Opschorten uitgevoerd. Opmerking: Als de actie Opschorten is, kan <ph name="PRODUCT_OS_NAME" /> afzonderlijk worden ingesteld om het scherm wel of niet te vergrendelen voordat de opschorting wordt geactiveerd.</translation> -<translation id="7476621944304431784">Als je deze instelling aanzet, mogen gebruikers wifi-netwerkconfiguraties synchroniseren tussen hun <ph name="PRODUCT_OS_NAME" />-apparaten en een verbonden Android-telefoon. Voordat wifi-netwerkconfiguraties kunnen worden gesynchroniseerd, moeten gebruikers deze functie expliciet toestaan door een instelprocedure te doorlopen. - - Als je deze instelling uitzet, mogen gebruikers geen wifi-netwerkconfiguraties synchroniseren. - - Voor deze functie moet het gegevenstype <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> aanstaan in Chrome-synchronisatie. Als <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> uitstaat in het beleid <ph name="SYNC_TYPES_LIST_DISABLED_POLICY_NAME" /> of als Chrome-synchronisatie uitstaat in het beleid <ph name="SYNC_DISABLED_POLICY_NAME" />, wordt deze functie niet aangezet. - - Als je dit beleid niet instelt, geldt de standaardwaarde 'niet toegestaan' voor beheerde gebruikers.</translation> <translation id="7477149584454865826">Booleaanse markering die aangeeft of IPP Everywhere moet worden gebruikt om de printer in te stellen.</translation> <translation id="7477231245051133709">Toegankelijkheidsfunctie voor monogeluid aanzetten</translation> <translation id="7477239290070847560">Op zeroconf gebaseerde (mDNS + DNS-SD) protocolbestemmingen</translation> @@ -5445,7 +5423,6 @@ <translation id="7882585827992171421">Dit beleid is alleen actief in de commerciële modus. Hiermee bepaal je de ID van de extensie die moet worden gebruikt als schermbeveiliging voor het inlogvenster. De extensie moet onderdeel zijn van het AppPack dat is geconfigureerd voor dit domein via het beleid DeviceAppPack.</translation> -<translation id="7882857838942884046">Als je de synchronisatie met Google uitzet, werkt de Android-functie Back-up maken en resetten niet meer naar behoren.</translation> <translation id="7882890448959833986">De waarschuwing voor een niet-ondersteund besturingssysteem negeren</translation> <translation id="7887379840451099426">Instellingen voor energiebeheer die alleen van toepassing zijn als er op de batterij wordt gewerkt</translation> <translation id="7891884447851425349">Als <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> is aangezet en je <ph name="DEFAULT_SEARCH_PROVIDER_SEARCH_URL_POLICY_NAME" /> instelt, wordt de URL gespecificeerd van de zoekmachine die tijdens een standaard zoekopdracht wordt gebruikt. De URL moet de tekenreeks <ph name="SEARCH_TERM_MARKER" /> bevatten. Deze tekenreeks wordt tijdens de zoekopdracht vervangen door de zoektermen van de gebruiker.
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb index e9cc06a3..c4e4a28 100644 --- a/components/policy/resources/policy_templates_pt-BR.xtb +++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -205,13 +205,6 @@ <translation id="1265053460044691532">Limite o tempo pelo qual um usuário autenticado via SAML pode fazer login off-line</translation> <translation id="127264587838521316">Ativa as solicitações de instalação de extensões do <ph name="PRODUCT_NAME" /></translation> <translation id="1274997165432133392">Cookies e outros dados do site</translation> -<translation id="127699919157094139">Desativa a sincronização de dados no <ph name="PRODUCT_NAME" /> ao usar serviços de sincronização hospedados pelo Google e impede que os usuários mudem esta configuração. - - Se a configuração for ativada, os usuários não poderão mudá-la ou substituí-la no <ph name="PRODUCT_NAME" />. - - Se esta política for deixada sem definição, o Google Sync estará disponível e os usuários poderão escolher usá-lo ou não. - - Para desativar o Google Sync completamente, é recomendado desativar os serviços do Google Sync no Google Admin Console.</translation> <translation id="128059397544257017">Quando a política for definida como "Ativada", se a <ph name="CHROME_CLEANUP_NAME" /> detectar softwares indesejados, ela poderá enviar o registro da varredura ao Google, de acordo com a política definida por <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. A <ph name="CHROME_CLEANUP_NAME" /> perguntará aos usuários se desejam realizar a varredura. Os resultados serão enviados ao Google. Quando a política for definida como "Desativada", se a <ph name="CHROME_CLEANUP_NAME" /> detectar software indesejado, os resultados não serão enviados ao Google, independente do valor de <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. A <ph name="CHROME_CLEANUP_NAME" /> perguntará aos usuários se desejam realizar a varredura. Os resultados não serão enviados ao Google. @@ -2801,9 +2794,6 @@ Se a política não for definida, o modo avançado de carregamento da bateria ficará desativado. Valores válidos para o campo <ph name="MINUTE_FIELD_NAME" /> em <ph name="CHARGE_START_TIME_FIELD_NAME" /> e <ph name="CHARGE_END_TIME_FIELD_NAME" /> são 0, 15, 30, 45.</translation> -<translation id="4450222911834151460">Se essa política for definida, todos os tipos de dados especificados serão excluídos da sincronização, tanto para o Google Sync quanto para a sincronização de perfil de roaming. Isso pode ajudar a reduzir o tamanho do perfil de roaming ou limitar o tipo de dado que será enviado aos servidores do Google Sync. - - Atualmente, os tipos de dados para esta política são: "bookmarks", "readingList", "preferences", "passwords", "autofill", "themes", "typedUrls", "extensions", "apps", "tabs" e "wifiConfigurations". Esses nomes diferenciam letras maiúsculas de minúsculas.</translation> <translation id="4452653762766030431">Controla a disponibilidade do compartilhamento de arquivos por rede no ChromeOS</translation> <translation id="445270821089253489">Controla quais tipos de informações do usuário e do dispositivo são enviadas.</translation> <translation id="4453913621209182880">Permitir impressão somente com gráficos de segundo plano</translation> @@ -4239,11 +4229,6 @@ <translation id="6371561334154580937">Mostrar a caixa de diálogo para saída na última janela fechada.</translation> <translation id="6372105930898423193">Permite que o recurso AppCache seja reativado mesmo se estiver desativado por padrão.</translation> <translation id="6376659517206731212">Pode ser obrigatória</translation> -<translation id="6377355597423503887">Esta política está obsoleta, portanto, é recomendável usar BrowserSignin. - - Permite que o usuário faça login no <ph name="PRODUCT_NAME" />. - - Se você definir esta política, será possível configurar se o usuário poderá fazer login no <ph name="PRODUCT_NAME" />. A definição desta política como "False" impedirá o funcionamento dos apps e extensões que usam a API chrome.identity. Em vez disso, você pode usar SyncDisabled.</translation> <translation id="6378076389057087301">Especifica se a atividade de áudio afeta o gerenciamento de energia</translation> <translation id="6378393933102834628">Se a política for definida como verdadeira, o atalho de apps será exibido. Se ela for definida como falsa, o atalho não aparecerá. @@ -5178,13 +5163,6 @@ Se a política não for definida, a ação padrão será a de suspensão. Observação: se a ação for a de suspender, o <ph name="PRODUCT_OS_NAME" /> poderá ser configurado separadamente para bloquear ou não a tela antes da suspensão.</translation> -<translation id="7476621944304431784">Se esta definição estiver ativada, os usuários poderão sincronizar configurações de rede Wi-Fi entre dispositivos <ph name="PRODUCT_OS_NAME" /> e um smartphone Android conectado. Antes que as configurações sejam sincronizadas, os usuários precisam aceitar esse recurso explicitamente concluindo um fluxo de configuração. - - Se esta definição estiver desativada, os usuários não terão permissão para sincronizar as configurações de rede Wi-Fi. - - Este recurso depende da ativação do datatype <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> na Sincronização do Chrome. Se <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> estiver desativado na política <ph name="SYNC_TYPES_LIST_DISABLED_POLICY_NAME" /> ou se a Sincronização do Chrome estiver desativada na política <ph name="SYNC_DISABLED_POLICY_NAME" />, este recurso não será ativado. - - Se esta política não for definida, o comportamento padrão será não permitir a sincronização para usuários gerenciados.</translation> <translation id="7477149584454865826">Sinalização booleana indicando se o IPP Everywhere deve ser usado ou não para configurar a impressora.</translation> <translation id="7477231245051133709">Ativar o recurso de acessibilidade de áudio mono</translation> <translation id="7477239290070847560">Destinos de protocolos baseados em Zeroconf (mDNS + DNS-SD)</translation> @@ -5507,7 +5485,6 @@ <translation id="7882585827992171421">Esta política só fica ativada em modo de varejo. Determina a identificação da extensão a ser usada como protetor de tela na tela de login. A extensão deve ser parte do AppPack configurado para este domínio por meio da política DeviceAppPack.</translation> -<translation id="7882857838942884046">A desativação do Google Sync fará com que o recurso de backup e restauração do Android não funcione corretamente.</translation> <translation id="7882890448959833986">Remover o aviso de SO não compatível</translation> <translation id="7887379840451099426">Configurações de gerenciamento de energia aplicáveis apenas quando em funcionamento com energia da bateria.</translation> <translation id="7891884447851425349">Se a <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> estiver ativada, definir <ph name="DEFAULT_SEARCH_PROVIDER_SEARCH_URL_POLICY_NAME" /> especificará o URL do mecanismo de pesquisa usado na pesquisa padrão. O URL precisa incluir a string <ph name="SEARCH_TERM_MARKER" />, que é substituída na consulta pelos termos de pesquisa do usuário.
diff --git a/components/policy/resources/policy_templates_ru.xtb b/components/policy/resources/policy_templates_ru.xtb index a55a582a..b7ac060 100644 --- a/components/policy/resources/policy_templates_ru.xtb +++ b/components/policy/resources/policy_templates_ru.xtb
@@ -206,13 +206,6 @@ <translation id="1265053460044691532">Ограничить время, на протяжении которого пользователи, выполнившие аутентификацию по протоколу SAML, могут входить в аккаунт офлайн</translation> <translation id="127264587838521316">Включить отправку запросов об установке расширений <ph name="PRODUCT_NAME" /></translation> <translation id="1274997165432133392">Файлы cookie и другие данные сайтов</translation> -<translation id="127699919157094139">Отключает синхронизацию данных в <ph name="PRODUCT_NAME" /> через сервисы, размещенные в Google, и запрещает пользователям менять эту настройку. - - Если настройка включена, пользователи не смогут изменить или переопределить ее в <ph name="PRODUCT_NAME" />. - - Если правило не задано, пользователи смогут самостоятельно решать, использовать ли им Google Sync. - - Чтобы полностью запретить использование Google Sync, рекомендуем отключить этот сервис в консоли администратора Google.</translation> <translation id="128059397544257017">Если правило включено, при обнаружении нежелательного ПО <ph name="CHROME_CLEANUP_NAME" /> может отправить отчет о сканировании в Google в соответствии с правилом <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> запрашивает у пользователей разрешение на очистку от нежелательного ПО. Результаты отправляются в Google. Если правило отключено, при обнаружении нежелательного ПО <ph name="CHROME_CLEANUP_NAME" /> не отправляет отчет о сканировании в Google вне зависимости от значения правила <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> запрашивает у пользователей разрешение на очистку от нежелательного ПО. Результаты в Google не отправляются. @@ -2790,9 +2783,6 @@ Если правило не настроено, расширенный режим зарядки батареи будет отключен. Допустимые значения в поле <ph name="MINUTE_FIELD_NAME" /> для параметров <ph name="CHARGE_START_TIME_FIELD_NAME" /> и <ph name="CHARGE_END_TIME_FIELD_NAME" />: 0, 15, 30, 45.</translation> -<translation id="4450222911834151460">Если настроить это правило, для всех указанных в нем типов данных будет запрещена синхронизация как в Google Sync, так и в перемещаемом профиле. Таким образом можно уменьшить объем информации в перемещаемом профиле или ограничить набор типов данных, загружаемых на серверы Google Sync. - - В настоящее время вы можете указывать в этом правиле следующие типы данных: bookmarks, readingList, preferences, passwords, autofill, themes, typedUrls, extensions, apps, tabs, wifiConfigurations. Регистр символов в перечисленных названиях имеет значение.</translation> <translation id="4452653762766030431">Управление функцией общих сетевых папок для Chrome OS</translation> <translation id="445270821089253489">Определяет, какие типы информации с устройств и данных о пользователе отправляются в отчетах.</translation> <translation id="4453913621209182880">Разрешить печать только с фоновыми цветами и изображениями</translation> @@ -4229,11 +4219,6 @@ <translation id="6371561334154580937">Показывать диалоговое окно подтверждения выхода, когда закрыто последнее окно</translation> <translation id="6372105930898423193">Разрешить повторное включение функции AppCache, даже когда она отключена по умолчанию</translation> <translation id="6376659517206731212">Может быть обязательным</translation> -<translation id="6377355597423503887">Это правило устарело. Мы рекомендуем использовать вместо него BrowserSignin. - - Позволяет пользователю войти в <ph name="PRODUCT_NAME" />. - - Если правило настроено, вы можете разрешить или запретить пользователю выполнять вход в <ph name="PRODUCT_NAME" />. Если для правила установлено значение False, то приложения и расширения, в которых используется chrome.identity API, будут недоступны. Мы рекомендуем выбрать правило SyncDisabled.</translation> <translation id="6378076389057087301">Определяет, влияет ли воспроизведение аудио на режим энергопотребления</translation> <translation id="6378393933102834628">Если для правила задано значение True, кнопка "Сервисы" будет видна. Если задано значение False, кнопка всегда будет скрыта. @@ -5169,13 +5154,6 @@ Если правило не настроено, выполняется переход в спящий режим. Примечание. Если выбран переход в спящий режим, можно настроить, будет ли <ph name="PRODUCT_OS_NAME" /> блокировать экран перед таким переходом.</translation> -<translation id="7476621944304431784">Если эта настройка включена, пользователям разрешено синхронизировать параметры сети Wi-Fi между устройствами с <ph name="PRODUCT_OS_NAME" /> и подключенным телефоном Android. Чтобы такая синхронизация была возможна, пользователи должны специально выбрать и настроить эту функцию. - - Если настройка отключена, синхронизировать параметры сети Wi-Fi нельзя. - - Эта функция зависит от того, включен ли тип данных <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> в синхронизации Chrome. Если параметр <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> отключен в правиле <ph name="SYNC_TYPES_LIST_DISABLED_POLICY_NAME" /> или синхронизация Chrome отключена с помощью правила <ph name="SYNC_DISABLED_POLICY_NAME" />, эта функция будет недоступна. - - Если правило не задано, по умолчанию синхронизация запрещена для управляемых профилей.</translation> <translation id="7477149584454865826">Логический флаг, который указывает, будет ли использоваться стандарт IPP Everywhere для настройки принтера.</translation> <translation id="7477231245051133709">Включить монофонический звук (специальная возможность)</translation> <translation id="7477239290070847560">Принтеры, работающие по протоколам Zeroconf (mDNS + DNS-SD)</translation> @@ -5497,7 +5475,6 @@ <translation id="7882585827992171421">Это правило действует только в коммерческой версии. Определяет идентификатор расширения для использования в качестве заставки на экране входа. Расширение должно входить в состав пакета приложений для данного домена, заданного в правиле DeviceAppPack.</translation> -<translation id="7882857838942884046">Отключение Google Sync приведет к сбоям в работе Android Backup and Restore.</translation> <translation id="7882890448959833986">Скрывает предупреждения о неподдерживаемой ОС</translation> <translation id="7887379840451099426">Настройки управления питанием, применимые только при работе от батареи.</translation> <translation id="7891884447851425349">Если правило <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> включено, то настройка <ph name="DEFAULT_SEARCH_PROVIDER_SEARCH_URL_POLICY_NAME" /> содержит URL поисковой системы, используемой по умолчанию. В URL должна быть строка <ph name="SEARCH_TERM_MARKER" />, которая во время отправки запроса заменяется на текст пользователя.
diff --git a/components/policy/resources/policy_templates_th.xtb b/components/policy/resources/policy_templates_th.xtb index 1dac9e8..a3d18ed 100644 --- a/components/policy/resources/policy_templates_th.xtb +++ b/components/policy/resources/policy_templates_th.xtb
@@ -209,13 +209,6 @@ <translation id="1265053460044691532">จำกัดเวลาที่ผู้ใช้ซึ่งตรวจสอบสิทธิ์ผ่าน SAML สามารถเข้าสู่ระบบในแบบออฟไลน์</translation> <translation id="127264587838521316">เปิดใช้คำขอติดตั้งส่วนขยายของ <ph name="PRODUCT_NAME" /></translation> <translation id="1274997165432133392">คุกกี้และข้อมูลอื่นของเว็บไซต์</translation> -<translation id="127699919157094139">ปิดใช้การซิงค์ข้อมูลใน <ph name="PRODUCT_NAME" /> โดยใช้บริการการซิงค์ที่โฮสต์ไว้ใน Google และป้องกันไม่ให้ผู้ใช้เปลี่ยนการตั้งค่านี้ - - หากเปิดใช้การตั้งค่านี้ ผู้ใช้จะเปลี่ยนหรือลบล้างการตั้งค่านี้ใน <ph name="PRODUCT_NAME" /> ไม่ได้ - - หากไม่ได้ตั้งค่านโยบายนี้ ผู้ใช้จะเลือกได้ว่าจะใช้ Google Sync หรือไม่ - - หากต้องการปิดใช้ Google Sync โดยสมบูรณ์ ขอแนะนำให้คุณปิดใช้บริการ Google Sync ในคอนโซล Google Admin</translation> <translation id="128059397544257017">หากตั้งค่านโยบายนี้เป็น "เปิดใช้" หมายความว่าหาก <ph name="CHROME_CLEANUP_NAME" /> ตรวจพบซอฟต์แวร์ไม่พึงประสงค์ ก็จะรายงานเกี่ยวกับการสแกนดังกล่าวให้ Google ทราบ โดยเป็นไปตามนโยบายที่กำหนดไว้โดย <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> <ph name="CHROME_CLEANUP_NAME" /> จะถามผู้ใช้ว่าต้องการทำความสะอาดไหม แล้วส่งผลลัพธ์ไปยัง Google หากตั้งค่านโยบายนี้เป็น "ปิดใช้" หมายความว่าหาก <ph name="CHROME_CLEANUP_NAME" /> ตรวจพบซอฟต์แวร์ไม่พึงประสงค์ ก็จะไม่รายงานเกี่ยวกับการสแกนดังกล่าวให้ Google ทราบ ไม่ว่าค่าของ <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> จะเป็นอะไรก็ตาม <ph name="CHROME_CLEANUP_NAME" /> จะถามผู้ใช้ว่าต้องการทำความสะอาดไหม แต่ไม่รายงานผลลัพธ์ให้ Google ทราบ @@ -2764,9 +2757,6 @@ การไม่ตั้งค่านโยบายจะทำให้โหมดการชาร์จแบตเตอรี่ขั้นสูงปิดอยู่เสมอ ค่าที่ใช้ได้ของช่อง <ph name="MINUTE_FIELD_NAME" /> ใน <ph name="CHARGE_START_TIME_FIELD_NAME" /> และ <ph name="CHARGE_END_TIME_FIELD_NAME" /> ได้แก่ 0, 15, 30, 45</translation> -<translation id="4450222911834151460">หากตั้งค่านโยบายนี้ ประเภทข้อมูลที่ระบุไว้ทั้งหมดจะถูกยกเว้นจากการซิงค์ข้อมูลทั้งสำหรับ Google Sync และการซิงค์ข้อมูลโปรไฟล์โรมมิ่ง วิธีนี้อาจช่วยลดขนาดของโปรไฟล์โรมมิ่งหรือจำกัดประเภทข้อมูลที่อัปโหลดไปยังเซิร์ฟเวอร์ Google Sync - - ประเภทข้อมูลปัจจุบันของนโยบายนี้ ได้แก่ "bookmarks", "readingList", "preferences", "passwords", "autofill", "themes", "typedUrls", "extensions", "apps", "tabs", "wifiConfigurations" โดยชื่อประเภทข้อมูลเหล่านี้จะพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่</translation> <translation id="4452653762766030431">ควบคุมพื้นที่แชร์ไฟล์ในเครือข่ายเพื่อความพร้อมใช้งานของ ChromeOS</translation> <translation id="445270821089253489">ควบคุมประเภทข้อมูลผู้ใช้และข้อมูลอุปกรณ์ที่จะรายงาน</translation> <translation id="4453913621209182880">อนุญาตเฉพาะการพิมพ์ที่มีกราฟิกพื้นหลังเท่านั้น</translation> @@ -4178,11 +4168,6 @@ <translation id="6371561334154580937">แสดงกล่องโต้ตอบการออกจากระบบเมื่อปิดหน้าต่างสุดท้าย</translation> <translation id="6372105930898423193">อนุญาตให้เปิดใช้ฟีเจอร์ AppCache อีกครั้งหากฟีเจอร์นี้ปิดอยู่โดยค่าเริ่มต้น</translation> <translation id="6376659517206731212">อาจเป็นข้อบังคับ</translation> -<translation id="6377355597423503887">นโยบายนี้เลิกใช้งานแล้ว ลองพิจารณาใช้ BrowserSignin แทน - - อนุญาตให้ผู้ใช้ลงชื่อเข้าใช้ <ph name="PRODUCT_NAME" /> - - หากตั้งค่านโยบายนี้ คุณกำหนดค่าได้ว่าจะอนุญาตให้ผู้ใช้ลงชื่อเข้าใช้ <ph name="PRODUCT_NAME" /> หรือไม่ การตั้งค่านโยบายนี้เป็น "เท็จ" จะเป็นการป้องกันแอปและส่วนขยายที่ใช้ chrome.identity API ไม่ให้ทำงาน คุณจึงอาจต้องใช้ SyncDisabled แทน</translation> <translation id="6378076389057087301">ระบุว่ากิจกรรมเสียงมีผลต่อการจัดการพลังงานหรือไม่</translation> <translation id="6378393933102834628">การตั้งค่านโยบายเป็น "จริง" แสดงทางลัดของแอป การตั้งค่านโยบายเป็น "เท็จ" หมายความว่าทางลัดนี้จะไม่ปรากฏขึ้น @@ -5120,13 +5105,6 @@ การไม่ตั้งค่านโยบายจะทำให้ระบบใช้การระงับ หมายเหตุ: หากมีการระงับการทำงาน คุณจะตั้งค่า <ph name="PRODUCT_OS_NAME" /> แยกต่างหากเพื่อให้ล็อกหรือไม่ล็อกหน้าจอก่อนที่จะมีการระงับได้</translation> -<translation id="7476621944304431784">หากเปิดใช้การตั้งค่านี้ ผู้ใช้จะได้รับอนุญาตให้ซิงค์การกำหนดค่าเครือข่าย Wi-Fi ระหว่างอุปกรณ์ <ph name="PRODUCT_OS_NAME" /> กับโทรศัพท์ Android ที่เชื่อมต่อ ก่อนที่จะซิงค์การกำหนดค่าเครือข่าย Wi-Fi ได้ ผู้ใช้ต้องเลือกใช้ฟีเจอร์นี้อย่างชัดแจ้งด้วยการทำตามขั้นตอนการตั้งค่าให้เสร็จสมบูรณ์ - - หากปิดใช้การตั้งค่านี้ ผู้ใช้จะไม่ได้รับอนุญาตให้ซิงค์การกำหนดค่าเครือข่าย Wi-Fi - - ฟีเจอร์นี้ขึ้นอยู่กับประเภทข้อมูล <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> ในการซิงค์ของ Chrome ที่เปิดใช้อยู่ หากปิดใช้ <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> ในนโยบาย <ph name="SYNC_TYPES_LIST_DISABLED_POLICY_NAME" /> หรือปิดใช้การซิงค์ของ Chrome นโยบาย <ph name="SYNC_DISABLED_POLICY_NAME" /> ระบบจะไม่เปิดใช้ฟีเจอร์นี้ - - หากไม่ได้ตั้งค่านโยบายนี้ ผู้ใช้ที่มีการจัดการจะใช้ค่าเริ่มต้นไม่ได้</translation> <translation id="7477149584454865826">ธงบูลีนที่ระบุว่าควรใช้ IPP Everywhere เพื่อตั้งค่าเครื่องพิมพ์หรือไม่</translation> <translation id="7477231245051133709">เปิดใช้ฟีเจอร์การช่วยเหลือพิเศษสำหรับเสียงโมโน</translation> <translation id="7477239290070847560">ปลายทางโปรโตคอลตาม Zeroconf (mDNS + DNS-SD)</translation> @@ -5448,7 +5426,6 @@ <translation id="7882585827992171421">นโยบายนี้ใช้งานได้ในโหมดปลีกเท่านั้น กำหนด ID ของส่วนขยายที่จะใช้เป็นโปรแกรมรักษาหน้าจอบนหน้าจอลงชื่อเข้าใช้ ส่วนขยายนี้ต้องเป็นส่วนหนึ่งของ AppPack ซึ่งได้รับการกำหนดค่าสำหรับโดเมนนี้ผ่านทางนโยบาย DeviceAppPack</translation> -<translation id="7882857838942884046">การปิดใช้ Google Sync จะทำให้การสำรองข้อมูลและการคืนค่าของ Android ทำงานได้อย่างไม่สมบูรณ์</translation> <translation id="7882890448959833986">ระงับคำเตือนระบบปฏิบัติการที่ไม่ได้รับการสนับสนุน</translation> <translation id="7887379840451099426">การตั้งค่าการจัดการพลังงานจะมีผลต่อเมื่ออุปกรณ์ทำงานโดยใช้แบตเตอรี่เท่านั้น</translation> <translation id="7891884447851425349">หาก <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> เปิดอยู่ การตั้งค่า <ph name="DEFAULT_SEARCH_PROVIDER_SEARCH_URL_POLICY_NAME" /> จะระบุ URL ของเครื่องมือค้นหาที่ใช้ระหว่างการค้นหาที่เป็นค่าเริ่มต้น URL ดังกล่าวควรมีสตริง <ph name="SEARCH_TERM_MARKER" /> ซึ่งข้อความค้นหาของผู้ใช้จะมาแทนที่ในการค้นหา
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb index 227df01..436ede8a 100644 --- a/components/policy/resources/policy_templates_tr.xtb +++ b/components/policy/resources/policy_templates_tr.xtb
@@ -209,13 +209,6 @@ <translation id="1265053460044691532">SAML kullanarak kimlik doğrulaması yapmış kullanıcının çevrimdışı olarak giriş yapabileceği süreyi sınırla</translation> <translation id="127264587838521316"><ph name="PRODUCT_NAME" /> uzantı yükleme isteklerini etkinleştirir</translation> <translation id="1274997165432133392">Çerezler ve diğer site verileri</translation> -<translation id="127699919157094139">Google tarafından barındırılan senkronizasyon hizmetlerini kullanarak yapılan <ph name="PRODUCT_NAME" /> içindeki veri senkronizasyonunu devre dışı bırakır ve kullanıcıların bu ayarı değiştirmelerini önler. - - Bu ayarı etkinleştirirseniz kullanıcılar <ph name="PRODUCT_NAME" /> içinden bu ayarı değiştiremez ve geçersiz kılamazlar. - - Bu politika ayarlanmadan bırakılırsa kullanıcılar Google Sync aracılığıyla politikayı kullanıp kullanmamayı seçebilirler. - - Google Sync'i tamamıyla devre dışı bırakmak için Google Sync hizmetini Google Yönetim konsolunda devre dışı bırakmanız önerilir.</translation> <translation id="128059397544257017">Politika, Etkin değerine ayarlandığında <ph name="CHROME_CLEANUP_NAME" />, istenmeyen yazılımlar tespit ederse <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> tarafından ayarlanan politikaya uygun olarak tarama verilerini Google'a gönderebilir. <ph name="CHROME_CLEANUP_NAME" />, kullanıcılara temizleme işlemini isteyip istemediklerini sorar. Sonuçları Google'a gönderir. Politika, Devre Dışı değerine ayarlandığında <ph name="CHROME_CLEANUP_NAME" />, istenmeyen yazılımlar tespit ederse <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> değeri ne olursa olsun tarama verilerini Google'a göndermez. <ph name="CHROME_CLEANUP_NAME" />, kullanıcılara temizleme işlemini isteyip istemediklerini sorar. Sonuçlar, Google'a bildirilmez. @@ -2787,9 +2780,6 @@ Politika ayarlanmadan bırakılırsa gelişmiş pil şarj modu kapalı olur. <ph name="CHARGE_START_TIME_FIELD_NAME" /> ve <ph name="CHARGE_END_TIME_FIELD_NAME" /> içinde <ph name="MINUTE_FIELD_NAME" /> için geçerli değerler 0, 15, 30, 45'tir.</translation> -<translation id="4450222911834151460">Bu politika ayarlanırsa belirtilen tüm veri türleri hem Google Sync senkronizasyonunun hem de dolaşım profili senkronizasyonunun dışında tutulur. Bu, dolaşım profilinin boyutunu küçültmeye veya Google Sync sunucularına yüklenen veri türlerini sınırlandırmaya yarayabilir. - - Şu anda bu politika kapsamında bulunan veri türleri şunlardır: "bookmarks", "preferences", "passwords", "autofill", "themes", "typedUrls", "extensions", "apps", "tabs", "wifiConfigurations". Bu adlar büyük/küçük harfe duyarlıdır.</translation> <translation id="4452653762766030431">ChromeOS için Ağ Dosya Paylaşımı'nın kullanılabilirliğini kontrol eder</translation> <translation id="445270821089253489">Ne tür kullanıcı ve cihaz bilgilerinin rapor edileceğini kontrol eder.</translation> <translation id="4453913621209182880">Yalnızca arka plan grafikleriyle yazdırmaya izin ver</translation> @@ -4203,11 +4193,6 @@ <translation id="6371561334154580937">Son kapatılan pencerede oturum kapatma iletişimi göster.</translation> <translation id="6372105930898423193">AppCache özelliğinin, varsayılan olarak kapalı olsa bile yeniden etkinleştirilmesine olanak tanır.</translation> <translation id="6376659517206731212">Zorunlu Olabilir</translation> -<translation id="6377355597423503887">Bu politika kullanımdan kaldırılmıştır. Bunun yerine BrowserSignin'i kullanabilirsiniz. - - Kullanıcının <ph name="PRODUCT_NAME" /> ürününde oturum açmasına olanak verir. - - Bu politikayı ayarlarsanız, bir kullanıcının <ph name="PRODUCT_NAME" /> ürününde oturum açmasına izin verilip verilmeyeceğini yapılandırabilirsiniz. Bu politika "false" (yanlış) seçeneğine ayarlanırsa, chrome.identity API'sini kullanan uygulamaların ve uzantıların çalışması engelleneceğinden, onun yerine SyncDisabled'ı kullanmak isteyebilirsiniz.</translation> <translation id="6378076389057087301">Ses etkinliğinin güç yönetimini etkileyip etkilemeyeceğini belirtme</translation> <translation id="6378393933102834628">Politikayı True (Doğru) değerine ayarlamak, uygulama kısayollarını görüntüler. Politikayı False (Yanlış) değerine ayarlamak, bu kısayolun hiçbir zaman görünmeyeceği anlamına gelir. @@ -5147,13 +5132,6 @@ Politika ayarlanmadan bırakılırsa Askıya Alma işlemi uygulanır. Not: Uygulanacak işlem Askıya Alma ise <ph name="PRODUCT_OS_NAME" />, askıya almadan önce ekranı kilitleyecek veya kilitlemeyecek şekilde ayrı olarak ayarlanabilir.</translation> -<translation id="7476621944304431784">Bu ayar etkinleştirildiğinde kullanıcıların, <ph name="PRODUCT_OS_NAME" /> cihazları ile bağlı Android telefonları arasında kablosuz ağ yapılandırmalarını senkronize etmelerine izin verilir. Kablosuz ağ yapılandırmaları senkronize edilmeden önce kullanıcıların bir kurulum akışını tamamlayarak bu özelliğe açık bir şekilde kaydolmaları gerekir. - - Bu ayar devre dışı bırakılırsa kullanıcıların, kablosuz ağ yapılandırmalarını senkronize etmelerine izin verilmez. - - Bu özellik, etkinleştirilen Chrome Senkronizasyonundaki <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> veri türüne bağlıdır. <ph name="SYNC_TYPES_LIST_DISABLED_POLICY_NAME" /> politikasında <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> devre dışı bırakılırsa veya <ph name="SYNC_DISABLED_POLICY_NAME" /> politikasında Chrome Senkronizasyonu devre dışı bırakılırsa bu özellik etkinleştirilmez. - - Bu politika ayarlanmadan bırakılırsa yönetilen kullanıcılar için varsayılana izin verilmez.</translation> <translation id="7477149584454865826">Yazıcıyı kurmak için IPP Everywhere'in kullanılıp kullanılmayacağını belirten boole flag'i.</translation> <translation id="7477231245051133709">Mono ses erişilebilirlik özelliklerini etkinleştir</translation> <translation id="7477239290070847560">Zeroconf tabanlı (mDNS + DNS-SD) protokol hedefleri</translation> @@ -5476,7 +5454,6 @@ <translation id="7882585827992171421">Bu politika yalnızca perakende modunda etkindir. Oturum açma ekranında ekran koruyucu olarak kullanılacak uzantının kimliğini belirler. Uzantı, DeviceAppPack politikası kullanılarak bu alan adı için yapılandırılmış AppPack'in bir parçası olmalıdır.</translation> -<translation id="7882857838942884046">Google Sync'in devre dışı bırakılması, Android Yedekleme ve Geri Yükleme özelliğinin düzgün çalışmamasına neden olur.</translation> <translation id="7882890448959833986">Desteklenmeyen OS uyarısını gizle</translation> <translation id="7887379840451099426">Yalnızca pil gücüyle çalışırken geçerli olan güç yönetimi ayarları</translation> <translation id="7891884447851425349"><ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> açıksa <ph name="DEFAULT_SEARCH_PROVIDER_SEARCH_URL_POLICY_NAME" /> politikasının ayarlanması, varsayılan arama sırasında kullanılan arama motorunu belirtir. URL, sorguda kullanıcının arama terimi ile değiştirilen <ph name="SEARCH_TERM_MARKER" /> dizesini içermelidir.
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb index cf963fd..cd261bd6 100644 --- a/components/policy/resources/policy_templates_uk.xtb +++ b/components/policy/resources/policy_templates_uk.xtb
@@ -209,13 +209,6 @@ <translation id="1265053460044691532">Обмеження часу, упродовж якого користувач, автентифікований через SAML, може входити в режимі офлайн</translation> <translation id="127264587838521316">Вмикає запити на встановлення розширень у <ph name="PRODUCT_NAME" /></translation> <translation id="1274997165432133392">Файли cookie та інші дані із сайтів</translation> -<translation id="127699919157094139">Вимикає синхронізацію даних у <ph name="PRODUCT_NAME" /> за допомогою сервісів синхронізації, розміщених на серверах Google, і не дозволяє користувачам змінювати це налаштування. - - Якщо це налаштування ввімкнено, користувачі не зможуть змінити чи замінити його в <ph name="PRODUCT_NAME" />. - - Якщо це правило не налаштовано, користувачі зможуть вибрати, чи використовувати Google Sync. - - Щоб повністю заборонити сервіс Google Sync, радимо вимкнути його на Консолі адміністратора Google.</translation> <translation id="128059397544257017">Якщо ввімкнути це правило, після виявлення небажаного програмного забезпечення функція <ph name="CHROME_CLEANUP_NAME" /> може повідомити результати перевірки компанії Google відповідно до правила <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> запитує користувача, чи виконувати очищення, і надсилає результати компанії Google. Якщо вимкнути це правило, після виявлення небажаного програмного забезпечення функція <ph name="CHROME_CLEANUP_NAME" /> не повідомлятиме про перевірку компанію Google незалежно від значення правила <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> запитує користувача, чи виконувати очищення, але не надсилає результати компанії Google. @@ -314,13 +307,13 @@ Докладніше про дійсні шаблони <ph name="URL_LABEL" />-адрес можна дізнатися на сторінці https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. <ph name="WILDCARD_VALUE" /> – недопустиме значення для цього правила. Зауважте: раніше це правило було помилково ввімкнено на Android, хоча його функції ніколи не підтримувалися повністю.</translation> -<translation id="1435493974546396517">Контролює, чи з’являється в <ph name="PRODUCT_NAME" /> опція "Друкувати як зображення" в <ph name="MS_WIN_NAME" /> і <ph name="MAC_OS_NAME" /> під час друку файлів PDF. +<translation id="1435493974546396517">Визначає, чи показуватиме <ph name="PRODUCT_NAME" /> опцію "Друкувати як зображення" під час друку файлів PDF у <ph name="MS_WIN_NAME" /> і <ph name="MAC_OS_NAME" />. - Іноді такі завдання друку потрібно растеризувати в зображення, щоб отримати правильний результат на певних принтерах (у <ph name="MS_WIN_NAME" /> або <ph name="MAC_OS_NAME" />). + Іноді такі завдання друку потрібно растеризувати в зображення, щоб отримати задовільний результат на певних принтерах (у <ph name="MS_WIN_NAME" /> або <ph name="MAC_OS_NAME" />). - Якщо це правило ввімкнути, у <ph name="PRODUCT_NAME" /> під час друку файлів PDF з’являтиметься опція "Друкувати як зображення". + Якщо це правило ввімкнути, <ph name="PRODUCT_NAME" /> показуватиме у вікні попереднього перегляду друку опцію "Друкувати як зображення". - Якщо його вимкнути або не налаштувати, під час попереднього перегляду в <ph name="PRODUCT_NAME" /> опція не відображатиметься, а файли PDF друкуватимуться як зазвичай (не растеризуватимуться перед надсиланням на потрібний принтер).</translation> + Якщо його вимкнути або не налаштувати, <ph name="PRODUCT_NAME" /> не показуватиме цю опцію, а файли PDF друкуватимуться як зазвичай (не растеризуватимуться перед надсиланням на потрібний принтер).</translation> <translation id="1435659902881071157">Налаштування мережі на рівні пристрою</translation> <translation id="1438739959477268107">Генерувати ключі за умовчанням</translation> <translation id="1449083855104537880">Якщо для цього правила вибрано значення True, параметри спеціальних можливостей відображатимуться в меню панелі завдань. Якщо для нього вибрано значення False, параметри не відображатимуться в меню. @@ -558,11 +551,11 @@ Якщо це правило налаштовано, <ph name="PLUGIN_VM_NAME" /> не буде встановлено, коли на диску буде менше вільного місця, ніж указано в правилі.</translation> <translation id="1690383938831887552">Заборонити завантаження за допомогою технології Signed HTTP Exchange</translation> <translation id="169467210981344373">Вимкнути глобальний кеш автентифікації HTTP</translation> -<translation id="1698810555265314018">Керує роздільною здатністю зображення під час друку файлів PDF із растеризацією в <ph name="PRODUCT_NAME" />. +<translation id="1698810555265314018">Визначає роздільну здатність, коли <ph name="PRODUCT_NAME" /> друкує файли PDF із растеризацією. - Під час друку файлу PDF як зображення іноді краще вказати іншу роздільну здатність, яка відрізняється від налаштувань принтера або стандартних параметрів для таких файлів. Якщо роздільна здатність висока, обробка та друк відбудуться значно швидше, а якщо низька, то якість зображення може бути поганою. + Під час друку файлу PDF як зображення іноді краще вказати роздільну здатність, яка відрізняється від налаштувань принтера або стандартних параметрів для таких файлів. Висока роздільна здатність значно сповільняє обробку й друк, а низька може погіршити якість зображення. - Правило дає змогу вказати певну роздільну здатність для растеризації файлів PDF для друку. + Це правило дає змогу вказати певну роздільну здатність для растеризації файлів PDF перед друком. Якщо вибрати значення нуль або не налаштувати правило, під час растеризації зображень сторінок будуть використовуватися налаштування системи за умовчанням.</translation> <translation id="1700458869527146675">За допомогою налаштувань цього правила можна вибрати параметри проксі для Chrome і додатків ARC, які ігнорують усі опції проксі, указані в командному рядку. @@ -2814,9 +2807,6 @@ Якщо це правило не налаштовано, режим покращеного заряджання вимкнено. Дійсні значення для поля "<ph name="MINUTE_FIELD_NAME" />" у параметрах <ph name="CHARGE_START_TIME_FIELD_NAME" /> і <ph name="CHARGE_END_TIME_FIELD_NAME" /> – 0, 15, 30, 45.</translation> -<translation id="4450222911834151460">Якщо це правило налаштовано, усі вказані типи даних не будуть синхронізуватися через Google Sync і в переміщуваному профілі. Це може допомогти зменшити розмір переміщуваного профілю або обмежити типи даних, які завантажуються на сервери Google Sync. - - Поточні типи даних для цього правила: "bookmarks", "preferences", "passwords", "autofill", "themes", "typedUrls", "extensions", "apps", "tabs", "wifiConfigurations". У цих назвах враховується регістр.</translation> <translation id="4452653762766030431">Керує доступністю загальних мережевих ресурсів в ОС Chrome</translation> <translation id="445270821089253489">Контролює, яку інформацію про користувача та пристрій надсилати.</translation> <translation id="4453913621209182880">Дозволити лише друк із фоновими зображеннями</translation> @@ -4258,11 +4248,6 @@ <translation id="6371561334154580937">Показувати вікно підтвердження виходу, коли користувач закриває останнє вікно.</translation> <translation id="6372105930898423193">Дозволяє ввімкнути функцію AppCache, навіть якщо її вимкнено за умовчанням.</translation> <translation id="6376659517206731212">Може бути обов’язковим</translation> -<translation id="6377355597423503887">Це правило більше не використовується. Натомість застосовуйте правило BrowserSignin. - - Це правило дає користувачу змогу входити в <ph name="PRODUCT_NAME" />. - - Налаштувавши це правило, ви зможете дозволяти або забороняти користувачу входити в <ph name="PRODUCT_NAME" />. Якщо вибрати значення "False", додатки й розширення, які використовують API chrome.identity, не працюватимуть. Тому радимо використовувати правило SyncDisabled.</translation> <translation id="6378076389057087301">Визначати, чи дії з аудіо впливають на керування живленням</translation> <translation id="6378393933102834628">Якщо для цього правила вибрано значення True, ярлики додатків відображатимуться. Якщо для нього вибрано значення False, ярлики не з'являтимуться. @@ -5200,13 +5185,6 @@ Якщо це правило не налаштовано, пристрій переходить у режим сну. Примітка. Якщо вибрано перехід у режим сну, можна окремо налаштувати, чи буде <ph name="PRODUCT_OS_NAME" /> перед цим блокувати екран.</translation> -<translation id="7476621944304431784">Якщо це правило ввімкнено, користувачі зможуть синхронізувати налаштуванням мережі Wi-Fi між своїми пристроями <ph name="PRODUCT_OS_NAME" /> і підключеним телефоном Android. Щоб згадані налаштування могли синхронізуватися, користувачі мають явно ввімкнути цю функцію, налаштувавши її. - - Якщо це правило вимкнено, користувачі не зможуть синхронізувати налаштування мережі Wi-Fi. - - Ця функція залежить від типу даних <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" />, увімкненого в Синхронізації Chrome. Якщо параметр <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> вимкнено в правилі <ph name="SYNC_TYPES_LIST_DISABLED_POLICY_NAME" /> або Синхронізацію Chrome вимкнено в правилі <ph name="SYNC_DISABLED_POLICY_NAME" />, ця функція буде вимкнена. - - Якщо це правило не налаштовано, за умовчанням ця функція буде забороненою для керованих користувачів.</translation> <translation id="7477149584454865826">Логічне значення експериментального параметра, яке вказує, чи потрібно налаштовувати принтер за допомогою IPP Everywhere.</translation> <translation id="7477231245051133709">Увімкнути спеціальну можливість "Монофонічне аудіо"</translation> <translation id="7477239290070847560">Місця призначення на основі Zeroconf (mDNS + DNS-SD)</translation> @@ -5529,7 +5507,6 @@ <translation id="7882585827992171421">Це правило активне лише в режимі роздрібного продажу. Визначає ідентифікатор розширення, яке має використовуватись як заставка на екрані входу. Це розширення має входити в пакет AppPack, налаштований для цього домену за допомогою правила DeviceAppPack.</translation> -<translation id="7882857838942884046">Якщо вимкнути Google Sync, додаток Android Backup and Restore працюватиме неналежним чином.</translation> <translation id="7882890448959833986">Блокування застереження в непідтримуваних ОС</translation> <translation id="7887379840451099426">Параметри керування живленням, що застосовуються лише під час роботи від акумулятора</translation> <translation id="7891884447851425349">Якщо правило <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> увімкнено, то параметр <ph name="DEFAULT_SEARCH_PROVIDER_SEARCH_URL_POLICY_NAME" /> указує URL-адресу пошукової системи за умовчанням. URL-адреса має містити сегмент <ph name="SEARCH_TERM_MARKER" />, який у запиті замінюється пошуковим терміном користувача.
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb index 9ac1917a..a4f703e 100644 --- a/components/policy/resources/policy_templates_vi.xtb +++ b/components/policy/resources/policy_templates_vi.xtb
@@ -209,13 +209,6 @@ <translation id="1265053460044691532">Hạn chế thời gian người dùng được xác thực qua SAML có thể đăng nhập ngoại tuyến</translation> <translation id="127264587838521316">Bật yêu cầu cài đặt tiện ích của <ph name="PRODUCT_NAME" /></translation> <translation id="1274997165432133392">Cookie và các dữ liệu khác của trang web</translation> -<translation id="127699919157094139">Tắt tính năng đồng bộ hóa dữ liệu trong <ph name="PRODUCT_NAME" /> bằng các dịch vụ đồng bộ hóa do Google lưu trữ và ngăn người dùng thay đổi tùy chọn cài đặt này. - - Nếu bạn bật tùy chọn cài đặt này, người dùng sẽ không thể thay đổi hoặc ghi đè tùy chọn cài đặt này trong <ph name="PRODUCT_NAME" />. - - Nếu bạn không đặt chính sách này, người dùng có thể chọn có sử dụng Google Sync hay không. - - Để tắt hoàn toàn Google Sync, bạn nên tắt dịch vụ Google Sync trong Bảng điều khiển dành cho quản trị viên Google.</translation> <translation id="128059397544257017">Khi bạn đặt chính sách này thành Bật, nếu <ph name="CHROME_CLEANUP_NAME" /> phát hiện thấy phần mềm không mong muốn thì tính năng này có thể báo cáo về quá trình quét cho Google theo chính sách do <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> đặt ra. <ph name="CHROME_CLEANUP_NAME" /> sẽ hỏi người dùng xem họ có muốn dọn dẹp hay không. Tính năng này sẽ gửi kết quả tới Google. Khi bạn đặt chính sách này thành Tắt, nếu <ph name="CHROME_CLEANUP_NAME" /> phát hiện thấy phần mềm không mong muốn thì tính năng này sẽ không báo cáo về quá trình quét cho Google, bất kể <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> có giá trị nào. <ph name="CHROME_CLEANUP_NAME" /> sẽ hỏi người dùng xem họ có muốn dọn dẹp hay không. Tính năng này không báo cáo kết quả cho Google. @@ -871,7 +864,7 @@ <translation id="2043749682619281558">Bật tính năng làm nổi bật con trỏ trên màn hình đăng nhập</translation> <translation id="2043770014371753404">Đã tắt máy in dành cho doanh nghiệp</translation> <translation id="2057317273526988987">Cho phép truy cập vào một danh sách các URL</translation> -<translation id="2061123930713023976">Cho phép dùng kỹ thuật chụp gói dữ liệu có trong mạng để gỡ lỗi</translation> +<translation id="2061123930713023976">Cho phép dùng kỹ thuật chặn bắt gói tin qua mạng để gỡ lỗi</translation> <translation id="2061810934846663491">Định cấu hình tên miền bắt buộc cho máy chủ truy cập từ xa</translation> <translation id="2069350366303315077">Khi bạn đặt chính sách này thành Bật, thì <ph name="PRODUCT_NAME" /> sẽ thực thi các phiên khách và ngăn chặn các phiên đăng nhập vào hồ sơ. Phiên đăng nhập khách là các hồ sơ <ph name="PRODUCT_NAME" />, trong đó các cửa sổ đều ở Chế độ ẩn danh. @@ -1306,7 +1299,7 @@ Nếu bạn đặt chính sách này, thì người dùng sẽ không thể thay đổi hay ghi đè chính sách. Nếu bạn không đặt chính sách này, thì ban đầu, tính năng làm nổi bật dấu chèn sẽ tắt nhưng người dùng có thể bật bất cứ lúc nào.</translation> -<translation id="2509748672176727116">Người dùng sẽ có thể sử dụng kỹ thuật chụp gói dữ liệu có trong mạng</translation> +<translation id="2509748672176727116">Người dùng sẽ có thể chặn bắt gói tin qua mạng</translation> <translation id="2509919237512982967">Dùng các thành phần điều khiển biểu mẫu cũ cho đến M84.</translation> <translation id="2512972020817284317">Cho phép hợp nhất các chính sách đám mây ở cấp người dùng.</translation> <translation id="2515699738406900920">Khả năng hiển thị bộ chọn hồ sơ khi khởi động</translation> @@ -2811,9 +2804,6 @@ Nếu bạn không đặt chính sách này, chế độ sạc pin nâng cao sẽ tắt liên tục. Các giá trị hợp lệ dành cho trường <ph name="MINUTE_FIELD_NAME" /> trong <ph name="CHARGE_START_TIME_FIELD_NAME" /> và <ph name="CHARGE_END_TIME_FIELD_NAME" /> là 0, 15, 30, 45.</translation> -<translation id="4450222911834151460">Nếu bạn đặt chính sách này, tất cả loại dữ liệu đã chỉ định sẽ bị loại trừ khỏi cả quá trình đồng bộ hóa của Google Sync lẫn quá trình đồng bộ hóa cấu hình chuyển vùng. Điều này có thể giúp giảm kích thước của cấu hình chuyển vùng hoặc giới hạn loại dữ liệu đã tải lên các máy chủ Google Sync. - - Chính sách này hiện áp dụng cho các loại dữ liệu sau: "bookmarks", "readingList", "preferences", "passwords", "autofill", "themes", "typedUrls", "extensions", "apps", "tabs", "wifiConfigurations". Tên của các loại dữ liệu đó phân biệt chữ hoa chữ thường!</translation> <translation id="4452653762766030431">Kiểm soát khả năng dùng ứng dụng Chia sẻ tệp trên cùng mạng trong Chrome OS</translation> <translation id="445270821089253489">Kiểm soát loại thông tin thiết bị và người dùng được báo cáo.</translation> <translation id="4453913621209182880">Chỉ cho phép in có đồ họa nền</translation> @@ -2920,10 +2910,10 @@ Trên Windows, nếu bạn không đặt chính sách này, đường dẫn tới cấu hình chuyển vùng mặc định sẽ được sử dụng.</translation> <translation id="4596517047440640833">Mở khóa bằng mã pin</translation> -<translation id="4596742680861734343">Cho phép dùng kỹ thuật chụp gói dữ liệu có trong mạng trên thiết bị để gỡ lỗi. +<translation id="4596742680861734343">Cho phép dùng kỹ thuật chặn bắt gói tin qua mạng trên thiết bị để gỡ lỗi. - Nếu bạn bật hoặc không đặt chính sách này, thì người dùng sẽ có thể sử dụng kỹ thuật chụp gói dữ liệu có trong mạng trên thiết bị. - Nếu bạn tắt chính sách này, người dùng sẽ không sử dụng được kỹ thuật chụp gói dữ liệu có trong mạng trên thiết bị.</translation> + Nếu bạn bật hoặc không đặt chính sách này, thì người dùng sẽ có thể sử dụng kỹ thuật chặn bắt gói tin qua mạng trên thiết bị. + Nếu bạn tắt chính sách này, người dùng sẽ không sử dụng được kỹ thuật chặn bắt gói tin qua mạng trên thiết bị.</translation> <translation id="4600786265870346112">Bật con trỏ lớn</translation> <translation id="4607416370554533118">Khi đặt chính sách này, bạn có thể tạo danh sách các mẫu URL chỉ định trang web mà Chrome có thể tự động chọn chứng chỉ máy khách. Giá trị là một mảng từ điển JSON phân thành chuỗi, mỗi mảng có dạng <ph name="AUTO_SELECT_CERTIFICATE_FOR_URLS_EXAMPLE" />, trong đó <ph name="URL_PATTERN_PLACEHOLDER" /> là mẫu thông tin cài đặt nội dung. <ph name="FILTER_PLACEHOLDER" /> giới hạn các chứng chỉ máy khách mà trình duyệt sẽ tự động chọn. Bất kể bộ lọc là gì, chỉ các chứng chỉ khớp với yêu cầu chứng chỉ của máy chủ mới được chọn. @@ -4262,11 +4252,6 @@ <translation id="6371561334154580937">Hiển thị hộp thoại đăng xuất khi cửa sổ cuối cùng đóng lại.</translation> <translation id="6372105930898423193">Cho phép bật lại tính năng AppCache ngay cả khi tính năng này tắt theo mặc định.</translation> <translation id="6376659517206731212">Có thể bắt buộc</translation> -<translation id="6377355597423503887">Chính sách này không còn dùng nữa, thay vào đó, hãy cân nhắc sử dụng BrowserSignin. - - Cho phép người dùng đăng nhập vào <ph name="PRODUCT_NAME" />. - - Nếu đặt chính sách này, bạn có thể định cấu hình để cho phép hoặc không cho phép người dùng đăng nhập vào <ph name="PRODUCT_NAME" />. Việc đặt chính sách này thành 'False' sẽ ngăn các ứng dụng và tiện ích sử dụng API chrome.identity hoạt động, do đó, bạn nên sử dụng SyncDisabled.</translation> <translation id="6378076389057087301">Chỉ định xem hoạt động âm thanh có ảnh hưởng đến việc quản lý nguồn không</translation> <translation id="6378393933102834628">Nếu bạn đặt chính sách này thành True, thì lối tắt ứng dụng sẽ hiển thị. Nếu bạn đặt chính sách này thành False, thì lối tắt này sẽ không hiển thị. @@ -5206,13 +5191,6 @@ Nếu bạn không đặt chính sách này, hệ thống sẽ thực hiện hành động Tạm ngưng. Lưu ý: Nếu hành động là Tạm ngưng, bạn có thể thiết lập riêng <ph name="PRODUCT_OS_NAME" /> thành khóa hoặc không khóa màn hình trước khi tạm ngưng hoạt động.</translation> -<translation id="7476621944304431784">Nếu bạn bật tùy chọn cài đặt này, thì người dùng sẽ được phép đồng bộ hóa các cấu hình mạng Wi-Fi giữa (các) thiết bị <ph name="PRODUCT_OS_NAME" /> và một điện thoại Android đã kết nối. Trước khi có thể đồng bộ hóa các cấu hình mạng Wi-Fi, người dùng phải chọn sử dụng tính năng này một cách rõ ràng bằng cách hoàn thành quy trình thiết lập. - - Nếu bạn tắt tùy chọn cài đặt này, người dùng sẽ không được phép đồng bộ hóa các cấu hình mạng Wi-Fi. - - Tính năng này tùy thuộc vào loại dữ liệu <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> đang được bật trong Chrome Sync. Nếu bạn tắt <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> trong chính sách <ph name="SYNC_TYPES_LIST_DISABLED_POLICY_NAME" /> hoặc tắt Chrome Sync trong chính sách <ph name="SYNC_DISABLED_POLICY_NAME" />, thì tính năng này sẽ không được bật. - - Nếu bạn không đặt chính sách này, thì người dùng được quản lý sẽ không được phép sử dụng tùy chọn mặc định.</translation> <translation id="7477149584454865826">Cờ boolean cho biết liệu có nên dùng IPP Everywhere để thiết lập máy in hay không.</translation> <translation id="7477231245051133709">Bật tính năng hỗ trợ tiếp cận về đơn âm</translation> <translation id="7477239290070847560">Đích giao thức dựa trên máy in tự động định cấu hình (mDNS + DNS-SD)</translation> @@ -5471,7 +5449,7 @@ Nếu bạn không đặt chính sách này, người dùng có thể chọn có nhắc nhập mật khẩu để đánh thức thiết bị hay không.</translation> <translation id="7784062550705119230">Nếu bạn chọn <ph name="PRINTERS_ALLOWLIST" /> cho <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />, việc đặt <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME" /> sẽ chỉ định những máy in mà người dùng có thể sử dụng. Người dùng chỉ có thể sử dụng những máy in có mã nhận dạng khớp với giá trị trong chính sách này. Các mã nhận dạng này phải tương ứng với trường <ph name="ID_FIELD" /> hoặc <ph name="GUID_FIELD" /> ở tệp được chỉ định trong <ph name="DEVICE_PRINTERS_POLICY_NAME" /></translation> <translation id="7788511847830146438">Cho mỗi hồ sơ</translation> -<translation id="7792796937016596423">Người dùng sẽ không thể sử dụng kỹ thuật chụp gói dữ liệu có trong mạng</translation> +<translation id="7792796937016596423">Người dùng sẽ không thể chặn bắt gói tin qua mạng</translation> <translation id="7798441698807517880">Chúng tôi đã xóa chính sách này khỏi <ph name="PRODUCT_NAME" /> phiên bản 89 trở đi <ph name="FLASH_PLUGIN_NAME" /> không còn được dùng nữa. Nếu bạn đặt chính sách này thành Bật, thì tất cả nội dung <ph name="FLASH_PLUGIN_NAME" /> được nhúng trên những trang web cho phép <ph name="FLASH_PLUGIN_NAME" /> đều sẽ chạy, kể cả nội dung của các nguồn khác hoặc nội dung nhỏ. @@ -5532,7 +5510,6 @@ <translation id="7882585827992171421">Chính sách này chỉ hoạt động trong chế độ bán lẻ. Xác định id của tiện ích được sử dụng làm trình bảo vệ màn hình trên màn hình đăng nhập. Tiện ích phải thuộc AppPack được định cấu hình cho miền này thông qua chính sách DeviceAppPack.</translation> -<translation id="7882857838942884046">Việc tắt Google Sync sẽ khiến Sao lưu và khôi phục trên Android không hoạt động bình thường.</translation> <translation id="7882890448959833986">Ẩn cảnh báo hệ điều hành không được hỗ trợ</translation> <translation id="7887379840451099426">Các tùy chọn cài đặt quản lý nguồn điện chỉ được áp dụng khi chạy bằng pin</translation> <translation id="7891884447851425349">Nếu bạn bật <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" />, thì thao tác đặt <ph name="DEFAULT_SEARCH_PROVIDER_SEARCH_URL_POLICY_NAME" /> sẽ chỉ định URL của công cụ tìm kiếm dùng để tìm kiếm mặc định. URL phải chứa chuỗi <ph name="SEARCH_TERM_MARKER" />. Chuỗi này sẽ được thay bằng cụm từ tìm kiếm của người dùng trong truy vấn.
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb index abd5e27..3198c4d 100644 --- a/components/policy/resources/policy_templates_zh-CN.xtb +++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -208,13 +208,6 @@ <translation id="1265053460044691532">限制通过SAML验证身份的用户可离线登录的时长</translation> <translation id="127264587838521316">启用 <ph name="PRODUCT_NAME" /> 扩展程序安装请求</translation> <translation id="1274997165432133392">Cookie 及其他网站数据</translation> -<translation id="127699919157094139">使用由 Google 托管的同步服务停用 <ph name="PRODUCT_NAME" /> 中的数据同步功能,并阻止用户更改此设置。 - - 如果您启用了此设置,用户将无法在 <ph name="PRODUCT_NAME" /> 中更改或覆盖此设置。 - - 如果您未设置此政策,用户便能自行决定是否要使用 Google 同步。 - - 若要完全停用 Google 同步服务,您最好在 Google 管理控制台中停用此服务。</translation> <translation id="128059397544257017">如果此政策已启用,当 <ph name="CHROME_CLEANUP_NAME" />检测到垃圾软件时,它可以按照 <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> 设置的政策向 Google 报告与此项扫描相关的数据。<ph name="CHROME_CLEANUP_NAME" />会询问用户是否需要清理,并会将扫描结果发送给 Google。 如果此政策已停用,当 <ph name="CHROME_CLEANUP_NAME" />检测到垃圾软件时,无论 <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> 的值是什么,它都不会向 Google 报告与此项扫描相关的数据。<ph name="CHROME_CLEANUP_NAME" />会询问用户是否需要清理,但不会向 Google 报告扫描结果。 @@ -2739,9 +2732,6 @@ 如果您未设置此政策,高级电池充电模式会保持关闭状态。 <ph name="CHARGE_START_TIME_FIELD_NAME" /> 和 <ph name="CHARGE_END_TIME_FIELD_NAME" /> 中的有效 <ph name="MINUTE_FIELD_NAME" /> 字段值为 0、15、30、45。</translation> -<translation id="4450222911834151460">如果您设置了此政策,系统将会从同步操作(无论是 Google 同步还是漫游个人资料同步)中排除所有指定的数据类型。这有助于缩减漫游个人资料的大小,或者限制向 Google 同步服务器上传的数据类型。 - - 此政策当前可用的数据类型为:“bookmarks”、“readingList”、“preferences”、“passwords”、“autofill”、“themes”、“typedUrls”、“extensions”、“apps”、“tabs”、“wifiConfiguration”。这些名称区分大小写!</translation> <translation id="4452653762766030431">控制是否允许在 Chrome 操作系统中使用“网络文件共享”功能</translation> <translation id="445270821089253489">控制要报告的用户和设备信息种类。</translation> <translation id="4453913621209182880">仅允许在有背景图片的情况下打印</translation> @@ -4153,11 +4143,6 @@ <translation id="6371561334154580937">在用户关闭最后一个窗口时显示让用户确认退出登录的对话框。</translation> <translation id="6372105930898423193">允许重新启用 AppCache 功能,即使此功能默认处于关闭状态。</translation> <translation id="6376659517206731212">可强制执行</translation> -<translation id="6377355597423503887">此政策已弃用,请考虑改用 BrowserSignin。 - - 允许用户登录 <ph name="PRODUCT_NAME" />。 - - 如果您设置了此政策,则可以配置是否允许用户登录 <ph name="PRODUCT_NAME" />。如果将此政策设为“False”,使用 chrome.identity API 的应用和扩展程序将无法正常运行,因此我们建议您改用 SyncDisabled。</translation> <translation id="6378076389057087301">指定音频活动是否影响电源管理</translation> <translation id="6378393933102834628">如果此政策设为 True,系统会显示应用快捷方式。如果此政策设为 False,系统一律不会显示此类快捷方式。 @@ -5091,13 +5076,6 @@ 如果您未设置此政策,系统会执行暂停操作。 注意:如果需要执行的操作是暂停,您还可另行设置 <ph name="PRODUCT_OS_NAME" />在暂停前是否锁定屏幕。</translation> -<translation id="7476621944304431784">如果此设置已启用,用户将能够在其 <ph name="PRODUCT_OS_NAME" />设备和一部已连接的 Android 手机之间同步 Wi-Fi 网络配置。不过,用户必须通过完成一个设置流程来明确选择启用这项功能,才能同步 Wi-Fi 网络配置。 - - 如果此设置已停用,用户将无法同步 Wi-Fi 网络配置。 - - 这项功能有赖于在 Chrome 同步设置中启用 <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> 数据类型。如果 <ph name="SYNC_TYPES_LIST_DISABLED_POLICY_NAME" /> 政策已停用 <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" />,或者 <ph name="SYNC_DISABLED_POLICY_NAME" /> 政策已停用 Chrome 同步,系统将不会启用这项功能。 - - 如果此政策未设置,默认情况下,受管用户将无法使用这项功能。</translation> <translation id="7477149584454865826">一个布尔值标记,用于表明是否应该使用 IPP Everywhere 来设置打印机。</translation> <translation id="7477231245051133709">启用“单声道音频”无障碍功能</translation> <translation id="7477239290070847560">基于 Zeroconf (mDNS + DNS-SD) 的协议目的地</translation> @@ -5404,7 +5382,6 @@ <translation id="7882585827992171421">此策略仅在零售模式下有效。 确定在登录屏幕上用作屏幕保护程序的扩展程序的 ID。该扩展程序必须属于通过 DeviceAppPack 策略为此域配置的 AppPack。</translation> -<translation id="7882857838942884046">停用 Google 同步会导致 Android 的备份和恢复机制无法正常运行。</translation> <translation id="7882890448959833986">禁止显示“操作系统不受支持”警告</translation> <translation id="7887379840451099426">仅当使用电池供电时才适用的电源管理设置</translation> <translation id="7891884447851425349">如果 <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> 已开启,您便可通过设置 <ph name="DEFAULT_SEARCH_PROVIDER_SEARCH_URL_POLICY_NAME" /> 来指定在默认搜索期间使用的搜索引擎网址。该网址应包含字符串<ph name="SEARCH_TERM_MARKER" />;当用户执行查询时,系统会将此字符串替换成用户的搜索字词。
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb index e7fb69e..c51a2277 100644 --- a/components/policy/resources/policy_templates_zh-TW.xtb +++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -208,13 +208,6 @@ <translation id="1265053460044691532">限制透過 SAML 驗證的使用者可離線登入的時間</translation> <translation id="127264587838521316">啟用 <ph name="PRODUCT_NAME" /> 擴充功能安裝要求</translation> <translation id="1274997165432133392">Cookie 和其他網站資料</translation> -<translation id="127699919157094139">這項政策會停止 Google 代管的同步處理服務在 <ph name="PRODUCT_NAME" /> 上同步處理資料,並禁止使用者變更這項設定。 - - 如果你啟用這項設定,使用者就無法在 <ph name="PRODUCT_NAME" /> 中變更或覆寫這項設定。 - - 如果不設定這項政策,使用者將可選擇是否要使用 Google Sync。 - - 如要完全停用 Google Sync,建議你在 Google 管理控制台中停用 Google Sync 服務。</translation> <translation id="128059397544257017">如果將這項政策設為啟用,當 <ph name="CHROME_CLEANUP_NAME" />偵測到垃圾軟體時,可按照 <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> 所設定的政策,向 Google 回報掃描作業相關資訊。<ph name="CHROME_CLEANUP_NAME" />會詢問使用者是否要進行清理,並將掃描結果傳送給 Google。 如果將這項政策設為停用,當 <ph name="CHROME_CLEANUP_NAME" />偵測到垃圾軟體時,無論 <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> 的值為何,都不會向 Google 回報掃描作業相關資訊。<ph name="CHROME_CLEANUP_NAME" />會詢問使用者是否要進行清理,但不會將掃描結果回報給 Google。 @@ -2758,9 +2751,6 @@ 如果不設定這項政策,系統會將進階充電模式保持關閉。 在 <ph name="CHARGE_START_TIME_FIELD_NAME" /> 和 <ph name="CHARGE_END_TIME_FIELD_NAME" /> 的 <ph name="MINUTE_FIELD_NAME" /> 欄位中,有效值為 0、15、30、45。</translation> -<translation id="4450222911834151460">如果設定了這項政策,系統會將所有指定的資料類型從同步處理作業 (包含 Google Sync 和漫遊設定檔的同步處理作業) 中排除。這有助於縮減漫遊設定檔的大小,或限制上傳到 Google Sync 伺服器的資料類型。 - - 這項政策目前涵蓋的資料類型為:「bookmarks」、「readingList」、「preferences」、「passwords」、「autofill」、「themes」、「typedUrls」、「extensions」、「apps」、「tabs」、「wifiConfigurations」。這些名稱有大小寫之分。</translation> <translation id="4452653762766030431">控管是否允許在 Chrome 作業系統使用網路檔案共用區</translation> <translation id="445270821089253489">控管 Chrome 回報的使用者與裝置資訊類型。</translation> <translation id="4453913621209182880">只允許使用背景圖形列印</translation> @@ -4157,11 +4147,6 @@ <translation id="6371561334154580937">在最後一個關閉的視窗上顯示登出對話方塊。</translation> <translation id="6372105930898423193">允許重新啟用 AppCache 功能 (即使預設值為停用)。</translation> <translation id="6376659517206731212">可強制實行</translation> -<translation id="6377355597423503887">這項政策已被淘汰,請考慮改用 BrowserSignin。 - - 允許使用者登入 <ph name="PRODUCT_NAME" />。 - - 如果設定這項政策,你可以設定是否允許使用者登入 <ph name="PRODUCT_NAME" />。將這項政策設為「False」後,將會導致使用 chrome.identity API 的應用程式和擴充功能無法運作,因此建議你改用 SyncDisabled。</translation> <translation id="6378076389057087301">指定會影響電源管理的音訊活動</translation> <translation id="6378393933102834628">如果將這項政策設為 True,系統會顯示應用程式捷徑。如果將這項政策設為 False,系統一律不會顯示應用程式捷徑。 @@ -5097,13 +5082,6 @@ 如果不設定這項政策,系統會採取「暫停」動作。 注意:如果指定動作為「暫停」,你可以另行設定 <ph name="PRODUCT_OS_NAME" />在暫停前是否要鎖定螢幕。</translation> -<translation id="7476621944304431784">如果啟用這項設定,使用者將可在搭載 <ph name="PRODUCT_OS_NAME" />的裝置和已連結的 Android 手機上,將 Wi-Fi 網路設定保持同步。在同步 Wi-Fi 網路設定之前,使用者必須先完成設定流程以明確啟用這項功能。 - - 如果停用這項設定,使用者就無法同步 Wi-Fi 網路設定。 - - 這項功能取決於要啟用的 Chrome 同步功能中的 <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> 資料類型。如果在 <ph name="SYNC_TYPES_LIST_DISABLED_POLICY_NAME" /> 政策中停用 <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" />,或是在 <ph name="SYNC_DISABLED_POLICY_NAME" /> 政策中停用 Chrome 同步功能,使用者將無法啟用這項功能。 - - 如果未設定這項政策,在預設情況下,受管理的使用者將無法使用這項功能。</translation> <translation id="7477149584454865826">布林值標記,表示是否要使用 IPP Everywhere 設定印表機。</translation> <translation id="7477231245051133709">啟用單聲道音訊無障礙功能</translation> <translation id="7477239290070847560">可支援無須調整設定 (mDNS 和 DNS-SD) 的通訊協定目的地</translation> @@ -5418,7 +5396,6 @@ <translation id="7882585827992171421">這項政策僅在零售模式下有效。 決定使用擴充程式 ID 當做登入畫面的螢幕保護程式。該擴充功能必須屬於你透過 DeviceAppPack 政策為這個網域設定的 AppPack。</translation> -<translation id="7882857838942884046">停用 Google Sync 會造成 Android 備份與還原功能無法正常運作。</translation> <translation id="7882890448959833986">偵測到不支援的作業系統時不顯示警告</translation> <translation id="7887379840451099426">只有在裝置使用電池供電時才適用的電源管理設定</translation> <translation id="7891884447851425349">如果已啟用 <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> 政策,你可以設定 <ph name="DEFAULT_SEARCH_PROVIDER_SEARCH_URL_POLICY_NAME" /> 政策來指定在進行預設搜尋時所使用的搜尋引擎網址。網址應包含字串 <ph name="SEARCH_TERM_MARKER" />,系統會在查詢中將其替換為使用者的搜尋字詞。
diff --git a/components/qr_code_generator/qr_code_generator.cc b/components/qr_code_generator/qr_code_generator.cc index 815612ff..c668423 100644 --- a/components/qr_code_generator/qr_code_generator.cc +++ b/components/qr_code_generator/qr_code_generator.cc
@@ -56,7 +56,6 @@ (version < 7 && encoded_version != 0) || (version >= 7 && encoded_version >> 12 != static_cast<uint32_t>(version)) || - (version <= kMaxVersionWithSmallLengths && input_bytes() >= 256) || (group2_num_blocks != 0 && group2_block_ec_bytes() != group1_block_ec_bytes())) { __builtin_unreachable(); @@ -119,14 +118,9 @@ return group2_block_data_bytes * group2_num_blocks; } - // Two bytes of overhead are needed for QR framing. - // If extending beyond version 26, framing would need to be updated. + // input_bytes is the maximum number of data bytes, including framing bytes. constexpr size_t input_bytes() const { - if (version <= 9) { - return group1_data_bytes() + group2_data_bytes() - 2; - } else { - return group1_data_bytes() + group2_data_bytes() - 3; - } + return group1_data_bytes() + group2_data_bytes(); } private:
diff --git a/components/qr_code_generator/qr_code_generator_unittest.cc b/components/qr_code_generator/qr_code_generator_unittest.cc index dff3e6ec..2b3bc65 100644 --- a/components/qr_code_generator/qr_code_generator_unittest.cc +++ b/components/qr_code_generator/qr_code_generator_unittest.cc
@@ -59,15 +59,26 @@ // that there are no edge cases like crbug.com/1177437. QRCodeGenerator qr; std::string input = "!"; + std::map<int, size_t> max_input_length_for_qr_size; for (size_t i = input.size();; i++) { - if (!qr.Generate(base::span<const uint8_t>( - reinterpret_cast<const uint8_t*>(input.data()), input.size()))) { + absl::optional<QRCodeGenerator::GeneratedCode> code = + qr.Generate(base::span<const uint8_t>( + reinterpret_cast<const uint8_t*>(input.data()), input.size())); + if (!code) { break; } + max_input_length_for_qr_size[code->qr_size] = input.size(); input.push_back('!'); } ASSERT_GT(input.size(), 200u); + + // Capacities taken from https://www.qrcode.com/en/about/version.html + ASSERT_EQ(max_input_length_for_qr_size[25], 32u); // 2-L + ASSERT_EQ(max_input_length_for_qr_size[37], 84u); // 5-M + ASSERT_EQ(max_input_length_for_qr_size[45], 122u); // 7-M + ASSERT_EQ(max_input_length_for_qr_size[53], 180u); // 9-M + ASSERT_EQ(max_input_length_for_qr_size[65], 287u); // 12-M }
diff --git a/components/services/app_service/public/cpp/BUILD.gn b/components/services/app_service/public/cpp/BUILD.gn index b79c02cf..5d99c36 100644 --- a/components/services/app_service/public/cpp/BUILD.gn +++ b/components/services/app_service/public/cpp/BUILD.gn
@@ -12,6 +12,20 @@ "file_handler_info.h", ] + public_deps = [ ":app_icon_info" ] + + deps = [ + "//base", + "//url", + ] +} + +source_set("app_icon_info") { + sources = [ + "icon_info.cc", + "icon_info.h", + ] + deps = [ "//base", "//url",
diff --git a/components/services/app_service/public/cpp/file_handler.cc b/components/services/app_service/public/cpp/file_handler.cc index fe70cd5..bbe343a 100644 --- a/components/services/app_service/public/cpp/file_handler.cc +++ b/components/services/app_service/public/cpp/file_handler.cc
@@ -37,6 +37,10 @@ *root.SetKey("accept", base::Value(base::Value::Type::LIST)); for (const AcceptEntry& entry : accept) accept_json.Append(entry.AsDebugValue()); + base::Value& icons_json = + *root.SetKey("icons", base::Value(base::Value::Type::LIST)); + for (const IconInfo& entry : icons) + icons_json.Append(entry.AsDebugValue()); return root; }
diff --git a/components/services/app_service/public/cpp/file_handler.h b/components/services/app_service/public/cpp/file_handler.h index 992928e..5d855618 100644 --- a/components/services/app_service/public/cpp/file_handler.h +++ b/components/services/app_service/public/cpp/file_handler.h
@@ -12,6 +12,7 @@ #include "base/containers/flat_set.h" #include "base/values.h" +#include "components/services/app_service/public/cpp/icon_info.h" #include "url/gurl.h" namespace apps { @@ -48,6 +49,11 @@ // will match on. using Accept = std::vector<AcceptEntry>; Accept accept; + + // The icons defined for this file handler, to be used as file type + // association icons in OS surfaces. The sizes in `icons`, when present, + // represent the actual size of a bitmap that was downloaded. + std::vector<IconInfo> icons; }; using FileHandlers = std::vector<FileHandler>;
diff --git a/components/services/app_service/public/cpp/icon_info.cc b/components/services/app_service/public/cpp/icon_info.cc new file mode 100644 index 0000000..d0ed533f --- /dev/null +++ b/components/services/app_service/public/cpp/icon_info.cc
@@ -0,0 +1,33 @@ +// Copyright 2021 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 "components/services/app_service/public/cpp/icon_info.h" + +namespace apps { + +// IconInfo +IconInfo::IconInfo() = default; +IconInfo::IconInfo(const GURL& url, SquareSizePx size) + : url(url), square_size_px(size) {} + +IconInfo::IconInfo(const IconInfo&) = default; + +IconInfo::IconInfo(IconInfo&&) = default; + +IconInfo::~IconInfo() = default; + +IconInfo& IconInfo::operator=(const IconInfo&) = default; + +IconInfo& IconInfo::operator=(IconInfo&&) = default; + +base::Value IconInfo::AsDebugValue() const { + base::Value root(base::Value::Type::DICTIONARY); + root.SetStringKey("url", url.spec()); + root.SetKey("square_size_px", + square_size_px ? base::Value(*square_size_px) : base::Value()); + root.SetKey("purpose", base::Value(static_cast<int>(purpose))); + return root; +} + +} // namespace apps
diff --git a/components/services/app_service/public/cpp/icon_info.h b/components/services/app_service/public/cpp/icon_info.h new file mode 100644 index 0000000..21cee6af --- /dev/null +++ b/components/services/app_service/public/cpp/icon_info.h
@@ -0,0 +1,51 @@ +// Copyright 2021 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 COMPONENTS_SERVICES_APP_SERVICE_PUBLIC_CPP_ICON_INFO_H_ +#define COMPONENTS_SERVICES_APP_SERVICE_PUBLIC_CPP_ICON_INFO_H_ + +#include "base/values.h" +#include "third_party/abseil-cpp/absl/types/optional.h" +#include "url/gurl.h" + +namespace apps { + +// This struct holds info about an icon, but not the actual SkBitmap. It's +// roughly a flattened version of `blink::mojom::ManifestImageResource`, as +// there is one instance for each combination of URL, size and purpose, rather +// than one instance per URL that holds vectors of sizes and purposes. +struct IconInfo { + using SquareSizePx = int; + + // Equivalent to `blink::mojom::ManifestImageResource_Purpose`. + enum class Purpose { + kAny = 0, + kMonochrome = 1, + kMaskable = 2, + }; + + IconInfo(); + IconInfo(const GURL& url, SquareSizePx size); + IconInfo(const IconInfo&); + IconInfo(IconInfo&&) noexcept; + ~IconInfo(); + IconInfo& operator=(const IconInfo&); + IconInfo& operator=(IconInfo&&) noexcept; + base::Value AsDebugValue() const; + + // The source URL of the icon. Note that multiple icons can share a single + // source URL, as some image formats can contain multiple sizes. + GURL url; + + // The nominal size of the icon. Depending on context, this might have come + // from the manifest or be a record of the size icon that was served at `url`. + absl::optional<SquareSizePx> square_size_px; + + // The purpose of this icon. + Purpose purpose = Purpose::kAny; +}; + +} // namespace apps + +#endif // COMPONENTS_SERVICES_APP_SERVICE_PUBLIC_CPP_ICON_INFO_H_
diff --git a/components/services/app_service/public/cpp/instance.cc b/components/services/app_service/public/cpp/instance.cc index 377119ff..08341ea 100644 --- a/components/services/app_service/public/cpp/instance.cc +++ b/components/services/app_service/public/cpp/instance.cc
@@ -16,8 +16,12 @@ /*is_web_contents_backed=*/true); } -Instance::InstanceKey::InstanceKey(aura::Window* window) - : InstanceKey(window, /*is_web_contents_backed=*/false) {} +// static +Instance::InstanceKey Instance::InstanceKey::ForWindowBasedApp( + aura::Window* window) { + return InstanceKey(window, + /*is_web_contents_backed=*/false); +} Instance::InstanceKey::InstanceKey(aura::Window* window, bool is_web_contents_backed)
diff --git a/components/services/app_service/public/cpp/instance.h b/components/services/app_service/public/cpp/instance.h index 50716b6..3e0aff5 100644 --- a/components/services/app_service/public/cpp/instance.h +++ b/components/services/app_service/public/cpp/instance.h
@@ -34,9 +34,9 @@ // Create an InstanceKey for an app instance backed by a WebContents. static InstanceKey ForWebBasedApp(aura::Window* window); - // TODO(raymes): Replace this constructor with a factory function analogous - // to the above. - explicit InstanceKey(aura::Window* window); + // Create an InstanceKey for any non-web app type. + static InstanceKey ForWindowBasedApp(aura::Window* window); + InstanceKey(const InstanceKey& instance_key) = default; InstanceKey(InstanceKey&& instance_key) = default; ~InstanceKey() = default;
diff --git a/components/services/app_service/public/cpp/instance_registry_unittest.cc b/components/services/app_service/public/cpp/instance_registry_unittest.cc index 54965508..fb089df2 100644 --- a/components/services/app_service/public/cpp/instance_registry_unittest.cc +++ b/components/services/app_service/public/cpp/instance_registry_unittest.cc
@@ -21,8 +21,9 @@ aura::Window* window, apps::InstanceState state = apps::InstanceState::kUnknown, base::Time time = base::Time()) { - return MakeInstance(app_id, apps::Instance::InstanceKey(window), state, - time); + return MakeInstance(app_id, + apps::Instance::InstanceKey::ForWindowBasedApp(window), + state, time); } static std::unique_ptr<apps::Instance> MakeInstance( @@ -38,7 +39,7 @@ static apps::Instance::InstanceKey MakeInstanceKeyNonWebApp( aura::Window* window) { - return apps::Instance::InstanceKey(window); + return apps::Instance::InstanceKey::ForWindowBasedApp(window); } static apps::Instance::InstanceKey MakeInstanceKeyWebApp( @@ -55,7 +56,8 @@ apps::InstanceState GetState(apps::InstanceRegistry& instance_registry, aura::Window* window) { - return instance_registry.GetState(apps::Instance::InstanceKey(window)); + return instance_registry.GetState( + apps::Instance::InstanceKey::ForWindowBasedApp(window)); } // apps::InstanceRegistry::Observer overrides. @@ -122,7 +124,7 @@ }); EXPECT_TRUE(instance_registry_->ForOneInstance( - apps::Instance::InstanceKey(outer.Window()), + apps::Instance::InstanceKey::ForWindowBasedApp(outer.Window()), [&outer](const apps::InstanceUpdate& inner) { ExpectEq(outer, inner); })); @@ -252,7 +254,7 @@ bool found_window4 = false; EXPECT_TRUE(instance_registry.ForOneInstance( - apps::Instance::InstanceKey(&window4), + MakeInstanceKeyNonWebApp(&window4), [&found_window4](const apps::InstanceUpdate& update) { found_window4 = true; EXPECT_EQ("c", update.AppId()); @@ -263,7 +265,7 @@ aura::Window window5(nullptr); window5.Init(ui::LAYER_NOT_DRAWN); EXPECT_FALSE(instance_registry.ForOneInstance( - apps::Instance::InstanceKey(&window5), + MakeInstanceKeyNonWebApp(&window5), [&found_window5](const apps::InstanceUpdate& update) { found_window5 = true; })); @@ -396,7 +398,7 @@ bool found_window = false; EXPECT_FALSE(instance_registry.ForOneInstance( - apps::Instance::InstanceKey(&window), + MakeInstanceKeyNonWebApp(&window), [&found_window](const apps::InstanceUpdate& update) { found_window = true; })); @@ -412,7 +414,7 @@ found_window = false; EXPECT_TRUE(instance_registry.ForOneInstance( - apps::Instance::InstanceKey(&window), + MakeInstanceKeyNonWebApp(&window), [&found_window](const apps::InstanceUpdate& update) { found_window = true; })); @@ -500,7 +502,7 @@ bool found_window = false; EXPECT_FALSE(instance_registry.ForOneInstance( - apps::Instance::InstanceKey(&window2), + MakeInstanceKeyNonWebApp(&window2), [&found_window](const apps::InstanceUpdate& update) { found_window = true; })); @@ -508,7 +510,7 @@ found_window = false; EXPECT_FALSE(instance_registry.ForOneInstance( - apps::Instance::InstanceKey(&window4), + MakeInstanceKeyNonWebApp(&window4), [&found_window](const apps::InstanceUpdate& update) { found_window = true; })); @@ -516,7 +518,7 @@ found_window = false; EXPECT_FALSE(instance_registry.ForOneInstance( - apps::Instance::InstanceKey(&window3), + MakeInstanceKeyNonWebApp(&window3), [&found_window](const apps::InstanceUpdate& update) { found_window = true; })); @@ -524,7 +526,7 @@ found_window = false; EXPECT_FALSE(instance_registry.ForOneInstance( - apps::Instance::InstanceKey(&window1), + MakeInstanceKeyNonWebApp(&window1), [&found_window](const apps::InstanceUpdate& update) { found_window = true; })); @@ -540,7 +542,7 @@ found_window = false; EXPECT_TRUE(instance_registry.ForOneInstance( - apps::Instance::InstanceKey(&window2), + MakeInstanceKeyNonWebApp(&window2), [&found_window](const apps::InstanceUpdate& update) { found_window = true; }));
diff --git a/components/services/app_service/public/cpp/instance_update_unittest.cc b/components/services/app_service/public/cpp/instance_update_unittest.cc index f428e7e..520d0d7 100644 --- a/components/services/app_service/public/cpp/instance_update_unittest.cc +++ b/components/services/app_service/public/cpp/instance_update_unittest.cc
@@ -110,7 +110,7 @@ aura::Window window(nullptr); window.Init(ui::LAYER_NOT_DRAWN); std::unique_ptr<apps::Instance> state = std::make_unique<apps::Instance>( - app_id, apps::Instance::InstanceKey(&window)); + app_id, apps::Instance::InstanceKey::ForWindowBasedApp(&window)); EXPECT_TRUE(apps::InstanceUpdate::Equals(state.get(), nullptr)); TestInstanceUpdate(state.get(), nullptr); } @@ -119,7 +119,7 @@ aura::Window window(nullptr); window.Init(ui::LAYER_NOT_DRAWN); std::unique_ptr<apps::Instance> delta = std::make_unique<apps::Instance>( - app_id, apps::Instance::InstanceKey(&window)); + app_id, apps::Instance::InstanceKey::ForWindowBasedApp(&window)); EXPECT_FALSE(apps::InstanceUpdate::Equals(nullptr, delta.get())); TestInstanceUpdate(nullptr, delta.get()); } @@ -128,9 +128,9 @@ aura::Window window(nullptr); window.Init(ui::LAYER_NOT_DRAWN); std::unique_ptr<apps::Instance> state = std::make_unique<apps::Instance>( - app_id, apps::Instance::InstanceKey(&window)); + app_id, apps::Instance::InstanceKey::ForWindowBasedApp(&window)); std::unique_ptr<apps::Instance> delta = std::make_unique<apps::Instance>( - app_id, apps::Instance::InstanceKey(&window)); + app_id, apps::Instance::InstanceKey::ForWindowBasedApp(&window)); EXPECT_TRUE(apps::InstanceUpdate::Equals(state.get(), delta.get())); TestInstanceUpdate(state.get(), delta.get()); } @@ -139,9 +139,9 @@ aura::Window window(nullptr); window.Init(ui::LAYER_NOT_DRAWN); std::unique_ptr<apps::Instance> state = std::make_unique<apps::Instance>( - app_id, apps::Instance::InstanceKey(&window)); + app_id, apps::Instance::InstanceKey::ForWindowBasedApp(&window)); std::unique_ptr<apps::Instance> delta = std::make_unique<apps::Instance>( - app_id, apps::Instance::InstanceKey(&window)); + app_id, apps::Instance::InstanceKey::ForWindowBasedApp(&window)); delta->SetLaunchId("abc"); EXPECT_FALSE(apps::InstanceUpdate::Equals(state.get(), delta.get())); } @@ -150,10 +150,10 @@ aura::Window window(nullptr); window.Init(ui::LAYER_NOT_DRAWN); std::unique_ptr<apps::Instance> state = std::make_unique<apps::Instance>( - app_id, apps::Instance::InstanceKey(&window)); + app_id, apps::Instance::InstanceKey::ForWindowBasedApp(&window)); state->SetLaunchId("abc"); std::unique_ptr<apps::Instance> delta = std::make_unique<apps::Instance>( - app_id, apps::Instance::InstanceKey(&window)); + app_id, apps::Instance::InstanceKey::ForWindowBasedApp(&window)); EXPECT_TRUE(apps::InstanceUpdate::Equals(state.get(), delta.get())); } @@ -161,9 +161,9 @@ aura::Window window(nullptr); window.Init(ui::LAYER_NOT_DRAWN); std::unique_ptr<apps::Instance> state = std::make_unique<apps::Instance>( - app_id, apps::Instance::InstanceKey(&window)); + app_id, apps::Instance::InstanceKey::ForWindowBasedApp(&window)); std::unique_ptr<apps::Instance> delta = std::make_unique<apps::Instance>( - app_id, apps::Instance::InstanceKey(&window)); + app_id, apps::Instance::InstanceKey::ForWindowBasedApp(&window)); delta->UpdateState(apps::InstanceState::kStarted, base::Time::Now()); EXPECT_FALSE(apps::InstanceUpdate::Equals(state.get(), delta.get())); } @@ -172,10 +172,10 @@ aura::Window window(nullptr); window.Init(ui::LAYER_NOT_DRAWN); std::unique_ptr<apps::Instance> state = std::make_unique<apps::Instance>( - app_id, apps::Instance::InstanceKey(&window)); + app_id, apps::Instance::InstanceKey::ForWindowBasedApp(&window)); state->UpdateState(apps::InstanceState::kStarted, base::Time::Now()); std::unique_ptr<apps::Instance> delta = std::make_unique<apps::Instance>( - app_id, apps::Instance::InstanceKey(&window)); + app_id, apps::Instance::InstanceKey::ForWindowBasedApp(&window)); EXPECT_TRUE(apps::InstanceUpdate::Equals(state.get(), delta.get())); } @@ -183,11 +183,11 @@ aura::Window window(nullptr); window.Init(ui::LAYER_NOT_DRAWN); std::unique_ptr<apps::Instance> state = std::make_unique<apps::Instance>( - app_id, apps::Instance::InstanceKey(&window)); + app_id, apps::Instance::InstanceKey::ForWindowBasedApp(&window)); state->SetLaunchId("aaa"); state->UpdateState(apps::InstanceState::kStarted, base::Time::Now()); std::unique_ptr<apps::Instance> delta = std::make_unique<apps::Instance>( - app_id, apps::Instance::InstanceKey(&window)); + app_id, apps::Instance::InstanceKey::ForWindowBasedApp(&window)); delta->SetLaunchId("bbb"); delta->UpdateState(apps::InstanceState::kRunning, base::Time::Now()); EXPECT_FALSE(apps::InstanceUpdate::Equals(state.get(), delta.get())); @@ -197,9 +197,9 @@ aura::Window window(nullptr); window.Init(ui::LAYER_NOT_DRAWN); std::unique_ptr<apps::Instance> state = std::make_unique<apps::Instance>( - app_id, apps::Instance::InstanceKey(&window)); + app_id, apps::Instance::InstanceKey::ForWindowBasedApp(&window)); std::unique_ptr<apps::Instance> delta = std::make_unique<apps::Instance>( - app_id, apps::Instance::InstanceKey(&window)); + app_id, apps::Instance::InstanceKey::ForWindowBasedApp(&window)); delta->SetBrowserContext(&profile_); EXPECT_FALSE(apps::InstanceUpdate::Equals(state.get(), delta.get())); } @@ -208,9 +208,9 @@ aura::Window window(nullptr); window.Init(ui::LAYER_NOT_DRAWN); std::unique_ptr<apps::Instance> state = std::make_unique<apps::Instance>( - app_id, apps::Instance::InstanceKey(&window)); + app_id, apps::Instance::InstanceKey::ForWindowBasedApp(&window)); state->SetBrowserContext(&profile_); std::unique_ptr<apps::Instance> delta = std::make_unique<apps::Instance>( - app_id, apps::Instance::InstanceKey(&window)); + app_id, apps::Instance::InstanceKey::ForWindowBasedApp(&window)); EXPECT_TRUE(apps::InstanceUpdate::Equals(state.get(), delta.get())); }
diff --git a/components/strings/components_strings_as.xtb b/components/strings/components_strings_as.xtb index 016b1db..907a71d 100644 --- a/components/strings/components_strings_as.xtb +++ b/components/strings/components_strings_as.xtb
@@ -988,6 +988,7 @@ <translation id="4358461427845829800">পৰিশোধৰ পদ্ধতি পৰিচালনা কৰক...</translation> <translation id="4359160567981085931">আপুনি এটা প্ৰবঞ্চনামূলক ছাইটত এইমাত্ৰ নিজৰ পাছৱৰ্ডটো দিছে। Chromeএ সহায় কৰিব পাৰে। আপোনাৰ পাছৱৰ্ডটো সলনি কৰিবলৈ আৰু আপোনাৰ একাউণ্টটো ক্ষতি হোৱাৰ সম্ভাৱনা থকা বুলি Googleক অৱগত কৰিবলৈ একাউণ্টটো সুৰক্ষিত কৰকত ক্লিক কৰক।</translation> <translation id="4367563149485757821">নম্বৰ-১২ (লেফাফা)</translation> +<translation id="437040971055499437">সুৰক্ষা সম্পৰ্কীয় ঘটনা ঘটিলে</translation> <translation id="437058704415269440">একাউণ্টৰ বেলেঞ্চ</translation> <translation id="4372516964750095882">ফেনফ’ল্ড-ইউএছ</translation> <translation id="4372948949327679948">প্ৰত্যাশিত <ph name="VALUE_TYPE" /> মান।</translation> @@ -1389,6 +1390,7 @@ <translation id="5803412860119678065">আপুনি নিজৰ <ph name="CARD_DETAIL" /> পুৰাব খোজেনে?</translation> <translation id="5804241973901381774">অনুমতি</translation> <translation id="5810442152076338065">আপোনাৰ <ph name="DOMAIN" />ৰ সৈতে থকা সংযোগ কোনো অপ্ৰচলিত চাইফাৰ ছুট ব্যৱহাৰ কৰি এনক্ৰিপ্ট কৰা হৈছে।</translation> +<translation id="5812947184178430888">Chromeএ সুৰক্ষা সম্পৰ্কীয় ঘটনা ফ্লেগ কৰিলে ঘটনাসমূহৰ বিষয়ে প্ৰাসংগিক ডেটা আপোনাৰ প্ৰশাসকলৈ পঠিওৱা হয়। ইয়াত আপুনি Chromeত চোৱা পৃষ্ঠাসমূহৰ URL, ফাইলৰ নাম অথবা মেটাডেটা আৰু আপুনি ৱেবৰ ওপৰত আধাৰিত এপ্লিকেশ্বন, নিজৰ ডিভাইচ তথা Chromeত ছাইন ইন কৰিবলৈ ব্যৱহাৰ কৰা ব্যৱহাৰকাৰীৰ নামটো থাকিব পাৰে।</translation> <translation id="5813119285467412249">যোগ কৰা কার্য &ৰিডু কৰক</translation> <translation id="5817918615728894473">যোৰা লগাওক</translation> <translation id="5824687817967109979">{NUM_CARDS,plural, =1{আপুনি পৰিশোধ কৰিলে এই কাৰ্ডখনৰ পৰা টকা আদায় দিয়া হ’ব কিন্তু ইয়াৰ প্ৰকৃত নম্বৰটো এই ছাইটটোৰ সৈতে শ্বেয়াৰ কৰা নহ’ব। অতিৰিক্ত সুৰক্ষাৰ বাবে এটা সাময়িক CVC সৃষ্টি কৰা হ’ব।}one{আপুনি পৰিশোধ কৰিলে আপুনি বাছনি কৰা কাৰ্ডখনৰ পৰা টকা আদায় দিয়া হ’ব কিন্তু ইয়াৰ প্ৰকৃত নম্বৰটো এই ছাইটটোৰ সৈতে শ্বেয়াৰ কৰা নহ’ব। অতিৰিক্ত সুৰক্ষাৰ বাবে এটা সাময়িক CVC সৃষ্টি কৰা হ’ব।}other{আপুনি পৰিশোধ কৰিলে আপুনি বাছনি কৰা কাৰ্ডখনৰ পৰা টকা আদায় দিয়া হ’ব কিন্তু ইয়াৰ প্ৰকৃত নম্বৰটো এই ছাইটটোৰ সৈতে শ্বেয়াৰ কৰা নহ’ব। অতিৰিক্ত সুৰক্ষাৰ বাবে এটা সাময়িক CVC সৃষ্টি কৰা হ’ব।}}</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb index d520fab..e776bf29 100644 --- a/components/strings/components_strings_es-419.xtb +++ b/components/strings/components_strings_es-419.xtb
@@ -1114,7 +1114,7 @@ <translation id="4819347708020428563">¿Quieres editar anotaciones en la vista predeterminada?</translation> <translation id="4825496307559726072"><ph name="CREATE_GOOGLE_SHEET_FOCUSED_FRIENDLY_MATCH_TEXT" />, presiona Tab y, luego, Intro para crear una nueva hoja de cálculo de Google rápidamente</translation> <translation id="4825507807291741242">Powerful</translation> -<translation id="4827402517081186284">El modo incógnito no hace que seas invisible en línea: +<translation id="4827402517081186284">El modo Incógnito no hace que seas invisible en línea: <ph name="BEGIN_LIST" /> <ph name="LIST_ITEM" />Los sitios saben cuándo los visitas.<ph name="END_LIST_ITEM" /> <ph name="LIST_ITEM" />Los empleadores o instituciones educativas pueden rastrear tu actividad de navegación.<ph name="END_LIST_ITEM" /> @@ -1124,7 +1124,7 @@ <translation id="484462545196658690">Automático</translation> <translation id="4850886885716139402">Ver</translation> <translation id="485316830061041779">Alemán</translation> -<translation id="4853901935952445031">Este sitio no podrá usar la API de U2F después de febrero de 2022. Si es el propietario de este sitio, debería cambiarlo para usar la API de Web Authentication.</translation> +<translation id="4853901935952445031">Este sitio no podrá usar la API de U2F después de febrero de 2022. Si eres el propietario del sitio, deberás modificarlo para que use la API de Web Authentication.</translation> <translation id="4854362297993841467">Este método de entrega no está disponible. Prueba otro método.</translation> <translation id="4854853140771946034">Crear una nota nueva en Google Keep rápidamente</translation> <translation id="4876188919622883022">Vista simplificada</translation> @@ -1762,7 +1762,7 @@ <translation id="7210863904660874423"><ph name="HOST_NAME" /> no cumple con las normas de seguridad.</translation> <translation id="7210993021468939304">La actividad de Linux en el contenedor; también pueden instalar y ejecutar apps de Linux en el contenedor</translation> <translation id="721197778055552897"><ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /> acerca de este problema.</translation> -<translation id="7215025035562547931">Tómate un momento para analizar la veracidad</translation> +<translation id="7215025035562547931">Tómate un momento para analizar el grado de exactitud de la información</translation> <translation id="7217745192097460130">¿Deseas usar Touch ID para verificar y completar tu compra?</translation> <translation id="7219179957768738017">La conexión usa <ph name="SSL_VERSION" />.</translation> <translation id="7220786058474068424">Procesando</translation> @@ -2102,7 +2102,7 @@ <ph name="BEGIN_LIST" /> <ph name="LIST_ITEM" />Tu actividad de navegación de este dispositivo<ph name="END_LIST_ITEM" /> <ph name="LIST_ITEM" />Tu historial de búsqueda de este dispositivo<ph name="END_LIST_ITEM" /> - <ph name="LIST_ITEM" />La información que ingresas en formularios<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />La información que hayas ingresado en formularios<ph name="END_LIST_ITEM" /> <ph name="END_LIST" /></translation> <translation id="8332188693563227489">Se denegó el acceso a <ph name="HOST_NAME" /></translation> <translation id="833262891116910667">Destacar</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb index 578becf..2eee7c4 100644 --- a/components/strings/components_strings_gu.xtb +++ b/components/strings/components_strings_gu.xtb
@@ -272,6 +272,7 @@ <translation id="1838374766361614909">શોધ સાફ કરો</translation> <translation id="1839551713262164453">ભૂલના લીધે પૉલિસી મૂલ્યોની માન્યતા નિષ્ફળ થઈ</translation> <translation id="1842969606798536927">ચુકવણી કરો</translation> +<translation id="1856713167556118146">છૂપો મોડ, શું કરતું નથી</translation> <translation id="1871208020102129563">પ્રૉક્સી નક્કી કરેલા પ્રૉક્સી સર્વરનો ઉપયોગ કરવા માટે સેટ કરેલી છે, .pac સ્ક્રિપ્ટ URL નથી.</translation> <translation id="1871284979644508959">જરૂરી ફીલ્ડ</translation> <translation id="1875512691959384712">Google Forms</translation> @@ -992,6 +993,7 @@ <translation id="4358461427845829800">ચુકવણી પદ્ધતિઓ મેનેજ કરો…</translation> <translation id="4359160567981085931">હમણાં જ કોઈ છેતરામણી સાઇટ પર તમે તમારો પાસવર્ડ દાખલ કર્યો. Chrome સહાય કરી શકે છે. તમારો પાસવર્ડ બદલવા માટે અને Googleને એ જાણ કરવા માટે કે તમારું એકાઉન્ટ જોખમમાં હોઈ શકે છે, એકાઉન્ટ સુરક્ષિત કરો પર ક્લિક કરો.</translation> <translation id="4367563149485757821">નંબર-12 (એન્વલપ)</translation> +<translation id="437040971055499437">સુરક્ષા ઇવેન્ટ થવા પર</translation> <translation id="437058704415269440">એકાઉન્ટ બૅલેન્સ</translation> <translation id="4372516964750095882">Fanfold-Us</translation> <translation id="4372948949327679948">અપેક્ષિત <ph name="VALUE_TYPE" /> મૂલ્ય.</translation> @@ -1018,6 +1020,7 @@ <translation id="4465818729556336129">આ દસ્તાવેજ ગોપનીય છે અને તમારા વ્યવસ્થાપક દ્વારા તેને પ્રિન્ટ કરવાની સલાહ આપવામાં આવતી નથી.</translation> <translation id="4476953670630786061">આ ફોર્મ સુરક્ષિત નથી. ઑટોમૅટિક રીતે ભરવાની સુવિધા બંધ કરવામાં આવી છે.</translation> <translation id="4477350412780666475">આગલો ટ્રૅક</translation> +<translation id="4481251927743463293">છૂપો મોડ શું કરે છે</translation> <translation id="4481394504112738036">ગોપનીય ફાઇલ</translation> <translation id="4482953324121162758">આ સાઇટનો અનુવાદ થશે નહીં.</translation> <translation id="4490717597759821841">A7</translation> @@ -1118,10 +1121,17 @@ <translation id="4819347708020428563">ટીકાટિપ્પણીમાં ફેરફાર કરીને ડિફૉલ્ટ વ્યૂ પસંદ કરીએ?</translation> <translation id="4825496307559726072"><ph name="CREATE_GOOGLE_SHEET_FOCUSED_FRIENDLY_MATCH_TEXT" />, Google Sheetsમાં ઝડપથી કોઈ નવી શીટ બનાવવા માટે, પહેલાં Tab પછી Enter કી દબાવો</translation> <translation id="4825507807291741242">શક્તિશાળી</translation> +<translation id="4827402517081186284">છૂપા મોડથી તમે ઑનલાઇન અદ્રશ્ય બની જતા નથી: + <ph name="BEGIN_LIST" /> + <ph name="LIST_ITEM" />સાઇટ તમારી મુલાકાત વિશે જાણી શકે છે<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />નિયોક્તા કે સ્કૂલ બ્રાઉઝિંગ પ્રવૃત્તિ ટ્રૅક કરી શકે છે<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />ઇન્ટરનેટ સેવા આપનાર કંપની વેબ ટ્રાફિક મૉનિટર કરી શકે છે<ph name="END_LIST_ITEM" /> + <ph name="END_LIST" /></translation> <translation id="4838327282952368871">સ્વપ્નશીલ</translation> <translation id="484462545196658690">ઑટો</translation> <translation id="4850886885716139402">જુઓ</translation> <translation id="485316830061041779">જર્મન</translation> +<translation id="4853901935952445031">આ સાઇટ ફેબ્રુઆરી 2022 પછી U2F APIનો ઉપયોગ કરી શકશે નહીં. જો આ સાઇટની માલિકી તમારી હોય, તો વેબ પ્રમાણીકરણ APIનો ઉપયોગ કરવા માટે તમારે તેને બદલવી જોઈએ.</translation> <translation id="4854362297993841467">વિતરણની આ પદ્ધતિ ઉપલબ્ધ નથી. કોઈ ભિન્ન પદ્ધતિ અજમાવો.</translation> <translation id="4854853140771946034">Google Keepમાં ઝડપથી કોઈ નવી નોંધ બનાવો</translation> <translation id="4876188919622883022">સરળ દૃશ્ય</translation> @@ -1393,6 +1403,7 @@ <translation id="5803412860119678065">શું તમે તમારી <ph name="CARD_DETAIL" /> માહિતી ભરવા માગો છો?</translation> <translation id="5804241973901381774">પરવાનગીઓ</translation> <translation id="5810442152076338065"><ph name="DOMAIN" /> સાથેના તમારા કનેક્શનને ઑબ્સોલિટ સાઇફર સ્યૂટનો ઉપયોગ કરીને એન્ક્રિપ્ટ કરાયું છે.</translation> +<translation id="5812947184178430888">જ્યારે કોઈ સુરક્ષા ઇવેન્ટને Chrome દ્વારા ચિહ્નિત કરવામાં આવે, ત્યારે તમારા વ્યવસ્થાપકને ઇવેન્ટ વિશેનો સંબંધિત ડેટા મોકલવામાં આવે છે. આમાં તમે Chromeમાં મુલાકાત લીધી હોય તે પેજના URLs, ફાઇલોના નામ કે મેટાડેટા તેમજ વેબ-આધારિત ઍપ્લિકેશનો, તમારા ડિવાઇસ અને Chromeમાં સાઇન ઇન કરવા માટે તમે ઉપયોગ કરો છો તે વપરાશકર્તાના નામનો સમાવેશ થઈ શકે છે.</translation> <translation id="5813119285467412249">&ઉમેરવું ફરી કરો</translation> <translation id="5817918615728894473">જોડી કરો</translation> <translation id="5824687817967109979">{NUM_CARDS,plural, =1{તમે ચુકવણી કરશો ત્યારે આ કાર્ડથી શુલ્ક લેવામાં આવશે, પણ તેનો વાસ્તવિક નંબર આ સાઇટ સાથે શેર કરવામાં આવશે નહીં. વધારાની સુવિધા માટે, કામ ચલાઉ CVC જનરેટ કરવામાં આવશે.}one{તમે ચુકવણી કરશો ત્યારે તમે પસંદ કરશો તે કાર્ડથી શુલ્ક લેવામાં આવશે, પણ તેનો વાસ્તવિક નંબર આ સાઇટ સાથે શેર કરવામાં આવશે નહીં. વધારાની સુવિધા માટે, કામ ચલાઉ CVC જનરેટ કરવામાં આવશે.}other{તમે ચુકવણી કરશો ત્યારે તમે પસંદ કરશો તે કાર્ડથી શુલ્ક લેવામાં આવશે, પણ તેનો વાસ્તવિક નંબર આ સાઇટ સાથે શેર કરવામાં આવશે નહીં. વધારાની સુવિધા માટે, કામ ચલાઉ CVC જનરેટ કરવામાં આવશે.}}</translation> @@ -1644,6 +1655,7 @@ <translation id="6757797048963528358">તમારું ઉપકરણ નિષ્ક્રિય થઈ ગયું હતું.</translation> <translation id="6767985426384634228">સરનામું અપડેટ કરીએ?</translation> <translation id="6768213884286397650">Hagaki (પોસ્ટકાર્ડ)</translation> +<translation id="6774185088257932239">છૂપા મોડ વિશે <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" /></translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">જાંબુડિયો</translation> <translation id="6786747875388722282">એક્સ્ટેન્શન</translation> @@ -1691,6 +1703,7 @@ <translation id="6965382102122355670">બરાબર, સમજાઇ ગયું</translation> <translation id="6965978654500191972">ઉપકરણ</translation> <translation id="696703987787944103">પરસેપચ્યુઅલ</translation> +<translation id="6968269510885595029">તમારી સિક્યુરિટી કીનો ઉપયોગ કરો</translation> <translation id="6970216967273061347">જિલ્લો</translation> <translation id="6971439137020188025">Slidesમાં ઝડપથી કોઈ નવી Google પ્રસ્તુતિ બનાવો</translation> <translation id="6972629891077993081">HID ડિવાઇસ</translation> @@ -1756,6 +1769,7 @@ <translation id="7210863904660874423"><ph name="HOST_NAME" />, સુરક્ષા માનકોનું પાલન કરતું નથી.</translation> <translation id="7210993021468939304">કન્ટેનરની અંદર જ Linuxની પ્રવૃત્તિ અને કન્ટેનરની અંદર જ Linuxની ઍપ ઇન્સ્ટૉલ કરી શકાશે તેમજ ચલાવી શકાશે</translation> <translation id="721197778055552897">આ સમસ્યા વિશે <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" />.</translation> +<translation id="7215025035562547931">સચોટતાની ખાતરી કરવા માટે સમય ફાળવો</translation> <translation id="7217745192097460130">તમારી ખરીદી ચકાસવા અને પૂર્ણ કરવા Touch IDનો ઉપયોગ કરીએ?</translation> <translation id="7219179957768738017">કનેક્શન <ph name="SSL_VERSION" /> નો ઉપયોગ કરે છે.</translation> <translation id="7220786058474068424">પ્રક્રિયા કરી રહ્યું છે</translation> @@ -2091,6 +2105,12 @@ <translation id="8307888238279532626">ઇન્સ્ટૉલ થયેલી ઍપ અને તેમનો ઉપયોગ કેટલી વાર કરવામાં આવે છે</translation> <translation id="831207732689920588">આ પેજ શંકાસ્પદ છે (Chrome દ્વારા ચિહ્નિત કરાયું છે).</translation> <translation id="831997045666694187">સાંજ</translation> +<translation id="8328484624016508118">બધી છૂપી ટૅબ બંધ કરવા પછી, Chrome આ સાફ કરશે: + <ph name="BEGIN_LIST" /> + <ph name="LIST_ITEM" />આ ડિવાઇસમાંની તમારી બ્રાઉઝિંગ પ્રવૃત્તિ<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />આ ડિવાઇસમાંનો તમારો શોધ ઇતિહાસ<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />ફોર્મમાં દાખલ કરેલી માહિતી<ph name="END_LIST_ITEM" /> + <ph name="END_LIST" /></translation> <translation id="8332188693563227489"><ph name="HOST_NAME" /> ની ઍક્સેસ નકારાઈ હતી</translation> <translation id="833262891116910667">હાઇલાઇટ</translation> <translation id="8339163506404995330"><ph name="LANGUAGE" />માં છે તે પેજનો અનુવાદ થશે નહીં</translation>
diff --git a/components/strings/components_strings_iw.xtb b/components/strings/components_strings_iw.xtb index 2f4ec61..7969cdc 100644 --- a/components/strings/components_strings_iw.xtb +++ b/components/strings/components_strings_iw.xtb
@@ -272,7 +272,7 @@ <translation id="1838374766361614909">ניקוי חיפוש</translation> <translation id="1839551713262164453">אימות ערכי המדיניות נכשל והתרחשו שגיאות</translation> <translation id="1842969606798536927">לתשלום</translation> -<translation id="1856713167556118146">מה לא קורה במצב אנונימי</translation> +<translation id="1856713167556118146">מה לא קורה במצב האנונימי</translation> <translation id="1871208020102129563">שרת ה-Proxy מוגדר להשתמש בשרתי Proxy קבועים, לא בכתובת אתר של סקריפט .Pac</translation> <translation id="1871284979644508959">שדה חובה</translation> <translation id="1875512691959384712">Google Forms</translation> @@ -1019,7 +1019,7 @@ <translation id="4465818729556336129">המסמך הזה סודי ולפי מנהל המערכת, לא מומלץ להדפיס אותו.</translation> <translation id="4476953670630786061">הטופס הזה לא מאובטח. המילוי האוטומטי נכבה.</translation> <translation id="4477350412780666475">הטראק הבא</translation> -<translation id="4481251927743463293">מה כן קורה במצב אנונימי</translation> +<translation id="4481251927743463293">מה כן קורה במצב האנונימי</translation> <translation id="4481394504112738036">קובץ סודי</translation> <translation id="4482953324121162758">האתר הזה לא יתורגם.</translation> <translation id="4490717597759821841">A7</translation> @@ -1124,7 +1124,7 @@ <translation id="4819347708020428563">לערוך את ההערות בתצוגת ברירת מחדל?</translation> <translation id="4825496307559726072"><ph name="CREATE_GOOGLE_SHEET_FOCUSED_FRIENDLY_MATCH_TEXT" />, מקישים על Tab ואז על Enter כדי ליצור במהירות גיליון אלקטרוני חדש ב-Google Sheets</translation> <translation id="4825507807291741242">עוצמתי</translation> -<translation id="4827402517081186284">המצב האנונימי לא מסתיר אותך באינטרנט: +<translation id="4827402517081186284">המצב האנונימי לא מסתיר אותך לגמרי באינטרנט: <ph name="BEGIN_LIST" /> <ph name="LIST_ITEM" />אתרים יודעים שביקרת בהם<ph name="END_LIST_ITEM" /> <ph name="LIST_ITEM" />מעסיקים ומוסדות לימודים יכולים לעקוב אחר פעילות הגלישה שלך<ph name="END_LIST_ITEM" /> @@ -1134,7 +1134,7 @@ <translation id="484462545196658690">אוטומטי</translation> <translation id="4850886885716139402">הצגה</translation> <translation id="485316830061041779">גרמנית</translation> -<translation id="4853901935952445031">האתר הזה לא יוכל להשתמש בממשק U2F אחרי פברואר 2022. אם האתר בבעלותך, צריך לשנות אותו כך שיוכל להשתמש ב-API לאימות אינטרנט.</translation> +<translation id="4853901935952445031">האתר הזה לא יוכל להשתמש ב-U2F API אחרי פברואר 2022. אם האתר בבעלותך, צריך לשנות אותו כך שיוכל להשתמש ב-Web Authentication API.</translation> <translation id="4854362297993841467">שיטת המסירה הזו אינה זמינה. עליך לבחור שיטה אחרת.</translation> <translation id="4854853140771946034">יצירת הערה חדשה ב-Google Keep במהירות</translation> <translation id="4876188919622883022">תצוגה נקייה</translation> @@ -1659,7 +1659,7 @@ <translation id="6757797048963528358">המכשיר עבר למצב שינה.</translation> <translation id="6767985426384634228">לעדכן את הכתובת?</translation> <translation id="6768213884286397650">Hagaki (Postcard)</translation> -<translation id="6774185088257932239"><ph name="BEGIN_LINK" />מידע נוסף<ph name="END_LINK" /> על מצב אנונימי</translation> +<translation id="6774185088257932239"><ph name="BEGIN_LINK" />מידע נוסף<ph name="END_LINK" /> על המצב האנונימי</translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">סגול סיגלית</translation> <translation id="6786747875388722282">תוספים</translation> @@ -1773,7 +1773,7 @@ <translation id="7210863904660874423"><ph name="HOST_NAME" /> לא פועל בהתאם לתקני האבטחה.</translation> <translation id="7210993021468939304">קיימת פעילות של Linux בתוך המאגר וניתן להתקין ולהפעיל אפליקציות של Linux בתוך המאגר</translation> <translation id="721197778055552897"><ph name="BEGIN_LINK" />מידע נוסף<ph name="END_LINK" /> בנושא זה.</translation> -<translation id="7215025035562547931">משקיעים כמה דקות וחושבים על הדיוק</translation> +<translation id="7215025035562547931">משקיעים כמה דקות ובודקים: האם המידע מדויק?</translation> <translation id="7217745192097460130">רוצה להשתמש ב-Touch ID כדי לאמת ולהשלים את הרכישה?</translation> <translation id="7219179957768738017">החיבור משתמש ב-<ph name="SSL_VERSION" />.</translation> <translation id="7220786058474068424">המערכת מעבדת את התשלום</translation> @@ -2109,11 +2109,11 @@ <translation id="8307888238279532626">את האפליקציות המותקנות ואת תדירות השימוש בהן.</translation> <translation id="831207732689920588">הדף הזה חשוד (סומן על-ידי Chrome).</translation> <translation id="831997045666694187">ערב</translation> -<translation id="8328484624016508118">לאחר סגירת כל הכרטיסיות במצב אנונימי, יימחקו בדפדפן Chrome: +<translation id="8328484624016508118">אחרי שסוגרים את כל הכרטיסיות במצב אנונימי, יימחקו בדפדפן Chrome: <ph name="BEGIN_LIST" /> <ph name="LIST_ITEM" />פעילות הגלישה מהמכשיר הזה<ph name="END_LIST_ITEM" /> <ph name="LIST_ITEM" />היסטוריית החיפושים שלך מהמכשיר הזה<ph name="END_LIST_ITEM" /> - <ph name="LIST_ITEM" />מידע שהוזן בטפסים<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />המידע שהוזן בטפסים<ph name="END_LIST_ITEM" /> <ph name="END_LIST" /></translation> <translation id="8332188693563227489">אין גישה אל <ph name="HOST_NAME" /></translation> <translation id="833262891116910667">הדגשה</translation>
diff --git a/components/strings/components_strings_kk.xtb b/components/strings/components_strings_kk.xtb index a6992ec..20cee60 100644 --- a/components/strings/components_strings_kk.xtb +++ b/components/strings/components_strings_kk.xtb
@@ -272,7 +272,7 @@ <translation id="1838374766361614909">Іздеуді тазарту</translation> <translation id="1839551713262164453">Қателерге байланысты саясат мәндері тексерілмеді</translation> <translation id="1842969606798536927">Төлем</translation> -<translation id="1856713167556118146">Инкогнито режимінде орындалмайтындар:</translation> +<translation id="1856713167556118146">Инкогнито режимінде орындалмайды</translation> <translation id="1871208020102129563">Прокси .pac сценарий URL мекенжайын емес, бекітілген прокси серверлерін пайдалануға орнатылған.</translation> <translation id="1871284979644508959">Міндетті өріс</translation> <translation id="1875512691959384712">Google Forms</translation> @@ -1020,7 +1020,7 @@ <translation id="4465818729556336129">Бұл құжат құпия және әкімші оны басып шығармауға кеңес береді.</translation> <translation id="4476953670630786061">Бұл үлгі қорғалмаған. Автотолтыру өшірілді.</translation> <translation id="4477350412780666475">Келесі аудиотрек</translation> -<translation id="4481251927743463293">Инкогнито режимінде орындалатындар:</translation> +<translation id="4481251927743463293">Инкогнито режимінде орындалады</translation> <translation id="4481394504112738036">Құпия файл</translation> <translation id="4482953324121162758">Бұл сайт аударылмайды.</translation> <translation id="4490717597759821841">A7</translation> @@ -1121,17 +1121,17 @@ <translation id="4819347708020428563">Аннотацияларды әдепкі көріністе өзгерту керек пе?</translation> <translation id="4825496307559726072"><ph name="CREATE_GOOGLE_SHEET_FOCUSED_FRIENDLY_MATCH_TEXT" />, жаңа Google парағын жылдам жасау үшін Tab, содан кейін Enter пернесін басыңыз.</translation> <translation id="4825507807291741242">Қуатты</translation> -<translation id="4827402517081186284">Инкогнито режимі сізді интернетте көрінбейтін етпейді: +<translation id="4827402517081186284">Инкогнито режимі интернеттегі іс-әрекетіңізді жасырмайды: <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />сайттар қашан кіргеніңізді біледі;<ph name="END_LIST_ITEM" /> - <ph name="LIST_ITEM" />қызметкерлер немесе мектептер браузерді қолдану мәліметін қарай алады;<ph name="END_LIST_ITEM" /> - <ph name="LIST_ITEM" />интернет провайдерлері интернет трафигін бақылай алады.<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />Сайттар қашан кіргеніңізді біледі.<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />Қызметкерлер немесе мектептер браузерді қолдану мәліметін қарай алады.<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />Интернет провайдерлері трафикті бақылай алады.<ph name="END_LIST_ITEM" /> <ph name="END_LIST" /></translation> <translation id="4838327282952368871">Арманшыл</translation> <translation id="484462545196658690">Авто</translation> <translation id="4850886885716139402">Көрініс</translation> <translation id="485316830061041779">неміс</translation> -<translation id="4853901935952445031">2022 жылдың ақпанынан кейін бұл сайтта U2F API қолдауы тоқтатылады. Егер сіз осы сайттың иесі болсаңыз, Web Authentication API-ды пайдалану үшін оны ауыстыруыңыз тиіс.</translation> +<translation id="4853901935952445031">2022 жылдың ақпанынан кейін бұл сайтта U2F API қолдауы тоқтатылады. Егер осы сайттың иесі болсаңыз, Web Authentication API-ға көшуіңіз тиіс.</translation> <translation id="4854362297993841467">Бұл жеткізу әдісі қолжетімді емес. Басқа әдісті қолданып көріңіз.</translation> <translation id="4854853140771946034">Google Keep-те жылдам жаңа ескертпе жасау</translation> <translation id="4876188919622883022">Қарапайым көрініс</translation> @@ -2105,11 +2105,11 @@ <translation id="8307888238279532626">Орнатылған қолданбалар және олардың пайдаланылу жиілігі</translation> <translation id="831207732689920588">Бұл бет күдікті (Chrome белгілеген).</translation> <translation id="831997045666694187">Кеш</translation> -<translation id="8328484624016508118">Барлық инкогнито қойындылары жабылғанда, Chrome келесілерді жояды: +<translation id="8328484624016508118">Барлық инкогнито қойындыcы жабылғанда, Chrome келесілерді жояды: <ph name="BEGIN_LIST" /> <ph name="LIST_ITEM" />осы құрылғыдағы браузерді қолдану мәліметі;<ph name="END_LIST_ITEM" /> <ph name="LIST_ITEM" />осы құрылғыдағы іздеу тарихы;<ph name="END_LIST_ITEM" /> - <ph name="LIST_ITEM" />үлгілерге енгізілген ақпараттар.<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />үлгілерге енгізілген ақпарат.<ph name="END_LIST_ITEM" /> <ph name="END_LIST" /></translation> <translation id="8332188693563227489"><ph name="HOST_NAME" /> сайтына кіруге тыйым салынған</translation> <translation id="833262891116910667">Бөлектеу</translation>
diff --git a/components/strings/components_strings_mr.xtb b/components/strings/components_strings_mr.xtb index 4c705da..e2d37529 100644 --- a/components/strings/components_strings_mr.xtb +++ b/components/strings/components_strings_mr.xtb
@@ -272,6 +272,7 @@ <translation id="1838374766361614909">शोध साफ करा</translation> <translation id="1839551713262164453">धोरण मूल्यांची वैधता एररसह अयशस्वी झाली आहे</translation> <translation id="1842969606798536927">पेमेंट करा</translation> +<translation id="1856713167556118146">गुप्त मोड काय करत नाही</translation> <translation id="1871208020102129563">प्रॉक्सी निश्चित प्रॉक्सी सर्व्हर वापरण्यास सेट करण्यात आले आहे, .pac स्क्रिप्ट URL नव्हे.</translation> <translation id="1871284979644508959">या जागा भरणे आवश्यक</translation> <translation id="1875512691959384712">Google Forms</translation> @@ -1018,6 +1019,7 @@ <translation id="4465818729556336129">हा दस्तऐवज गोपनीय आहे आणि तुमच्या अॅडमिनिस्ट्रेटरने तो प्रिंट न करण्याचा सल्ला दिला आहे.</translation> <translation id="4476953670630786061">हा फॉर्म सुरक्षित नाही. ऑटोफिल बंद केले आहे.</translation> <translation id="4477350412780666475">पुढील ट्रॅक</translation> +<translation id="4481251927743463293">गुप्त मोड काय करते</translation> <translation id="4481394504112738036">गोपनीय फाइल</translation> <translation id="4482953324121162758">या साइटचे भाषांतर केले जाणार नाही.</translation> <translation id="4490717597759821841">A7</translation> @@ -1118,10 +1120,17 @@ <translation id="4819347708020428563">भाष्ये डीफॉल्ट व्ह्यूमध्ये संपादित करायची आहेत का?</translation> <translation id="4825496307559726072"><ph name="CREATE_GOOGLE_SHEET_FOCUSED_FRIENDLY_MATCH_TEXT" />, नवीन Google शीट झटपट तयार करण्यासाठी टॅब आणि त्यानंतर एंटर दाबा</translation> <translation id="4825507807291741242">प्रभावी</translation> +<translation id="4827402517081186284">गुप्त मोड तुम्हाला ऑनलाइन अदृश्य करत नाही: + <ph name="BEGIN_LIST" /> + <ph name="LIST_ITEM" />तुम्ही साइटना भेट दिल्यास, त्यांना समजते<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />नियोक्ते किंवा शाळा ब्राउझिंग अॅक्टिव्हिटी ट्रॅक करू शकतात<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />इंटरनेट सेवा पुरवठादार वेब ट्रॅफिकचे निरीक्षण करू शकतात<ph name="END_LIST_ITEM" /> + <ph name="END_LIST" /></translation> <translation id="4838327282952368871">स्वप्नवत</translation> <translation id="484462545196658690">ऑटो</translation> <translation id="4850886885716139402">पहा</translation> <translation id="485316830061041779">जर्मन</translation> +<translation id="4853901935952445031">ही साइट फेब्रुवारी २०२२ नंतर U2F API वापरू शकणार नाही. तुम्ही या साइटचे मालक असल्यास, तुम्ही Web Authentication API वापरण्यासाठी ती बदलणे आवश्यक आहे.</translation> <translation id="4854362297993841467">ही वितरण पद्धत उपलब्ध नाही. वेगळी पद्धत वापरून पहा.</translation> <translation id="4854853140771946034">Google Keep मध्ये नवीन टीप झटपट तयार करा</translation> <translation id="4876188919622883022">सिंप्लिफाइड व्ह्यू</translation> @@ -1645,6 +1654,7 @@ <translation id="6757797048963528358">तुमचे डिव्हाइस निष्क्रीय झाले.</translation> <translation id="6767985426384634228">पत्ता अपडेट करायचा आहे का?</translation> <translation id="6768213884286397650">Hagaki (Postcard)</translation> +<translation id="6774185088257932239">गुप्त मोडविषयी <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" /></translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">जांभळा</translation> <translation id="6786747875388722282">विस्तार</translation> @@ -1692,6 +1702,7 @@ <translation id="6965382102122355670">ठीक आहे</translation> <translation id="6965978654500191972">डिव्हाइस</translation> <translation id="696703987787944103">पर्सेप्चुअल</translation> +<translation id="6968269510885595029">तुमची सुरक्षा की वापरा</translation> <translation id="6970216967273061347">जिल्हा</translation> <translation id="6971439137020188025">Slides मध्ये नवीन Google प्रेझेंटेशन झटपट तयार करा</translation> <translation id="6972629891077993081">HID डिव्हाइस</translation> @@ -1757,6 +1768,7 @@ <translation id="7210863904660874423"><ph name="HOST_NAME" /> नी सुरक्षितता मानकांचे पालन केले नाही.</translation> <translation id="7210993021468939304">कंटेनरमधील Linux अॅक्टिव्हिटी आणि कंटेनरमध्ये Linux अॅप्स इंस्टॉल आणि रन करू शकते</translation> <translation id="721197778055552897">या समस्येबद्दल <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" />.</translation> +<translation id="7215025035562547931">अचूकतेमध्ये सुधारणा करण्यासाठी काही वेळ द्या</translation> <translation id="7217745192097460130">तुमची खरेदी पडताळण्यासाठी आणि पूर्ण करण्यासाठी टच आयडी वापरायचा का?</translation> <translation id="7219179957768738017">कनेक्शन <ph name="SSL_VERSION" /> वापरते.</translation> <translation id="7220786058474068424">प्रक्रिया करत आहे</translation> @@ -2092,6 +2104,12 @@ <translation id="8307888238279532626">इंस्टॉल केलेली अॅप्स आणि ती किती वेळा वापरली जातात</translation> <translation id="831207732689920588">हे पेज संशयास्पद आहे (Chrome ने फ्लॅग केलेले).</translation> <translation id="831997045666694187">संध्याकाळी</translation> +<translation id="8328484624016508118">सर्व गुप्त टॅब बंद केल्यानंतर, Chrome हे साफ करते: + <ph name="BEGIN_LIST" /> + <ph name="LIST_ITEM" />या डिव्हाइसवरून तुमची ब्राउझिंग अॅक्टिव्हिटी<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />या डिव्हाइसवरून तुमचा शोध इतिहास<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />फॉर्ममध्ये एंटर केलेली माहिती<ph name="END_LIST_ITEM" /> + <ph name="END_LIST" /></translation> <translation id="8332188693563227489"><ph name="HOST_NAME" /> चा ॲक्सेस नाकारला</translation> <translation id="833262891116910667">हायलाइट</translation> <translation id="8339163506404995330"><ph name="LANGUAGE" />मधील पेज भाषांतरीत केले जाणार नाही</translation>
diff --git a/components/strings/components_strings_ne.xtb b/components/strings/components_strings_ne.xtb index 9130f43..5d909bf 100644 --- a/components/strings/components_strings_ne.xtb +++ b/components/strings/components_strings_ne.xtb
@@ -990,6 +990,7 @@ <translation id="4358461427845829800">भुक्तानी विधिहरू व्यवस्थित गर्नुहोस्...</translation> <translation id="4359160567981085931">तपाईंले भर्खरै कुनै भ्रामक साइटमा आफ्नो पासवर्ड प्रविष्टि गर्नुभएको छ। Chrome ले मद्दत गर्न सक्छ। आफ्नो पासवर्ड परिवर्तन गर्न र आफ्नो खाता जोखिममा हुन सक्छ भनेर Google लाई सूचित गर्न खाता सेभ गर्नुहोस् नामक विकल्पमा क्लिक गर्नुहोस्।</translation> <translation id="4367563149485757821">Number-12 (Envelope)</translation> +<translation id="437040971055499437">सुरक्षासम्बन्धी घटना हुँदा</translation> <translation id="437058704415269440">खाताको मौज्दात रकम</translation> <translation id="4372516964750095882">Fanfold-Us</translation> <translation id="4372948949327679948">अपेक्षित <ph name="VALUE_TYPE" /> मूल्य।</translation> @@ -1399,6 +1400,7 @@ <translation id="5803412860119678065">तपाईं आफ्नो <ph name="CARD_DETAIL" /> सम्बन्धी जानकारी भर्न चाहनुहुन्छ?</translation> <translation id="5804241973901381774">अनुमतिहरू</translation> <translation id="5810442152076338065">तपाईँको <ph name="DOMAIN" />सँगको जडान पुरानो साइफर सुट प्रयोग गरेर इन्क्रिप्ट गरिएको छ।</translation> +<translation id="5812947184178430888">Chrome ले सुरक्षासम्बन्धी घटनाहरूका बारेमा रिपोर्ट गर्दा ती घटनासँग सम्बन्धित डेटा तपाईंका एड्मिनलाई पठाइन्छ। यो डेटाअन्तर्गत तपाईंले Chrome मा खोल्नुभएका पेजका URL, फाइलका नाम वा मेटाडेटा तथा तपाईंले वेबमा आधारित एपहरू, आफ्नो डिभाइस र Chrome मा साइन इन गर्न प्रयोग गर्ने युजरनेम समावेश हुन सक्छन्।</translation> <translation id="5813119285467412249">थप्ने कार्य &पुन: गर्नुहोस्</translation> <translation id="5817918615728894473">जोडा बनाउनुहोस्</translation> <translation id="5824687817967109979">{NUM_CARDS,plural, =1{तपाईंले भुक्तानी गर्दा यो कार्डबाट पैसा काटिने छ तर यसको वास्तविक नम्बर भने यो साइटसँग आदान प्रदान गरिने छैन। अतिरिक्त सुरक्षाका लागि एउटा अस्थायी CVC सिर्जना गरिने छ।}other{तपाईंले भुक्तानी गर्दा तपाईंले चयन गर्नुभएको कार्डबाट पैसा काटिने छ तर यसको वास्तविक नम्बर भने यो साइटसँग आदान प्रदान गरिने छैन। अतिरिक्त सुरक्षाका लागि एउटा अस्थायी CVC सिर्जना गरिने छ।}}</translation>
diff --git a/components/strings/components_strings_no.xtb b/components/strings/components_strings_no.xtb index 38806c6..8b9e813 100644 --- a/components/strings/components_strings_no.xtb +++ b/components/strings/components_strings_no.xtb
@@ -1124,9 +1124,9 @@ <translation id="4825507807291741242">Kraftfull</translation> <translation id="4827402517081186284">Inkognito gjør deg ikke usynlig på nettet: <ph name="BEGIN_LIST" /> - <ph name="LIST_ITEM" />Nettsteder vet når du besøker dem<ph name="END_LIST_ITEM" /> - <ph name="LIST_ITEM" />Arbeidsgivere og skoler kan spore nettleseraktivitet<ph name="END_LIST_ITEM" /> - <ph name="LIST_ITEM" />Internettleverandører kan overvåke nettrafikk<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />Nettsteder vet når du besøker dem.<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />Arbeidsgivere og skoler kan spore nettleseraktivitet.<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />Internettleverandører kan overvåke nettrafikk.<ph name="END_LIST_ITEM" /> <ph name="END_LIST" /></translation> <translation id="4838327282952368871">Drømmende</translation> <translation id="484462545196658690">Auto</translation>
diff --git a/components/strings/components_strings_pa.xtb b/components/strings/components_strings_pa.xtb index f9e2926..79c2663 100644 --- a/components/strings/components_strings_pa.xtb +++ b/components/strings/components_strings_pa.xtb
@@ -268,6 +268,7 @@ <translation id="1838374766361614909">ਖੋਜ ਹਟਾਓ</translation> <translation id="1839551713262164453">ਨੀਤੀ ਮੁੱਲਾਂ ਦਾ ਪ੍ਰਮਾਣੀਕਰਨ ਗੜਬੜਾਂ ਦੇ ਕਾਰਨ ਅਸਫਲ ਰਿਹਾ</translation> <translation id="1842969606798536927">ਭੁਗਤਾਨ ਕਰੋ</translation> +<translation id="1856713167556118146">ਇਨਕੋਗਨਿਟੋ ਮੋਡ ਕੀ ਨਹੀਂ ਕਰਦਾ ਹੈ</translation> <translation id="1871208020102129563">ਪ੍ਰੌਕਸੀ ਸਥਿਰ ਪ੍ਰੌਕਸੀ ਸਰਵਰ ਵਰਤਣ ਲਈ ਸੈੱਟ ਹੈ, ਇੱਕ .pac ਸਕ੍ਰਿਪਟ URL ਨਹੀਂ।</translation> <translation id="1871284979644508959">ਲੋੜੀਂਦਾ ਖੇਤਰ</translation> <translation id="1875512691959384712">Google Forms</translation> @@ -1007,6 +1008,7 @@ <translation id="4465818729556336129">ਇਹ ਦਸਤਾਵੇਜ਼ ਗੁਪਤ ਹੈ ਅਤੇ ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਨੇ ਇਸਨੂੰ ਪ੍ਰਿੰਟ ਕਰਨ ਦੀ ਸਲਾਹ ਨਹੀਂ ਦਿੱਤੀ।</translation> <translation id="4476953670630786061">ਇਹ ਫ਼ਾਰਮ ਸੁਰੱਖਿਅਤ ਨਹੀਂ ਹੈ। ਆਟੋਫਿਲ ਨੂੰ ਬੰਦ ਕੀਤਾ ਗਿਆ ਹੈ।</translation> <translation id="4477350412780666475">ਅਗਲਾ ਟਰੈਕ</translation> +<translation id="4481251927743463293">ਇਨਕੋਗਨਿਟੋ ਮੋਡ ਕੀ ਕਰਦਾ ਹੈ</translation> <translation id="4481394504112738036">ਗੁਪਤ ਫ਼ਾਈਲ</translation> <translation id="4482953324121162758">ਇਸ ਸਾਈਟ ਦਾ ਅਨੁਵਾਦ ਨਹੀਂ ਕੀਤਾ ਜਾਵੇਗਾ।</translation> <translation id="4490717597759821841">A7</translation> @@ -1107,10 +1109,17 @@ <translation id="4819347708020428563">ਕੀ ਪੂਰਵ-ਨਿਰਧਾਰਤ ਦ੍ਰਿਸ਼ ਵਿੱਚ ਐਨੋਟੇਸ਼ਨਾਂ ਦਾ ਸੰਪਾਦਨ ਕਰਨਾ ਹੈ?</translation> <translation id="4825496307559726072"><ph name="CREATE_GOOGLE_SHEET_FOCUSED_FRIENDLY_MATCH_TEXT" />, ਤੇਜ਼ੀ ਨਾਲ ਨਵੀਂ Google ਸ਼ੀਟ ਬਣਾਉਣ ਲਈ Tab ਦਬਾ ਕੇ ਫਿਰ Enter ਦਬਾਓ</translation> <translation id="4825507807291741242">ਸ਼ਕਤੀਸ਼ਾਲੀ</translation> +<translation id="4827402517081186284">ਇਨਕੋਗਨਿਟੋ ਮੋਡ ਤੁਹਾਨੂੰ ਆਨਲਾਈਨ ਅਦਿੱਖ ਨਹੀਂ ਬਣਾਉਂਦਾ: + <ph name="BEGIN_LIST" /> + <ph name="LIST_ITEM" />ਜਦੋਂ ਤੁਸੀਂ ਸਾਈਟਾਂ 'ਤੇ ਜਾਂਦੇ ਹੋ, ਤਾਂ ਉਨ੍ਹਾਂ ਨੂੰ ਇਸ ਬਾਰੇ ਪਤਾ ਲੱਗਦਾ ਹੈ<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />ਰੁਜ਼ਗਾਰਦਾਤੇ ਜਾਂ ਸਕੂਲ ਬ੍ਰਾਊਜ਼ਿੰਗ ਸਰਗਰਮੀ ਨੂੰ ਟਰੈਕ ਕਰ ਸਕਦੇ ਹਨ<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />ਇੰਟਰਨੈੱਟ ਸੇਵਾ ਪ੍ਰਦਾਨਕ ਵੈੱਬ ਟਰੈਫ਼ਿਕ ਨੂੰ ਮਾਨੀਟਰ ਕਰ ਸਕਦੇ ਹਨ<ph name="END_LIST_ITEM" /> + <ph name="END_LIST" /></translation> <translation id="4838327282952368871">ਸੁਪਨਮਈ</translation> <translation id="484462545196658690">ਸਵੈ</translation> <translation id="4850886885716139402">ਦੇਖੋ</translation> <translation id="485316830061041779">ਜਰਮਨ</translation> +<translation id="4853901935952445031">ਇਹ ਸਾਈਟ ਫ਼ਰਵਰੀ 2022 ਤੋਂ ਬਾਅਦ U2F API ਨੂੰ ਵਰਤ ਨਹੀਂ ਪਾਏਗੀ। ਜੇ ਤੁਸੀਂ ਇਸ ਸਾਈਟ ਦੇ ਮਾਲਕ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਇਸ ਨੂੰ ਵੈੱਬ ਪ੍ਰਮਾਣੀਕਰਨ API ਵਰਤਣ ਦੇ ਯੋਗ ਬਣਾਉਣ ਲਈ ਬਦਲਣਾ ਚਾਹੀਦਾ ਹੈ।</translation> <translation id="4854362297993841467">ਇਹ ਅਦਾਇਗੀ ਵਿਧੀ ਉਪਲਬਧ ਨਹੀਂ ਹੈ। ਕੋਈ ਵੱਖਰੀ ਵਿਧੀ ਅਜ਼ਮਾਓ।</translation> <translation id="4854853140771946034">Google Keep ਵਿੱਚ ਤੇਜ਼ੀ ਨਾਲ ਨਵਾਂ ਨੋਟ-ਕਥਨ ਬਣਾਓ</translation> <translation id="4876188919622883022">ਸਰਲੀਕਿਰਤ ਦ੍ਰਿਸ਼</translation> @@ -1632,6 +1641,7 @@ <translation id="6757797048963528358">ਤੁਹਾਡੀ ਡੀਵਾਈਸ ਸਲੀਪ ਵਿੱਚ ਚਲੀ ਗਈ।</translation> <translation id="6767985426384634228">ਕੀ ਪਤਾ ਅੱਪਡੇਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?</translation> <translation id="6768213884286397650">Hagaki (ਪੋਸਟਕਾਰਡ)</translation> +<translation id="6774185088257932239">ਇਨਕੋਗਨਿਟੋ ਬਾਰੇ <ph name="BEGIN_LINK" />ਹੋਰ ਜਾਣੋ<ph name="END_LINK" /></translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">ਬੈਂਗਣੀ</translation> <translation id="6786747875388722282">ਐਕਸਟੈਂਸ਼ਨਾਂ</translation> @@ -1679,6 +1689,7 @@ <translation id="6965382102122355670">ਠੀਕ</translation> <translation id="6965978654500191972">ਡੀਵਾਈਸ</translation> <translation id="696703987787944103">ਉਲਟ ਰੰਗੀ</translation> +<translation id="6968269510885595029">ਆਪਣੀ ਸੁਰੱਖਿਆ ਕੁੰਜੀ ਵਰਤੋ</translation> <translation id="6970216967273061347">ਜ਼ਿਲਾ</translation> <translation id="6971439137020188025">Slides ਵਿੱਚ ਤੇਜ਼ੀ ਨਾਲ ਨਵੀਂ Google ਪੇਸ਼ਕਾਰੀ ਬਣਾਓ</translation> <translation id="6972629891077993081">HID ਡੀਵਾਈਸ</translation> @@ -1744,6 +1755,7 @@ <translation id="7210863904660874423"><ph name="HOST_NAME" /> ਸੁਰੱਖਿਆ ਪੈਮਾਨਿਆਂ ਦੀ ਪਾਲਣਾ ਨਹੀਂ ਕਰਦਾ ਹੈ।</translation> <translation id="7210993021468939304">ਕੰਟੇਨਰ ਵਿੱਚ Linux ਸਰਗਰਮੀ, ਅਤੇ ਕੰਨਟੇਨਰ ਵਿੱਚ Linux ਐਪਾਂ ਨੂੰ ਸਥਾਪਤ ਕੀਤਾ ਅਤੇ ਚਲਾਇਆ ਜਾ ਸਕਦਾ ਹੈ</translation> <translation id="721197778055552897">ਇਸ ਸਮੱਸਿਆ ਬਾਰੇ <ph name="BEGIN_LINK" />ਹੋਰ ਜਾਣੋ<ph name="END_LINK" />।</translation> +<translation id="7215025035562547931">ਕੁਝ ਸਮਾਂ ਬਿਤਾ ਕੇ ਪੰਨੇ ਦੀ ਸਟੀਕਤਾ ਵੱਲ ਧਿਆਨ ਦਿਓ</translation> <translation id="7217745192097460130">ਕੀ ਤੁਸੀਂ ਆਪਣੀਆਂ ਖਰੀਦਾਂ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਪੂਰਾ ਕਰਨ ਲਈ ਸਪਰਸ਼ ਆਈਡੀ ਵਰਤਣਾ ਚਾਹੁੰਦੇ ਹੋ?</translation> <translation id="7219179957768738017">ਕਨੈਕਸ਼ਨ <ph name="SSL_VERSION" /> ਵਰਤਦਾ ਹੈ।</translation> <translation id="7220786058474068424">ਪ੍ਰਕਿਰਿਆ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ</translation> @@ -2079,6 +2091,12 @@ <translation id="8307888238279532626">ਸਥਾਪਤ ਐਪਾਂ ਅਤੇ ਐਪਾਂ ਵਰਤਣ ਦਾ ਸਮਾਂ</translation> <translation id="831207732689920588">ਇਹ ਪੰਨਾ ਸ਼ੱਕੀ ਹੈ (Chrome ਵੱਲੋਂ ਫਲੈਗ ਕੀਤਾ ਗਿਆ)।</translation> <translation id="831997045666694187">ਸ਼ਾਮ</translation> +<translation id="8328484624016508118">ਸਾਰੀਆਂ ਇਨਕੋਗਨਿਟੋ ਟੈਬਾਂ ਨੂੰ ਬੰਦ ਕਰਨ ਤੋਂ ਬਾਅਦ, Chrome ਇਨ੍ਹਾਂ ਚੀਜ਼ਾਂ ਨੂੰ ਕਲੀਅਰ ਕਰਦਾ ਹੈ: + <ph name="BEGIN_LIST" /> + <ph name="LIST_ITEM" />ਇਸ ਡੀਵਾਈਸ ਤੋਂ ਤੁਹਾਡੀ ਬ੍ਰਾਊਜ਼ਿੰਗ ਸਰਗਰਮੀ<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />ਇਸ ਡੀਵਾਈਸ ਤੋਂ ਤੁਹਾਡਾ ਖੋਜ ਇਤਿਹਾਸ<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />ਫ਼ਾਰਮਾਂ ਵਿੱਚ ਦਾਖਲ ਕੀਤੀ ਜਾਣਕਾਰੀ<ph name="END_LIST_ITEM" /> + <ph name="END_LIST" /></translation> <translation id="8332188693563227489"><ph name="HOST_NAME" /> 'ਤੇ ਪਹੁੰਚ ਨੂੰ ਇਨਕਾਰਿਆ ਗਿਆ ਸੀ</translation> <translation id="833262891116910667">ਉਜਾਗਰ ਕਰੋ</translation> <translation id="8339163506404995330"><ph name="LANGUAGE" /> ਭਾਸ਼ਾ ਵਾਲੇ ਪੰਨਿਆਂ ਦਾ ਅਨੁਵਾਦ ਨਹੀਂ ਕੀਤਾ ਜਾਵੇਗਾ</translation>
diff --git a/components/strings/components_strings_sq.xtb b/components/strings/components_strings_sq.xtb index 86fd181e..d81bbb2 100644 --- a/components/strings/components_strings_sq.xtb +++ b/components/strings/components_strings_sq.xtb
@@ -271,6 +271,7 @@ <translation id="1838374766361614909">Fshi kërkimin</translation> <translation id="1839551713262164453">Vërtetimi i vlerave të politikës ka dështuar me gabime</translation> <translation id="1842969606798536927">Paguaj</translation> +<translation id="1856713167556118146">Çfarë nuk bën modaliteti "I fshehtë"?</translation> <translation id="1871208020102129563">Përfaqësuesi është caktuar të përdorë serverë përfaqësues fiksë, jo një shkrim URL-je .pac.</translation> <translation id="1871284979644508959">Fushë e detyrueshme</translation> <translation id="1875512691959384712">Formularët e Google</translation> @@ -1017,6 +1018,7 @@ <translation id="4465818729556336129">Ky dokument është konfidencial dhe printimi nuk këshillohet nga administratori yt.</translation> <translation id="4476953670630786061">Ky formular nuk është i sigurt. Plotësimi automatik është çaktivizuar.</translation> <translation id="4477350412780666475">Kënga tjetër</translation> +<translation id="4481251927743463293">Çfarë bën modaliteti "I fshehtë"</translation> <translation id="4481394504112738036">Skedar konfidencial</translation> <translation id="4482953324121162758">Ky sajt nuk do të përkthehet.</translation> <translation id="4490717597759821841">A7</translation> @@ -1117,10 +1119,17 @@ <translation id="4819347708020428563">Të redaktohen shënimet në pamjen e parazgjedhur?</translation> <translation id="4825496307559726072"><ph name="CREATE_GOOGLE_SHEET_FOCUSED_FRIENDLY_MATCH_TEXT" />, shtyp Tab pastaj Enter për të krijuar shpejt një "Fletë të re të Google</translation> <translation id="4825507807291741242">I fuqishëm</translation> +<translation id="4827402517081186284">Modaliteti "I fshehtë" nuk të bën të padukshëm në linjë: + <ph name="BEGIN_LIST" /> + <ph name="LIST_ITEM" />Sajtet e dinë kur i viziton ato<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />Punëdhënësit ose shkollat mund të monitorojnë aktivitetin e shfletimit<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />Ofruesit e shërbimit të internetit mund të monitorojnë trafikun e uebit<ph name="END_LIST_ITEM" /> + <ph name="END_LIST" /></translation> <translation id="4838327282952368871">Si në ëndërr</translation> <translation id="484462545196658690">Automatike</translation> <translation id="4850886885716139402">Pamja</translation> <translation id="485316830061041779">Gjermanisht</translation> +<translation id="4853901935952445031">Ky sajt nuk do të mund të përdorë U2F API pas shkurtit 2022. Nëse je zotëruesi i këtij sajti, duhet ta ndryshosh atë për të përdorur Web Authentication API.</translation> <translation id="4854362297993841467">Kjo mënyrë dorëzimi nuk ofrohet. Provo një mënyrë tjetër.</translation> <translation id="4854853140771946034">Krijo shpejt një shënim të ri në Google Keep</translation> <translation id="4876188919622883022">Pamja e thjeshtuar</translation> @@ -1643,6 +1652,7 @@ <translation id="6757797048963528358">Pajisja jote kaloi në gjumë.</translation> <translation id="6767985426384634228">Të përditësohet adresa?</translation> <translation id="6768213884286397650">Hagaki (Kartolinë)</translation> +<translation id="6774185088257932239"><ph name="BEGIN_LINK" />Mëso më shumë<ph name="END_LINK" /> rreth modalitetit "Të fshehtë"</translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">Vjollcë</translation> <translation id="6786747875388722282">Shtesat</translation> @@ -1690,6 +1700,7 @@ <translation id="6965382102122355670">Në rregull</translation> <translation id="6965978654500191972">Pajisja</translation> <translation id="696703987787944103">Perceptues</translation> +<translation id="6968269510885595029">Përdor "Çelësin e sigurisë"</translation> <translation id="6970216967273061347">Distrikti</translation> <translation id="6971439137020188025">Krijo shpejt një prezantim të ri të Google në Slides</translation> <translation id="6972629891077993081">Pajisjet HID</translation> @@ -1755,6 +1766,7 @@ <translation id="7210863904660874423"><ph name="HOST_NAME" /> nuk i respekton standardet e sigurisë.</translation> <translation id="7210993021468939304">Aktiviteti i Linux brenda kontejnerit dhe mund të instalojë dhe të ekzekutojë aplikacione të Linux brenda kontejnerit</translation> <translation id="721197778055552897"><ph name="BEGIN_LINK" />Mëso më shumë<ph name="END_LINK" /> rreth këtij problemi.</translation> +<translation id="7215025035562547931">Gjej një moment për të marrë në konsideratë saktësinë</translation> <translation id="7217745192097460130">Dëshiron të përdorësh Touch ID për të verifikuar dhe përfunduar blerjen?</translation> <translation id="7219179957768738017">Lidhja përdor <ph name="SSL_VERSION" />.</translation> <translation id="7220786058474068424">Po përpunohet</translation> @@ -2090,6 +2102,12 @@ <translation id="8307888238279532626">Aplikacionet e instaluara dhe sa shpesh përdoren</translation> <translation id="831207732689920588">Kjo faqe është e dyshimtë (raportuar nga Chrome).</translation> <translation id="831997045666694187">Mbrëmje</translation> +<translation id="8328484624016508118">Pas mbylljes së të gjitha skedave të modalitetit "Të fshehtë", Chrome pastron: + <ph name="BEGIN_LIST" /> + <ph name="LIST_ITEM" />Aktivitetin tënd të shfletimit nga kjo pajisje<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />Historikun tënd të kërkimeve nga kjo pajisje<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />Informacionet e futura në formularë<ph name="END_LIST_ITEM" /> + <ph name="END_LIST" /></translation> <translation id="8332188693563227489">Qasja te <ph name="HOST_NAME" /> u refuzua</translation> <translation id="833262891116910667">Thekso</translation> <translation id="8339163506404995330">Faqet në <ph name="LANGUAGE" /> nuk do të përkthehen</translation>
diff --git a/components/strings/components_strings_ta.xtb b/components/strings/components_strings_ta.xtb index d5ac9c17..ebce23b8 100644 --- a/components/strings/components_strings_ta.xtb +++ b/components/strings/components_strings_ta.xtb
@@ -961,7 +961,7 @@ <translation id="4278390842282768270">அனுமதிக்கப்பட்டது</translation> <translation id="428639260510061158">{NUM_CARDS,plural, =1{இந்தக் கார்டு உங்கள் Google கணக்கில் சேமிக்கப்பட்டது}other{இந்தக் கார்டுகள் உங்கள் Google கணக்கில் சேமிக்கப்பட்டன}}</translation> <translation id="4287885627794386150">சோதனைக்குத் தகுதிபெற்றுள்ளது. ஆனால் செயலில் இல்லை</translation> -<translation id="4297502707443874121"><ph name="THUMBNAIL_PAGE" /> பக்கத்தின் சிறு படம்</translation> +<translation id="4297502707443874121"><ph name="THUMBNAIL_PAGE" /> பக்கத்தின் சிறுபடம்</translation> <translation id="42981349822642051">விரி</translation> <translation id="4300675098767811073">மல்டிப்பில் பஞ்ச் ரைட்</translation> <translation id="4302514097724775343">விளையாட டைனோசரைத் தட்டுங்கள்</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb index c74042f3d..5cdb6b1f 100644 --- a/components/strings/components_strings_te.xtb +++ b/components/strings/components_strings_te.xtb
@@ -274,6 +274,7 @@ <translation id="1838374766361614909">శోధనను తీసివేయి</translation> <translation id="1839551713262164453">విధాన విలువల క్రమబద్ధీకరణ ఎర్రర్లతో విఫలమైంది</translation> <translation id="1842969606798536927">చెల్లింపు</translation> +<translation id="1856713167556118146">అజ్ఞాత మోడ్ ఏమి చేయదు</translation> <translation id="1871208020102129563">.pac స్క్రిప్ట్ URLను కాకుండా, స్థిరమైన ప్రాక్సీ సర్వర్లను ఉపయోగించేలా ప్రాక్సీ సెట్ చేయబడింది.</translation> <translation id="1871284979644508959">అవసరమైన ఫీల్డ్</translation> <translation id="1875512691959384712">Google Forms</translation> @@ -1021,6 +1022,7 @@ <translation id="4465818729556336129">ఈ డాక్యుమెంట్ గోప్యమైనది, దీనిని ప్రింట్ చేయకుండా ఉంటే మంచిదని మీ అడ్మినిస్ట్రేటర్ సూచించారు.</translation> <translation id="4476953670630786061">ఈ ఫారమ్ సురక్షితమైనది కాదు. ఆటోఫిల్ ఆఫ్ చేయబడింది.</translation> <translation id="4477350412780666475">తర్వాతి ట్రాక్</translation> +<translation id="4481251927743463293">అజ్ఞాత మోడ్ ఏమి చేస్తుంది</translation> <translation id="4481394504112738036">గోప్యమైన ఫైల్</translation> <translation id="4482953324121162758">ఈ సైట్ అనువదించబడదు.</translation> <translation id="4490717597759821841">A7</translation> @@ -1121,10 +1123,17 @@ <translation id="4819347708020428563">అదనపు గమనికలను ఆటోమేటిక్ వీక్షణలో ఎడిట్ చేయాలనుకుంటున్నారా?</translation> <translation id="4825496307559726072"><ph name="CREATE_GOOGLE_SHEET_FOCUSED_FRIENDLY_MATCH_TEXT" />, కొత్త Google షీట్ను త్వరగా క్రియేట్ చేయడానికి Tabను నొక్కి, ఆపై Enterను నొక్కండి</translation> <translation id="4825507807291741242">శక్తివంతమైనది</translation> +<translation id="4827402517081186284">అజ్ఞాత మోడ్ను ఉపయోగిస్తున్నంత మాత్రాన మీరు ఆన్లైన్లో ఇతరులకు కనపడరని అర్ధం కాదు: + <ph name="BEGIN_LIST" /> + <ph name="LIST_ITEM" />మీరు సైట్లకు వెళ్లినప్పుడు వాటికి తెలుస్తుంది<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />యాజమాన్య సంస్థలు లేదా పాఠశాలలు బ్రౌజింగ్ యాక్టివిటీని ట్రాక్ చేయగలవు<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />ఇంటర్నెట్ సర్వీస్ ప్రొవైడర్లు వెబ్ ట్రాఫిక్ను మానిటర్ చేయగలవు<ph name="END_LIST_ITEM" /> + <ph name="END_LIST" /></translation> <translation id="4838327282952368871">స్వప్నం లాంటిది</translation> <translation id="484462545196658690">ఆటో</translation> <translation id="4850886885716139402">వీక్షణ</translation> <translation id="485316830061041779">జర్మన్</translation> +<translation id="4853901935952445031">ఫిబ్రవరి 2022 తర్వాత, ఈ సైట్ U2F APIను ఉపయోగించలేదు. ఈ సైట్ మీది అయితే, వెబ్ ప్రామాణీకరణ APIను ఉపయోగించడానికి మీరు దాని సెట్టింగ్ను మార్చాలి.</translation> <translation id="4854362297993841467">ఈ బట్వాడా పద్ధతి అందుబాటులో లేదు. వేరే పద్ధతిని ప్రయత్నించండి.</translation> <translation id="4854853140771946034">Google Keepలో త్వరగా కొత్త నోట్ను క్రియేట్ చేయండి</translation> <translation id="4876188919622883022">సరళీకృత వీక్షణ</translation> @@ -1647,6 +1656,7 @@ <translation id="6757797048963528358">మీ పరికరం నిద్రావస్థకు వెళ్లింది.</translation> <translation id="6767985426384634228">అడ్రస్ను అప్డేట్ చేయాలా?</translation> <translation id="6768213884286397650">హగకి (పోస్ట్కార్డ్)</translation> +<translation id="6774185088257932239">అజ్ఞాత మోడ్ గురించి <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /></translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">నీలి ఊదా రంగు</translation> <translation id="6786747875388722282">ఎక్స్టెన్షన్లు</translation> @@ -1694,6 +1704,7 @@ <translation id="6965382102122355670">సరే</translation> <translation id="6965978654500191972">పరికరం</translation> <translation id="696703987787944103">పర్సెప్చువల్</translation> +<translation id="6968269510885595029">మీ భద్రతా కీని ఉపయోగించండి</translation> <translation id="6970216967273061347">జిల్లా</translation> <translation id="6971439137020188025">Slidesలో త్వరగా కొత్త Google ప్రెజెంటేషన్ను క్రియేట్ చేయండి</translation> <translation id="6972629891077993081">HID పరికరాలు</translation> @@ -1759,6 +1770,7 @@ <translation id="7210863904660874423"><ph name="HOST_NAME" /> భద్రతా ప్రమాణాలకు కట్టుబడి లేదు.</translation> <translation id="7210993021468939304">కంటెయినర్ లోపల Linux యాక్టివిటీ, కంటెయినర్ లోపల Linux యాప్లను ఇన్స్టాల్ చేయవచ్చు</translation> <translation id="721197778055552897">ఈ సమస్య గురించి <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి <ph name="END_LINK" />.</translation> +<translation id="7215025035562547931">ఖచ్చితత్వాన్ని పరిశీలించడానికి కొంత సమయం కేటాయించండి</translation> <translation id="7217745192097460130">మీ కొనుగోలును వెరిఫై చేసి, పూర్తి చేయడానికి Touch IDని ఉపయోగించమంటారా?</translation> <translation id="7219179957768738017">కనెక్షన్ <ph name="SSL_VERSION" />ని ఉపయోగిస్తుంది.</translation> <translation id="7220786058474068424">ప్రాసెస్ చేస్తోంది</translation> @@ -2094,6 +2106,12 @@ <translation id="8307888238279532626">ఇన్స్టాల్ చేయబడిన యాప్లు అలాగే వాటిని ఎంత తరచుగా ఉపయోగించినది తెలిపే వివరాలు</translation> <translation id="831207732689920588">ఈ పేజీ అనుమానాస్పదమైనది (Chrome ద్వారా ఫ్లాగ్ చేయబడింది).</translation> <translation id="831997045666694187">సాయంత్రం</translation> +<translation id="8328484624016508118">అన్ని అజ్ఞాత ట్యాబ్లను మూసివేసిన తర్వాత, Chrome వీటిని క్లియర్ చేస్తుంది: + <ph name="BEGIN_LIST" /> + <ph name="LIST_ITEM" />ఈ పరికరం నుండి మీ బ్రౌజింగ్ యాక్టివిటీ<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />ఈ పరికరం నుండి మీ సెర్చ్ హిస్టరీ<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />ఫారమ్లలో ఎంటర్ చేయబడిన సమాచారం<ph name="END_LIST_ITEM" /> + <ph name="END_LIST" /></translation> <translation id="8332188693563227489"><ph name="HOST_NAME" />కి యాక్సెస్ నిరాకరించబడింది</translation> <translation id="833262891116910667">హైలైట్ చేస్తుంది</translation> <translation id="8339163506404995330"><ph name="LANGUAGE" />లో ఉన్న పేజీలు అనువదించబడవు</translation>
diff --git a/components/strings/components_strings_uk.xtb b/components/strings/components_strings_uk.xtb index dba8c9b9..772ac9b 100644 --- a/components/strings/components_strings_uk.xtb +++ b/components/strings/components_strings_uk.xtb
@@ -272,7 +272,7 @@ <translation id="1838374766361614909">Очистити поле пошуку</translation> <translation id="1839551713262164453">Не вдалося перевірити значення правила. Знайдено помилки</translation> <translation id="1842969606798536927">Оплатити</translation> -<translation id="1856713167556118146">Що недоступно в анонімному режимі</translation> +<translation id="1856713167556118146">Чого не забезпечує анонімний режим</translation> <translation id="1871208020102129563">Проксі-сервер налаштовано на використання фіксованих проксі-серверів, а не URL-адреси сценарію .pac.</translation> <translation id="1871284979644508959">Обов’язкове поле</translation> <translation id="1875512691959384712">Google Форми</translation> @@ -1021,7 +1021,7 @@ <translation id="4465818729556336129">Цей документ конфіденційний. Адміністратор рекомендує не роздруковувати його.</translation> <translation id="4476953670630786061">Ця форма незахищена. Автозаповнення вимкнено.</translation> <translation id="4477350412780666475">Наступна композиція</translation> -<translation id="4481251927743463293">Що доступно в анонімному режимі</translation> +<translation id="4481251927743463293">Що забезпечує анонімний режим</translation> <translation id="4481394504112738036">Конфіденційний файл</translation> <translation id="4482953324121162758">Цей сайт не перекладатиметься.</translation> <translation id="4490717597759821841">A7</translation> @@ -1122,7 +1122,7 @@ <translation id="4819347708020428563">Редагувати примітки в режимі перегляду за умовчанням?</translation> <translation id="4825496307559726072"><ph name="CREATE_GOOGLE_SHEET_FOCUSED_FRIENDLY_MATCH_TEXT" />; натисніть Tab, а потім – Enter, щоб швидко створити нову таблицю Google</translation> <translation id="4825507807291741242">Потужний</translation> -<translation id="4827402517081186284">В анонімному режимі ваші дії в Інтернеті на стають невидимими: +<translation id="4827402517081186284">В анонімному режимі ваші дії в Інтернеті не стають невидимими: <ph name="BEGIN_LIST" /> <ph name="LIST_ITEM" />коли ви відвідуєте веб-сайти, вони бачать це;<ph name="END_LIST_ITEM" /> <ph name="LIST_ITEM" />роботодавці та заклади освіти можуть відстежувати ваші дії у веб-переглядачі;<ph name="END_LIST_ITEM" /> @@ -1704,7 +1704,7 @@ <translation id="6965382102122355670">OK</translation> <translation id="6965978654500191972">Пристрій</translation> <translation id="696703987787944103">Перцептивна</translation> -<translation id="6968269510885595029">Скористайтеся ключем безпеки</translation> +<translation id="6968269510885595029">Використовувати ваш ключ безпеки</translation> <translation id="6970216967273061347">Округ</translation> <translation id="6971439137020188025">Швидко створюйте нові презентації в Google Презентаціях</translation> <translation id="6972629891077993081">Пристрої HID</translation> @@ -1770,7 +1770,7 @@ <translation id="7210863904660874423">Хост <ph name="HOST_NAME" /> не відповідає стандартам безпеки.</translation> <translation id="7210993021468939304">Активність Linux у межах контейнера. Може встановлювати та запускати додатки Linux у межах контейнера</translation> <translation id="721197778055552897"><ph name="BEGIN_LINK" />Докладніше<ph name="END_LINK" /> про цю проблему.</translation> -<translation id="7215025035562547931">Оцініть точність даних</translation> +<translation id="7215025035562547931">Оцінюйте наведену тут інформацію критично</translation> <translation id="7217745192097460130">Підтвердити й завершити покупку за допомогою Touch ID?</translation> <translation id="7219179957768738017">З'єднання використовує версію <ph name="SSL_VERSION" />.</translation> <translation id="7220786058474068424">Обробка</translation>
diff --git a/components/strings/components_strings_ur.xtb b/components/strings/components_strings_ur.xtb index 9549031..5608365 100644 --- a/components/strings/components_strings_ur.xtb +++ b/components/strings/components_strings_ur.xtb
@@ -272,6 +272,7 @@ <translation id="1838374766361614909">تلاش صاف کریں</translation> <translation id="1839551713262164453">پالیسی کی اقدار کی تصدیق خرابیوں کی وجہ سے ناکام ہو گئی</translation> <translation id="1842969606798536927">ادائیگی کریں</translation> +<translation id="1856713167556118146">پوشیدگی وضع کیا نہیں کرتی ہے</translation> <translation id="1871208020102129563">پراکسی ایک .pac اسکرپٹ URL نہیں بلکہ مقررہ پراکسی سرورز استعمال کرنے کیلئے سیٹ ہے۔</translation> <translation id="1871284979644508959">مطلوبہ فیلڈ</translation> <translation id="1875512691959384712">Google Forms</translation> @@ -1020,6 +1021,7 @@ <translation id="4465818729556336129">یہ دستاویز رازدارانہ ہے اور آپ کے منتظم کے ذریعہ پرنٹنگ کا مشورہ نہیں دیا گیا ہے۔</translation> <translation id="4476953670630786061">یہ فارم محفوظ نہیں ہے۔ آٹو فل کو آف کر دیا گیا ہے۔</translation> <translation id="4477350412780666475">اگلا ٹریک</translation> +<translation id="4481251927743463293">پوشیدگی وضع کیا کرتی ہے</translation> <translation id="4481394504112738036">رازدارانہ فائل</translation> <translation id="4482953324121162758">اس سائٹ کا ترجمہ نہیں کیا جائے گا۔</translation> <translation id="4490717597759821841">A7</translation> @@ -1120,10 +1122,17 @@ <translation id="4819347708020428563">ڈیفالٹ منظر میں تشریحات میں ترمیم کریں؟</translation> <translation id="4825496307559726072"><ph name="CREATE_GOOGLE_SHEET_FOCUSED_FRIENDLY_MATCH_TEXT" />، تیزی سے ایک نئی Google Sheet تخلیق کرنے کیلئے Tab، پھر Enter دبائیں</translation> <translation id="4825507807291741242">طاقتور</translation> +<translation id="4827402517081186284">پوشیدگی وضع آپ کو آن لائن غیر مرئی نہیں کرتی ہے: + <ph name="BEGIN_LIST" /> + <ph name="LIST_ITEM" />سائٹس کو معلوم ہوتا ہے کہ آپ کب انہیں ملاحظہ کرتے ہیں<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />آجر یا اسکول براؤزنگ کی سرگرمی کو ٹریک کر سکتے ہیں<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />انٹرنیٹ سروس پرووائیڈرز ویب ٹریفک کو مانیٹر کر سکتے ہیں<ph name="END_LIST_ITEM" /> + <ph name="END_LIST" /></translation> <translation id="4838327282952368871">خیالی</translation> <translation id="484462545196658690">خودکار</translation> <translation id="4850886885716139402">دیکھیں</translation> <translation id="485316830061041779">جرمن</translation> +<translation id="4853901935952445031">یہ سائٹ فروری 2022 کے بعد U2F API استعمال نہیں کر سکے گی۔ اگر آپ اس سائٹ کے مالک ہیں تو آپ کو ویب تصدیق کا API استعمال کرنے کیلئے اسے تبدیل کرنا چاہیے۔</translation> <translation id="4854362297993841467">ڈیلیوری کا یہ طریقہ دستیاب نہیں ہے۔ کوئی دوسرا طریقہ آزمائیں۔</translation> <translation id="4854853140771946034">Google Keep میں تیزی سے ایک نیا نوٹ تخلیق کریں</translation> <translation id="4876188919622883022">سادہ منظر</translation> @@ -1647,6 +1656,7 @@ <translation id="6757797048963528358">آپ کا آلہ سیلپ وضع میں چلا گیا۔</translation> <translation id="6767985426384634228">پتہ اپ ڈیٹ کریں؟</translation> <translation id="6768213884286397650">Hagaki (Postcard)</translation> +<translation id="6774185088257932239">پوشیدگی وضع کے بارے میں <ph name="BEGIN_LINK" />مزید جانیں<ph name="END_LINK" /></translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">وائلیٹ</translation> <translation id="6786747875388722282">توسیعات</translation> @@ -1694,6 +1704,7 @@ <translation id="6965382102122355670">ٹھیک ہے</translation> <translation id="6965978654500191972">آلہ</translation> <translation id="696703987787944103">ادراکی</translation> +<translation id="6968269510885595029">اپنی سیکیورٹی کلید کا استعمال کریں</translation> <translation id="6970216967273061347">ضلع</translation> <translation id="6971439137020188025">Slides میں تیزی سے ایک نئی Google پیشکش تخلیق کریں</translation> <translation id="6972629891077993081">HID آلات</translation> @@ -1759,6 +1770,7 @@ <translation id="7210863904660874423"><ph name="HOST_NAME" /> سیکیورٹی کے معیارات کی پابندی نہیں کرتا ہے۔</translation> <translation id="7210993021468939304">کنٹینر کے اندر Linux کی سرگرمی اور کنٹینر کے اندر Linux ایپ کو انسٹال کرکے چلا سکتا ہے</translation> <translation id="721197778055552897">اس مسئلہ کے بارے میں <ph name="BEGIN_LINK" />مزید جانیں<ph name="END_LINK" />۔</translation> +<translation id="7215025035562547931">درستگی پر غور کرنے کیلئے تھوڑا سا وقت نکالیں</translation> <translation id="7217745192097460130">اپنی خریداری کی توثیق اور اسے مکمل کرنے کے لئے Touch ID کا استعمال کریں؟</translation> <translation id="7219179957768738017">کنکشن <ph name="SSL_VERSION" /> کا استعمال کرتا ہے۔</translation> <translation id="7220786058474068424">کارروائی ہورہی ہے</translation> @@ -2094,6 +2106,12 @@ <translation id="8307888238279532626">ایپس انسٹال ہو گئی ہیں اور کتنی بار استعمال ہوتی ہیں</translation> <translation id="831207732689920588">یہ صفحہ مشتبہ ہے (Chrome کے ذریعے پرچم لگا ہوا)۔</translation> <translation id="831997045666694187">شام</translation> +<translation id="8328484624016508118">تمام پوشیدگی ٹیبز کو بند کرنے کے بعد، Chrome درج ذیل صاف کرتا ہے: + <ph name="BEGIN_LIST" /> + <ph name="LIST_ITEM" />اس آلہ سے آپ کی براؤزنگ کی سرگرمی<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />اس آلہ سے آپ کی تلاش کی سرگزشت<ph name="END_LIST_ITEM" /> + <ph name="LIST_ITEM" />فارمز میں درج کردہ معلومات<ph name="END_LIST_ITEM" /> + <ph name="END_LIST" /></translation> <translation id="8332188693563227489"><ph name="HOST_NAME" /> تک رسائی مسترد کر دی گئی</translation> <translation id="833262891116910667">ہائی لائٹ کریں</translation> <translation id="8339163506404995330"><ph name="LANGUAGE" /> کے صفحات کا ترجمہ نہیں کیا جائے گا</translation>
diff --git a/content/browser/child_process_task_port_provider_mac_unittest.cc b/content/browser/child_process_task_port_provider_mac_unittest.cc index f2ac607..991da902 100644 --- a/content/browser/child_process_task_port_provider_mac_unittest.cc +++ b/content/browser/child_process_task_port_provider_mac_unittest.cc
@@ -49,6 +49,7 @@ MOCK_METHOD1(BindReceiver, void(mojo::GenericPendingReceiver receiver)); MOCK_METHOD1(EnableSystemTracingService, void(mojo::PendingRemote<tracing::mojom::SystemTracingService>)); + MOCK_METHOD1(SetPseudonymizationSalt, void(uint32_t salt)); }; class ChildProcessTaskPortProviderTest : public testing::Test,
diff --git a/content/browser/font_access/font_enumeration_cache_win.cc b/content/browser/font_access/font_enumeration_cache_win.cc index 6f9edba..2fc8919 100644 --- a/content/browser/font_access/font_enumeration_cache_win.cc +++ b/content/browser/font_access/font_enumeration_cache_win.cc
@@ -99,12 +99,11 @@ std::vector<blink::FontEnumerationTable_FontMetadata>(); Microsoft::WRL::ComPtr<IDWriteFontFamily> family; - Microsoft::WRL::ComPtr<IDWriteLocalizedStrings> family_names; - HRESULT hr = collection->GetFontFamily(family_index, &family); if (FAILED(hr)) return family_result; + Microsoft::WRL::ComPtr<IDWriteLocalizedStrings> family_names; hr = family->GetFamilyNames(&family_names); if (FAILED(hr)) return family_result; @@ -114,12 +113,11 @@ if (!native_family_name) return family_result; - UINT32 font_count = family->GetFontCount(); - for (UINT32 font_index = 0; font_index < font_count; ++font_index) { + uint32_t font_count = family->GetFontCount(); + for (uint32_t font_index = 0; font_index < font_count; ++font_index) { BOOL exists = false; Microsoft::WRL::ComPtr<IDWriteFont> font; - { base::ScopedBlockingCall scoped_blocking_call( FROM_HERE, base::BlockingType::MAY_BLOCK); @@ -133,10 +131,6 @@ if (font->GetSimulations() != DWRITE_FONT_SIMULATIONS_NONE) continue; - Microsoft::WRL::ComPtr<IDWriteLocalizedStrings> postscript_name; - Microsoft::WRL::ComPtr<IDWriteLocalizedStrings> full_name; - Microsoft::WRL::ComPtr<IDWriteLocalizedStrings> style_name; - // DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_NAME and // DWRITE_INFORMATIONAL_STRING_FULL_NAME are only supported on Windows 7 // with KB2670838 (https://support.microsoft.com/en-us/kb/2670838) @@ -145,6 +139,7 @@ // this might not be worth the effort. // Extracting the postscript name. + Microsoft::WRL::ComPtr<IDWriteLocalizedStrings> postscript_name; { base::ScopedBlockingCall scoped_blocking_call( FROM_HERE, base::BlockingType::MAY_BLOCK); @@ -165,6 +160,7 @@ } // Extracting the full name. + Microsoft::WRL::ComPtr<IDWriteLocalizedStrings> full_name; { base::ScopedBlockingCall scoped_blocking_call( FROM_HERE, base::BlockingType::MAY_BLOCK); @@ -185,6 +181,7 @@ localized_full_name = native_postscript_name; // Extracting style name. + Microsoft::WRL::ComPtr<IDWriteLocalizedStrings> style_name; { base::ScopedBlockingCall scoped_blocking_call( FROM_HERE, base::BlockingType::MAY_BLOCK); @@ -310,7 +307,7 @@ std::string locale = locale_override_.value_or(base::i18n::GetConfiguredLocale()); - for (UINT32 family_index = 0; family_index < outstanding_family_results_; + for (uint32_t family_index = 0; family_index < outstanding_family_results_; ++family_index) { // Specify base::ThreadPolicy::MUST_USE_FOREGROUND because a priority // inversion was observed https://crbug.com/960263 for the enumeration
diff --git a/content/browser/loader/cross_origin_read_blocking_checker.cc b/content/browser/loader/cross_origin_read_blocking_checker.cc index 7be352b..8b20344 100644 --- a/content/browser/loader/cross_origin_read_blocking_checker.cc +++ b/content/browser/loader/cross_origin_read_blocking_checker.cc
@@ -100,8 +100,6 @@ base::OnceCallback<void(Result)> callback) : callback_(std::move(callback)) { DCHECK(!callback_.is_null()); - network::CrossOriginReadBlocking::LogAction( - network::CrossOriginReadBlocking::Action::kResponseStarted); corb_analyzer_ = std::make_unique<network::CrossOriginReadBlocking::ResponseAnalyzer>( @@ -134,12 +132,10 @@ } void CrossOriginReadBlockingChecker::OnAllowed() { - corb_analyzer_->LogAllowedResponse(); std::move(callback_).Run(Result::kAllowed); } void CrossOriginReadBlockingChecker::OnBlocked() { - corb_analyzer_->LogBlockedResponse(); std::move(callback_).Run(corb_analyzer_->ShouldReportBlockedResponse() ? Result::kBlocked_ShouldReport : Result::kBlocked_ShouldNotReport);
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc index 36a63aa..84e6f9c6 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -142,6 +142,7 @@ #include "content/common/content_constants_internal.h" #include "content/common/content_switches_internal.h" #include "content/common/in_process_child_thread_params.h" +#include "content/common/pseudonymization_salt.h" #include "content/common/service_worker/service_worker_utils.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/browser_or_resource_context.h" @@ -2415,6 +2416,9 @@ #endif void RenderProcessHostImpl::WriteIntoTrace(perfetto::TracedValue context) { + // TODO(https://crbug.com/1116471): Add support for writing typed events into + // untyped event contexts and merge the two overloaded methods (the one taking + // perfetto::TracedValue` and the one taking `perfetto::TracedProto<...>`). auto dict = std::move(context).WriteDictionary(); dict.Add("id", GetID()); dict.Add("process_lock", ChildProcessSecurityPolicyImpl::GetInstance() @@ -2436,8 +2440,11 @@ } // TODO(ssid): Consider moving this to ChildProcessLauncher proto field. - if (child_process_launcher_) - proto->set_child_process_id(child_process_launcher_->GetProcess().Pid()); + if (child_process_launcher_) { + const base::Process& process = child_process_launcher_->GetProcess(); + if (process.IsValid()) + proto->set_child_process_id(process.Pid()); + } } void RenderProcessHostImpl::RegisterMojoInterfaces() { @@ -3795,6 +3802,14 @@ #if BUILDFLAG(CLANG_PROFILING_INSIDE_SANDBOX) child_process_->SetProfilingFile(OpenProfilingFile()); #endif + + // Propagate the pseudonymization salt to all the child processes. + // + // TODO(dullweber, lukasza): Figure out if it is possible to reset the salt + // at a regular interval (on the order of hours?). The browser would need to + // be responsible for 1) deciding when the refresh happens and 2) pushing the + // updated salt to all the child processes. + child_process_->SetPseudonymizationSalt(GetPseudonymizationSalt()); } void RenderProcessHostImpl::OnChannelError() {
diff --git a/content/browser/renderer_host/render_process_host_impl.h b/content/browser/renderer_host/render_process_host_impl.h index 06c7617..7f3f0bc0 100644 --- a/content/browser/renderer_host/render_process_host_impl.h +++ b/content/browser/renderer_host/render_process_host_impl.h
@@ -290,6 +290,9 @@ void CleanupNetworkServicePluginExceptionsUponDestruction() override; std::string GetInfoForBrowserContextDestructionCrashReporting() override; void WriteIntoTrace(perfetto::TracedValue context) override; + void WriteIntoTrace( + perfetto::TracedProto<perfetto::protos::pbzero::RenderProcessHost> proto) + override; #if BUILDFLAG(CLANG_PROFILING_INSIDE_SANDBOX) void DumpProfilingData(base::OnceClosure callback) override; #endif @@ -316,8 +319,6 @@ child_process_activity_time_ = base::TimeTicks::Now(); } - void WriteIntoTrace( - perfetto::TracedProto<perfetto::protos::pbzero::RenderProcessHost> proto); // Return the set of previously stored frame tokens for a |new_routing_id|. // The frame tokens were stored on the IO thread via the
diff --git a/content/browser/webauth/authenticator_common.cc b/content/browser/webauth/authenticator_common.cc index c35af6a..5aa7a8a 100644 --- a/content/browser/webauth/authenticator_common.cc +++ b/content/browser/webauth/authenticator_common.cc
@@ -1045,7 +1045,7 @@ // If the request originates from CryptoToken or carries a valid // googleLegacyAppidSupport extension, a U2F/CTAP1 credential bound to an // AppID will be created. - absl::optional<std::string> u2f_credential_app_id_override = + const absl::optional<std::string> u2f_credential_app_id_override = MakeCredentialU2fAppIdOverride(caller_origin, options); if (u2f_credential_app_id_override) { ctap_make_credential_request_->rp.id = *u2f_credential_app_id_override; @@ -1084,7 +1084,8 @@ if (attestation == device::AttestationConveyancePreference:: kEnterpriseIfRPListedOnAuthenticator && GetWebAuthenticationDelegate()->ShouldPermitIndividualAttestation( - GetBrowserContext(), relying_party_id_)) { + GetBrowserContext(), + u2f_credential_app_id_override.value_or(relying_party_id_))) { attestation = device::AttestationConveyancePreference::kEnterpriseApprovedByBrowser; }
diff --git a/content/browser/webauth/authenticator_impl_unittest.cc b/content/browser/webauth/authenticator_impl_unittest.cc index 78432de..7b78bca 100644 --- a/content/browser/webauth/authenticator_impl_unittest.cc +++ b/content/browser/webauth/authenticator_impl_unittest.cc
@@ -1680,7 +1680,9 @@ bool ShouldPermitIndividualAttestation( content::BrowserContext* browser_context, const std::string& relying_party_id) override { - return permit_individual_attestation; + return permit_individual_attestation || + (permit_individual_attestation_for_rp_id.has_value() && + relying_party_id == *permit_individual_attestation_for_rp_id); } bool SupportsResidentKeys(RenderFrameHost*) override { @@ -1708,6 +1710,9 @@ // delegate. bool permit_individual_attestation = false; + // A specific RP ID for which individual attestation will be permitted. + absl::optional<std::string> permit_individual_attestation_for_rp_id; + // Indicates whether resident key operations should be permitted by the // delegate. bool supports_resident_keys = false; @@ -2027,7 +2032,6 @@ protected: TestAuthenticatorContentBrowserClient test_client_; - private: static const char* AttestationConveyancePreferenceToString( AttestationConveyancePreference v) { switch (v) { @@ -2507,6 +2511,46 @@ RunTestCases(kTests); } +TEST_F(AuthenticatorContentBrowserClientTest, + GoogleLegacyAppidSupportEnterpriseAttestation) { + // When the googleLegacyAppidSupport extension is used, individual attestation + // decisions should key off the AppId, not the RP ID. + constexpr char kGstaticAppId[] = + "https://www.gstatic.com/securitykey/origins.json"; + test_client_.GetTestWebAuthenticationDelegate() + ->permit_individual_attestation_for_rp_id = kGstaticAppId; + + const char kStandardCommonName[] = "U2F Attestation"; + const char kIndividualCommonName[] = "Individual Cert"; + virtual_device_factory_->mutable_state()->attestation_cert_common_name = + kStandardCommonName; + virtual_device_factory_->mutable_state() + ->individual_attestation_cert_common_name = kIndividualCommonName; + + NavigateAndCommit(GURL("https://accounts.google.com")); + + PublicKeyCredentialCreationOptionsPtr options = + GetTestPublicKeyCredentialCreationOptions(); + options->relying_party.id = "google.com"; + options->google_legacy_app_id_support = true; + options->attestation = ::device::AttestationConveyancePreference:: + kEnterpriseIfRPListedOnAuthenticator; + + auto result = AuthenticatorMakeCredential(std::move(options)); + ASSERT_EQ(result.status, AuthenticatorStatus::SUCCESS); + + const device::AuthenticatorData auth_data = + AuthDataFromMakeCredentialResponse(result.response); + absl::optional<Value> attestation_value = + Reader::Read(result.response->attestation_object); + ASSERT_TRUE(attestation_value); + ASSERT_TRUE(attestation_value->is_map()); + const auto& attestation = attestation_value->GetMap(); + + ExpectMapHasKeyWithStringValue(attestation, "fmt", "fido-u2f"); + ExpectCertificateContainingSubstring(attestation, kIndividualCommonName); +} + TEST_F(AuthenticatorContentBrowserClientTest, BlockedAttestation) { NavigateAndCommit(GURL("https://foo.example.com"));
diff --git a/content/browser/webid/federated_auth_request_impl.cc b/content/browser/webid/federated_auth_request_impl.cc index eb348d16..fb48572 100644 --- a/content/browser/webid/federated_auth_request_impl.cc +++ b/content/browser/webid/federated_auth_request_impl.cc
@@ -399,25 +399,19 @@ url::Origin::Create(provider_), origin(), account.sub)) { login_state = LoginState::kSignIn; } - account.login_state = login_state; } + idp_web_contents_ = CreateIdpWebContents(); // Auto signs in returning users if they have a single account and are // signing in. // TODO(yigu): Add additional controls for RP/IDP/User for this flow. // https://crbug.com/1236678. - if (prefer_auto_sign_in_ && accounts.size() == 1 && - accounts[0].login_state == LoginState::kSignIn) { - // TODO(yigu): Implement UI for users to cancel the auto sign in. - // https://crbug.com/1236678. - OnAccountSelected(accounts[0].sub); - return; - } - - idp_web_contents_ = CreateIdpWebContents(); + bool is_auto_sign_in = prefer_auto_sign_in_ && accounts.size() == 1 && + accounts[0].login_state == LoginState::kSignIn; request_dialog_controller_->ShowAccountsDialog( rp_web_contents, idp_web_contents_.get(), provider_, accounts, + is_auto_sign_in, base::BindOnce(&FederatedAuthRequestImpl::OnAccountSelected, weak_ptr_factory_.GetWeakPtr())); return;
diff --git a/content/browser/webid/federated_auth_request_impl_unittest.cc b/content/browser/webid/federated_auth_request_impl_unittest.cc index df67db0..3e7046b 100644 --- a/content/browser/webid/federated_auth_request_impl_unittest.cc +++ b/content/browser/webid/federated_auth_request_impl_unittest.cc
@@ -480,11 +480,13 @@ // even though the bit is set we may not exercise the AutoSignIn flow. // e.g. for sign up flow, multiple accounts, user opt-out etc. In this // case, it's up to the test to expect this mock function call. - EXPECT_CALL(*mock_dialog_controller_, ShowAccountsDialog(_, _, _, _, _)) + EXPECT_CALL(*mock_dialog_controller_, + ShowAccountsDialog(_, _, _, _, _, _)) .WillOnce(Invoke( [&](content::WebContents* rp_web_contents, content::WebContents* idp_web_contents, const GURL& idp_signin_url, AccountList accounts, + bool is_auto_sign_in, IdentityRequestDialogController::AccountSelectionCallback on_selected) { displayed_accounts_ = accounts; @@ -835,6 +837,7 @@ } TEST_F(BasicFederatedAuthRequestImplTest, AutoSignInForReturningUser) { + AccountList displayed_accounts; const auto& test_case = kSuccessfulMediatedAutoSignInTestCase; auto& auth_request = CreateAuthRequest(GURL(test_case.inputs.provider)); SetMockExpectations(test_case); @@ -852,17 +855,27 @@ HasSharingPermissionForAccount( url::Origin::Create(GURL(kIdpTestOrigin)), _, "1234")) .WillOnce(Return(true)); - // TODO(yigu): once the AutoSignIn UI is implemented we expect this call to - // happen once. - EXPECT_CALL(*mock_dialog_controller(), ShowAccountsDialog(_, _, _, _, _)) - .Times(0); + + EXPECT_CALL(*mock_dialog_controller(), ShowAccountsDialog(_, _, _, _, _, _)) + .WillOnce( + Invoke([&](content::WebContents* rp_web_contents, + content::WebContents* idp_web_contents, + const GURL& idp_signin_url, AccountList accounts, + bool is_auto_sign_in, + IdentityRequestDialogController::AccountSelectionCallback + on_selected) { + EXPECT_TRUE(is_auto_sign_in); + displayed_accounts = accounts; + std::move(on_selected).Run(accounts[0].sub); + })); EXPECT_EQ(test_case.config.Mediated_conf.accounts.size(), 1u); auto auth_response = PerformAuthRequest( test_case.inputs.client_id, test_case.inputs.nonce, test_case.inputs.mode, test_case.inputs.prefer_auto_sign_in); - EXPECT_EQ(test_case.config.Mediated_conf.accounts[0].login_state, - LoginState::kSignIn); + + ASSERT_FALSE(displayed_accounts.empty()); + EXPECT_EQ(displayed_accounts[0].login_state, LoginState::kSignIn); EXPECT_EQ(auth_response.second.value(), kToken); } @@ -870,13 +883,15 @@ AccountList displayed_accounts; const auto& test_case = kSuccessfulMediatedAutoSignInTestCase; CreateAuthRequest(GURL(test_case.inputs.provider)); - EXPECT_CALL(*mock_dialog_controller(), ShowAccountsDialog(_, _, _, _, _)) + EXPECT_CALL(*mock_dialog_controller(), ShowAccountsDialog(_, _, _, _, _, _)) .WillOnce( Invoke([&](content::WebContents* rp_web_contents, content::WebContents* idp_web_contents, const GURL& idp_signin_url, AccountList accounts, + bool is_auto_sign_in, IdentityRequestDialogController::AccountSelectionCallback on_selected) { + EXPECT_FALSE(is_auto_sign_in); displayed_accounts = accounts; std::move(on_selected).Run(accounts[0].sub); }));
diff --git a/content/browser/webid/test/mock_identity_request_dialog_controller.h b/content/browser/webid/test/mock_identity_request_dialog_controller.h index 3cce78d..82bc197 100644 --- a/content/browser/webid/test/mock_identity_request_dialog_controller.h +++ b/content/browser/webid/test/mock_identity_request_dialog_controller.h
@@ -38,11 +38,12 @@ void(content::WebContents*, const GURL&, TokenExchangeApprovalCallback)); - MOCK_METHOD5(ShowAccountsDialog, + MOCK_METHOD6(ShowAccountsDialog, void(WebContents*, WebContents*, const GURL&, AccountList, + bool, AccountSelectionCallback)); };
diff --git a/content/browser/webrtc/webrtc_stress_image_capture_browsertest.cc b/content/browser/webrtc/webrtc_stress_image_capture_browsertest.cc index 9eb25fa..ec5e0187 100644 --- a/content/browser/webrtc/webrtc_stress_image_capture_browsertest.cc +++ b/content/browser/webrtc/webrtc_stress_image_capture_browsertest.cc
@@ -106,7 +106,7 @@ // Note, these tests must be run sequentially, since multiple parallel test runs // competing for a single physical webcam typically causes failures. #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || \ - defined(OS_ANDROID) || defined(OS_WIN) + defined(OS_ANDROID) || defined(OS_WIN) || defined(OS_FUCHSIA) const TargetVideoCaptureImplementation kTargetVideoCaptureImplementationsForRealWebcam[] = {
diff --git a/content/browser/xr/service/browser_xr_runtime_impl.cc b/content/browser/xr/service/browser_xr_runtime_impl.cc index 857fde8..0047c62 100644 --- a/content/browser/xr/service/browser_xr_runtime_impl.cc +++ b/content/browser/xr/service/browser_xr_runtime_impl.cc
@@ -32,8 +32,7 @@ namespace content { namespace { -bool IsValidTransform(const gfx::Transform& transform, - float max_translate_meters) { +bool IsValidTransform(const gfx::Transform& transform) { if (!transform.IsInvertible() || transform.HasPerspective()) return false; @@ -56,8 +55,6 @@ return false; if (abs(decomp.perspective[i]) > kEpsilon) return false; - if (abs(decomp.translate[i]) > max_translate_meters) - return false; } // Only rotate and translate. @@ -96,12 +93,10 @@ ret->field_of_view->right_degrees = kDefaultFOV; } - // Head-from-Eye Transform - // Maximum 10m translation. - if (IsValidTransform(view->head_from_eye, 10)) { - ret->head_from_eye = view->head_from_eye; + if (IsValidTransform(view->mojo_from_view)) { + ret->mojo_from_view = view->mojo_from_view; } - // else, ret->head_from_eye remains the identity transform + // else, ret->mojo_from_view remains the identity transform // Renderwidth/height int kMaxSize = 16384;
diff --git a/content/child/child_thread_impl.cc b/content/child/child_thread_impl.cc index 79efdf45..f3e82d2 100644 --- a/content/child/child_thread_impl.cc +++ b/content/child/child_thread_impl.cc
@@ -52,6 +52,7 @@ #include "content/common/field_trial_recorder.mojom.h" #include "content/common/in_process_child_thread_params.h" #include "content/common/mojo_core_library_support.h" +#include "content/common/pseudonymization_salt.h" #include "content/public/common/content_client.h" #include "content/public/common/content_features.h" #include "content/public/common/content_switches.h" @@ -396,6 +397,10 @@ } #endif + void SetPseudonymizationSalt(uint32_t salt) override { + content::SetPseudonymizationSalt(salt); + } + const scoped_refptr<base::SequencedTaskRunner> main_thread_task_runner_; const base::WeakPtr<ChildThreadImpl> weak_main_thread_; const base::RepeatingClosure quit_closure_;
diff --git a/content/common/BUILD.gn b/content/common/BUILD.gn index ee5a5407..85b9432 100644 --- a/content/common/BUILD.gn +++ b/content/common/BUILD.gn
@@ -131,6 +131,8 @@ "process_type.cc", "process_visibility_tracker.cc", "process_visibility_tracker.h", + "pseudonymization_salt.cc", + "pseudonymization_salt.h", "service_worker/service_worker_utils.cc", "service_worker/service_worker_utils.h", "set_process_title.cc", @@ -530,14 +532,14 @@ "//content/common/input/synthetic_smooth_scroll_gesture_params.h", "//content/common/input/synthetic_tap_gesture_params.h", "//content/common/navigation_gesture.h", - "//third_party/blink/public/common/widget/visual_properties.h", - "//third_party/blink/public/common/web_preferences/web_preferences.h", "//net/base/network_change_notifier.h", "//third_party/blink/public/common/input/web_coalesced_input_event_mojom_traits.h", "//third_party/blink/public/common/input/web_input_event.h", "//third_party/blink/public/common/input/web_mouse_wheel_event.h", "//third_party/blink/public/common/input/web_pointer_properties.h", "//third_party/blink/public/common/input/web_touch_point.h", + "//third_party/blink/public/common/web_preferences/web_preferences.h", + "//third_party/blink/public/common/widget/visual_properties.h", "//ui/events/blink/did_overscroll_params.h", "//ui/events/blink/web_input_event_traits.h", "//ui/latency/ipc/latency_info_param_traits.h",
diff --git a/content/common/child_process.mojom b/content/common/child_process.mojom index ea3947a1..f4850ba 100644 --- a/content/common/child_process.mojom +++ b/content/common/child_process.mojom
@@ -96,4 +96,11 @@ // The callback is invoked once the profile has been flushed to disk. [EnableIf=clang_profiling_inside_sandbox] WriteClangProfilingProfile() => (); + + // Sets the pseudonymization salt in a child process. + // + // PRIVACY NOTE: It is important that the `salt` is never persisted anywhere + // or sent to a server. Whoever has access to the salt can de-anonymize + // results of the content::PseudonymizationUtil::PseudonymizeString method. + SetPseudonymizationSalt(uint32 salt); };
diff --git a/content/common/child_process_host_impl.cc b/content/common/child_process_host_impl.cc index 8dda040..9de1b44 100644 --- a/content/common/child_process_host_impl.cc +++ b/content/common/child_process_host_impl.cc
@@ -23,6 +23,7 @@ #include "base/threading/thread_task_runner_handle.h" #include "build/build_config.h" #include "content/common/content_constants_internal.h" +#include "content/common/pseudonymization_salt.h" #include "content/public/common/child_process_host_delegate.h" #include "content/public/common/content_client.h" #include "content/public/common/content_paths.h" @@ -346,6 +347,14 @@ } void ChildProcessHostImpl::OnChannelConnected(int32_t peer_pid) { + // Propagate the pseudonymization salt to all the child processes. + // + // TODO(dullweber, lukasza): Figure out if it is possible to reset the salt + // at a regular interval (on the order of hours?). The browser would need + // to be responsible for 1) deciding when the refresh happens and 2) pushing + // the updated salt to all the child processes. + child_process_->SetPseudonymizationSalt(GetPseudonymizationSalt()); + // We ignore the `peer_pid` argument, which ultimately comes over IPC from the // remote process, in favor of the PID already known by the browser after // launching the process. This is partly because IPC Channel is being phased
diff --git a/content/common/pseudonymization_salt.cc b/content/common/pseudonymization_salt.cc new file mode 100644 index 0000000..28e003b --- /dev/null +++ b/content/common/pseudonymization_salt.cc
@@ -0,0 +1,67 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/common/pseudonymization_salt.h" + +#include <atomic> + +#include "base/check_op.h" +#include "base/dcheck_is_on.h" +#include "base/rand_util.h" + +#if DCHECK_IS_ON() +#include "sandbox/policy/sandbox.h" +#endif + +namespace content { + +namespace { + +std::atomic<uint32_t> g_salt(0); + +uint32_t InitializeSalt() { + uint32_t salt; + do { + salt = base::RandUint64(); + } while (salt == 0); + + // If `g_salt` is still uninitialized (has a value of 0), then put `salt` into + // `g_salt`. Otherwise, use the current `value` of `g_salt`. + uint32_t value = 0; + if (!g_salt.compare_exchange_strong(value, salt)) + salt = value; + + return salt; +} + +} // namespace + +uint32_t GetPseudonymizationSalt() { + uint32_t salt = g_salt.load(); + + if (salt == 0) { +#if DCHECK_IS_ON() + // Only the Browser process needs to initialize the `salt` on demand. + // Other processes (identified via the IsProcessSandboxed heuristic) should + // receive the salt from their parent processes. + DCHECK(!sandbox::policy::Sandbox::IsProcessSandboxed()); +#endif + salt = InitializeSalt(); + } + + return salt; +} + +void SetPseudonymizationSalt(uint32_t salt) { + DCHECK_NE(0u, salt); + + // TODO(lukasza): Ideally we would DCHECK that `g_salt` is not set twice (e.g. + // that DCHECK_EQ(0u, g_salt.load(std::memory_order_acquire))), but this is + // made rather difficult by tests that run in single-process-mode, or + // construct ChildProcessHostImpl directly (e.g. RenderThreadImplBrowserTest). + + g_salt.store(salt); +} + +} // namespace content
diff --git a/content/common/pseudonymization_salt.h b/content/common/pseudonymization_salt.h new file mode 100644 index 0000000..2a41cca --- /dev/null +++ b/content/common/pseudonymization_salt.h
@@ -0,0 +1,37 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CONTENT_COMMON_PSEUDONYMIZATION_SALT_H_ +#define CONTENT_COMMON_PSEUDONYMIZATION_SALT_H_ + +#include <stdint.h> + +namespace content { + +// Gets the pseudonymization salt. +// +// Note that this function returns the same salt in all Chromium processes (e.g. +// in the Browser process, the Renderer processes and other child processes), +// because the propagation taking place via callers of SetPseudonymizationSalt +// below. This behavior ensures that the +// content::PseudonymizationUtil::PseudonymizeString method produces the same +// results across all processes. +// +// This function is thread-safe - it can be called on any thread. +// +// PRIVACY NOTE: It is important that the returned value is never persisted +// anywhere or sent to a server. Whoever has access to the salt can +// de-anonymize results of the content::PseudonymizationUtil::PseudonymizeString +// method. +uint32_t GetPseudonymizationSalt(); + +// Called in child processes, for setting the pseudonymization `salt` received +// in an IPC from a parent process. +// +// This function is thread-safe - it can be called on any thread. +void SetPseudonymizationSalt(uint32_t salt); + +} // namespace content + +#endif // CONTENT_COMMON_PSEUDONYMIZATION_SALT_H_
diff --git a/content/public/browser/identity_request_dialog_controller.cc b/content/public/browser/identity_request_dialog_controller.cc index a9db295..74ba732a 100644 --- a/content/public/browser/identity_request_dialog_controller.cc +++ b/content/public/browser/identity_request_dialog_controller.cc
@@ -25,12 +25,14 @@ const std::string& email, const std::string& name, const std::string& given_name, - const GURL& picture) + const GURL& picture, + LoginState login_state) : sub{sub}, email{email}, name{name}, given_name{given_name}, - picture{picture} {} + picture{picture}, + login_state{login_state} {} IdentityRequestAccount::IdentityRequestAccount(const IdentityRequestAccount&) = default;
diff --git a/content/public/browser/identity_request_dialog_controller.h b/content/public/browser/identity_request_dialog_controller.h index ce7efbe..0ed4c50 100644 --- a/content/public/browser/identity_request_dialog_controller.h +++ b/content/public/browser/identity_request_dialog_controller.h
@@ -20,21 +20,6 @@ // Represents a federated user account which is used when displaying an account // selector. struct CONTENT_EXPORT IdentityRequestAccount { - IdentityRequestAccount(const std::string& sub, - const std::string& email, - const std::string& name, - const std::string& given_name, - const GURL& picture); - IdentityRequestAccount(const IdentityRequestAccount&); - ~IdentityRequestAccount(); - - // sub, short for subject, is the unique identifier. - std::string sub; - std::string email; - std::string name; - std::string given_name; - GURL picture; - enum class LoginState { // This is a returning user signing in with RP/IDP in this browser. kSignIn, @@ -47,6 +32,23 @@ // user when using it to customize the UI. kSignUp, }; + + IdentityRequestAccount(const std::string& sub, + const std::string& email, + const std::string& name, + const std::string& given_name, + const GURL& picture, + LoginState login_state = LoginState::kSignUp); + IdentityRequestAccount(const IdentityRequestAccount&); + ~IdentityRequestAccount(); + + // sub, short for subject, is the unique identifier. + std::string sub; + std::string email; + std::string name; + std::string given_name; + GURL picture; + // The account login state. Unlike the other fields this one is not populated // by the IDP but instead by the browser based on its stored permission // grants. @@ -103,11 +105,13 @@ InitialApprovalCallback approval_callback); // Shows and accounts selections for the given IDP. The |on_selected| callback - // is called with the selected account id or empty string otherwise. + // is called with the selected account id or empty string otherwise. The bool + // |is_auto_sign_in| represents whether this is an auto sign in flow. virtual void ShowAccountsDialog(content::WebContents* rp_web_contents, content::WebContents* idp_web_contents, const GURL& idp_signin_url, AccountList accounts, + bool is_auto_sign_in, AccountSelectionCallback on_selected) {} // Shows the identity provider sign-in page at the given URL using the
diff --git a/content/public/browser/render_process_host.h b/content/public/browser/render_process_host.h index 143c111..9bb88a9 100644 --- a/content/public/browser/render_process_host.h +++ b/content/public/browser/render_process_host.h
@@ -18,6 +18,7 @@ #include "base/process/kill.h" #include "base/process/process.h" #include "base/supports_user_data.h" +#include "base/tracing/protos/chrome_track_event.pbzero.h" #include "build/build_config.h" #include "content/common/content_export.h" #include "ipc/ipc_channel_proxy.h" @@ -46,6 +47,7 @@ #include "third_party/blink/public/mojom/permissions/permission.mojom-forward.h" #include "third_party/blink/public/mojom/quota/quota_manager_host.mojom-forward.h" #include "third_party/blink/public/mojom/websockets/websocket_connector.mojom-forward.h" +#include "third_party/perfetto/include/perfetto/tracing/traced_proto.h" #include "third_party/perfetto/include/perfetto/tracing/traced_value_forward.h" #include "ui/gfx/native_widget_types.h" @@ -561,6 +563,9 @@ // Write a representation of this object into a trace. virtual void WriteIntoTrace(perfetto::TracedValue context) = 0; + virtual void WriteIntoTrace( + perfetto::TracedProto<perfetto::protos::pbzero::RenderProcessHost> + proto) = 0; #if BUILDFLAG(CLANG_PROFILING_INSIDE_SANDBOX) // Ask the renderer process to dump its profiling data to disk. Invokes
diff --git a/content/public/common/BUILD.gn b/content/public/common/BUILD.gn index 81a23613..1dbc07a7 100644 --- a/content/public/common/BUILD.gn +++ b/content/public/common/BUILD.gn
@@ -137,6 +137,8 @@ "process_type.h", "profiling.cc", "profiling.h", + "pseudonymization_util.cc", + "pseudonymization_util.h", "referrer.cc", "referrer.h", "referrer_type_converters.cc",
diff --git a/content/public/common/OWNERS b/content/public/common/OWNERS index e03977d..695da8e 100644 --- a/content/public/common/OWNERS +++ b/content/public/common/OWNERS
@@ -11,3 +11,6 @@ per-file *_type_converter*.*=file://ipc/SECURITY_OWNERS per-file sandbox*=set noparent per-file sandbox*=file://sandbox/OWNERS + +# New usage of pseudonymization_util requires a privacy review. +per-file pseudonymization_util*=file://docs/privacy/OWNERS
diff --git a/content/public/common/pseudonymization_util.cc b/content/public/common/pseudonymization_util.cc new file mode 100644 index 0000000..783ec7e --- /dev/null +++ b/content/public/common/pseudonymization_util.cc
@@ -0,0 +1,48 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/public/common/pseudonymization_util.h" + +#include <string.h> + +#include "base/hash/sha1.h" +#include "base/strings/string_piece.h" +#include "content/common/pseudonymization_salt.h" + +namespace content { + +// static +uint32_t PseudonymizationUtil::PseudonymizeString(base::StringPiece string) { + // Include `string` in the SHA1 hash. + base::SHA1Context sha1_context; + base::SHA1Init(sha1_context); + base::SHA1Update(string, sha1_context); + + // When `string` comes from a small set of possible strings (or when it is + // possible to compare a hash with results of hashing the 100 most common + // input strings), then its hash can be deanonymized. To protect against this + // threat, we include a random `salt` in the SHA1 hash (the salt is never + // retained or sent anywhere). + uint32_t salt = GetPseudonymizationSalt(); + base::SHA1Update( + base::StringPiece(reinterpret_cast<const char*>(&salt), sizeof(salt)), + sha1_context); + + // Compute the SHA1 hash. + base::SHA1Digest sha1_hash_bytes; + base::SHA1Final(sha1_context, sha1_hash_bytes); + + // Taking just the first 4 bytes is okay, because SHA1 should uniformly + // distribute all possible results over all of the `sha1_hash_bytes`. + uint32_t hash; + static_assert( + sizeof(hash) < + sizeof(base::SHA1Digest::value_type) * sha1_hash_bytes.size(), + "Is `memcpy` safely within the bounds of `hash` and `sha1_hash_bytes`?"); + memcpy(&hash, sha1_hash_bytes.data(), sizeof(hash)); + + return hash; +} + +} // namespace content
diff --git a/content/public/common/pseudonymization_util.h b/content/public/common/pseudonymization_util.h new file mode 100644 index 0000000..9b98454c --- /dev/null +++ b/content/public/common/pseudonymization_util.h
@@ -0,0 +1,54 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CONTENT_PUBLIC_COMMON_PSEUDONYMIZATION_UTIL_H_ +#define CONTENT_PUBLIC_COMMON_PSEUDONYMIZATION_UTIL_H_ + +#include "stdint.h" + +#include "base/strings/string_piece.h" +#include "content/common/content_export.h" + +// Forward-declarations of classes approved for using the PseudonymizationUtil. +// +// The declarations below might violate to some extent the layering (forcing us +// to name classes declared in higher-layers, above the //content layer). This +// is okay, because: +// 1. These are only forward-declarations +// 2. The benefit of the forward-declarations (mechanically forcing privacy +// review for new users of PseudonymizationUtil) seems to outweigh the +// layering concerns. +// 3. There is a precedent for such layering-violating-friends-usage in +// base::ScopedAllowBlocking. +namespace extensions { +class ExtensionIdForTracing; +} // namespace extensions + +namespace content { + +class CONTENT_EXPORT PseudonymizationUtil { + private: + // Pseudonymizes the input `string` by passing it through a one-way hash + // function (e.g. SHA1) and salting with an pseudonymization salt (randomly + // generated once per Chrome session and thrown away - never persisted or sent + // to a server). + // + // The same input `string` value will be translated into the same + // pseudonymized uint32_t value, as long as PseudonymizeString is called + // within the same Chromium session. This is true even across processes (e.g. + // the same pseudonymization result will be produced in the Browser process + // and Renderer processes). + // + // This method is thread-safe - it can be called on any thread. + static uint32_t PseudonymizeString(base::StringPiece string); + + // NOTE: All usages of the PseudonymizationUtil class should be reviewed by + // chrome-privacy-core@google.com (and when approved added to the friend list + // below). + friend class extensions::ExtensionIdForTracing; +}; + +} // namespace content + +#endif // CONTENT_PUBLIC_COMMON_PSEUDONYMIZATION_UTIL_H_
diff --git a/content/public/renderer/render_thread.h b/content/public/renderer/render_thread.h index 66751f1..a96329f8 100644 --- a/content/public/renderer/render_thread.h +++ b/content/public/renderer/render_thread.h
@@ -12,11 +12,13 @@ #include "base/callback.h" #include "base/metrics/user_metrics_action.h" #include "base/single_thread_task_runner.h" +#include "base/tracing/protos/chrome_track_event.pbzero.h" #include "content/common/content_export.h" #include "content/public/child/child_thread.h" #include "ipc/ipc_channel_proxy.h" #include "third_party/blink/public/common/tokens/tokens.h" #include "third_party/blink/public/platform/web_string.h" +#include "third_party/perfetto/include/perfetto/tracing/traced_proto.h" namespace base { class UnguessableToken; @@ -115,6 +117,11 @@ // Returns whether or not the use-zoom-for-dsf flag is enabled. virtual bool IsUseZoomForDSF() = 0; + + // Write a representation of the current Renderer process into a trace. + virtual void WriteIntoTrace( + perfetto::TracedProto<perfetto::protos::pbzero::RenderProcessHost> + proto) = 0; }; } // namespace content
diff --git a/content/public/test/mock_render_process_host.cc b/content/public/test/mock_render_process_host.cc index ca7c5bc7..1143d40 100644 --- a/content/public/test/mock_render_process_host.cc +++ b/content/public/test/mock_render_process_host.cc
@@ -492,6 +492,11 @@ dict.Add("id", GetID()); } +void MockRenderProcessHost::WriteIntoTrace( + perfetto::TracedProto<perfetto::protos::pbzero::RenderProcessHost> proto) { + proto->set_id(GetID()); +} + void MockRenderProcessHost::FilterURL(bool empty_allowed, GURL* url) { RenderProcessHostImpl::FilterURL(this, empty_allowed, url); }
diff --git a/content/public/test/mock_render_process_host.h b/content/public/test/mock_render_process_host.h index 5f5c54c..0965e7d 100644 --- a/content/public/test/mock_render_process_host.h +++ b/content/public/test/mock_render_process_host.h
@@ -233,6 +233,9 @@ void CleanupNetworkServicePluginExceptionsUponDestruction() override; std::string GetInfoForBrowserContextDestructionCrashReporting() override; void WriteIntoTrace(perfetto::TracedValue context) override; + void WriteIntoTrace( + perfetto::TracedProto<perfetto::protos::pbzero::RenderProcessHost> proto) + override; // IPC::Sender via RenderProcessHost. bool Send(IPC::Message* msg) override;
diff --git a/content/public/test/mock_render_thread.cc b/content/public/test/mock_render_thread.cc index ef2825b..5457740 100644 --- a/content/public/test/mock_render_thread.cc +++ b/content/public/test/mock_render_thread.cc
@@ -242,6 +242,12 @@ zoom_for_dsf_ = zoom_for_dsf; } +void MockRenderThread::WriteIntoTrace( + perfetto::TracedProto<perfetto::protos::pbzero::RenderProcessHost> proto) { + // Unlike RenderThreadImpl, MockRenderThread is not aware of its render + // process ID. +} + int32_t MockRenderThread::GetNextRoutingID() { return next_routing_id_++; }
diff --git a/content/public/test/mock_render_thread.h b/content/public/test/mock_render_thread.h index fbe593f..1bcb2fa 100644 --- a/content/public/test/mock_render_thread.h +++ b/content/public/test/mock_render_thread.h
@@ -92,6 +92,9 @@ void SetFieldTrialGroup(const std::string& trial_name, const std::string& group_name) override; void SetUseZoomForDSFEnabled(bool zoom_for_dsf); + void WriteIntoTrace( + perfetto::TracedProto<perfetto::protos::pbzero::RenderProcessHost> proto) + override; // Returns a new, unique routing ID that can be assigned to the next view, // widget, or frame.
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc index 7e1d219..f4fc858 100644 --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc
@@ -67,6 +67,7 @@ #include "content/common/content_constants_internal.h" #include "content/common/partition_alloc_support.h" #include "content/common/process_visibility_tracker.h" +#include "content/common/pseudonymization_salt.h" #include "content/public/common/content_constants.h" #include "content/public/common/content_features.h" #include "content/public/common/content_paths.h" @@ -1271,6 +1272,12 @@ return is_zoom_for_dsf_enabled_; } +void RenderThreadImpl::WriteIntoTrace( + perfetto::TracedProto<perfetto::protos::pbzero::RenderProcessHost> proto) { + int id = GetClientId(); + proto->set_id(id); +} + void RenderThreadImpl::OnAssociatedInterfaceRequest( const std::string& name, mojo::ScopedInterfaceEndpointHandle handle) {
diff --git a/content/renderer/render_thread_impl.h b/content/renderer/render_thread_impl.h index e277a91c..18ccc4ec 100644 --- a/content/renderer/render_thread_impl.h +++ b/content/renderer/render_thread_impl.h
@@ -192,6 +192,9 @@ blink::WebString GetReducedUserAgent() override; const blink::UserAgentMetadata& GetUserAgentMetadata() override; bool IsUseZoomForDSF() override; + void WriteIntoTrace( + perfetto::TracedProto<perfetto::protos::pbzero::RenderProcessHost> proto) + override; // IPC::Listener implementation via ChildThreadImpl: void OnAssociatedInterfaceRequest(
diff --git a/content/services/shared_storage_worklet/shared_storage_worklet_global_scope.cc b/content/services/shared_storage_worklet/shared_storage_worklet_global_scope.cc index c237709..5005cd7 100644 --- a/content/services/shared_storage_worklet/shared_storage_worklet_global_scope.cc +++ b/content/services/shared_storage_worklet/shared_storage_worklet_global_scope.cc
@@ -50,11 +50,34 @@ } // namespace -SharedStorageWorkletGlobalScope::SharedStorageWorkletGlobalScope( - mojom::SharedStorageWorkletServiceClient* client) { +SharedStorageWorkletGlobalScope::SharedStorageWorkletGlobalScope() = default; +SharedStorageWorkletGlobalScope::~SharedStorageWorkletGlobalScope() = default; + +void SharedStorageWorkletGlobalScope::AddModule( + mojom::SharedStorageWorkletServiceClient* client, + const GURL& script_source_url, + mojom::SharedStorageWorkletService::AddModuleCallback callback) { + // TODO(yaoxia): handle script downloading + OnModuleScriptDownloaded(client, script_source_url, std::move(callback), + nullptr, "addModule not implemented"); +} + +void SharedStorageWorkletGlobalScope::OnModuleScriptDownloaded( + mojom::SharedStorageWorkletServiceClient* client, + const GURL& script_source_url, + mojom::SharedStorageWorkletService::AddModuleCallback callback, + std::unique_ptr<std::string> response_body, + std::string error_message) { + if (!response_body) { + std::move(callback).Run(false, error_message); + return; + } + + DCHECK(error_message.empty()); + + // Now the module script is downloaded, initialize the worklet environment. InitV8(); - // Now the initialization is completed, create an isolate. isolate_holder_ = std::make_unique<gin::IsolateHolder>( base::ThreadTaskRunnerHandle::Get(), gin::IsolateHolder::kUseLocker, gin::IsolateHolder::IsolateType::kUtility); @@ -67,15 +90,12 @@ v8::Local<v8::Object> global = context->Global(); - console_ = std::make_unique<Console>(client); - - shared_storage_ = std::make_unique<SharedStorage>(client); - url_selection_operation_handler_ = std::make_unique<UrlSelectionOperationHandler>(); unnamed_operation_handler_ = std::make_unique<UnnamedOperationHandler>(); + console_ = std::make_unique<Console>(client); global ->Set(context, gin::StringToSymbol(Isolate(), "console"), console_->GetWrapper(Isolate()).ToLocalChecked()) @@ -103,50 +123,25 @@ ->GetFunction(context) .ToLocalChecked()) .Check(); -} -SharedStorageWorkletGlobalScope::~SharedStorageWorkletGlobalScope() = default; + // Execute the module script. + v8::MaybeLocal<v8::Value> result = WorkletV8Helper::CompileAndRunScript( + context, *response_body, script_source_url, &error_message); -void SharedStorageWorkletGlobalScope::AddModule( - const GURL& script_source_url, - mojom::SharedStorageWorkletService::AddModuleCallback callback) { - // TODO(yaoxia): handle script downloading - OnModuleScriptDownloaded(std::move(callback), script_source_url, nullptr, - "addModule not implemented"); -} - -void SharedStorageWorkletGlobalScope::OnModuleScriptDownloaded( - mojom::SharedStorageWorkletService::AddModuleCallback callback, - const GURL& script_source_url, - std::unique_ptr<std::string> response_body, - std::string error_message) { - if (!response_body) { + if (result.IsEmpty()) { std::move(callback).Run(false, error_message); return; } DCHECK(error_message.empty()); - { - WorkletV8Helper::HandleScope scope(Isolate()); - v8::Local<v8::Context> context = LocalContext(); - v8::Context::Scope context_scope(context); - - v8::MaybeLocal<v8::Value> result = WorkletV8Helper::CompileAndRunScript( - context, *response_body, script_source_url, &error_message); - - if (result.IsEmpty()) { - std::move(callback).Run(false, error_message); - return; - } - - DCHECK(error_message.empty()); - - context->Global() - ->Set(context, gin::StringToSymbol(Isolate(), "sharedStorage"), - shared_storage_->GetWrapper(Isolate()).ToLocalChecked()) - .Check(); - } + // After the module script execution, create and expose the shared storage + // object. + shared_storage_ = std::make_unique<SharedStorage>(client); + context->Global() + ->Set(context, gin::StringToSymbol(Isolate(), "sharedStorage"), + shared_storage_->GetWrapper(Isolate()).ToLocalChecked()) + .Check(); std::move(callback).Run(true, {}); }
diff --git a/content/services/shared_storage_worklet/shared_storage_worklet_global_scope.h b/content/services/shared_storage_worklet/shared_storage_worklet_global_scope.h index d29507d..b8b35e85 100644 --- a/content/services/shared_storage_worklet/shared_storage_worklet_global_scope.h +++ b/content/services/shared_storage_worklet/shared_storage_worklet_global_scope.h
@@ -23,21 +23,23 @@ class SharedStorage; // The global JS execution context for shared storage worklet. It holds a -// v8::Isolate and a v8::Context to execute all worklet operations. +// v8::Isolate and a v8::Context to execute all worklet operations. Members are +// initialized only after AddModule() succeeds. // https://github.com/pythagoraskitty/shared-storage/blob/main/README.md class SharedStorageWorkletGlobalScope { public: - explicit SharedStorageWorkletGlobalScope( - mojom::SharedStorageWorkletServiceClient* client); + SharedStorageWorkletGlobalScope(); ~SharedStorageWorkletGlobalScope(); void AddModule( + mojom::SharedStorageWorkletServiceClient* client, const GURL& script_source_url, mojom::SharedStorageWorkletService::AddModuleCallback callback); void OnModuleScriptDownloaded( - mojom::SharedStorageWorkletService::AddModuleCallback callback, + mojom::SharedStorageWorkletServiceClient* client, const GURL& script_source_url, + mojom::SharedStorageWorkletService::AddModuleCallback callback, std::unique_ptr<std::string> response_body, std::string error_message);
diff --git a/content/services/shared_storage_worklet/shared_storage_worklet_global_scope_unittest.cc b/content/services/shared_storage_worklet/shared_storage_worklet_global_scope_unittest.cc index 6d97ddc..3f8bc58 100644 --- a/content/services/shared_storage_worklet/shared_storage_worklet_global_scope_unittest.cc +++ b/content/services/shared_storage_worklet/shared_storage_worklet_global_scope_unittest.cc
@@ -143,14 +143,15 @@ : task_environment_(base::test::TaskEnvironment::TimeSource::MOCK_TIME) { test_client_ = std::make_unique<TestClient>( task_environment_.GetMainThreadTaskRunner()); - global_scope_ = - std::make_unique<SharedStorageWorkletGlobalScope>(test_client_.get()); + global_scope_ = std::make_unique<SharedStorageWorkletGlobalScope>(); } ~SharedStorageWorkletGlobalScopeTest() override = default; v8::Isolate* Isolate() { return global_scope_->Isolate(); } + bool IsolateInitialized() { return !!global_scope_->isolate_holder_; } + v8::Local<v8::Context> LocalContext() { return global_scope_->LocalContext(); } @@ -182,19 +183,24 @@ std::unique_ptr<SharedStorageWorkletGlobalScope> global_scope_; }; -TEST_F(SharedStorageWorkletGlobalScopeTest, AvailableAPI) { +TEST_F(SharedStorageWorkletGlobalScopeTest, IsolateNotInitializedByDefault) { + EXPECT_FALSE(IsolateInitialized()); +} + +TEST_F(SharedStorageWorkletGlobalScopeTest, OnModuleScriptDownloadedSuccess) { + global_scope_->OnModuleScriptDownloaded( + test_client_.get(), GURL("https://example.test"), + base::DoNothing::Once<bool, const std::string&>(), + /*response_body=*/std::make_unique<std::string>(), + /*error_message=*/{}); + + EXPECT_TRUE(IsolateInitialized()); + EXPECT_EQ(GetTypeOf("console"), "object"); EXPECT_EQ(GetTypeOf("console.log"), "function"); EXPECT_EQ(GetTypeOf("registerURLSelectionOperation"), "function"); EXPECT_EQ(GetTypeOf("registerOperation"), "function"); - EXPECT_EQ(GetTypeOf("sharedStorage"), "undefined"); - - global_scope_->OnModuleScriptDownloaded( - base::DoNothing::Once<bool, const std::string&>(), - GURL("https://example.test"), - /*response_body=*/std::make_unique<std::string>(), - /*error_message=*/{}); - + EXPECT_EQ(GetTypeOf("sharedStorage"), "object"); EXPECT_EQ(GetTypeOf("sharedStorage"), "object"); EXPECT_EQ(GetTypeOf("sharedStorage.set"), "function"); EXPECT_EQ(GetTypeOf("sharedStorage.append"), "function"); @@ -214,12 +220,11 @@ callback_called = true; }); - global_scope_->OnModuleScriptDownloaded( - std::move(cb), GURL("https://example.test"), nullptr, "error1"); + global_scope_->OnModuleScriptDownloaded(test_client_.get(), + GURL("https://example.test"), + std::move(cb), nullptr, "error1"); - // sharedStorage is not exposed when addModule fails. - EXPECT_EQ(GetTypeOf("sharedStorage"), "undefined"); - + EXPECT_FALSE(IsolateInitialized()); EXPECT_TRUE(callback_called); } @@ -237,7 +242,7 @@ }); global_scope_->OnModuleScriptDownloaded( - std::move(cb), GURL("https://example.test"), + test_client_.get(), GURL("https://example.test"), std::move(cb), std::make_unique<std::string>(script_body), /*error_message=*/{}); ASSERT_TRUE(callback_called); @@ -253,8 +258,6 @@ }; TEST_F(SharedStorageAddModuleTest, VanillaScriptSuccess) { - EXPECT_EQ(GetTypeOf("a"), "undefined"); - SimulateAddModule(R"( a = 1; )"); @@ -275,6 +278,20 @@ "https://example.test/:2 Uncaught ReferenceError: a is not defined."); } +TEST_F(SharedStorageAddModuleTest, ObjectDefinedStatusDuringAddModule) { + SimulateAddModule(R"( + if (typeof(console) !== 'object' || + typeof(registerOperation) !== 'function' || + typeof(registerURLSelectionOperation) !== 'function' || + typeof(sharedStorage) !== 'undefined') { + throw Error('Unexpected object defined status.'); + } + )"); + + EXPECT_TRUE(success()); + EXPECT_TRUE(error_message().empty()); +} + TEST_F(SharedStorageAddModuleTest, RegisterOperation_MissingOperationName) { SimulateAddModule(R"( registerOperation(); @@ -397,7 +414,8 @@ }); global_scope_->OnModuleScriptDownloaded( - std::move(add_module_callback), GURL("https://example.test"), + test_client_.get(), GURL("https://example.test"), + std::move(add_module_callback), std::make_unique<std::string>(script_body), /*error_message=*/{}); ASSERT_TRUE(add_module_callback_called); @@ -627,6 +645,18 @@ } TEST_F(SharedStorageRunOperationTest, UnnamedOperation_ExpectedCustomData) { + SimulateAddModule(R"( + class TestClass { + async run(data) { + if (data.customField != 'customValue') { + throw 'Unexpected value for customField field'; + } + } + } + + registerOperation("test-operation", TestClass); + )"); + std::vector<uint8_t> serialized_data; { WorkletV8Helper::HandleScope scope(Isolate()); @@ -639,6 +669,14 @@ serialized_data = Serialize(Isolate(), LocalContext(), obj); } + SimulateRunOperation("test-operation", serialized_data); + + EXPECT_TRUE(unnamed_operation_finished()); + EXPECT_TRUE(unnamed_operation_success()); + EXPECT_TRUE(unnamed_operation_error_message().empty()); +} + +TEST_F(SharedStorageRunOperationTest, UnnamedOperation_UnexpectedCustomData) { SimulateAddModule(R"( class TestClass { async run(data) { @@ -651,14 +689,6 @@ registerOperation("test-operation", TestClass); )"); - SimulateRunOperation("test-operation", serialized_data); - - EXPECT_TRUE(unnamed_operation_finished()); - EXPECT_TRUE(unnamed_operation_success()); - EXPECT_TRUE(unnamed_operation_error_message().empty()); -} - -TEST_F(SharedStorageRunOperationTest, UnnamedOperation_UnexpectedCustomData) { std::vector<uint8_t> serialized_data; { WorkletV8Helper::HandleScope scope(Isolate()); @@ -671,18 +701,6 @@ serialized_data = Serialize(Isolate(), LocalContext(), obj); } - SimulateAddModule(R"( - class TestClass { - async run(data) { - if (data.customField != 'customValue') { - throw 'Unexpected value for customField field'; - } - } - } - - registerOperation("test-operation", TestClass); - )"); - SimulateRunOperation("test-operation", serialized_data); EXPECT_TRUE(unnamed_operation_finished());
diff --git a/content/test/data/page_with_rss.html b/content/test/data/page_with_rss.html index 633db060..ad2d93a 100644 --- a/content/test/data/page_with_rss.html +++ b/content/test/data/page_with_rss.html
@@ -1,15 +1,23 @@ <html> <head> - <link type="application/rss+xml" href="rss.xml" /> - <link type="application/rss+atom" href="atom.xml" /> - <link type="application/atom+xml" href="https://some/path.xml" /> + <link type="application/rss+xml" rel="alternate" href="rss.xml" /> + <link type="application/RSS+atom" rel="service.feed" href="atom.xml" /> + <link type="application/atom+XML" rel="AlTeRnAtE" + href="https://some/path.xml" /> <!--Some non-RSS link tags--> <link /> <link type="other" href="other" /> <link type="application/rss+xml" /> - <link type="application/rss+xml" href="https://badurl:💩/" /> + <link type="application/rss+xml" rel="alternate" href="https://badurl:💩/" /> + <link type="application/rss+xml" href="no-rel.xml" /> + <link type="application/rss+xml" rel="bad-rel" href="bad-rel.xml" /> + <link type="application/rss+xml" rel="non-ascii-💩" + href="non-ascii-rel.xml" /> + <link type="application/rss+xml+💩" rel="service.feed" + href="non-ascii-type.xml" /> </head> <body> - <p>This page has rss links. + <p>This page has valid rss links in its head and body.</p> + <link type="application/rss+xml" rel="alternate" href="rss-in-body.xml" /> </body> </html>
diff --git a/content/test/data/page_with_rss_in_body.html b/content/test/data/page_with_rss_in_body.html new file mode 100644 index 0000000..61809ca --- /dev/null +++ b/content/test/data/page_with_rss_in_body.html
@@ -0,0 +1,35 @@ +<html> +<head> + <!--Some non-RSS link tags--> + <link /> + <link type="other" href="other" /> + <link type="application/rss+xml" /> + <link type="application/rss+xml" rel="alternate" href="https://badurl:💩/" /> + <link type="application/rss+xml" href="no-rel.xml" /> + <link type="application/rss+xml" rel="bad-rel" href="bad-rel.xml" /> + <link type="application/rss+xml" rel="non-ascii-💩" + href="non-ascii-rel.xml" /> + <link type="application/rss+xml+💩" rel="service.feed" + href="non-ascii-type.xml" /> +</head> +<body> + <p>This page has valid rss links in its body.</p> + <link type="application/rss+xml" rel="alternate" href="rss-in-body.xml" /> + <link type="application/RSS+atom" rel="service.feed" + href="atom-in-body.xml" /> + <link type="application/atom+XML" rel="AlTeRnAtE" + href="https://some/path-in-body.xml" /> + <!--Some non-RSS link tags--> + <link /> + <link type="other" href="other-in-body" /> + <link type="application/rss+xml" /> + <link type="application/rss+xml" rel="alternate" + href="https://badurl:💩/in-body" /> + <link type="application/rss+xml" href="no-rel-in-body.xml" /> + <link type="application/rss+xml" rel="bad-rel" href="bad-rel-in-body.xml" /> + <link type="application/rss+xml" rel="non-ascii-💩" + href="non-ascii-rel-in-body.xml" /> + <link type="application/rss+xml+💩" rel="service.feed" + href="non-ascii-type-in-body.xml" /> +</body> +</html>
diff --git a/device/fido/cable/v2_handshake_unittest.cc b/device/fido/cable/v2_handshake_unittest.cc index c2c633a..7268056e 100644 --- a/device/fido/cable/v2_handshake_unittest.cc +++ b/device/fido/cable/v2_handshake_unittest.cc
@@ -62,7 +62,7 @@ std::array<uint8_t, kQRKeySize> qr_key; crypto::RandBytes(qr_key); std::string url = qr::Encode(qr_key); - EXPECT_LE(url.size(), 81u) << "QR code doesn't fit into version five"; + EXPECT_LE(url.size(), 84u) << "QR code doesn't fit into version five"; const absl::optional<qr::Components> decoded = qr::Parse(url); ASSERT_TRUE(decoded.has_value()); static_assert(EXTENT(qr_key) >= EXTENT(decoded->secret), "");
diff --git a/device/fido/u2f_command_constructor.cc b/device/fido/u2f_command_constructor.cc index d2c60c9..12e174f 100644 --- a/device/fido/u2f_command_constructor.cc +++ b/device/fido/u2f_command_constructor.cc
@@ -55,12 +55,12 @@ return ConstructBogusU2fRegistrationCommand(); } - const bool is_invidual_attestation = + const bool is_individual_attestation = request.attestation_preference == AttestationConveyancePreference::kEnterpriseApprovedByBrowser; return ConstructU2fRegisterCommand( fido_parsing_utils::CreateSHA256Hash(request.rp.id), - request.client_data_hash, is_invidual_attestation); + request.client_data_hash, is_individual_attestation); } absl::optional<std::vector<uint8_t>> ConvertToU2fSignCommandWithBogusChallenge(
diff --git a/device/vr/android/arcore/arcore_gl.cc b/device/vr/android/arcore/arcore_gl.cc index 71cc76d4..475e13c 100644 --- a/device/vr/android/arcore/arcore_gl.cc +++ b/device/vr/android/arcore/arcore_gl.cc
@@ -31,11 +31,13 @@ #include "device/vr/public/cpp/xr_frame_sink_client.h" #include "device/vr/public/mojom/pose.h" #include "device/vr/public/mojom/vr_service.mojom.h" +#include "device/vr/util/transform_utils.h" #include "gpu/ipc/common/gpu_memory_buffer_impl_android_hardware_buffer.h" #include "ui/display/display.h" #include "ui/display/screen.h" #include "ui/gfx/geometry/angle_conversions.h" #include "ui/gfx/gpu_fence.h" +#include "ui/gfx/transform_util.h" #include "ui/gl/android/scoped_java_surface.h" #include "ui/gl/android/surface_texture.h" #include "ui/gl/gl_bindings.h" @@ -408,7 +410,7 @@ presentation_receiver_.BindNewPipeAndPassRemote(); submit_frame_sink->transport_options = std::move(transport_options); - DCHECK_EQ(display_info->views.size(), static_cast<size_t>(1)); + DCHECK_EQ(display_info->views.size(), 1u); display_info_ = std::move(display_info); ArCoreGlCreateSessionResult result( @@ -582,7 +584,7 @@ << " left=" << field_of_view->left_degrees << " right=" << field_of_view->right_degrees; - DCHECK_EQ(display_info_->views.size(), static_cast<size_t>(1)); + DCHECK_EQ(display_info_->views.size(), 1u); display_info_->views[0]->field_of_view = std::move(field_of_view); display_info_changed_ = true; } @@ -751,6 +753,21 @@ DVLOG(1) << __func__ << ": pose unavailable!"; } + if (pose) { + // The pose returned by ArCoreImpl::Update populates both the orientation + // and position if there is a pose. + DCHECK(pose->orientation); + DCHECK(pose->position); + + // The view properties besides the transform are calculated by + // ArCoreGl::RecalculateUvsAndProjection() as needed. + DCHECK_EQ(display_info_->views.size(), 1u); + mojom::XRViewPtr view = display_info_->views[0]->Clone(); + view->mojo_from_view = vr_utils::VrPoseToTransform(pose.get()); + + frame_data->views.push_back(std::move(view)); + } + frame_data->pose = std::move(pose); frame_data->time_delta = now - base::TimeTicks(); if (rendering_time_ratio_ > 0) {
diff --git a/device/vr/android/gvr/gvr_device.cc b/device/vr/android/gvr/gvr_device.cc index 1c4250d..975e83c5 100644 --- a/device/vr/android/gvr/gvr_device.cc +++ b/device/vr/android/gvr/gvr_device.cc
@@ -21,11 +21,9 @@ #include "device/vr/android/gvr/gvr_device_provider.h" #include "device/vr/android/gvr/gvr_utils.h" #include "device/vr/jni_headers/NonPresentingGvrContext_jni.h" +#include "device/vr/util/transform_utils.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/gvr.h" -#include "ui/gfx/geometry/rect_f.h" -#include "ui/gfx/transform.h" -#include "ui/gfx/transform_util.h" using base::android::JavaRef; @@ -33,83 +31,11 @@ namespace { -gfx::Size GetMaximumWebVrSize(gvr::GvrApi* gvr_api) { - // Get the default, unscaled size for the WebVR transfer surface - // based on the optimal 1:1 render resolution. A scalar will be applied to - // this value in the renderer to reduce the render load. This size will also - // be reported to the client via CreateVRDisplayInfo as the - // client-recommended render_width/render_height and for the GVR - // framebuffer. If the client chooses a different size or resizes it - // while presenting, we'll resize the transfer surface and GVR - // framebuffer to match. - gvr::Sizei render_target_size = - gvr_api->GetMaximumEffectiveRenderTargetSize(); - - gfx::Size webvr_size(render_target_size.width, render_target_size.height); - - // Ensure that the width is an even number so that the eyes each - // get the same size, the recommended render_width is per eye - // and the client will use the sum of the left and right width. - // - // TODO(klausw,crbug.com/699350): should we round the recommended - // size to a multiple of 2^N pixels to be friendlier to the GPU? The - // exact size doesn't matter, and it might be more efficient. - webvr_size.set_width(webvr_size.width() & ~1); - return webvr_size; -} - -mojom::XRViewPtr CreateView(gvr::GvrApi* gvr_api, - gvr::Eye eye, - const gvr::BufferViewportList& buffers, - const gfx::Size& maximum_size) { - mojom::XRViewPtr view = mojom::XRView::New(); - - if (eye == GVR_LEFT_EYE) { - view->eye = mojom::XREye::kLeft; - } else if (eye == GVR_RIGHT_EYE) { - view->eye = mojom::XREye::kRight; - } else { - NOTREACHED(); - } - - view->field_of_view = mojom::VRFieldOfView::New(); - view->viewport = gfx::Size(maximum_size.width() / 2, maximum_size.height()); - - gvr::BufferViewport eye_viewport = gvr_api->CreateBufferViewport(); - buffers.GetBufferViewport(eye, &eye_viewport); - gvr::Rectf eye_fov = eye_viewport.GetSourceFov(); - view->field_of_view->up_degrees = eye_fov.top; - view->field_of_view->down_degrees = eye_fov.bottom; - view->field_of_view->left_degrees = eye_fov.left; - view->field_of_view->right_degrees = eye_fov.right; - - gvr::Mat4f eye_mat = gvr_api->GetEyeFromHeadMatrix(eye); - gfx::Transform eye_from_head; - gvr_utils::GvrMatToTransform(eye_mat, &eye_from_head); - DCHECK(eye_from_head.IsInvertible()); - gfx::Transform head_from_eye; - if (eye_from_head.GetInverse(&head_from_eye)) { - view->head_from_eye = head_from_eye; - } - - return view; -} - mojom::VRDisplayInfoPtr CreateVRDisplayInfo(gvr::GvrApi* gvr_api) { TRACE_EVENT0("input", "GvrDelegate::CreateVRDisplayInfo"); mojom::VRDisplayInfoPtr device = mojom::VRDisplayInfo::New(); - - gvr::BufferViewportList gvr_buffer_viewports = - gvr_api->CreateEmptyBufferViewportList(); - gvr_buffer_viewports.SetToRecommendedBufferViewports(); - - gfx::Size maximum_size = GetMaximumWebVrSize(gvr_api); - device->views.resize(2); - device->views[0] = - CreateView(gvr_api, GVR_LEFT_EYE, gvr_buffer_viewports, maximum_size); - device->views[1] = - CreateView(gvr_api, GVR_RIGHT_EYE, gvr_buffer_viewports, maximum_size); + device->views = device::gvr_utils::CreateViews(gvr_api, nullptr); return device; }
diff --git a/device/vr/android/gvr/gvr_utils.cc b/device/vr/android/gvr/gvr_utils.cc index 973e994d..bab1f50 100644 --- a/device/vr/android/gvr/gvr_utils.cc +++ b/device/vr/android/gvr/gvr_utils.cc
@@ -4,7 +4,83 @@ #include "device/vr/android/gvr/gvr_utils.h" +#include "device/vr/util/transform_utils.h" +#include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/gvr.h" +#include "ui/gfx/geometry/rect_f.h" #include "ui/gfx/transform.h" +#include "ui/gfx/transform_util.h" + +namespace { + +gfx::Size GetMaximumWebVrSize(gvr::GvrApi* gvr_api) { + // Get the default, unscaled size for the WebVR transfer surface + // based on the optimal 1:1 render resolution. A scalar will be applied to + // this value in the renderer to reduce the render load. This size will also + // be reported to the client via CreateVRDisplayInfo as the + // client-recommended render_width/render_height and for the GVR + // framebuffer. If the client chooses a different size or resizes it + // while presenting, we'll resize the transfer surface and GVR + // framebuffer to match. + gvr::Sizei render_target_size = + gvr_api->GetMaximumEffectiveRenderTargetSize(); + + gfx::Size webvr_size(render_target_size.width, render_target_size.height); + + // Ensure that the width is an even number so that the eyes each + // get the same size, the recommended render_width is per eye + // and the client will use the sum of the left and right width. + // + // TODO(klausw,crbug.com/699350): should we round the recommended + // size to a multiple of 2^N pixels to be friendlier to the GPU? The + // exact size doesn't matter, and it might be more efficient. + webvr_size.set_width(webvr_size.width() & ~1); + return webvr_size; +} + +device::mojom::XRViewPtr CreateView( + gvr::GvrApi* gvr_api, + gvr::Eye eye, + const gvr::BufferViewportList& buffers, + const gfx::Size& maximum_size, + const device::mojom::VRPose* mojo_from_head_pose) { + device::mojom::XRViewPtr view = device::mojom::XRView::New(); + + if (eye == GVR_LEFT_EYE) { + view->eye = device::mojom::XREye::kLeft; + } else if (eye == GVR_RIGHT_EYE) { + view->eye = device::mojom::XREye::kRight; + } else { + NOTREACHED(); + } + + view->field_of_view = device::mojom::VRFieldOfView::New(); + view->viewport = gfx::Size(maximum_size.width() / 2, maximum_size.height()); + + gvr::BufferViewport eye_viewport = gvr_api->CreateBufferViewport(); + buffers.GetBufferViewport(eye, &eye_viewport); + gvr::Rectf eye_fov = eye_viewport.GetSourceFov(); + view->field_of_view->up_degrees = eye_fov.top; + view->field_of_view->down_degrees = eye_fov.bottom; + view->field_of_view->left_degrees = eye_fov.left; + view->field_of_view->right_degrees = eye_fov.right; + + if (mojo_from_head_pose) { + gfx::Transform mojo_from_head = + device::vr_utils::VrPoseToTransform(mojo_from_head_pose); + gvr::Mat4f eye_mat = gvr_api->GetEyeFromHeadMatrix(eye); + gfx::Transform eye_from_head; + device::gvr_utils::GvrMatToTransform(eye_mat, &eye_from_head); + gfx::Transform head_from_eye; + bool is_invertible = eye_from_head.GetInverse(&head_from_eye); + DCHECK(is_invertible); + + view->mojo_from_view = mojo_from_head * head_from_eye; + } + + return view; +} + +} // namespace namespace device { namespace gvr_utils { @@ -16,5 +92,22 @@ in.m[3][0], in.m[3][1], in.m[3][2], in.m[3][3]); } +std::vector<device::mojom::XRViewPtr> CreateViews( + gvr::GvrApi* gvr_api, + const device::mojom::VRPose* mojo_from_head_pose) { + gvr::BufferViewportList gvr_buffer_viewports = + gvr_api->CreateEmptyBufferViewportList(); + gvr_buffer_viewports.SetToRecommendedBufferViewports(); + gfx::Size maximum_size = GetMaximumWebVrSize(gvr_api); + + std::vector<device::mojom::XRViewPtr> views(2); + views[0] = CreateView(gvr_api, GVR_LEFT_EYE, gvr_buffer_viewports, + maximum_size, mojo_from_head_pose); + views[1] = CreateView(gvr_api, GVR_RIGHT_EYE, gvr_buffer_viewports, + maximum_size, mojo_from_head_pose); + + return views; +} + } // namespace gvr_utils } // namespace device
diff --git a/device/vr/android/gvr/gvr_utils.h b/device/vr/android/gvr/gvr_utils.h index 151a080..e6918bc 100644 --- a/device/vr/android/gvr/gvr_utils.h +++ b/device/vr/android/gvr/gvr_utils.h
@@ -5,6 +5,8 @@ #ifndef DEVICE_VR_ANDROID_GVR_GVR_UTILS_H_ #define DEVICE_VR_ANDROID_GVR_GVR_UTILS_H_ +#include "device/vr/public/mojom/vr_service.mojom.h" +#include "device/vr/vr_export.h" #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/gvr_types.h" namespace gfx { @@ -14,6 +16,9 @@ namespace device { namespace gvr_utils { +std::vector<device::mojom::XRViewPtr> DEVICE_VR_EXPORT +CreateViews(gvr::GvrApi* gvr_api, const device::mojom::VRPose* head_pose); + void GvrMatToTransform(const gvr::Mat4f& in, gfx::Transform* out); } // namespace gvr_utils
diff --git a/device/vr/openxr/openxr_api_wrapper.cc b/device/vr/openxr/openxr_api_wrapper.cc index a382c4a..48a15f3 100644 --- a/device/vr/openxr/openxr_api_wrapper.cc +++ b/device/vr/openxr/openxr_api_wrapper.cc
@@ -22,11 +22,11 @@ #include "gpu/command_buffer/client/shared_image_interface.h" #include "gpu/command_buffer/common/shared_image_usage.h" #include "gpu/ipc/common/gpu_memory_buffer_impl_dxgi.h" +#include "ui/gfx/geometry/angle_conversions.h" #include "ui/gfx/geometry/point3_f.h" #include "ui/gfx/geometry/quaternion.h" #include "ui/gfx/geometry/size.h" #include "ui/gfx/transform.h" -#include "ui/gfx/transform_util.h" namespace device { @@ -87,8 +87,8 @@ swapchain_size_ = gfx::Size(0, 0); color_swapchain_images_.clear(); frame_state_ = {}; - origin_from_eye_views_.clear(); - head_from_eye_views_.clear(); + local_from_eye_views_.clear(); + local_from_viewer_ = {XR_TYPE_SPACE_LOCATION}; layer_projection_views_.clear(); input_helper_.reset(); } @@ -349,8 +349,7 @@ // Since the objects in these arrays are used on every frame, // we don't want to create and destroy these objects every frame, // so create the number of objects we need and reuse them. - origin_from_eye_views_.resize(kNumViews); - head_from_eye_views_.resize(kNumViews); + local_from_eye_views_.resize(kNumViews); layer_projection_views_.resize(kNumViews); // Make sure all of the objects we initialized are there. @@ -649,7 +648,7 @@ XrCompositionLayerProjection* multi_projection_layer_ptr = &multi_projection_layer; multi_projection_layer.space = local_space_; - multi_projection_layer.viewCount = origin_from_eye_views_.size(); + multi_projection_layer.viewCount = local_from_eye_views_.size(); multi_projection_layer.views = layer_projection_views_.data(); XrFrameEndInfo end_frame_info = {XR_TYPE_FRAME_END_INFO}; @@ -677,14 +676,16 @@ XrResult OpenXrApiWrapper::UpdateProjectionLayers() { RETURN_IF_XR_FAILED( - LocateViews(XR_REFERENCE_SPACE_TYPE_LOCAL, &origin_from_eye_views_)); - RETURN_IF_XR_FAILED( - LocateViews(XR_REFERENCE_SPACE_TYPE_VIEW, &head_from_eye_views_)); + LocateViews(XR_REFERENCE_SPACE_TYPE_LOCAL, &local_from_eye_views_)); + + RETURN_IF_XR_FAILED(xrLocateSpace(view_space_, local_space_, + frame_state_.predictedDisplayTime, + &local_from_viewer_)); uint32_t x_offset = 0; - for (uint32_t view_index = 0; view_index < origin_from_eye_views_.size(); + for (uint32_t view_index = 0; view_index < local_from_eye_views_.size(); view_index++) { - const XrView& view = origin_from_eye_views_[view_index]; + const XrView& view = local_from_eye_views_[view_index]; XrCompositionLayerProjectionView& layer_projection_view = layer_projection_views_[view_index]; @@ -771,18 +772,32 @@ return frame_state_.predictedDisplayTime; } -XrResult OpenXrApiWrapper::GetHeadPose( - absl::optional<gfx::Quaternion>* orientation, - absl::optional<gfx::Point3F>* position, - bool* emulated_position) const { - DCHECK(HasSpace(XR_REFERENCE_SPACE_TYPE_LOCAL)); - DCHECK(HasSpace(XR_REFERENCE_SPACE_TYPE_VIEW)); +std::vector<mojom::XRViewPtr> OpenXrApiWrapper::GetViews() const { + std::vector<mojom::XRViewPtr> views(local_from_eye_views_.size()); + for (size_t i = 0; i < local_from_eye_views_.size(); i++) { + const XrView& xr_view = local_from_eye_views_[i]; - XrSpaceLocation view_from_local = {XR_TYPE_SPACE_LOCATION}; - RETURN_IF_XR_FAILED(xrLocateSpace(view_space_, local_space_, - frame_state_.predictedDisplayTime, - &view_from_local)); + mojom::XRViewPtr view = mojom::XRView::New(); + view->eye = GetEyeFromIndex(i); + view->mojo_from_view = XrPoseToGfxTransform(xr_view.pose); + view->field_of_view = mojom::VRFieldOfView::New(); + view->field_of_view->up_degrees = gfx::RadToDeg(xr_view.fov.angleUp); + view->field_of_view->down_degrees = gfx::RadToDeg(-xr_view.fov.angleDown); + view->field_of_view->left_degrees = gfx::RadToDeg(-xr_view.fov.angleLeft); + view->field_of_view->right_degrees = gfx::RadToDeg(xr_view.fov.angleRight); + + view->viewport = gfx::Size(view_configs_[i].recommendedImageRectWidth, + view_configs_[i].recommendedImageRectHeight); + + views[i] = std::move(view); + } + + return views; +} + +mojom::VRPosePtr OpenXrApiWrapper::GetViewerPose() const { + mojom::VRPosePtr pose = mojom::VRPose::New(); // emulated_position indicates when there is a fallback from a fully-tracked // (i.e. 6DOF) type case to some form of orientation-only type tracking // (i.e. 3DOF/IMU type sensors) @@ -790,37 +805,24 @@ // Valid Bit only indicates it's either tracked or emulated, we have to check // for XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT to make sure orientation is // tracked. - if (view_from_local.locationFlags & + if (local_from_viewer_.locationFlags & XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT) { - *orientation = gfx::Quaternion( - view_from_local.pose.orientation.x, view_from_local.pose.orientation.y, - view_from_local.pose.orientation.z, view_from_local.pose.orientation.w); - } else { - *orientation = absl::nullopt; + pose->orientation = gfx::Quaternion(local_from_viewer_.pose.orientation.x, + local_from_viewer_.pose.orientation.y, + local_from_viewer_.pose.orientation.z, + local_from_viewer_.pose.orientation.w); } - if (view_from_local.locationFlags & XR_SPACE_LOCATION_POSITION_VALID_BIT) { - *position = gfx::Point3F(view_from_local.pose.position.x, - view_from_local.pose.position.y, - view_from_local.pose.position.z); - } else { - *position = absl::nullopt; + if (local_from_viewer_.locationFlags & XR_SPACE_LOCATION_POSITION_VALID_BIT) { + pose->position = gfx::Point3F(local_from_viewer_.pose.position.x, + local_from_viewer_.pose.position.y, + local_from_viewer_.pose.position.z); } - *emulated_position = true; - if (view_from_local.locationFlags & XR_SPACE_LOCATION_POSITION_TRACKED_BIT) { - *emulated_position = false; - } + pose->emulated_position = !(local_from_viewer_.locationFlags & + XR_SPACE_LOCATION_POSITION_TRACKED_BIT); - return XR_SUCCESS; -} - -void OpenXrApiWrapper::GetHeadFromEyes(XrView* left, XrView* right) const { - DCHECK(HasSession()); - DCHECK_EQ(head_from_eye_views_.size(), kNumViews); - - *left = head_from_eye_views_[kLeftView]; - *right = head_from_eye_views_[kRightView]; + return pose; } std::vector<mojom::XRInputSourceStatePtr> OpenXrApiWrapper::GetInputState( @@ -1060,4 +1062,14 @@ } } +mojom::XREye OpenXrApiWrapper::GetEyeFromIndex(int i) { + if (i == OpenXrApiWrapper::kLeftView) { + return mojom::XREye::kLeft; + } else if (i == OpenXrApiWrapper::kRightView) { + return mojom::XREye::kRight; + } else { + return mojom::XREye::kNone; + } +} + } // namespace device
diff --git a/device/vr/openxr/openxr_api_wrapper.h b/device/vr/openxr/openxr_api_wrapper.h index 3c114b0..16ee3cf 100644 --- a/device/vr/openxr/openxr_api_wrapper.h +++ b/device/vr/openxr/openxr_api_wrapper.h
@@ -24,8 +24,6 @@ #include "third_party/openxr/src/include/openxr/openxr_platform.h" namespace gfx { -class Quaternion; -class Point3F; class Size; class Transform; } // namespace gfx @@ -70,10 +68,8 @@ bool HasPendingFrame() const; bool HasFrameState() const; - XrResult GetHeadPose(absl::optional<gfx::Quaternion>* orientation, - absl::optional<gfx::Point3F>* position, - bool* emulated_position) const; - void GetHeadFromEyes(XrView* left, XrView* right) const; + std::vector<mojom::XRViewPtr> GetViews() const; + mojom::VRPosePtr GetViewerPose() const; std::vector<mojom::XRInputSourceStatePtr> GetInputState( bool hand_input_enabled); @@ -102,11 +98,14 @@ void StoreFence(Microsoft::WRL::ComPtr<ID3D11Fence> d3d11_fence, int16_t frame_index); + static mojom::XREye GetEyeFromIndex(int i); + // The number of views the OpenXR runtime is returning on each frame. static constexpr uint32_t kNumViews = 2; - // Per the OpenXR 1.0 spec, the XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO view - // configuration must have the left view in index 0 and right view in index 1. + // Per the OpenXR 1.0 spec for the XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO + // view configuration: View index 0 must represent the left eye and view index + // 1 must represent the right eye. static constexpr uint32_t kLeftView = 0; static constexpr uint32_t kRightView = 1; // Since kNumViews is used to size a vector that uses kLeftView/kRightView as @@ -199,8 +198,8 @@ // These objects store information about the current frame. They're // valid only while a session is active, and they are updated each frame. XrFrameState frame_state_; - std::vector<XrView> origin_from_eye_views_; - std::vector<XrView> head_from_eye_views_; + std::vector<XrView> local_from_eye_views_; + XrSpaceLocation local_from_viewer_; std::vector<XrCompositionLayerProjectionView> layer_projection_views_; std::unique_ptr<OpenXrAnchorManager> anchor_manager_;
diff --git a/device/vr/openxr/openxr_device.cc b/device/vr/openxr/openxr_device.cc index 4447dc9a..0d012d1f 100644 --- a/device/vr/openxr/openxr_device.cc +++ b/device/vr/openxr/openxr_device.cc
@@ -14,7 +14,6 @@ #include "device/vr/openxr/openxr_api_wrapper.h" #include "device/vr/openxr/openxr_render_loop.h" #include "device/vr/openxr/openxr_statics.h" -#include "device/vr/util/transform_utils.h" #include "mojo/public/cpp/bindings/pending_remote.h" namespace device { @@ -42,9 +41,6 @@ left_eye->field_of_view = mojom::VRFieldOfView::New(kFov, kFov, kFov, kFov); right_eye->field_of_view = left_eye->field_of_view.Clone(); - left_eye->head_from_eye = vr_utils::DefaultHeadFromLeftEyeTransform(); - right_eye->head_from_eye = vr_utils::DefaultHeadFromRightEyeTransform(); - left_eye->viewport = gfx::Size(kRenderWidth, kRenderHeight); right_eye->viewport = gfx::Size(kRenderWidth, kRenderHeight);
diff --git a/device/vr/openxr/openxr_render_loop.cc b/device/vr/openxr/openxr_render_loop.cc index 370bd46..41f84260 100644 --- a/device/vr/openxr/openxr_render_loop.cc +++ b/device/vr/openxr/openxr_render_loop.cc
@@ -13,7 +13,6 @@ #include "device/vr/openxr/openxr_input_helper.h" #include "device/vr/openxr/openxr_util.h" #include "device/vr/util/stage_utils.h" -#include "device/vr/util/transform_utils.h" #include "gpu/command_buffer/client/context_support.h" #include "gpu/command_buffer/client/gles2_interface.h" #include "mojo/public/cpp/bindings/message.h" @@ -66,36 +65,14 @@ frame_data->time_delta = base::TimeDelta::FromNanoseconds(openxr_->GetPredictedDisplayTime()); - + frame_data->views = openxr_->GetViews(); frame_data->input_state = openxr_->GetInputState( IsFeatureEnabled(device::mojom::XRSessionFeature::HAND_INPUT)); - frame_data->pose = mojom::VRPose::New(); - - absl::optional<gfx::Quaternion> orientation; - absl::optional<gfx::Point3F> position; - if (XR_SUCCEEDED(openxr_->GetHeadPose( - &orientation, &position, &frame_data->pose->emulated_position))) { - if (orientation.has_value()) - frame_data->pose->orientation = orientation; - - if (position.has_value()) - frame_data->pose->position = position; - } + frame_data->pose = openxr_->GetViewerPose(); UpdateStageParameters(); - if (UpdateViews()) { - frame_data->views.resize(current_display_info_->views.size()); - for (size_t i = 0; i < current_display_info_->views.size(); i++) { - frame_data->views[i] = current_display_info_->views[i].Clone(); - } - - main_thread_task_runner_->PostTask( - FROM_HERE, base::BindOnce(on_display_info_changed_, - current_display_info_.Clone())); - } - if (openxr_->HasFrameState()) { if (IsFeatureEnabled(device::mojom::XRSessionFeature::ANCHORS)) { OpenXrAnchorManager* anchor_manager = @@ -137,7 +114,6 @@ StartRuntimeCallback start_runtime_callback) { DCHECK(instance_ != XR_NULL_HANDLE); DCHECK(!openxr_); - DCHECK(!current_display_info_); // The new wrapper object is stored in a temporary variable instead of // openxr_ so that the local unique_ptr cleans up the object if starting @@ -171,7 +147,7 @@ openxr_ = std::move(openxr); texture_helper_.SetDefaultSize(openxr_->GetSwapchainSize()); - InitializeDisplayInfo(); + SendInitialDisplayInfo(); StartContextProviderIfNeeded(std::move(start_runtime_callback)); } @@ -181,7 +157,6 @@ // first, input_helper_destructor will try to call the actual openxr runtime // rather than the mock in tests. openxr_ = nullptr; - current_display_info_ = nullptr; texture_helper_.Reset(); context_provider_.reset(); } @@ -344,101 +319,27 @@ gl->DestroyGpuFenceCHROMIUM(id); } -// Return true if display info has changed. -void OpenXrRenderLoop::InitializeDisplayInfo() { - DCHECK(!current_display_info_); - current_display_info_ = mojom::VRDisplayInfo::New(); +void OpenXrRenderLoop::SendInitialDisplayInfo() { + mojom::VRDisplayInfoPtr display_info = mojom::VRDisplayInfo::New(); const std::vector<XrViewConfigurationView>& view_configs = openxr_->GetViewConfigs(); DCHECK_EQ(view_configs.size(), OpenXrApiWrapper::kNumViews); - current_display_info_->views.resize(OpenXrApiWrapper::kNumViews); + display_info->views.resize(OpenXrApiWrapper::kNumViews); for (size_t i = 0; i < OpenXrApiWrapper::kNumViews; i++) { - current_display_info_->views[i] = mojom::XRView::New(); - auto* view = current_display_info_->views[i].get(); - if (i == OpenXrApiWrapper::kLeftView) { - view->eye = mojom::XREye::kLeft; - } else if (i == OpenXrApiWrapper::kRightView) { - view->eye = mojom::XREye::kRight; - } else { - view->eye = mojom::XREye::kNone; - } + display_info->views[i] = mojom::XRView::New(); + auto* view = display_info->views[i].get(); + view->eye = OpenXrApiWrapper::GetEyeFromIndex(i); view->viewport = gfx::Size(view_configs[i].recommendedImageRectWidth, view_configs[i].recommendedImageRectHeight); - view->field_of_view = mojom::VRFieldOfView::New(45.0f, 45.0f, 45.0f, 45.0f); } main_thread_task_runner_->PostTask( FROM_HERE, - base::BindOnce(on_display_info_changed_, current_display_info_.Clone())); -} - -// return true if either left_eye or right_eye updated. -bool OpenXrRenderLoop::UpdateViews() { - bool changed = false; - - XrView left; - XrView right; - openxr_->GetHeadFromEyes(&left, &right); - const std::vector<XrViewConfigurationView>& view_configs = - openxr_->GetViewConfigs(); - DCHECK_EQ(view_configs.size(), OpenXrApiWrapper::kNumViews); - DCHECK_EQ(current_display_info_->views.size(), OpenXrApiWrapper::kNumViews); - DCHECK_EQ(current_display_info_->views[OpenXrApiWrapper::kLeftView]->eye, - mojom::XREye::kLeft); - DCHECK_EQ(current_display_info_->views[OpenXrApiWrapper::kRightView]->eye, - mojom::XREye::kRight); - - changed |= UpdateView( - left, view_configs[OpenXrApiWrapper::kLeftView].recommendedImageRectWidth, - view_configs[OpenXrApiWrapper::kLeftView].recommendedImageRectHeight, - ¤t_display_info_->views[OpenXrApiWrapper::kLeftView]); - - changed |= UpdateView( - right, - view_configs[OpenXrApiWrapper::kRightView].recommendedImageRectWidth, - view_configs[OpenXrApiWrapper::kRightView].recommendedImageRectHeight, - ¤t_display_info_->views[OpenXrApiWrapper::kRightView]); - - return changed; -} - -bool OpenXrRenderLoop::UpdateView(const XrView& view_head, - int width, - int height, - mojom::XRViewPtr* view) const { - bool changed = false; - - gfx::Transform head_from_eye = XrPoseToGfxTransform(view_head.pose); - if ((*view)->head_from_eye != head_from_eye) { - (*view)->head_from_eye = head_from_eye; - changed = true; - } - - if ((*view)->viewport.width() != width) { - (*view)->viewport.set_width(width); - changed = true; - } - - if ((*view)->viewport.height() != height) { - (*view)->viewport.set_height(height); - changed = true; - } - - mojom::VRFieldOfViewPtr fov = - mojom::VRFieldOfView::New(gfx::RadToDeg(view_head.fov.angleUp), - gfx::RadToDeg(-view_head.fov.angleDown), - gfx::RadToDeg(-view_head.fov.angleLeft), - gfx::RadToDeg(view_head.fov.angleRight)); - if (!(*view)->field_of_view || !fov->Equals(*(*view)->field_of_view)) { - (*view)->field_of_view = std::move(fov); - changed = true; - } - - return changed; + base::BindOnce(on_display_info_changed_, std::move(display_info))); } void OpenXrRenderLoop::UpdateStageParameters() {
diff --git a/device/vr/openxr/openxr_render_loop.h b/device/vr/openxr/openxr_render_loop.h index 5b5d6839..a9659cd 100644 --- a/device/vr/openxr/openxr_render_loop.h +++ b/device/vr/openxr/openxr_render_loop.h
@@ -74,7 +74,7 @@ // viz::ContextLostObserver Implementation void OnContextLost() override; - void InitializeDisplayInfo(); + void SendInitialDisplayInfo(); bool UpdateViews(); bool UpdateView(const XrView& view_head, int width, @@ -137,7 +137,6 @@ base::RepeatingCallback<void(mojom::VRDisplayInfoPtr)> on_display_info_changed_; - mojom::VRDisplayInfoPtr current_display_info_; mojo::AssociatedReceiver<mojom::XREnvironmentIntegrationProvider> environment_receiver_{this};
diff --git a/device/vr/public/mojom/isolated_xr_service.mojom b/device/vr/public/mojom/isolated_xr_service.mojom index e4b7e19..0df14ab 100644 --- a/device/vr/public/mojom/isolated_xr_service.mojom +++ b/device/vr/public/mojom/isolated_xr_service.mojom
@@ -115,6 +115,14 @@ // The pose may be null if the device lost tracking. VRPose? pose; + + // Information about all the views in a frame. Views can appear in any order + // so it should not be assumed the left eye comes before the right eye. It is + // valid for the array to contain multiple views of the same eye. An example + // of this scenario are displays that have dominant left/right eyes and inset + // left/right eyes. In these scenarios, the dominant views comes before the + // inset views in the array. + array<XRView> views; }; // Represents an overlay that the browser may show on top of or instead of WebXR
diff --git a/device/vr/public/mojom/vr_service.mojom b/device/vr/public/mojom/vr_service.mojom index 78f3f292..07e6ccf 100644 --- a/device/vr/public/mojom/vr_service.mojom +++ b/device/vr/public/mojom/vr_service.mojom
@@ -442,11 +442,17 @@ XREye eye; VRFieldOfView field_of_view; - // Describes the relationship between the head and eye space for this device. - // It should always include translation that is based on IPD (interpupillary - // distance), and will sometimes include rotation if the device has angled - // screens. - gfx.mojom.Transform head_from_eye; + // The pose transform of this view relative to the device's native origin. + // This transformation is equivalent to mojo_from_viewer * viewer_from_view. + // OpenXR has an API that directly returns this transformation matrix. ARCore + // and GVR only expose the head pose (aka. mojo_from_viewer) and the + // head-from-eye pose (viewer_from_view), so this calculation needs to be + // done in the XR process before sending to the renderer. + // TODO(https://crbug.com/1070380): All of the runtimes currently assume mojo + // and local space are equivalent, so this is the same as local_from_view. + // Instead, send this in mojo space and send the relevant transforms to other + // spaces in XRFrameData so the clients can calculate them as needed. + gfx.mojom.Transform mojo_from_view; // A viewport describes the rectangular region that the underlying graphics // API should use to render this view. @@ -793,8 +799,9 @@ struct XRFrameData { // General XRSession value - // The pose may be null if the device lost tracking. The XRFrameData can still - // have other data, such as pass through camera image. + // The viewer pose of this frame. The pose may be null if the device lost + // tracking. The XRFrameData can still have other data, such as pass through + // camera image. VRPose? pose; // Time delta from an unspecified origin. mojo_base.mojom.TimeDelta time_delta; @@ -831,12 +838,10 @@ // imply no mapping. int16 frame_id; - // Information about all the views in a frame. This array is non-empty only if - // any of the views have changed since the last frame. In this case, since - // there is no way to identify which views have changed, all the views - // including unchanged views are present in the array. It is valid for the - // array to contain multiple views of the same eye. An example of this - // scenario are displays that have dominant left/right eyes and inset + // Information about all the views in a frame. Views can appear in any order + // so it should not be assumed the left eye comes before the right eye. It is + // valid for the array to contain multiple views of the same eye. An example + // of this scenario are displays that have dominant left/right eyes and inset // left/right eyes. In these scenarios, the dominant views comes before the // inset views in the array. array<XRView> views;
diff --git a/device/vr/test/fake_vr_device.cc b/device/vr/test/fake_vr_device.cc index 528ca40..866e3ef 100644 --- a/device/vr/test/fake_vr_device.cc +++ b/device/vr/test/fake_vr_device.cc
@@ -39,7 +39,7 @@ gfx::DecomposedTransform decomp; decomp.translate[0] = offset; - view->head_from_eye = gfx::ComposeTransform(decomp); + view->mojo_from_view = gfx::ComposeTransform(decomp); view->viewport = gfx::Size(size, size);
diff --git a/device/vr/util/transform_utils.cc b/device/vr/util/transform_utils.cc index c6a80e8..a4aadfe 100644 --- a/device/vr/util/transform_utils.cc +++ b/device/vr/util/transform_utils.cc
@@ -4,35 +4,27 @@ #include "device/vr/util/transform_utils.h" -#include "ui/gfx/geometry/vector3d_f.h" #include "ui/gfx/transform.h" #include "ui/gfx/transform_util.h" namespace device { namespace vr_utils { -gfx::Transform MakeTranslationTransform(float x, float y, float z) { +gfx::Transform VrPoseToTransform(const device::mojom::VRPose* pose) { gfx::DecomposedTransform decomp; - decomp.translate[0] = x; - decomp.translate[1] = y; - decomp.translate[2] = z; + if (pose->orientation) { + decomp.quaternion = + gfx::Quaternion(pose->orientation->x(), pose->orientation->y(), + pose->orientation->z(), pose->orientation->w()); + } + if (pose->position) { + decomp.translate[0] = pose->position->x(); + decomp.translate[1] = pose->position->y(); + decomp.translate[2] = pose->position->z(); + } + return gfx::ComposeTransform(decomp); } -gfx::Transform MakeTranslationTransform(const gfx::Vector3dF& translation) { - return MakeTranslationTransform(translation.x(), translation.y(), - translation.z()); -} - -constexpr float kDefaultIPD = 0.1f; // 10cm - -gfx::Transform DefaultHeadFromLeftEyeTransform() { - return MakeTranslationTransform(-kDefaultIPD * 0.5, 0, 0); -} - -gfx::Transform DefaultHeadFromRightEyeTransform() { - return MakeTranslationTransform(kDefaultIPD * 0.5, 0, 0); -} - } // namespace vr_utils } // namespace device
diff --git a/device/vr/util/transform_utils.h b/device/vr/util/transform_utils.h index 3e39b47..debbc51 100644 --- a/device/vr/util/transform_utils.h +++ b/device/vr/util/transform_utils.h
@@ -6,21 +6,17 @@ #define DEVICE_VR_UTIL_TRANSFORM_UTILS_H_ #include "base/component_export.h" +#include "device/vr/public/mojom/vr_service.mojom.h" namespace gfx { class Transform; -class Vector3dF; } // namespace gfx namespace device { namespace vr_utils { -gfx::Transform MakeTranslationTransform(float x, float y, float z); -gfx::Transform MakeTranslationTransform(const gfx::Vector3dF& translation); gfx::Transform COMPONENT_EXPORT(DEVICE_VR_UTIL) - DefaultHeadFromLeftEyeTransform(); -gfx::Transform COMPONENT_EXPORT(DEVICE_VR_UTIL) - DefaultHeadFromRightEyeTransform(); + VrPoseToTransform(const device::mojom::VRPose* pose); } // namespace vr_utils } // namespace device
diff --git a/device/vr/windows/compositor_base.cc b/device/vr/windows/compositor_base.cc index 3ccd37a..910b3212 100644 --- a/device/vr/windows/compositor_base.cc +++ b/device/vr/windows/compositor_base.cc
@@ -25,6 +25,10 @@ result->frame_id = frame_data.frame_id; result->pose = frame_data.pose.Clone(); + for (size_t i = 0; i < frame_data.views.size(); i++) { + result->views.push_back(frame_data.views[i]->Clone()); + } + return result; }
diff --git a/extensions/browser/content_script_tracker.cc b/extensions/browser/content_script_tracker.cc index 32c02d9..250e3ffb 100644 --- a/extensions/browser/content_script_tracker.cc +++ b/extensions/browser/content_script_tracker.cc
@@ -11,6 +11,7 @@ #include "base/logging.h" #include "base/memory/ptr_util.h" #include "base/ranges/algorithm.h" +#include "base/trace_event/typed_macros.h" #include "components/guest_view/browser/guest_view_base.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/global_routing_id.h" @@ -28,8 +29,11 @@ #include "extensions/common/extension.h" #include "extensions/common/manifest_handlers/content_scripts_handler.h" #include "extensions/common/permissions/permissions_data.h" +#include "extensions/common/trace_util.h" #include "extensions/common/user_script.h" +using perfetto::protos::pbzero::ChromeTrackEvent; + namespace extensions { namespace { @@ -67,7 +71,8 @@ // passed to the `process` (i.e. the new RenderProcessHostUserData will be // destroyed at the same time as the `process` - this is why we don't need // to purge or destroy the set from within ContentScriptTracker). - auto owned_self = base::WrapUnique(new RenderProcessHostUserData); + auto owned_self = + base::WrapUnique(new RenderProcessHostUserData(process)); self = owned_self.get(); process.SetUserData(kUserDataKey, std::move(owned_self)); } @@ -77,13 +82,22 @@ } // base::SupportsUserData::Data override: - ~RenderProcessHostUserData() override = default; + ~RenderProcessHostUserData() override { + TRACE_EVENT_END("extensions", perfetto::Track::FromPointer(this), + ChromeTrackEvent::kRenderProcessHost, process_); + } bool HasContentScript(const ExtensionId& extension_id) const { return base::Contains(content_scripts_, extension_id); } void AddContentScript(const ExtensionId& extension_id) { + TRACE_EVENT_INSTANT( + "extensions", + "ContentScriptTracker::RenderProcessHostUserData::AddContentScript", + ChromeTrackEvent::kRenderProcessHost, process_, + ChromeTrackEvent::kChromeExtensionId, + ExtensionIdForTracing(extension_id)); content_scripts_.insert(extension_id); } @@ -92,7 +106,13 @@ const std::set<content::RenderFrameHost*>& frames() const { return frames_; } private: - RenderProcessHostUserData() = default; + explicit RenderProcessHostUserData(content::RenderProcessHost& process) + : process_(process) { + TRACE_EVENT_BEGIN("extensions", + "ContentScriptTracker::RenderProcessHostUserData", + perfetto::Track::FromPointer(this), + ChromeTrackEvent::kRenderProcessHost, process_); + } static const char* kUserDataKey; @@ -106,6 +126,9 @@ // frames so that when a new extension is loaded, then ContentScriptTracker // can know where content scripts may be injected. std::set<content::RenderFrameHost*> frames_; + + // Only used for tracing. + content::RenderProcessHost& process_; }; const char* RenderProcessHostUserData::kUserDataKey = @@ -374,6 +397,11 @@ content::NavigationHandle* navigation) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + content::RenderProcessHost* process = + navigation->GetRenderFrameHost()->GetProcess(); + TRACE_EVENT("extensions", "ContentScriptTracker::ReadyToCommitNavigation", + ChromeTrackEvent::kRenderProcessHost, *process); + // Store `extensions_injecting_content_scripts` in // `process_data`. ContentScriptTracker never removes entries // from this set - once a renderer process gains an ability to talk on behalf @@ -383,8 +411,7 @@ // inside RenderProcessHostUserData::GetOrCreate). std::vector<const Extension*> extensions_injecting_content_scripts = GetExtensionsInjectingContentScripts(navigation); - auto& process_data = RenderProcessHostUserData::GetOrCreate( - *navigation->GetRenderFrameHost()->GetProcess()); + auto& process_data = RenderProcessHostUserData::GetOrCreate(*process); for (const Extension* extension : extensions_injecting_content_scripts) process_data.AddContentScript(extension->id()); @@ -418,8 +445,14 @@ const mojom::HostID& host_id) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + content::RenderProcessHost& process = *frame->GetProcess(); + TRACE_EVENT("extensions", "ContentScriptTracker::WillExecuteCode/1", + ChromeTrackEvent::kRenderProcessHost, process, + ChromeTrackEvent::kChromeExtensionId, + ExtensionIdForTracing(host_id.id)); + const Extension* extension = - FindExtensionByHostId(frame->GetProcess()->GetBrowserContext(), host_id); + FindExtensionByHostId(process.GetBrowserContext(), host_id); if (!extension) return; @@ -431,6 +464,12 @@ base::PassKey<RequestContentScript> pass_key, content::RenderFrameHost* frame, const Extension& extension) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + TRACE_EVENT("extensions", "ContentScriptTracker::WillExecuteCode/2", + ChromeTrackEvent::kRenderProcessHost, *frame->GetProcess(), + ChromeTrackEvent::kChromeExtensionId, + ExtensionIdForTracing(extension.id())); + HandleProgrammaticContentScriptInjection(PassKey(), frame, extension); } @@ -439,6 +478,12 @@ base::PassKey<UserScriptLoader> pass_key, const mojom::HostID& host_id, content::RenderProcessHost& process) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + TRACE_EVENT( + "extensions", "ContentScriptTracker::WillUpdateContentScriptsInRenderer", + ChromeTrackEvent::kRenderProcessHost, process, + ChromeTrackEvent::kChromeExtensionId, ExtensionIdForTracing(host_id.id)); + const Extension* extension = FindExtensionByHostId(process.GetBrowserContext(), host_id); if (!extension)
diff --git a/extensions/browser/extension_message_filter.cc b/extensions/browser/extension_message_filter.cc index 0623261c..10e550a 100644 --- a/extensions/browser/extension_message_filter.cc +++ b/extensions/browser/extension_message_filter.cc
@@ -7,7 +7,9 @@ #include "base/bind.h" #include "base/macros.h" #include "base/memory/singleton.h" +#include "base/metrics/histogram_functions.h" #include "base/stl_util.h" +#include "base/trace_event/typed_macros.h" #include "components/crx_file/id_util.h" #include "components/keyed_service/content/browser_context_keyed_service_shutdown_notifier_factory.h" #include "components/keyed_service/core/keyed_service_shutdown_notifier.h" @@ -30,10 +32,12 @@ #include "extensions/common/extension.h" #include "extensions/common/extension_messages.h" #include "extensions/common/manifest_handlers/background_info.h" +#include "extensions/common/trace_util.h" #include "ipc/ipc_message_macros.h" using content::BrowserThread; using content::RenderProcessHost; +using perfetto::protos::pbzero::ChromeTrackEvent; namespace extensions { @@ -101,13 +105,31 @@ return true; case MessagingEndpoint::Type::kTab: - if (source_endpoint.extension_id.has_value() && - !ContentScriptTracker::DidProcessRunContentScriptFromExtension( - process, source_endpoint.extension_id.value())) { - // TODO(https://crbug.com/1212918: Re-enable the enforcement after - // investigating and fixing the root cause of bad message reports coming - // from the end users. - LOG(ERROR) << "EMF_INVALID_EXTENSION_ID_FOR_CONTENT_SCRIPT"; + if (source_endpoint.extension_id.has_value()) { + const std::string& extension_id = source_endpoint.extension_id.value(); + bool is_content_script_expected = + ContentScriptTracker::DidProcessRunContentScriptFromExtension( + process, extension_id); + if (!is_content_script_expected) { + // TODO(https://crbug.com/1212918): Re-enable the enforcement (i.e. + // replace the UmaHistogramSparse call with a call to + // ReceivedBadMessage and returning false) after investigating and + // fixing the root cause of incorrect behavior reports coming from the + // end users. + TRACE_EVENT_INSTANT("extensions", + "IsValidMessagingSource: kTab: bad message", + ChromeTrackEvent::kRenderProcessHost, process, + ChromeTrackEvent::kChromeExtensionId, + ExtensionIdForTracing(extension_id)); + base::UmaHistogramSparse( + "Stability.BadMessageTerminated.Extensions", + bad_message::EMF_INVALID_EXTENSION_ID_FOR_CONTENT_SCRIPT); + } else { + TRACE_EVENT_INSTANT("extensions", "IsValidMessagingSource: kTab: ok", + ChromeTrackEvent::kRenderProcessHost, process, + ChromeTrackEvent::kChromeExtensionId, + ExtensionIdForTracing(extension_id)); + } } return true; } @@ -315,6 +337,8 @@ auto* process = content::RenderProcessHost::FromID(render_process_id_); if (!process) return; + TRACE_EVENT("extensions", "ExtensionMessageFilter::OnOpenChannelToExtension", + ChromeTrackEvent::kRenderProcessHost, *process); ScopedExternalConnectionInfoCrashKeys info_crash_keys(info); if (!IsValidMessagingSource(*process, info.source_endpoint) ||
diff --git a/extensions/common/BUILD.gn b/extensions/common/BUILD.gn index c29c10e..5bf786c 100644 --- a/extensions/common/BUILD.gn +++ b/extensions/common/BUILD.gn
@@ -26,9 +26,7 @@ deps = [ "//build:chromecast_buildflags" ] - configs += [ - "//build/config/compiler:wexit_time_destructors", - ] + configs += [ "//build/config/compiler:wexit_time_destructors" ] } if (enable_extensions) { @@ -394,6 +392,8 @@ "stack_frame.h", "switches.cc", "switches.h", + "trace_util.cc", + "trace_util.h", "url_pattern.cc", "url_pattern.h", "url_pattern_set.cc",
diff --git a/extensions/common/trace_util.cc b/extensions/common/trace_util.cc new file mode 100644 index 0000000..91ffa44 --- /dev/null +++ b/extensions/common/trace_util.cc
@@ -0,0 +1,19 @@ +// Copyright 2021 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 "extensions/common/trace_util.h" + +#include "content/public/common/pseudonymization_util.h" + +namespace extensions { + +void ExtensionIdForTracing::WriteIntoTrace( + perfetto::TracedProto<perfetto::protos::pbzero::ChromeExtensionId> proto) + const { + proto->set_extension_id(extension_id_); + proto->set_pseudonymized_extension_id( + content::PseudonymizationUtil::PseudonymizeString(extension_id_)); +} + +} // namespace extensions
diff --git a/extensions/common/trace_util.h b/extensions/common/trace_util.h new file mode 100644 index 0000000..47896bb --- /dev/null +++ b/extensions/common/trace_util.h
@@ -0,0 +1,43 @@ +// Copyright 2021 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 EXTENSIONS_COMMON_TRACE_UTIL_H_ +#define EXTENSIONS_COMMON_TRACE_UTIL_H_ + +#include "base/tracing/protos/chrome_track_event.pbzero.h" +#include "extensions/common/extension_id.h" +#include "third_party/perfetto/include/perfetto/tracing/traced_proto.h" + +namespace extensions { + +// Helper for logging extension id in go/chrometto traces like so: +// +// #include "base/trace_event/typed_macros.h" +// #include "extensions/common/trace_util.h" +// +// using perfetto::protos::pbzero::ChromeTrackEvent; +// +// TRACE_EVENT( +// "extensions", "event name", ..., +// ChromeTrackEvent::kChromeExtensionId, +// ExtensionIdForTracing(extension_id), +// ...); +class ExtensionIdForTracing { + public: + explicit ExtensionIdForTracing(const ExtensionId& extension_id) + : extension_id_(extension_id) {} + + ~ExtensionIdForTracing() = default; + + void WriteIntoTrace( + perfetto::TracedProto<perfetto::protos::pbzero::ChromeExtensionId> proto) + const; + + private: + const ExtensionId extension_id_; +}; + +} // namespace extensions + +#endif // EXTENSIONS_COMMON_TRACE_UTIL_H_
diff --git a/extensions/renderer/BUILD.gn b/extensions/renderer/BUILD.gn index cb220e07..534e02d 100644 --- a/extensions/renderer/BUILD.gn +++ b/extensions/renderer/BUILD.gn
@@ -210,6 +210,7 @@ "test_features_native_handler.h", "test_native_handler.cc", "test_native_handler.h", + "trace_util.h", "user_gestures_native_handler.cc", "user_gestures_native_handler.h", "user_script_injector.cc",
diff --git a/extensions/renderer/dispatcher.cc b/extensions/renderer/dispatcher.cc index aa57b620..9a32f5e0 100644 --- a/extensions/renderer/dispatcher.cc +++ b/extensions/renderer/dispatcher.cc
@@ -87,6 +87,7 @@ #include "extensions/renderer/static_v8_external_one_byte_string_resource.h" #include "extensions/renderer/test_features_native_handler.h" #include "extensions/renderer/test_native_handler.h" +#include "extensions/renderer/trace_util.h" #include "extensions/renderer/user_gestures_native_handler.h" #include "extensions/renderer/utils_native_handler.h" #include "extensions/renderer/v8_context_native_handler.h" @@ -774,6 +775,8 @@ const ExtensionId& extension_id, const std::string& script_id, const GURL& url) { + TRACE_RENDERER_EXTENSION_EVENT("Dispatcher::ExecuteDeclarativeScript", + extension_id); script_injection_manager_->ExecuteDeclarativeScript( render_frame, tab_id, extension_id, script_id, url); } @@ -781,6 +784,7 @@ void Dispatcher::ExecuteCode(mojom::ExecuteCodeParamsPtr param, mojom::LocalFrame::ExecuteCodeCallback callback, content::RenderFrame* render_frame) { + TRACE_RENDERER_EXTENSION_EVENT("Dispatcher::ExecuteCode", param->host_id->id); script_injection_manager_->HandleExecuteCode( std::move(param), std::move(callback), render_frame); } @@ -974,6 +978,8 @@ } void Dispatcher::ActivateExtension(const std::string& extension_id) { + TRACE_RENDERER_EXTENSION_EVENT("Dispatcher::ActivateExtension", extension_id); + const Extension* extension = RendererExtensionRegistry::Get()->GetByID(extension_id); if (!extension) { @@ -1076,6 +1082,8 @@ } void Dispatcher::UnloadExtension(const std::string& extension_id) { + TRACE_RENDERER_EXTENSION_EVENT("Dispatcher::UnloadExtension", extension_id); + // See comment in OnLoaded for why it would be nice, but perhaps incorrect, // to CHECK here rather than guarding. // TODO(devlin): This may be fixed by crbug.com/528026. Monitor, and @@ -1132,6 +1140,8 @@ void Dispatcher::SuspendExtension( const std::string& extension_id, mojom::Renderer::SuspendExtensionCallback callback) { + TRACE_RENDERER_EXTENSION_EVENT("Dispatcher::SuspendExtension", extension_id); + // Dispatch the suspend event. This doesn't go through the standard event // dispatch machinery because it requires special handling. We need to let // the browser know when we are starting and stopping the event dispatch, so @@ -1203,6 +1213,7 @@ void Dispatcher::UpdateUserScripts( base::ReadOnlySharedMemoryRegion shared_memory, mojom::HostIDPtr host_id) { + TRACE_RENDERER_EXTENSION_EVENT("Dispatcher::UpdateUserScripts", host_id->id); user_script_set_manager_->OnUpdateUserScripts(std::move(shared_memory), *host_id); }
diff --git a/extensions/renderer/ipc_message_sender.cc b/extensions/renderer/ipc_message_sender.cc index eb6437a..e21ad23 100644 --- a/extensions/renderer/ipc_message_sender.cc +++ b/extensions/renderer/ipc_message_sender.cc
@@ -18,12 +18,14 @@ #include "extensions/common/features/feature.h" #include "extensions/common/mojom/event_router.mojom.h" #include "extensions/common/mojom/frame.mojom.h" +#include "extensions/common/trace_util.h" #include "extensions/renderer/dispatcher.h" #include "extensions/renderer/extension_frame_helper.h" #include "extensions/renderer/extensions_renderer_client.h" #include "extensions/renderer/message_target.h" #include "extensions/renderer/native_extension_bindings_system.h" #include "extensions/renderer/script_context.h" +#include "extensions/renderer/trace_util.h" #include "extensions/renderer/worker_thread_dispatcher.h" #include "ipc/ipc_sync_channel.h" #include "mojo/public/cpp/bindings/associated_remote.h" @@ -155,6 +157,9 @@ info.target_id = *target.extension_id; info.source_url = script_context->url(); + TRACE_RENDERER_EXTENSION_EVENT( + "MainThreadIPCMessageSender::SendOpenMessageChannel/extension", + *target.extension_id); render_thread_->Send(new ExtensionHostMsg_OpenChannelToExtension( frame_context, info, channel_name, port_id)); break; @@ -370,6 +375,9 @@ } info.target_id = *target.extension_id; info.source_url = script_context->url(); + TRACE_RENDERER_EXTENSION_EVENT( + "WorkerThreadIPCMessageSender::SendOpenMessageChannel/extension", + *target.extension_id); dispatcher_->Send(new ExtensionHostMsg_OpenChannelToExtension( PortContextForCurrentWorker(), info, channel_name, port_id)); break;
diff --git a/extensions/renderer/script_injection.cc b/extensions/renderer/script_injection.cc index 3f8c964..4a7f051 100644 --- a/extensions/renderer/script_injection.cc +++ b/extensions/renderer/script_injection.cc
@@ -13,8 +13,11 @@ #include "base/macros.h" #include "base/metrics/histogram_macros.h" #include "base/timer/elapsed_timer.h" +#include "base/trace_event/typed_macros.h" +#include "base/tracing/protos/chrome_track_event.pbzero.h" #include "base/values.h" #include "content/public/renderer/render_frame.h" +#include "content/public/renderer/render_thread.h" #include "content/public/renderer/v8_value_converter.h" #include "extensions/common/extension_features.h" #include "extensions/common/extension_messages.h" @@ -26,6 +29,7 @@ #include "extensions/renderer/extensions_renderer_client.h" #include "extensions/renderer/script_injection_callback.h" #include "extensions/renderer/scripts_run_info.h" +#include "extensions/renderer/trace_util.h" #include "services/metrics/public/cpp/ukm_source_id.h" #include "third_party/blink/public/platform/web_isolated_world_info.h" #include "third_party/blink/public/platform/web_security_origin.h" @@ -35,6 +39,8 @@ #include "third_party/blink/public/web/web_script_source.h" #include "url/gurl.h" +using perfetto::protos::pbzero::ChromeTrackEvent; + namespace extensions { namespace { @@ -174,11 +180,22 @@ log_activity_(log_activity), frame_watcher_(new FrameWatcher(render_frame, this)) { CHECK(injection_host_.get()); + TRACE_EVENT_BEGIN( + "extensions", "ScriptInjection", perfetto::Track::FromPointer(this), + ChromeTrackEvent::kRenderProcessHost, *content::RenderThread::Get(), + ChromeTrackEvent::kChromeExtensionId, + ExtensionIdForTracing(host_id().id)); } ScriptInjection::~ScriptInjection() { if (!complete_) NotifyWillNotInject(ScriptInjector::WONT_INJECT); + + TRACE_EVENT_END("extensions", perfetto::Track::FromPointer(this), + ChromeTrackEvent::kRenderProcessHost, + *content::RenderThread::Get(), + ChromeTrackEvent::kChromeExtensionId, + ExtensionIdForTracing(host_id().id)); } ScriptInjection::InjectionResult ScriptInjection::TryToInject( @@ -302,6 +319,8 @@ void ScriptInjection::InjectJs(std::set<std::string>* executing_scripts, size_t* num_injected_js_scripts) { + TRACE_RENDERER_EXTENSION_EVENT("ScriptInjection::InjectJs", host_id().id); + DCHECK(!did_inject_js_); std::vector<blink::WebScriptSource> sources = injector_->GetJsSources( run_location_, executing_scripts, num_injected_js_scripts);
diff --git a/extensions/renderer/trace_util.h b/extensions/renderer/trace_util.h new file mode 100644 index 0000000..79ed3b7 --- /dev/null +++ b/extensions/renderer/trace_util.h
@@ -0,0 +1,24 @@ +// Copyright 2021 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 EXTENSIONS_RENDERER_TRACE_UTIL_H_ +#define EXTENSIONS_RENDERER_TRACE_UTIL_H_ + +#include "base/trace_event/typed_macros.h" +#include "base/tracing/protos/chrome_track_event.pbzero.h" +#include "content/public/renderer/render_thread.h" +#include "extensions/common/trace_util.h" + +// Helper macro for adding renderer-side, extension-related trace events that +// capture 1) extension id (passed as an argument of the helper macro) and 2) +// render process id (implicitly retrieved under the covers via +// `content::RenderThread`). +#define TRACE_RENDERER_EXTENSION_EVENT(event_name, extension_id) \ + TRACE_EVENT("extensions", event_name, \ + perfetto::protos::pbzero::ChromeTrackEvent::kRenderProcessHost, \ + *content::RenderThread::Get(), \ + perfetto::protos::pbzero::ChromeTrackEvent::kChromeExtensionId, \ + ExtensionIdForTracing(extension_id)) + +#endif // EXTENSIONS_RENDERER_TRACE_UTIL_H_
diff --git a/infra/config/generated/cr-buildbucket.cfg b/infra/config/generated/cr-buildbucket.cfg index 74b35fb..a287272d4 100644 --- a/infra/config/generated/cr-buildbucket.cfg +++ b/infra/config/generated/cr-buildbucket.cfg
@@ -21927,12 +21927,12 @@ ' "sheriff_rotations": [' ' "chromium.clang"' ' ],' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 50400 caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -22015,12 +22015,12 @@ ' "sheriff_rotations": [' ' "chromium.clang"' ' ],' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 50400 caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -33397,12 +33397,12 @@ ' },' ' "builder_group": "chromium.fyi",' ' "recipe": "chromium",' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 36000 caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -33493,12 +33493,12 @@ ' "chromium",' ' "ios"' ' ],' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 10800 caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -33585,12 +33585,12 @@ ' "chromium",' ' "ios"' ' ],' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 10800 caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -33682,12 +33682,12 @@ ' },' ' "builder_group": "chromium.fyi",' ' "recipe": "chromium",' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 72000 caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -33774,12 +33774,12 @@ ' },' ' "builder_group": "chromium.fyi",' ' "recipe": "chromium",' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 36000 caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -33870,12 +33870,12 @@ ' "chromium",' ' "ios"' ' ],' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 10800 caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -33958,12 +33958,12 @@ ' },' ' "builder_group": "chromium.fyi",' ' "recipe": "chromium",' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 36000 caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -34054,12 +34054,12 @@ ' "chromium",' ' "ios"' ' ],' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 10800 caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -34234,12 +34234,12 @@ ' },' ' "builder_group": "chromium.fyi",' ' "recipe": "chromium",' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 36000 caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -34418,12 +34418,12 @@ ' },' ' "builder_group": "chromium.fyi",' ' "recipe": "chromium",' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 36000 caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -67348,7 +67348,7 @@ ' },' ' "builder_group": "tryserver.chromium.mac",' ' "recipe": "chromium_trybot",' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 14400 expiration_secs: 7200 @@ -67360,8 +67360,8 @@ path: "win_toolchain" } caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -67459,7 +67459,7 @@ ' },' ' "builder_group": "tryserver.chromium.mac",' ' "recipe": "chromium_trybot",' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 14400 expiration_secs: 7200 @@ -67471,8 +67471,8 @@ path: "win_toolchain" } caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -67562,7 +67562,7 @@ ' },' ' "builder_group": "tryserver.chromium.mac",' ' "recipe": "chromium_trybot",' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 14400 expiration_secs: 7200 @@ -67574,8 +67574,8 @@ path: "win_toolchain" } caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -67673,7 +67673,7 @@ ' },' ' "builder_group": "tryserver.chromium.mac",' ' "recipe": "chromium_trybot",' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 14400 expiration_secs: 7200 @@ -67685,8 +67685,8 @@ path: "win_toolchain" } caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -67776,7 +67776,7 @@ ' },' ' "builder_group": "tryserver.chromium.mac",' ' "recipe": "chromium_trybot",' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 14400 expiration_secs: 7200 @@ -67788,8 +67788,8 @@ path: "win_toolchain" } caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -67879,7 +67879,7 @@ ' },' ' "builder_group": "tryserver.chromium.mac",' ' "recipe": "chromium_trybot",' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 14400 expiration_secs: 7200 @@ -67891,8 +67891,8 @@ path: "win_toolchain" } caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -67982,7 +67982,7 @@ ' },' ' "builder_group": "tryserver.chromium.mac",' ' "recipe": "chromium_trybot",' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 14400 expiration_secs: 7200 @@ -67994,8 +67994,8 @@ path: "win_toolchain" } caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -68092,7 +68092,7 @@ ' },' ' "builder_group": "tryserver.chromium.mac",' ' "recipe": "chromium_trybot",' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 14400 expiration_secs: 7200 @@ -68104,8 +68104,8 @@ path: "win_toolchain" } caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -68195,7 +68195,7 @@ ' },' ' "builder_group": "tryserver.chromium.mac",' ' "recipe": "chromium_trybot",' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 14400 expiration_secs: 7200 @@ -68207,8 +68207,8 @@ path: "win_toolchain" } caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -68401,7 +68401,7 @@ ' },' ' "builder_group": "tryserver.chromium.mac",' ' "recipe": "chromium_trybot",' - ' "xcode_build_version": "13a5201ixc"' + ' "xcode_build_version": "13a5212g"' '}' execution_timeout_secs: 14400 expiration_secs: 7200 @@ -68413,8 +68413,8 @@ path: "win_toolchain" } caches { - name: "xcode_ios_13a5201ixc" - path: "xcode_ios_13a5201ixc.app" + name: "xcode_ios_13a5212g" + path: "xcode_ios_13a5212g.app" } build_numbers: YES service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
diff --git a/infra/config/lib/builders.star b/infra/config/lib/builders.star index 7fff581..f3a3aaf9 100644 --- a/infra/config/lib/builders.star +++ b/infra/config/lib/builders.star
@@ -184,8 +184,8 @@ x12e262 = xcode_enum("12e262"), # in use by ios-webkit-tot x12e262wk = xcode_enum("12e262wk"), - # Default Xcode 13 for chromium iOS (Xcode 13.0 beta 4). - x13main = xcode_enum("13a5201ixc"), + # Default Xcode 13 for chromium iOS (Xcode 13.0 beta 5). + x13main = xcode_enum("13a5212g"), # Xcode 13.0 latest beta (beta 5). x13latestbeta = xcode_enum("13a5212g"), )
diff --git a/ios/chrome/test/earl_grey/chrome_test_case.mm b/ios/chrome/test/earl_grey/chrome_test_case.mm index 29513d0..58db00a 100644 --- a/ios/chrome/test/earl_grey/chrome_test_case.mm +++ b/ios/chrome/test/earl_grey/chrome_test_case.mm
@@ -190,30 +190,6 @@ return _testServer.get(); } -- (void)disableKeyboardTutorials { - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - // Set the preferences values directly on simulator for the keyboard - // modifiers. For persisting these values, CFPreferencesSynchronize must be - // called after. - CFStringRef app = CFSTR("com.apple.Preferences"); - CFPreferencesSetValue(CFSTR("DidShowContinuousPathIntroduction"), - kCFBooleanTrue, app, kCFPreferencesAnyUser, - kCFPreferencesAnyHost); - CFPreferencesSetValue(CFSTR("KeyboardDidShowProductivityTutorial"), - kCFBooleanTrue, app, kCFPreferencesAnyUser, - kCFPreferencesAnyHost); - CFPreferencesSetValue(CFSTR("DidShowGestureKeyboardIntroduction"), - kCFBooleanTrue, app, kCFPreferencesAnyUser, - kCFPreferencesAnyHost); - CFPreferencesSetValue( - CFSTR("UIKeyboardDidShowInternationalInfoIntroduction"), kCFBooleanTrue, - app, kCFPreferencesAnyUser, kCFPreferencesAnyHost); - CFPreferencesSynchronize(kCFPreferencesAnyApplication, - kCFPreferencesAnyUser, kCFPreferencesAnyHost); - }); -} - // Set up called once per test, to open a new tab. - (void)setUp { // Add this class as an AppLaunchManager observer before [super setUp], @@ -222,10 +198,6 @@ [super setUp]; - // TODO(crbug.com/1218575): Remove once moved to EG. - [self disableKeyboardTutorials]; - [ChromeTestCaseAppInterface disableKeyboardTutorials]; - [self resetAppState]; ResetAuthentication();
diff --git a/ios/chrome/test/earl_grey/chrome_test_case_app_interface.h b/ios/chrome/test/earl_grey/chrome_test_case_app_interface.h index 58f5be5..e25bb692 100644 --- a/ios/chrome/test/earl_grey/chrome_test_case_app_interface.h +++ b/ios/chrome/test/earl_grey/chrome_test_case_app_interface.h
@@ -29,9 +29,6 @@ // will return NO. + (BOOL)isCompletionInvokedWithUUID:(NSUUID*)completionUUID; -// TODO(crbug.com/1218575): Remove once moved to EG. -+ (void)disableKeyboardTutorials; - @end #endif // IOS_CHROME_TEST_EARL_GREY_CHROME_TEST_CASE_APP_INTERFACE_H_
diff --git a/ios/chrome/test/earl_grey/chrome_test_case_app_interface.mm b/ios/chrome/test/earl_grey/chrome_test_case_app_interface.mm index 8f18d44..fe8cb89 100644 --- a/ios/chrome/test/earl_grey/chrome_test_case_app_interface.mm +++ b/ios/chrome/test/earl_grey/chrome_test_case_app_interface.mm
@@ -51,30 +51,6 @@ return YES; } -+ (void)disableKeyboardTutorials { - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - // Set the preferences values directly on simulator for the keyboard - // modifiers. For persisting these values, CFPreferencesSynchronize must be - // called after. - CFStringRef app = CFSTR("com.apple.keyboard.preferences.plist"); - CFPreferencesSetValue(CFSTR("DidShowContinuousPathIntroduction"), - kCFBooleanTrue, app, kCFPreferencesAnyUser, - kCFPreferencesAnyHost); - CFPreferencesSetValue(CFSTR("KeyboardDidShowProductivityTutorial"), - kCFBooleanTrue, app, kCFPreferencesAnyUser, - kCFPreferencesAnyHost); - CFPreferencesSetValue(CFSTR("DidShowGestureKeyboardIntroduction"), - kCFBooleanTrue, app, kCFPreferencesAnyUser, - kCFPreferencesAnyHost); - CFPreferencesSetValue( - CFSTR("UIKeyboardDidShowInternationalInfoIntroduction"), kCFBooleanTrue, - app, kCFPreferencesAnyUser, kCFPreferencesAnyHost); - CFPreferencesSynchronize(kCFPreferencesAnyApplication, - kCFPreferencesAnyUser, kCFPreferencesAnyHost); - }); -} - #pragma mark - Private + (void)completionInvokedWithUUID:(NSUUID*)completionUUID {
diff --git a/ios/third_party/earl_grey2/BUILD.gn b/ios/third_party/earl_grey2/BUILD.gn index f8917ea..96d708d 100644 --- a/ios/third_party/earl_grey2/BUILD.gn +++ b/ios/third_party/earl_grey2/BUILD.gn
@@ -406,6 +406,8 @@ "src/AppFramework/Synchronization/GREYUIThreadExecutor+GREYApp.h", "src/AppFramework/Synchronization/GREYUIThreadExecutor+Private.h", "src/AppFramework/Synchronization/GREYUIThreadExecutor.m", + "src/AppFramework/Synchronization/UIApplication+ActiveRunLoopMode.h", + "src/AppFramework/Synchronization/UIApplication+ActiveRunLoopMode.m", ] deps = [
diff --git a/ios/third_party/fishhook/README.chromium b/ios/third_party/fishhook/README.chromium index a7d681c..b922b439 100644 --- a/ios/third_party/fishhook/README.chromium +++ b/ios/third_party/fishhook/README.chromium
@@ -14,3 +14,5 @@ Local Modifications: 2021.06.09: https://github.com/facebook/fishhook/pull/84/files: If hooking in __DATA_CONST or __AUTH_CONST, promise writable before trying to write. + +2021.08.18: Unlock mutex on early return, and include better error logging.
diff --git a/ios/third_party/fishhook/fishhook.c b/ios/third_party/fishhook/fishhook.c index 3ae6355..4da2d4e4 100644 --- a/ios/third_party/fishhook/fishhook.c +++ b/ios/third_party/fishhook/fishhook.c
@@ -135,7 +135,12 @@ 0, VM_PROT_READ | VM_PROT_WRITE | VM_PROT_COPY); if (err != KERN_SUCCESS) { - fprintf(stderr, "perform_rebinding_with_section vm_protect failed.\n"); + fprintf( + stderr, + "perform_rebinding_with_section vm_protect failed. error code: %d, " + "trunc address: 0x%lx, trunc size: 0x%lx, section size: 0x%llx\n", + err, trunc_address, trunc_size, section->size); + pthread_mutex_unlock(&mutex); return; } }
diff --git a/net/reporting/reporting_header_parser.cc b/net/reporting/reporting_header_parser.cc index d26f179..93ac03b 100644 --- a/net/reporting/reporting_header_parser.cc +++ b/net/reporting/reporting_header_parser.cc
@@ -146,10 +146,9 @@ } parsed_endpoint_group_out->ttl = base::TimeDelta::FromSeconds(ttl_sec); - bool subdomains_bool = false; - if (dict->HasKey(kIncludeSubdomainsKey) && - dict->GetBoolean(kIncludeSubdomainsKey, &subdomains_bool) && - subdomains_bool == true) { + absl::optional<bool> subdomains_bool = + dict->FindBoolKey(kIncludeSubdomainsKey); + if (subdomains_bool && subdomains_bool.value()) { // Disallow eTLDs from setting include_subdomains endpoint groups. if (registry_controlled_domains::GetRegistryLength( origin.GetURL(),
diff --git a/services/device/geolocation/geolocation_service_unittest.cc b/services/device/geolocation/geolocation_service_unittest.cc index fd54265..8d515058 100644 --- a/services/device/geolocation/geolocation_service_unittest.cc +++ b/services/device/geolocation/geolocation_service_unittest.cc
@@ -95,19 +95,11 @@ DISALLOW_COPY_AND_ASSIGN(GeolocationServiceUnitTest); }; -// GeolocationServiceUnitTest.UrlWithApiKey is flaky on mac -// https://crbug.com/1235907. -#if defined(OS_MAC) -#define MAYBE_UrlWithApiKey DISABLED_UrlWithApiKey -#else -#define MAYBE_UrlWithApiKey UrlWithApiKey -#endif - #if BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_ANDROID) // ChromeOS fails to perform network geolocation when zero wifi networks are // detected in a scan: https://crbug.com/767300. #else -TEST_F(GeolocationServiceUnitTest, MAYBE_UrlWithApiKey) { +TEST_F(GeolocationServiceUnitTest, UrlWithApiKey) { // To align with user expectation we do not make Network Location Requests // on macOS unless the browser has Location Permission from the OS. #if defined(OS_MAC) @@ -129,6 +121,9 @@ geolocation_->SetHighAccuracy(true); loop.Run(); + + // Clearing interceptor callback to ensure it does not outlive this scope. + test_url_loader_factory_.SetInterceptor(base::NullCallback()); } #endif
diff --git a/services/network/cors/cors_url_loader_factory.cc b/services/network/cors/cors_url_loader_factory.cc index dc181e6f..38e7d33 100644 --- a/services/network/cors/cors_url_loader_factory.cc +++ b/services/network/cors/cors_url_loader_factory.cc
@@ -19,7 +19,6 @@ #include "services/network/network_context.h" #include "services/network/network_service.h" #include "services/network/public/cpp/cors/cors.h" -#include "services/network/public/cpp/cross_origin_read_blocking.h" #include "services/network/public/cpp/features.h" #include "services/network/public/cpp/header_util.h" #include "services/network/public/cpp/initiator_lock_compatibility.h"
diff --git a/services/network/network_service.cc b/services/network/network_service.cc index 28b9690..7e1c13a4 100644 --- a/services/network/network_service.cc +++ b/services/network/network_service.cc
@@ -60,7 +60,6 @@ #include "services/network/net_log_proxy_sink.h" #include "services/network/network_context.h" #include "services/network/public/cpp/crash_keys.h" -#include "services/network/public/cpp/cross_origin_read_blocking.h" #include "services/network/public/cpp/features.h" #include "services/network/public/cpp/initiator_lock_compatibility.h" #include "services/network/public/cpp/load_info_util.h"
diff --git a/services/network/public/cpp/cross_origin_read_blocking.cc b/services/network/public/cpp/cross_origin_read_blocking.cc index 2a2991e7..ef217e6 100644 --- a/services/network/public/cpp/cross_origin_read_blocking.cc +++ b/services/network/public/cpp/cross_origin_read_blocking.cc
@@ -297,6 +297,10 @@ return kNeverSniffedMimeTypes; } +void LogAction(CrossOriginReadBlocking::Action action) { + UMA_HISTOGRAM_ENUMERATION("SiteIsolation.XSD.Browser.Action", action); +} + } // namespace // static @@ -539,11 +543,6 @@ RemoveAllHttpResponseHeaders(response->headers); } -// static -void CrossOriginReadBlocking::LogAction(Action action) { - UMA_HISTOGRAM_ENUMERATION("SiteIsolation.XSD.Browser.Action", action); -} - // An interface to enable incremental content sniffing. These are instantiated // for each each request; thus they can be stateful. class CrossOriginReadBlocking::ResponseAnalyzer::ConfirmationSniffer { @@ -625,6 +624,8 @@ content_length_(response.content_length), http_response_code_(response.headers ? response.headers->response_code() : 0) { + LogAction(Action::kResponseStarted); + // CORB should look directly at the Content-Type header if one has been // received from the network. Ignoring |response.mime_type| helps avoid // breaking legitimate websites (which might happen more often when blocking @@ -688,7 +689,16 @@ CreateSniffers(); } -CrossOriginReadBlocking::ResponseAnalyzer::~ResponseAnalyzer() = default; +CrossOriginReadBlocking::ResponseAnalyzer::~ResponseAnalyzer() { + if (ShouldBlock()) { + LogBlockedResponse(); + } else { + // Allowing happens either 1) explicitly, or 2) when sniffing didn't reach a + // conclusion after sniffing 1024 (or all) bytes. + DCHECK(ShouldAllow() || needs_sniffing()); + LogAllowedResponse(); + } +} // static CrossOriginReadBlocking::ResponseAnalyzer::BlockingDecision @@ -1042,6 +1052,9 @@ } void CrossOriginReadBlocking::ResponseAnalyzer::LogAllowedResponse() { + DCHECK(!has_logged_final_decision_); + has_logged_final_decision_ = true; + if (corb_protection_logging_needs_sniffing_) { LogSensitiveResponseProtection( SniffingDecisionToProtectionDecision(found_blockable_content_)); @@ -1058,13 +1071,16 @@ // - for example to allow responses to requests initiated by content scripts. // This means that we cannot DCHECK(!ShouldBlock()) here. - CrossOriginReadBlocking::LogAction( + LogAction( needs_sniffing() ? network::CrossOriginReadBlocking::Action::kAllowedAfterSniffing : network::CrossOriginReadBlocking::Action::kAllowedWithoutSniffing); } void CrossOriginReadBlocking::ResponseAnalyzer::LogBlockedResponse() { + DCHECK(!has_logged_final_decision_); + has_logged_final_decision_ = true; + DCHECK(!ShouldAllow()); DCHECK(ShouldBlock()); DCHECK(sniffers_.empty()); @@ -1074,7 +1090,7 @@ SniffingDecisionToProtectionDecision(found_blockable_content_)); } - CrossOriginReadBlocking::LogAction( + LogAction( needs_sniffing() ? network::CrossOriginReadBlocking::Action::kBlockedAfterSniffing : network::CrossOriginReadBlocking::Action::kBlockedWithoutSniffing);
diff --git a/services/network/public/cpp/cross_origin_read_blocking.h b/services/network/public/cpp/cross_origin_read_blocking.h index ecef7e1..54c69ffa 100644 --- a/services/network/public/cpp/cross_origin_read_blocking.h +++ b/services/network/public/cpp/cross_origin_read_blocking.h
@@ -156,9 +156,6 @@ class ConfirmationSniffer; class SimpleConfirmationSniffer; - void LogAllowedResponse(); - void LogBlockedResponse(); - // Returns true if the response has a nosniff header. static bool HasNoSniff(const network::mojom::URLResponseHead& response); @@ -175,6 +172,9 @@ CORBProtectionLogging); FRIEND_TEST_ALL_PREFIXES(ResponseAnalyzerTest, CORBProtectionLogging); + void LogAllowedResponse(); + void LogBlockedResponse(); + // Three conclusions are possible from looking at the headers: // - Allow: response doesn't need to be blocked (e.g. if it is same-origin // or has been allowed via CORS headers) @@ -271,6 +271,11 @@ // Sniffing results. bool found_blockable_content_ = false; + // Whether the final allow/block decision has been logged to UMA. + // (This is only used in DCHECKs that verify that such UMA is only logged + // once.) + bool has_logged_final_decision_ = false; + DISALLOW_COPY_AND_ASSIGN(ResponseAnalyzer); }; @@ -299,7 +304,6 @@ kMaxValue = kAllowedAfterSniffing }; - static void LogAction(Action action); // Three conclusions are possible from sniffing a byte sequence: // - No: meaning that the data definitively doesn't match the indicated type.
diff --git a/services/network/public/cpp/cross_origin_read_blocking_unittest.cc b/services/network/public/cpp/cross_origin_read_blocking_unittest.cc index 50780568..25a18f7 100644 --- a/services/network/public/cpp/cross_origin_read_blocking_unittest.cc +++ b/services/network/public/cpp/cross_origin_read_blocking_unittest.cc
@@ -1875,9 +1875,9 @@ return response; } - // Instantiate and run |analyzer_| on the current scenario. Allow the analyzer - // to sniff the response body if needed and confirm it correctly decides to - // block or allow. + // Instantiate and run CORB analyzer on the current scenario. Allow the + // analyzer to sniff the response body if needed and confirm it correctly + // decides to block or allow. void RunAnalyzerOnScenario(const mojom::URLResponseHead& response) { TestScenario scenario = GetParam(); // Initialize |request| from the parameters. @@ -1896,17 +1896,21 @@ : network::mojom::RequestMode::kCors; // Create a ResponseAnalyzer to test. - analyzer_ = std::make_unique<ResponseAnalyzer>( + // + // The ResponseAnalyzer will be destructed when `analyzer` goes out of scope + // (the destructor triggers logging of UMAs that some callers of + // RunAnalyzerOnScenario attempt to verify). + auto analyzer = std::make_unique<ResponseAnalyzer>( request->url(), request->initiator(), response, request_mode); // Verify MIME type was classified correctly. EXPECT_EQ(scenario.canonical_mime_type, - analyzer_->canonical_mime_type_for_testing()); + analyzer->canonical_mime_type_for_testing()); // Verify that the verdict packet is >= 0 if CORB expects to sniff. bool expected_to_sniff = scenario.verdict_packet != kVerdictPacketForHeadersBasedVerdict; - ASSERT_EQ(expected_to_sniff, analyzer_->needs_sniffing()); + ASSERT_EQ(expected_to_sniff, analyzer->needs_sniffing()); // This vector holds the packets to be delivered. std::vector<const char*> packets_vector(scenario.packets); @@ -1920,16 +1924,18 @@ // If we don't expect to sniff then CORB should have already made a blockng // decision based on the headers. if (!expected_to_sniff) { + EXPECT_FALSE(analyzer->needs_sniffing()); if (scenario.verdict == Verdict::kBlock) { - ASSERT_FALSE(analyzer_->ShouldAllow()); - ASSERT_TRUE(analyzer_->ShouldBlock()); + ASSERT_FALSE(analyzer->ShouldAllow()); + ASSERT_TRUE(analyzer->ShouldBlock()); } else { - ASSERT_FALSE(analyzer_->ShouldBlock()); - ASSERT_TRUE(analyzer_->ShouldAllow()); + ASSERT_FALSE(analyzer->ShouldBlock()); + ASSERT_TRUE(analyzer->ShouldAllow()); } + return; } // Simulate the behaviour of the URLLoader by appending the packets into - // |data_buffer| and feeding this to |analyzer_|. + // |data_buffer| and feeding this to |analyzer|. std::string data_buffer; size_t data_offset = 0; bool reached_final_packet = false; @@ -1938,13 +1944,13 @@ SCOPED_TRACE(testing::Message() << "While delivering packet #" << packet_index); - // At each iteration of the loop we feed a new packet to |analyzer_|, + // At each iteration of the loop we feed a new packet to |analyzer|, // breaking at the |verdict_packet|. Since we haven't given the next - // packet to |analyzer_| yet at this point in the loop, it shouldn't have + // packet to |analyzer| yet at this point in the loop, it shouldn't have // made a decision yet. - EXPECT_TRUE(analyzer_->needs_sniffing()); - EXPECT_FALSE(analyzer_->ShouldBlock()); - EXPECT_FALSE(analyzer_->ShouldAllow()); + EXPECT_TRUE(analyzer->needs_sniffing()); + EXPECT_FALSE(analyzer->ShouldBlock()); + EXPECT_FALSE(analyzer->ShouldAllow()); // Append the next packet of the response body. If appending the entire // packet would exceed net::kMaxBytesToSniff we truncate the data. @@ -1954,11 +1960,11 @@ data_buffer.append(packets_vector[packet_index], bytes_to_append); // Hand |analyzer_| the data to sniff. - analyzer_->SniffResponseBody(data_buffer); + analyzer->SniffResponseBody(data_buffer); data_offset += bytes_to_append; // If the latest packet was empty, or we reached net::kMaxBytesToSniff - // then sniffing should be over. Furthermore, if the |analyzer_| hasn't + // then sniffing should be over. Furthermore, if the |analyzer| hasn't // decided to block or allow, then (in the real implementation) URLLoader // will default to allowing. We check here that this occurs only when it // is supposed to. @@ -1970,7 +1976,7 @@ bool expected_to_run_out_of_data = scenario.verdict == Verdict::kAllowBecauseOutOfData; bool did_run_out_of_data = - !analyzer_->ShouldAllow() && !analyzer_->ShouldBlock(); + !analyzer->ShouldAllow() && !analyzer->ShouldBlock(); EXPECT_EQ(expected_to_run_out_of_data, did_run_out_of_data); } } @@ -1978,24 +1984,21 @@ // Confirm the analyzer is blocking or allowing correctly (now that we have // performed any needed sniffing). if (scenario.verdict == Verdict::kBlock) { - ASSERT_FALSE(analyzer_->ShouldAllow()); - ASSERT_TRUE(analyzer_->ShouldBlock()); - // Log the response as URLLoader would. - analyzer_->LogBlockedResponse(); + ASSERT_FALSE(analyzer->ShouldAllow()); + ASSERT_TRUE(analyzer->ShouldBlock()); } else { - // In this case either the |analyzer_| has decided to allow the response, + // In this case either the |analyzer| has decided to allow the response, // or run out of data and so the response will be allowed by default. - ASSERT_FALSE(analyzer_->ShouldBlock()); + ASSERT_FALSE(analyzer->ShouldBlock()); if (scenario.verdict == Verdict::kAllow) { - ASSERT_TRUE(analyzer_->ShouldAllow()); + ASSERT_TRUE(analyzer->ShouldAllow()); } else { // In this case |scenario.verdict| == Verdict::kAllowBecauseOutOfData, // so double-check that sniffing actually occurred and failed. - ASSERT_FALSE(analyzer_->ShouldAllow()); + EXPECT_EQ(Verdict::kAllowBecauseOutOfData, scenario.verdict); + ASSERT_FALSE(analyzer->ShouldAllow()); EXPECT_TRUE(reached_final_packet); } - // Log the response as URLLoader would. - analyzer_->LogAllowedResponse(); } } @@ -2004,9 +2007,6 @@ net::TestURLRequestContext context_; net::TestDelegate delegate_; - // |analyzer_| is the ResponseAnalyzer instance under test. - std::unique_ptr<ResponseAnalyzer> analyzer_; - DISALLOW_COPY_AND_ASSIGN(ResponseAnalyzerTest); }; // namespace network @@ -2073,13 +2073,20 @@ NOTREACHED(); } - // Expecting one action recording CORB's decision. - expected_counts[histogram_base + ".Action"] = 1; + // Expecting two actions: + // 1. kResponseStarted + // 2. The action recording CORB's actual decision (`end_action`). + expected_counts[histogram_base + ".Action"] = 2; + const auto kResponseStarted = static_cast<base::HistogramBase::Sample>( + CrossOriginReadBlocking::Action::kResponseStarted); EXPECT_THAT(histograms.GetAllSamples(histogram_base + ".Action"), - testing::ElementsAre(base::Bucket(end_action, 1))) + testing::ElementsAre(base::Bucket(kResponseStarted, 1), + base::Bucket(end_action, 1))) << "Should have incremented the right actions."; + if (should_be_blocked) expected_counts[histogram_base + ".Blocked.CanonicalMimeType"] = 1; + // Make sure that the expected metrics, and only those metrics, were // incremented. EXPECT_THAT(histograms.GetTotalCountsForPrefix("SiteIsolation.XSD.Browser"),
diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc index 2b6e06e7..592c5ebe 100644 --- a/services/network/url_loader.cc +++ b/services/network/url_loader.cc
@@ -1364,9 +1364,6 @@ url_request_->initiator(), request_mode_, request_destination_, *response_); if (factory_params_->is_corb_enabled) { - CrossOriginReadBlocking::LogAction( - CrossOriginReadBlocking::Action::kResponseStarted); - corb_analyzer_ = std::make_unique<CrossOriginReadBlocking::ResponseAnalyzer>( url_request_->url(), url_request_->initiator(), *response_, @@ -1374,12 +1371,10 @@ is_more_corb_sniffing_needed_ = corb_analyzer_->needs_sniffing(); if (corb_analyzer_->ShouldBlock()) { DCHECK(!is_more_corb_sniffing_needed_); - corb_analyzer_->LogBlockedResponse(); if (BlockResponseForCorb() == kWillCancelRequest) return; } else if (corb_analyzer_->ShouldAllow()) { DCHECK(!is_more_corb_sniffing_needed_); - corb_analyzer_->LogAllowedResponse(); } } if ((options_ & mojom::kURLLoadOptionSniffMimeType)) { @@ -1536,12 +1531,10 @@ if (is_more_corb_sniffing_needed_ && has_new_data_to_sniff) { corb_analyzer_->SniffResponseBody(data); if (corb_analyzer_->ShouldBlock()) { - corb_analyzer_->LogBlockedResponse(); is_more_corb_sniffing_needed_ = false; if (BlockResponseForCorb() == kWillCancelRequest) return; } else if (corb_analyzer_->ShouldAllow()) { - corb_analyzer_->LogAllowedResponse(); is_more_corb_sniffing_needed_ = false; } } @@ -1550,11 +1543,8 @@ if (num_bytes <= 0 || pending_write_buffer_offset_ >= net::kMaxBytesToSniff) { is_more_mime_sniffing_needed_ = false; - - if (is_more_corb_sniffing_needed_) { - corb_analyzer_->LogAllowedResponse(); - is_more_corb_sniffing_needed_ = false; - } + is_more_corb_sniffing_needed_ = false; + corb_analyzer_.reset(); } if (!is_more_mime_sniffing_needed_ && !is_more_corb_sniffing_needed_) {
diff --git a/services/tracing/perfetto/privacy_filtered_fields-inl.h b/services/tracing/perfetto/privacy_filtered_fields-inl.h index 1b331a6..4bd9ed7 100644 --- a/services/tracing/perfetto/privacy_filtered_fields-inl.h +++ b/services/tracing/perfetto/privacy_filtered_fields-inl.h
@@ -281,12 +281,17 @@ constexpr MessageInfo kChromeWebAppBadNavigate = { kChromeWebAppBadNavigateIndices, nullptr}; +// Proto Message: ChromeExtensionId +constexpr int kChromeExtensionIdIndices[] = {2, -1}; +constexpr MessageInfo kChromeExtensionId = {kChromeExtensionIdIndices, nullptr}; + // Proto Message: TrackEvent constexpr int kTrackEventIndices[] = { - 1, 2, 3, 5, 6, 9, 10, 11, 12, 16, 17, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 38, 39, 40, 41, 42, 43, 1001, 1002, 1003, 1004, 1005, 1006, - 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, -1}; + 1, 2, 3, 5, 6, 9, 10, 11, 12, 16, + 17, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, + 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, + 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, -1}; constexpr MessageInfo const* kTrackEventComplexMessages[] = { nullptr, nullptr, @@ -334,7 +339,8 @@ &kRenderProcessHostListener, &kChildProcessLauncherPriority, &kResourceBundle, - &kChromeWebAppBadNavigate}; + &kChromeWebAppBadNavigate, + &kChromeExtensionId}; constexpr MessageInfo kTrackEvent = {kTrackEventIndices, kTrackEventComplexMessages};
diff --git a/testing/buildbot/chromium.android.fyi.json b/testing/buildbot/chromium.android.fyi.json index f455758..b9960d10 100644 --- a/testing/buildbot/chromium.android.fyi.json +++ b/testing/buildbot/chromium.android.fyi.json
@@ -5693,7 +5693,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M93", - "revision": "version:93.0.4577.50" + "revision": "version:93.0.4577.53" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -5780,7 +5780,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M94", - "revision": "version:94.0.4606.8" + "revision": "version:94.0.4606.12" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -5954,7 +5954,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M93", - "revision": "version:93.0.4577.50" + "revision": "version:93.0.4577.53" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -6041,7 +6041,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M94", - "revision": "version:94.0.4606.8" + "revision": "version:94.0.4606.12" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json index bed62a8..233700ac 100644 --- a/testing/buildbot/chromium.android.json +++ b/testing/buildbot/chromium.android.json
@@ -34020,6 +34020,7 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "ci_only": true, "isolate_profile_data": true, "merge": { "args": [ @@ -34068,6 +34069,221 @@ }, { "args": [ + "--gs-results-bucket=chromium-result-details", + "--recover-devices" + ], + "ci_only": true, + "isolate_profile_data": true, + "merge": { + "args": [ + "--bucket", + "chromium-result-details", + "--test-name", + "chrome_modern_public_bundle_fake_modules_smoke_test" + ], + "script": "//build/android/pylib/results/presentation/test_results_presentation.py" + }, + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/luci/logdog/butler/${platform}", + "location": "bin", + "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c" + } + ], + "dimension_sets": [ + { + "device_os": "MMB29Q", + "device_os_type": "userdebug", + "device_type": "bullhead", + "os": "Android" + } + ], + "output_links": [ + { + "link": [ + "https://luci-logdog.appspot.com/v/?s", + "=android%2Fswarming%2Flogcats%2F", + "${TASK_ID}%2F%2B%2Funified_logcats" + ], + "name": "shard #${SHARD_INDEX} logcats" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "chrome_modern_public_bundle_fake_modules_smoke_test", + "test_id_prefix": "ninja://chrome/android:chrome_modern_public_bundle_fake_modules_smoke_test/" + }, + { + "args": [ + "--gs-results-bucket=chromium-result-details", + "--recover-devices" + ], + "ci_only": true, + "isolate_profile_data": true, + "merge": { + "args": [ + "--bucket", + "chromium-result-details", + "--test-name", + "chrome_modern_public_bundle_smoke_test" + ], + "script": "//build/android/pylib/results/presentation/test_results_presentation.py" + }, + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/luci/logdog/butler/${platform}", + "location": "bin", + "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c" + } + ], + "dimension_sets": [ + { + "device_os": "MMB29Q", + "device_os_type": "userdebug", + "device_type": "bullhead", + "os": "Android" + } + ], + "output_links": [ + { + "link": [ + "https://luci-logdog.appspot.com/v/?s", + "=android%2Fswarming%2Flogcats%2F", + "${TASK_ID}%2F%2B%2Funified_logcats" + ], + "name": "shard #${SHARD_INDEX} logcats" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "chrome_modern_public_bundle_smoke_test", + "test_id_prefix": "ninja://chrome/android:chrome_modern_public_bundle_smoke_test/" + }, + { + "args": [ + "--gs-results-bucket=chromium-result-details", + "--recover-devices" + ], + "ci_only": true, + "isolate_profile_data": true, + "merge": { + "args": [ + "--bucket", + "chromium-result-details", + "--test-name", + "chrome_public_smoke_test" + ], + "script": "//build/android/pylib/results/presentation/test_results_presentation.py" + }, + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/luci/logdog/butler/${platform}", + "location": "bin", + "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c" + } + ], + "dimension_sets": [ + { + "device_os": "MMB29Q", + "device_os_type": "userdebug", + "device_type": "bullhead", + "os": "Android" + } + ], + "output_links": [ + { + "link": [ + "https://luci-logdog.appspot.com/v/?s", + "=android%2Fswarming%2Flogcats%2F", + "${TASK_ID}%2F%2B%2Funified_logcats" + ], + "name": "shard #${SHARD_INDEX} logcats" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "chrome_public_smoke_test", + "test_id_prefix": "ninja://chrome/android:chrome_public_smoke_test/" + }, + { + "args": [ + "--gs-results-bucket=chromium-result-details", + "--recover-devices", + "--git-revision=${got_revision}" + ], + "ci_only": true, + "isolate_profile_data": true, + "merge": { + "args": [ + "--bucket", + "chromium-result-details", + "--test-name", + "chrome_public_test_apk" + ], + "script": "//build/android/pylib/results/presentation/test_results_presentation.py" + }, + "precommit_args": [ + "--gerrit-issue=${patch_issue}", + "--gerrit-patchset=${patch_set}", + "--buildbucket-id=${buildbucket_build_id}" + ], + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/luci/logdog/butler/${platform}", + "location": "bin", + "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c" + } + ], + "dimension_sets": [ + { + "device_os": "MMB29Q", + "device_os_type": "userdebug", + "device_type": "bullhead", + "os": "Android" + } + ], + "output_links": [ + { + "link": [ + "https://luci-logdog.appspot.com/v/?s", + "=android%2Fswarming%2Flogcats%2F", + "${TASK_ID}%2F%2B%2Funified_logcats" + ], + "name": "shard #${SHARD_INDEX} logcats" + } + ], + "service_account": "chrome-gold@chops-service-accounts.iam.gserviceaccount.com", + "shards": 20 + }, + "test": "chrome_public_test_apk", + "test_id_prefix": "ninja://chrome/android:chrome_public_test_apk/" + }, + { + "args": [ "--shared-prefs-file=//chrome/android/shared_preference_files/test/vr_cardboard_skipdon_setupcomplete.json", "--additional-apk=//third_party/gvr-android-sdk/test-apks/vr_services/vr_services_current.apk", "--gs-results-bucket=chromium-result-details", @@ -34126,6 +34342,7 @@ "--recover-devices", "--git-revision=${got_revision}" ], + "ci_only": true, "isolate_profile_data": true, "merge": { "args": [ @@ -34439,6 +34656,7 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "ci_only": true, "isolate_profile_data": true, "merge": { "args": [ @@ -34490,6 +34708,7 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "ci_only": true, "isolate_profile_data": true, "merge": { "args": [ @@ -34643,6 +34862,7 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "ci_only": true, "isolate_profile_data": true, "merge": { "args": [ @@ -35513,6 +35733,7 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "ci_only": true, "isolate_profile_data": true, "merge": { "args": [ @@ -35972,6 +36193,59 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "ci_only": true, + "isolate_profile_data": true, + "merge": { + "args": [ + "--bucket", + "chromium-result-details", + "--test-name", + "unit_tests" + ], + "script": "//build/android/pylib/results/presentation/test_results_presentation.py" + }, + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/luci/logdog/butler/${platform}", + "location": "bin", + "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c" + } + ], + "dimension_sets": [ + { + "device_os": "MMB29Q", + "device_os_type": "userdebug", + "device_type": "bullhead", + "os": "Android" + } + ], + "output_links": [ + { + "link": [ + "https://luci-logdog.appspot.com/v/?s", + "=android%2Fswarming%2Flogcats%2F", + "${TASK_ID}%2F%2B%2Funified_logcats" + ], + "name": "shard #${SHARD_INDEX} logcats" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 2 + }, + "test": "unit_tests", + "test_id_prefix": "ninja://chrome/test:unit_tests/" + }, + { + "args": [ + "--gs-results-bucket=chromium-result-details", + "--recover-devices" + ], "isolate_profile_data": true, "merge": { "args": [ @@ -36023,6 +36297,7 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "ci_only": true, "isolate_profile_data": true, "merge": { "args": [ @@ -56099,7 +56374,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M93", - "revision": "version:93.0.4577.50" + "revision": "version:93.0.4577.53" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -56187,7 +56462,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M94", - "revision": "version:94.0.4606.8" + "revision": "version:94.0.4606.12" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -56363,7 +56638,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M93", - "revision": "version:93.0.4577.50" + "revision": "version:93.0.4577.53" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -56451,7 +56726,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M94", - "revision": "version:94.0.4606.8" + "revision": "version:94.0.4606.12" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -56700,7 +56975,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M93", - "revision": "version:93.0.4577.50" + "revision": "version:93.0.4577.53" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -56787,7 +57062,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M94", - "revision": "version:94.0.4606.8" + "revision": "version:94.0.4606.12" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -56961,7 +57236,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M93", - "revision": "version:93.0.4577.50" + "revision": "version:93.0.4577.53" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -57048,7 +57323,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M94", - "revision": "version:94.0.4606.8" + "revision": "version:94.0.4606.12" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -57297,7 +57572,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M93", - "revision": "version:93.0.4577.50" + "revision": "version:93.0.4577.53" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -57384,7 +57659,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M94", - "revision": "version:94.0.4606.8" + "revision": "version:94.0.4606.12" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -57558,7 +57833,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M93", - "revision": "version:93.0.4577.50" + "revision": "version:93.0.4577.53" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -57645,7 +57920,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M94", - "revision": "version:94.0.4606.8" + "revision": "version:94.0.4606.12" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
diff --git a/testing/buildbot/chromium.clang.json b/testing/buildbot/chromium.clang.json index 4fa5198..74b5e423 100644 --- a/testing/buildbot/chromium.clang.json +++ b/testing/buildbot/chromium.clang.json
@@ -44089,7 +44089,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "absl_hardening_tests", @@ -44119,7 +44119,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -44140,7 +44140,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "base_unittests", @@ -44170,7 +44170,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -44191,7 +44191,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "boringssl_crypto_tests", @@ -44221,7 +44221,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -44242,7 +44242,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "boringssl_ssl_tests", @@ -44272,7 +44272,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -44293,7 +44293,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "components_unittests", @@ -44323,7 +44323,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -44344,7 +44344,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "crypto_unittests", @@ -44374,7 +44374,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -44395,7 +44395,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "gfx_unittests", @@ -44425,7 +44425,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -44446,7 +44446,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "google_apis_unittests", @@ -44476,7 +44476,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -44497,7 +44497,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -44527,7 +44527,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -44548,7 +44548,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_net_unittests", @@ -44578,7 +44578,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -44599,7 +44599,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -44629,7 +44629,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -44650,7 +44650,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -44680,7 +44680,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -44701,7 +44701,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -44731,7 +44731,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -44752,7 +44752,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "net_unittests", @@ -44782,7 +44782,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -44803,7 +44803,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "skia_unittests", @@ -44833,7 +44833,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -44854,7 +44854,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "sql_unittests", @@ -44884,7 +44884,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -44905,7 +44905,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -44935,7 +44935,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -44956,7 +44956,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "url_unittests", @@ -44986,7 +44986,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, {
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json index 1378213..1858890a 100644 --- a/testing/buildbot/chromium.fyi.json +++ b/testing/buildbot/chromium.fyi.json
@@ -28731,7 +28731,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "absl_hardening_tests", @@ -28761,7 +28761,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -28782,7 +28782,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "absl_hardening_tests", @@ -28812,7 +28812,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -28833,7 +28833,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "base_unittests", @@ -28863,7 +28863,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -28884,7 +28884,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "base_unittests", @@ -28914,7 +28914,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -28935,7 +28935,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "boringssl_crypto_tests", @@ -28965,7 +28965,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -28986,7 +28986,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "boringssl_crypto_tests", @@ -29016,7 +29016,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -29037,7 +29037,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "boringssl_ssl_tests", @@ -29067,7 +29067,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -29088,7 +29088,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "boringssl_ssl_tests", @@ -29118,7 +29118,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -29139,7 +29139,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "components_unittests", @@ -29169,7 +29169,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -29190,7 +29190,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "components_unittests", @@ -29220,7 +29220,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -29241,7 +29241,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "crypto_unittests", @@ -29271,7 +29271,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -29292,7 +29292,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "crypto_unittests", @@ -29322,7 +29322,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -29343,7 +29343,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "gfx_unittests", @@ -29373,7 +29373,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -29394,7 +29394,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "gfx_unittests", @@ -29424,7 +29424,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -29445,7 +29445,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "google_apis_unittests", @@ -29475,7 +29475,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -29496,7 +29496,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "google_apis_unittests", @@ -29526,7 +29526,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -29547,7 +29547,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -29577,7 +29577,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -29598,7 +29598,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -29628,7 +29628,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -29649,7 +29649,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_components_unittests", @@ -29679,7 +29679,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -29700,7 +29700,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_components_unittests", @@ -29730,7 +29730,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -29751,7 +29751,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_net_unittests", @@ -29781,7 +29781,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -29802,7 +29802,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_net_unittests", @@ -29832,7 +29832,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -29853,7 +29853,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_remoting_unittests", @@ -29883,7 +29883,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -29904,7 +29904,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_remoting_unittests", @@ -29934,7 +29934,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -29955,7 +29955,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_testing_unittests", @@ -29985,7 +29985,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -30006,7 +30006,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_testing_unittests", @@ -30036,7 +30036,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -30057,7 +30057,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -30087,7 +30087,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -30108,7 +30108,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -30138,7 +30138,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -30159,7 +30159,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -30189,7 +30189,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -30210,7 +30210,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -30240,7 +30240,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -30261,7 +30261,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -30291,7 +30291,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -30312,7 +30312,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -30342,7 +30342,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -30363,7 +30363,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -30393,7 +30393,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -30414,7 +30414,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -30444,7 +30444,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -30465,7 +30465,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "net_unittests", @@ -30495,7 +30495,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -30516,7 +30516,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "net_unittests", @@ -30546,7 +30546,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -30567,7 +30567,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "services_unittests", @@ -30597,7 +30597,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -30618,7 +30618,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "services_unittests", @@ -30648,7 +30648,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -30669,7 +30669,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "skia_unittests", @@ -30699,7 +30699,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -30720,7 +30720,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "skia_unittests", @@ -30750,7 +30750,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -30771,7 +30771,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "sql_unittests", @@ -30801,7 +30801,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -30822,7 +30822,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "sql_unittests", @@ -30852,7 +30852,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -30873,7 +30873,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -30903,7 +30903,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -30924,7 +30924,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -30954,7 +30954,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -30975,7 +30975,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "url_unittests", @@ -31005,7 +31005,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -31026,7 +31026,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "url_unittests", @@ -31056,7 +31056,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -31083,7 +31083,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "absl_hardening_tests", @@ -31114,7 +31114,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -31137,7 +31137,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "absl_hardening_tests", @@ -31168,7 +31168,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -31191,7 +31191,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "base_unittests", @@ -31222,7 +31222,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -31245,7 +31245,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "base_unittests", @@ -31276,7 +31276,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -31299,7 +31299,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "base_unittests", @@ -31330,7 +31330,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -31353,7 +31353,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "base_unittests", @@ -31384,7 +31384,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -31407,7 +31407,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "base_unittests", @@ -31438,7 +31438,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -31461,7 +31461,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "base_unittests", @@ -31492,7 +31492,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -31515,7 +31515,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "base_unittests", @@ -31546,7 +31546,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -31569,7 +31569,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "base_unittests", @@ -31600,7 +31600,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -31623,7 +31623,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "boringssl_crypto_tests", @@ -31654,7 +31654,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -31677,7 +31677,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "boringssl_crypto_tests", @@ -31708,7 +31708,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -31731,7 +31731,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "boringssl_ssl_tests", @@ -31762,7 +31762,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -31785,7 +31785,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "boringssl_ssl_tests", @@ -31816,7 +31816,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -31839,7 +31839,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "components_unittests", @@ -31870,7 +31870,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -31893,7 +31893,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "components_unittests", @@ -31924,7 +31924,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -31947,7 +31947,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "components_unittests", @@ -31978,7 +31978,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -32001,7 +32001,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "components_unittests", @@ -32032,7 +32032,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -32055,7 +32055,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "components_unittests", @@ -32086,7 +32086,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -32109,7 +32109,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "components_unittests", @@ -32140,7 +32140,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -32163,7 +32163,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "components_unittests", @@ -32194,7 +32194,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -32217,7 +32217,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "components_unittests", @@ -32248,7 +32248,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -32271,7 +32271,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "crypto_unittests", @@ -32302,7 +32302,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -32325,7 +32325,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "crypto_unittests", @@ -32356,7 +32356,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -32379,7 +32379,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "gfx_unittests", @@ -32410,7 +32410,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -32433,7 +32433,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "gfx_unittests", @@ -32464,7 +32464,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -32487,7 +32487,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "gfx_unittests", @@ -32518,7 +32518,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -32541,7 +32541,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "gfx_unittests", @@ -32572,7 +32572,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -32595,7 +32595,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "gfx_unittests", @@ -32626,7 +32626,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -32649,7 +32649,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "gfx_unittests", @@ -32680,7 +32680,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -32703,7 +32703,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "gfx_unittests", @@ -32734,7 +32734,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -32757,7 +32757,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "gfx_unittests", @@ -32788,7 +32788,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -32811,7 +32811,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "google_apis_unittests", @@ -32842,7 +32842,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -32865,7 +32865,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "google_apis_unittests", @@ -32896,7 +32896,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -32919,7 +32919,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -32951,7 +32951,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -32974,7 +32974,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -33006,7 +33006,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -33029,7 +33029,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -33061,7 +33061,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -33084,7 +33084,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -33116,7 +33116,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -33139,7 +33139,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -33171,7 +33171,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -33194,7 +33194,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -33226,7 +33226,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -33249,7 +33249,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -33281,7 +33281,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -33305,7 +33305,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -33337,7 +33337,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -33361,7 +33361,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -33393,7 +33393,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -33417,7 +33417,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -33449,7 +33449,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -33473,7 +33473,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -33505,7 +33505,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -33529,7 +33529,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -33561,7 +33561,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -33585,7 +33585,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -33617,7 +33617,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -33641,7 +33641,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -33673,7 +33673,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -33697,7 +33697,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -33729,7 +33729,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -33753,7 +33753,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -33785,7 +33785,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -33809,7 +33809,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -33841,7 +33841,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -33865,7 +33865,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -33897,7 +33897,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -33921,7 +33921,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -33953,7 +33953,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -33976,7 +33976,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -34008,7 +34008,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -34031,7 +34031,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -34063,7 +34063,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -34086,7 +34086,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -34118,7 +34118,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -34141,7 +34141,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -34173,7 +34173,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -34196,7 +34196,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -34228,7 +34228,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -34251,7 +34251,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -34283,7 +34283,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -34306,7 +34306,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -34338,7 +34338,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -34361,7 +34361,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -34393,7 +34393,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -34416,7 +34416,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -34448,7 +34448,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -34471,7 +34471,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -34503,7 +34503,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -34526,7 +34526,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -34558,7 +34558,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -34581,7 +34581,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -34613,7 +34613,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -34637,7 +34637,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -34669,7 +34669,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -34693,7 +34693,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -34725,7 +34725,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -34749,7 +34749,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -34781,7 +34781,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -34805,7 +34805,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -34837,7 +34837,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -34861,7 +34861,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -34893,7 +34893,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -34917,7 +34917,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -34948,7 +34948,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -34971,7 +34971,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -35002,7 +35002,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -35025,7 +35025,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -35056,7 +35056,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -35079,7 +35079,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -35110,7 +35110,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -35133,7 +35133,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -35164,7 +35164,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -35187,7 +35187,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -35218,7 +35218,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -35241,7 +35241,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -35272,7 +35272,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -35295,7 +35295,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -35326,7 +35326,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -35349,7 +35349,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -35381,7 +35381,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -35404,7 +35404,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -35436,7 +35436,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -35459,7 +35459,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -35491,7 +35491,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -35514,7 +35514,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -35546,7 +35546,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -35569,7 +35569,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -35601,7 +35601,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -35624,7 +35624,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -35656,7 +35656,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -35679,7 +35679,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_components_unittests", @@ -35710,7 +35710,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -35733,7 +35733,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_components_unittests", @@ -35764,7 +35764,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -35787,7 +35787,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_net_unittests", @@ -35818,7 +35818,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -35841,7 +35841,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_net_unittests", @@ -35872,7 +35872,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -35895,7 +35895,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_remoting_unittests", @@ -35926,7 +35926,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -35949,7 +35949,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_remoting_unittests", @@ -35980,7 +35980,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -36003,7 +36003,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -36035,7 +36035,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -36058,7 +36058,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -36090,7 +36090,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -36113,7 +36113,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -36145,7 +36145,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -36168,7 +36168,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -36200,7 +36200,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -36223,7 +36223,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -36255,7 +36255,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -36278,7 +36278,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -36310,7 +36310,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -36333,7 +36333,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_testing_unittests", @@ -36364,7 +36364,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -36387,7 +36387,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_testing_unittests", @@ -36418,7 +36418,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -36441,7 +36441,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -36472,7 +36472,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -36495,7 +36495,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -36526,7 +36526,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -36549,7 +36549,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -36580,7 +36580,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -36603,7 +36603,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -36634,7 +36634,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -36657,7 +36657,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -36688,7 +36688,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -36711,7 +36711,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -36742,7 +36742,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -36765,7 +36765,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -36796,7 +36796,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -36819,7 +36819,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -36850,7 +36850,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -36873,7 +36873,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -36905,7 +36905,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -36928,7 +36928,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -36960,7 +36960,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -36983,7 +36983,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -37015,7 +37015,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -37038,7 +37038,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -37070,7 +37070,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -37093,7 +37093,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -37125,7 +37125,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -37148,7 +37148,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -37180,7 +37180,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -37203,7 +37203,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -37234,7 +37234,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -37257,7 +37257,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -37288,7 +37288,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -37311,7 +37311,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -37342,7 +37342,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -37365,7 +37365,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -37396,7 +37396,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -37419,7 +37419,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -37450,7 +37450,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -37473,7 +37473,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -37504,7 +37504,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -37527,7 +37527,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -37558,7 +37558,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -37581,7 +37581,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -37612,7 +37612,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -37635,7 +37635,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -37666,7 +37666,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -37689,7 +37689,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -37720,7 +37720,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -37743,7 +37743,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -37774,7 +37774,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -37797,7 +37797,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -37828,7 +37828,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -37851,7 +37851,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -37882,7 +37882,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -37905,7 +37905,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -37936,7 +37936,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -37959,7 +37959,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -37990,7 +37990,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -38013,7 +38013,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -38044,7 +38044,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -38067,7 +38067,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -38098,7 +38098,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -38121,7 +38121,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -38152,7 +38152,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -38175,7 +38175,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -38206,7 +38206,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -38229,7 +38229,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -38260,7 +38260,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -38283,7 +38283,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -38314,7 +38314,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -38337,7 +38337,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -38368,7 +38368,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -38391,7 +38391,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -38422,7 +38422,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -38445,7 +38445,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -38476,7 +38476,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -38499,7 +38499,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "net_unittests", @@ -38530,7 +38530,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -38553,7 +38553,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "net_unittests", @@ -38584,7 +38584,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -38607,7 +38607,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "services_unittests", @@ -38638,7 +38638,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -38661,7 +38661,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "services_unittests", @@ -38692,7 +38692,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -38715,7 +38715,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "skia_unittests", @@ -38746,7 +38746,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -38769,7 +38769,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "skia_unittests", @@ -38800,7 +38800,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -38823,7 +38823,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "skia_unittests", @@ -38854,7 +38854,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -38877,7 +38877,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "skia_unittests", @@ -38908,7 +38908,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -38931,7 +38931,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "skia_unittests", @@ -38962,7 +38962,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -38985,7 +38985,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "skia_unittests", @@ -39016,7 +39016,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -39039,7 +39039,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "skia_unittests", @@ -39070,7 +39070,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -39093,7 +39093,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "skia_unittests", @@ -39124,7 +39124,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -39147,7 +39147,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "sql_unittests", @@ -39178,7 +39178,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -39201,7 +39201,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "sql_unittests", @@ -39232,7 +39232,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -39255,7 +39255,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -39286,7 +39286,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -39309,7 +39309,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -39340,7 +39340,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -39363,7 +39363,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -39394,7 +39394,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -39417,7 +39417,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -39448,7 +39448,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -39471,7 +39471,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -39502,7 +39502,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -39525,7 +39525,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -39556,7 +39556,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -39579,7 +39579,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -39610,7 +39610,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -39633,7 +39633,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -39664,7 +39664,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -39687,7 +39687,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "url_unittests", @@ -39718,7 +39718,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -39741,7 +39741,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "url_unittests", @@ -39772,7 +39772,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -39797,7 +39797,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "cronet_test", @@ -39827,7 +39827,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -39852,7 +39852,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "absl_hardening_tests", @@ -39882,7 +39882,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -39903,7 +39903,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "base_unittests", @@ -39933,7 +39933,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -39954,7 +39954,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "boringssl_crypto_tests", @@ -39984,7 +39984,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -40005,7 +40005,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "boringssl_ssl_tests", @@ -40035,7 +40035,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -40056,7 +40056,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "components_unittests", @@ -40086,7 +40086,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -40107,7 +40107,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "crypto_unittests", @@ -40137,7 +40137,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -40158,7 +40158,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "gfx_unittests", @@ -40188,7 +40188,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -40209,7 +40209,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "google_apis_unittests", @@ -40239,7 +40239,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -40260,7 +40260,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -40291,7 +40291,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -40312,7 +40312,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -40343,7 +40343,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -40365,7 +40365,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -40396,7 +40396,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -40418,7 +40418,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -40449,7 +40449,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -40470,7 +40470,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -40501,7 +40501,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -40522,7 +40522,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -40553,7 +40553,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -40575,7 +40575,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -40605,7 +40605,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -40626,7 +40626,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -40657,7 +40657,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -40678,7 +40678,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_components_unittests", @@ -40708,7 +40708,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -40729,7 +40729,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_net_unittests", @@ -40759,7 +40759,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -40780,7 +40780,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_remoting_unittests", @@ -40810,7 +40810,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -40831,7 +40831,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -40862,7 +40862,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -40883,7 +40883,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_testing_unittests", @@ -40913,7 +40913,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -40934,7 +40934,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -40964,7 +40964,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -40985,7 +40985,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -41016,7 +41016,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -41037,7 +41037,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -41067,7 +41067,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -41088,7 +41088,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -41118,7 +41118,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -41139,7 +41139,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -41169,7 +41169,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -41190,7 +41190,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "net_unittests", @@ -41220,7 +41220,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -41241,7 +41241,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "services_unittests", @@ -41271,7 +41271,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -41292,7 +41292,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "skia_unittests", @@ -41322,7 +41322,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -41343,7 +41343,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "sql_unittests", @@ -41373,7 +41373,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -41394,7 +41394,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -41424,7 +41424,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -41445,7 +41445,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "url_unittests", @@ -41475,7 +41475,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, {
diff --git a/testing/buildbot/chromium.mac.json b/testing/buildbot/chromium.mac.json index a2f58f8..bc191ba 100644 --- a/testing/buildbot/chromium.mac.json +++ b/testing/buildbot/chromium.mac.json
@@ -12195,7 +12195,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "absl_hardening_tests", @@ -12226,7 +12226,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -12247,7 +12247,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "absl_hardening_tests", @@ -12278,7 +12278,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -12299,7 +12299,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "base_unittests", @@ -12330,7 +12330,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -12351,7 +12351,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "base_unittests", @@ -12382,7 +12382,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -12403,7 +12403,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "base_unittests", @@ -12434,7 +12434,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -12455,7 +12455,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "base_unittests", @@ -12486,7 +12486,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -12507,7 +12507,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "base_unittests", @@ -12538,7 +12538,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -12559,7 +12559,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "base_unittests", @@ -12590,7 +12590,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -12611,7 +12611,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "base_unittests", @@ -12642,7 +12642,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -12663,7 +12663,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "base_unittests", @@ -12694,7 +12694,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -12715,7 +12715,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "boringssl_crypto_tests", @@ -12746,7 +12746,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -12767,7 +12767,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "boringssl_crypto_tests", @@ -12798,7 +12798,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -12819,7 +12819,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "boringssl_ssl_tests", @@ -12850,7 +12850,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -12871,7 +12871,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "boringssl_ssl_tests", @@ -12902,7 +12902,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -12923,7 +12923,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "components_unittests", @@ -12954,7 +12954,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -12975,7 +12975,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "components_unittests", @@ -13006,7 +13006,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -13027,7 +13027,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "components_unittests", @@ -13058,7 +13058,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -13079,7 +13079,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "components_unittests", @@ -13110,7 +13110,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -13131,7 +13131,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "components_unittests", @@ -13162,7 +13162,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -13183,7 +13183,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "components_unittests", @@ -13214,7 +13214,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -13235,7 +13235,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "components_unittests", @@ -13266,7 +13266,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -13287,7 +13287,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "components_unittests", @@ -13318,7 +13318,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -13339,7 +13339,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "crypto_unittests", @@ -13370,7 +13370,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -13391,7 +13391,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "crypto_unittests", @@ -13422,7 +13422,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -13443,7 +13443,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "gfx_unittests", @@ -13474,7 +13474,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -13495,7 +13495,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "gfx_unittests", @@ -13526,7 +13526,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -13547,7 +13547,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "gfx_unittests", @@ -13578,7 +13578,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -13599,7 +13599,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "gfx_unittests", @@ -13630,7 +13630,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -13651,7 +13651,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "gfx_unittests", @@ -13682,7 +13682,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -13703,7 +13703,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "gfx_unittests", @@ -13734,7 +13734,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -13755,7 +13755,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "gfx_unittests", @@ -13786,7 +13786,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -13807,7 +13807,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "gfx_unittests", @@ -13838,7 +13838,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -13859,7 +13859,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "google_apis_unittests", @@ -13890,7 +13890,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -13911,7 +13911,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "google_apis_unittests", @@ -13942,7 +13942,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -13963,7 +13963,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -13995,7 +13995,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -14017,7 +14017,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -14049,7 +14049,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -14071,7 +14071,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -14103,7 +14103,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -14124,7 +14124,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -14156,7 +14156,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -14177,7 +14177,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -14209,7 +14209,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -14231,7 +14231,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -14263,7 +14263,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -14285,7 +14285,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -14316,7 +14316,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -14337,7 +14337,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -14368,7 +14368,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -14389,7 +14389,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -14420,7 +14420,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -14441,7 +14441,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -14472,7 +14472,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -14493,7 +14493,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -14524,7 +14524,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -14545,7 +14545,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -14576,7 +14576,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -14597,7 +14597,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -14628,7 +14628,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -14649,7 +14649,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -14680,7 +14680,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -14701,7 +14701,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_components_unittests", @@ -14732,7 +14732,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -14753,7 +14753,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_components_unittests", @@ -14784,7 +14784,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -14805,7 +14805,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_net_unittests", @@ -14836,7 +14836,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -14857,7 +14857,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_net_unittests", @@ -14888,7 +14888,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -14909,7 +14909,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_remoting_unittests", @@ -14940,7 +14940,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -14961,7 +14961,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_remoting_unittests", @@ -14992,7 +14992,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -15013,7 +15013,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_testing_unittests", @@ -15044,7 +15044,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -15065,7 +15065,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_testing_unittests", @@ -15096,7 +15096,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -15117,7 +15117,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -15148,7 +15148,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -15169,7 +15169,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -15200,7 +15200,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -15221,7 +15221,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -15252,7 +15252,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -15273,7 +15273,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -15304,7 +15304,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -15325,7 +15325,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -15356,7 +15356,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -15377,7 +15377,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -15408,7 +15408,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -15429,7 +15429,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -15460,7 +15460,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -15481,7 +15481,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -15512,7 +15512,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -15533,7 +15533,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -15565,7 +15565,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -15586,7 +15586,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -15618,7 +15618,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -15639,7 +15639,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -15670,7 +15670,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -15691,7 +15691,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -15722,7 +15722,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -15743,7 +15743,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -15774,7 +15774,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -15795,7 +15795,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -15826,7 +15826,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -15847,7 +15847,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -15878,7 +15878,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -15899,7 +15899,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -15930,7 +15930,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -15951,7 +15951,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -15982,7 +15982,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -16003,7 +16003,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -16034,7 +16034,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -16055,7 +16055,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -16086,7 +16086,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -16107,7 +16107,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -16138,7 +16138,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -16159,7 +16159,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -16190,7 +16190,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -16211,7 +16211,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -16242,7 +16242,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -16263,7 +16263,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -16294,7 +16294,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -16315,7 +16315,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -16346,7 +16346,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -16367,7 +16367,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -16398,7 +16398,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -16419,7 +16419,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -16450,7 +16450,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -16471,7 +16471,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -16502,7 +16502,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -16523,7 +16523,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -16554,7 +16554,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -16575,7 +16575,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -16606,7 +16606,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -16627,7 +16627,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -16658,7 +16658,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -16679,7 +16679,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -16710,7 +16710,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -16731,7 +16731,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -16762,7 +16762,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -16783,7 +16783,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -16814,7 +16814,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -16835,7 +16835,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -16866,7 +16866,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -16887,7 +16887,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "net_unittests", @@ -16918,7 +16918,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -16939,7 +16939,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "net_unittests", @@ -16970,7 +16970,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -16991,7 +16991,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "services_unittests", @@ -17022,7 +17022,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -17043,7 +17043,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "services_unittests", @@ -17074,7 +17074,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -17095,7 +17095,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "skia_unittests", @@ -17126,7 +17126,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -17147,7 +17147,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "skia_unittests", @@ -17178,7 +17178,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -17199,7 +17199,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "skia_unittests", @@ -17230,7 +17230,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -17251,7 +17251,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "skia_unittests", @@ -17282,7 +17282,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -17303,7 +17303,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "skia_unittests", @@ -17334,7 +17334,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -17355,7 +17355,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "skia_unittests", @@ -17386,7 +17386,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -17407,7 +17407,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "skia_unittests", @@ -17438,7 +17438,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -17459,7 +17459,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "skia_unittests", @@ -17490,7 +17490,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -17511,7 +17511,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "sql_unittests", @@ -17542,7 +17542,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -17563,7 +17563,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "sql_unittests", @@ -17594,7 +17594,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -17615,7 +17615,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -17646,7 +17646,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -17667,7 +17667,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -17698,7 +17698,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -17719,7 +17719,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -17750,7 +17750,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -17771,7 +17771,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -17802,7 +17802,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -17823,7 +17823,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -17854,7 +17854,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -17875,7 +17875,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -17906,7 +17906,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -17927,7 +17927,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -17958,7 +17958,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -17979,7 +17979,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -18010,7 +18010,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -18031,7 +18031,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "url_unittests", @@ -18062,7 +18062,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -18083,7 +18083,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "url_unittests", @@ -18114,7 +18114,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -18142,7 +18142,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -18174,7 +18174,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -18195,7 +18195,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -18227,7 +18227,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -18248,7 +18248,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -18280,7 +18280,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -18301,7 +18301,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -18333,7 +18333,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -18354,7 +18354,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -18386,7 +18386,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -18407,7 +18407,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -18439,7 +18439,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -18460,7 +18460,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -18492,7 +18492,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -18514,7 +18514,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -18546,7 +18546,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -18568,7 +18568,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -18600,7 +18600,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -18622,7 +18622,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -18654,7 +18654,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -18676,7 +18676,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -18708,7 +18708,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -18730,7 +18730,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -18762,7 +18762,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -18784,7 +18784,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -18816,7 +18816,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -18838,7 +18838,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -18870,7 +18870,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -18892,7 +18892,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -18924,7 +18924,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -18946,7 +18946,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -18978,7 +18978,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -19000,7 +19000,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -19032,7 +19032,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -19053,7 +19053,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -19085,7 +19085,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -19106,7 +19106,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -19138,7 +19138,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -19159,7 +19159,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -19191,7 +19191,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -19212,7 +19212,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -19244,7 +19244,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -19265,7 +19265,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -19297,7 +19297,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -19318,7 +19318,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -19350,7 +19350,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -19371,7 +19371,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -19403,7 +19403,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -19424,7 +19424,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -19456,7 +19456,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -19477,7 +19477,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -19509,7 +19509,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -19530,7 +19530,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -19562,7 +19562,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -19584,7 +19584,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -19616,7 +19616,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -19638,7 +19638,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -19670,7 +19670,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -19692,7 +19692,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -19724,7 +19724,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -19746,7 +19746,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -19778,7 +19778,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -19799,7 +19799,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -19831,7 +19831,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -19852,7 +19852,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -19884,7 +19884,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -19905,7 +19905,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -19937,7 +19937,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -19958,7 +19958,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -19990,7 +19990,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -20011,7 +20011,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -20043,7 +20043,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -20064,7 +20064,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -20096,7 +20096,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -20117,7 +20117,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -20149,7 +20149,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -20170,7 +20170,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -20202,7 +20202,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -20223,7 +20223,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -20255,7 +20255,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -20276,7 +20276,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -20308,7 +20308,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -20329,7 +20329,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -20361,7 +20361,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -20382,7 +20382,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -20414,7 +20414,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -20435,7 +20435,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -20467,7 +20467,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -20488,7 +20488,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -20520,7 +20520,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -20541,7 +20541,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -20573,7 +20573,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -20601,7 +20601,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "absl_hardening_tests", @@ -20631,7 +20631,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -20652,7 +20652,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "boringssl_crypto_tests", @@ -20682,7 +20682,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -20703,7 +20703,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "boringssl_ssl_tests", @@ -20733,7 +20733,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -20754,7 +20754,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "crypto_unittests", @@ -20784,7 +20784,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -20805,7 +20805,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "google_apis_unittests", @@ -20835,7 +20835,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -20856,7 +20856,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -20887,7 +20887,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -20908,7 +20908,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -20939,7 +20939,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -20961,7 +20961,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -20992,7 +20992,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -21014,7 +21014,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -21045,7 +21045,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -21067,7 +21067,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -21098,7 +21098,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -21120,7 +21120,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -21151,7 +21151,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -21173,7 +21173,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -21204,7 +21204,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -21225,7 +21225,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -21256,7 +21256,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -21277,7 +21277,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -21308,7 +21308,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -21329,7 +21329,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -21360,7 +21360,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -21381,7 +21381,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -21412,7 +21412,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -21433,7 +21433,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -21464,7 +21464,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -21486,7 +21486,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -21517,7 +21517,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -21539,7 +21539,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -21570,7 +21570,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -21592,7 +21592,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -21623,7 +21623,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -21645,7 +21645,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -21676,7 +21676,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -21697,7 +21697,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_components_unittests", @@ -21727,7 +21727,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -21748,7 +21748,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_net_unittests", @@ -21778,7 +21778,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -21799,7 +21799,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_remoting_unittests", @@ -21829,7 +21829,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -21850,7 +21850,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -21881,7 +21881,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -21902,7 +21902,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "ios_testing_unittests", @@ -21932,7 +21932,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -21953,7 +21953,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -21984,7 +21984,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -22005,7 +22005,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -22036,7 +22036,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -22057,7 +22057,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -22088,7 +22088,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -22109,7 +22109,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest", "--xcode-parallelization" ], @@ -22140,7 +22140,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -22161,7 +22161,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "net_unittests", @@ -22191,7 +22191,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -22212,7 +22212,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "services_unittests", @@ -22242,7 +22242,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -22263,7 +22263,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "sql_unittests", @@ -22293,7 +22293,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, { @@ -22314,7 +22314,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a5201ixc", + "13a5212g", "--xctest" ], "isolate_name": "url_unittests", @@ -22344,7 +22344,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a5201ixc", + "name": "xcode_ios_13a5212g", "path": "Xcode.app" }, {
diff --git a/testing/buildbot/mixins.pyl b/testing/buildbot/mixins.pyl index 2f82cbfd..e5f12b9e 100644 --- a/testing/buildbot/mixins.pyl +++ b/testing/buildbot/mixins.pyl
@@ -1309,18 +1309,18 @@ ], }, }, - # Default Xcode 13 on main (Xcode 13.0 beta 4). + # Default Xcode 13 on main (Xcode 13.0 beta 5). 'xcode_13_main': { '$mixin_append': { 'args': [ '--xcode-build-version', - '13a5201ixc' + '13a5212g' ], }, 'swarming': { 'named_caches': [ { - 'name': 'xcode_ios_13a5201ixc', + 'name': 'xcode_ios_13a5212g', 'path': 'Xcode.app', }, ],
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl index 93587b9..2079ea2f 100644 --- a/testing/buildbot/test_suite_exceptions.pyl +++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -822,24 +822,10 @@ }, }, }, - 'chrome_modern_public_bundle_fake_modules_smoke_test': { - 'remove_from': [ - # Runs on android-marshmallow-x86-rel already (crbug.com/1127110) - 'android-marshmallow-arm64-rel', - ], - }, - 'chrome_modern_public_bundle_smoke_test': { - 'remove_from': [ - # Runs on android-marshmallow-x86-rel already (crbug.com/1127110) - 'android-marshmallow-arm64-rel', - ], - }, 'chrome_public_smoke_test': { 'remove_from': [ 'android-code-coverage-native', # Does not generate profraw data. 'android-pie-arm64-coverage-experimental-rel', # Does not generate profraw data. - # Runs on android-marshmallow-x86-rel already (crbug.com/1127110#c21) - 'android-marshmallow-arm64-rel', ], }, 'chrome_public_test_apk': { @@ -848,9 +834,6 @@ 'android-code-coverage-native', # Does not generate profraw data. 'android-lollipop-arm-rel', # https://crbug.com/1060245 'android-pie-arm64-coverage-experimental-rel', # Does not generate profraw data. - - # Runs on android-marshmallow-x86-rel already (crbug.com/1127110) - 'android-marshmallow-arm64-rel', ], 'modifications': { 'Marshmallow 64 bit Tester': { @@ -2898,9 +2881,6 @@ }, 'unit_tests': { 'remove_from': [ - # There's no need to run unit_tests on both lollipop and marshmallow - # on the CQ. https://crbug.com/1026487. - 'android-marshmallow-arm64-rel', 'android-pie-arm64-rel', # https://crbug.com/1010211 ], 'modifications': {
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl index 5662d7dc..2e52f6c 100644 --- a/testing/buildbot/test_suites.pyl +++ b/testing/buildbot/test_suites.pyl
@@ -155,6 +155,67 @@ }, }, + # List gtests with ci_only set to True so that they run on the CI of + # android-marshmallow-arm64-rel but not the mirrored CQ. + # Includes the following compound test suites: + # * android_modern_smoke_tests + # * android_smoke_tests + # * chromium_gtests_for_devices_with_graphical_output + # * chrome_public_tests + # * linux_flavor_specific_chromium_gtests + 'android_marshmallow_device_ci_only_gtests': { + 'cc_unittests': { + 'ci_only': True, + }, + 'chrome_modern_public_bundle_fake_modules_smoke_test': { + 'ci_only': True, + }, + 'chrome_modern_public_bundle_smoke_test': { + 'ci_only': True, + }, + 'chrome_public_smoke_test': { + 'ci_only': True, + }, + 'chrome_public_test_apk': { + 'ci_only': True, + 'swarming': { + 'shards': 20, + }, + 'mixins': [ + 'chrome-gold-service-account', + 'skia_gold_test', + ], + }, + 'chrome_public_unit_test_apk': { + 'ci_only': True, + 'mixins': [ + 'chrome-gold-service-account', + 'skia_gold_test', + ], + }, + 'device_unittests': { + 'ci_only': True, + }, + 'display_unittests': { + 'ci_only': True, + }, + 'gfx_unittests': { + 'ci_only': True, + }, + 'sandbox_linux_unittests': { + 'ci_only': True, + }, + 'unit_tests': { + 'ci_only': True, + 'android_swarming': { + 'shards': 2, + }, + }, + 'viz_unittests': { + 'ci_only': True, + }, + }, + # List gtests that are part of other composition test suites. # MM emulator CQ builder currently has limited capacity so some composition # test suites cannot be fullly enabled at once. @@ -5752,6 +5813,23 @@ 'weblayer_gtests', ], + # List gtests that run on android-marshmallow-arm64-rel builder. + # TODO(crbug.com/1127110): Use android_lollipop_marshmallow_gtests when + # android-marshmallow-x86-rel is not mirrored to CQ. + 'android_marshmallow_device_gtests': [ + 'android_marshmallow_device_ci_only_gtests', + + # TODO(crbug.com/1127110): Remove once webview_instrumentation_test_apk + # and content_shell_test_apk are enabled on android-marshmallow-x86-rel + 'android_specific_chromium_gtests', # Already includes gl_gtests. + + 'chromium_gtests', + 'vr_android_specific_chromium_tests', + 'vr_platform_specific_chromium_gtests', + 'weblayer_android_gtests', + 'weblayer_gtests', + ], + # List gtests that run on android-marshmallow-x86-rel builder. # Test suites will be gradually moved from # android_marshmallow_emulator_non_cq_gtests @@ -5776,7 +5854,7 @@ # Note that tests here are gradually moved to # android_marshmallow_emulator_gtests (crbug.com/1127110) # - # The diff between android_lollipop_marshmallow_gtests and + # The diff between android_marshmallow_device_gtests and # (android_marshmallow_emulator_non_cq_gtests + # android_marshmallow_emulator_gtests) # is android_wpr_record_replay_tests
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl index 860cdf1..052f258 100644 --- a/testing/buildbot/variants.pyl +++ b/testing/buildbot/variants.pyl
@@ -381,7 +381,7 @@ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M94', - 'revision': 'version:94.0.4606.8', + 'revision': 'version:94.0.4606.12', } ], }, @@ -405,7 +405,7 @@ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M93', - 'revision': 'version:93.0.4577.50', + 'revision': 'version:93.0.4577.53', } ], }, @@ -453,7 +453,7 @@ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M94', - 'revision': 'version:94.0.4606.8', + 'revision': 'version:94.0.4606.12', } ], }, @@ -477,7 +477,7 @@ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M93', - 'revision': 'version:93.0.4577.50', + 'revision': 'version:93.0.4577.53', } ], }, @@ -525,7 +525,7 @@ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M94', - 'revision': 'version:94.0.4606.8', + 'revision': 'version:94.0.4606.12', } ], }, @@ -549,7 +549,7 @@ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M93', - 'revision': 'version:93.0.4577.50', + 'revision': 'version:93.0.4577.53', } ], },
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl index f8349656..279739c 100644 --- a/testing/buildbot/waterfalls.pyl +++ b/testing/buildbot/waterfalls.pyl
@@ -823,7 +823,7 @@ 'weblayer_shell', ], 'test_suites': { - 'gtest_tests': 'android_lollipop_marshmallow_gtests', + 'gtest_tests': 'android_marshmallow_device_gtests', 'junit_tests': 'chromium_junit_tests', 'isolated_scripts': 'marshmallow_pie_isolated_scripts', },
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 86cc0045..2d84450c 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -3656,6 +3656,12 @@ "experiments": [ { "name": "EnabledWithIph", + "params": { + "availability": "any", + "event_trigger": "name:pulltorefresh_dummy;comparator:any;window:1;storage:1", + "event_used": "name:pulltorefresh_dummy;comparator:any;window:1;storage:1", + "session_rate": "==0" + }, "enable_features": [ "FeedInteractiveRefresh", "IPH_FeedSwipeRefresh"
diff --git a/third_party/blink/renderer/core/css/resolver/style_adjuster.cc b/third_party/blink/renderer/core/css/resolver/style_adjuster.cc index 05d1b98..0cc26972 100644 --- a/third_party/blink/renderer/core/css/resolver/style_adjuster.cc +++ b/third_party/blink/renderer/core/css/resolver/style_adjuster.cc
@@ -693,10 +693,20 @@ // to 'absolute'. Root elements that are in the top layer should just // be left alone because the fullscreen.css doesn't apply any style to // them. - if (IsInTopLayer(element, style) && !is_document_element && - (style.GetPosition() == EPosition::kStatic || - style.GetPosition() == EPosition::kRelative)) - style.SetPosition(EPosition::kAbsolute); + if (IsInTopLayer(element, style) && !is_document_element) { + if (style.GetPosition() == EPosition::kStatic || + style.GetPosition() == EPosition::kRelative) { + style.SetPosition(EPosition::kAbsolute); + } + if (style.Display() == EDisplay::kContents && + (IsA<HTMLDialogElement>(element) || + style.StyleType() == kPseudoIdBackdrop)) { + // See crbug.com/1240701 for more details. + // https://fullscreen.spec.whatwg.org/#new-stacking-layer + // If its specified display property is contents, it computes to block. + style.SetDisplay(EDisplay::kBlock); + } + } // Absolute/fixed positioned elements, floating elements and the document // element need block-like outside display.
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 427b61d2..b857626 100644 --- a/third_party/blink/renderer/core/frame/local_frame_view.cc +++ b/third_party/blink/renderer/core/frame/local_frame_view.cc
@@ -4998,11 +4998,6 @@ // quantization when the time is very small. base::LapTimer timer(kWarmupRuns, kTimeLimit, kTimeCheckInterval); do { - // Force a paint with everything cached before a small invalidation - // test to better simulate real-world scenarios. - if (mode == PaintBenchmarkMode::kSmallInvalidation) - RunPaintLifecyclePhase(PaintBenchmarkMode::kForcePaint); - RunPaintLifecyclePhase(mode); timer.NextLap(); } while (!timer.HasTimeLimitExpired()); @@ -5019,10 +5014,6 @@ run_benchmark(PaintBenchmarkMode::kCachingDisabled); result.record_time_subsequence_caching_disabled_ms = run_benchmark(PaintBenchmarkMode::kSubsequenceCachingDisabled); - result.record_time_partial_invalidation_ms = - run_benchmark(PaintBenchmarkMode::kPartialInvalidation); - result.record_time_small_invalidation_ms = - run_benchmark(PaintBenchmarkMode::kSmallInvalidation); result.raster_invalidation_and_convert_time_ms = run_benchmark(PaintBenchmarkMode::kForceRasterInvalidationAndConvert); result.paint_artifact_compositor_update_time_ms =
diff --git a/third_party/blink/renderer/core/html/resources/html.css b/third_party/blink/renderer/core/html/resources/html.css index 5bc0aaf..c7d32aa 100644 --- a/third_party/blink/renderer/core/html/resources/html.css +++ b/third_party/blink/renderer/core/html/resources/html.css
@@ -1374,7 +1374,7 @@ } dialog:not([open]) { - display: none + display: none; } dialog {
diff --git a/third_party/blink/renderer/core/input/touch_event_manager.cc b/third_party/blink/renderer/core/input/touch_event_manager.cc index 8b5f166..9260b09 100644 --- a/third_party/blink/renderer/core/input/touch_event_manager.cc +++ b/third_party/blink/renderer/core/input/touch_event_manager.cc
@@ -24,6 +24,7 @@ #include "third_party/blink/renderer/core/page/chrome_client.h" #include "third_party/blink/renderer/core/page/page.h" #include "third_party/blink/renderer/platform/instrumentation/histogram.h" +#include "third_party/blink/renderer/platform/wtf/hash_map.h" namespace blink { @@ -238,8 +239,7 @@ WebInputEvent::Type touch_event_type = WebInputEvent::Type::kTouchMove; Vector<WebPointerEvent> all_coalesced_events; Vector<int> available_ids; - for (const auto& id : touch_attribute_map_.Keys()) - available_ids.push_back(id); + WTF::CopyKeysToVector(touch_attribute_map_, available_ids); std::sort(available_ids.begin(), available_ids.end()); for (const int& touch_point_id : available_ids) { auto* const touch_point_attribute = touch_attribute_map_.at(touch_point_id);
diff --git a/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc index 644b0f7..f6b25bf 100644 --- a/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc +++ b/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc
@@ -1283,11 +1283,9 @@ // the special min-size treatment above. (They will all end up being // the specified size). if (is_parallel_with_track_direction) { - // TODO(ikilpatrick): This is incorrect for replaced elements. - const NGBoxStrut border_padding = - ComputeBorders(space, node) + ComputePadding(space, item_style); - contribution = - ComputeInlineSizeForFragment(space, node, border_padding); + contribution = main_length.IsMaxContent() + ? MinMaxContentSizes().max_size + : MinMaxContentSizes().min_size; } else { contribution = BlockContributionSize(); }
diff --git a/third_party/blink/renderer/core/mobile_metrics/mobile_friendliness_checker.cc b/third_party/blink/renderer/core/mobile_metrics/mobile_friendliness_checker.cc index 24208668..345f15a 100644 --- a/third_party/blink/renderer/core/mobile_metrics/mobile_friendliness_checker.cc +++ b/third_party/blink/renderer/core/mobile_metrics/mobile_friendliness_checker.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/renderer/core/mobile_metrics/mobile_friendliness_checker.h" #include "third_party/blink/public/mojom/mobile_metrics/mobile_friendliness.mojom-blink.h" +#include "third_party/blink/renderer/core/frame/local_dom_window.h" #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/page_scale_constraints_set.h" @@ -152,6 +153,7 @@ int ExtractAndCountAllTapTargets( LayoutObject* const root, int finger_radius, + int max_height, Vector<int>& x_positions, const base::Time& started, Vector<std::pair<int, EdgeOrCenter>>& vertices) { @@ -185,6 +187,9 @@ const int left = clampTo<int>(rect.X() - finger_radius); const int right = clampTo<int>(rect.MaxX() + finger_radius); const int center = right / 2 + left / 2; + if (top > max_height) { + return tap_targets; + } vertices.emplace_back(top, EdgeOrCenter::StartEdge(left, right)); vertices.emplace_back(bottom / 2 + top / 2, EdgeOrCenter::Center(center)); vertices.emplace_back(bottom, EdgeOrCenter::EndEdge(left, right)); @@ -292,6 +297,7 @@ // targets. int all_tap_targets = ExtractAndCountAllTapTargets( frame_view_->GetFrame().GetDocument()->GetLayoutView(), finger_radius, + frame_view_->GetFrame().GetDocument()->domWindow()->innerHeight(), x_positions, started, vertices); if (all_tap_targets == -1) { mobile_friendliness_.bad_tap_targets_ratio = kTimeBudgetExceeded;
diff --git a/third_party/blink/renderer/core/mobile_metrics/mobile_friendliness_checker_test.cc b/third_party/blink/renderer/core/mobile_metrics/mobile_friendliness_checker_test.cc index 4c40f7e..5908fc4 100644 --- a/third_party/blink/renderer/core/mobile_metrics/mobile_friendliness_checker_test.cc +++ b/third_party/blink/renderer/core/mobile_metrics/mobile_friendliness_checker_test.cc
@@ -837,7 +837,7 @@ TEST_F(MobileFriendlinessCheckerTest, InvisibleTapTargetWillBeIgnored) { MobileFriendliness actual_mf = CalculateMainFrameMetricsForHTMLString(R"( -vv <head> + <head> <meta name="viewport" content="width=480, initial-scale=1"> </head> <body style="font-size: 18px"> @@ -869,6 +869,41 @@ EXPECT_EQ(actual_mf.bad_tap_targets_ratio, 100); } +TEST_F(MobileFriendlinessCheckerTest, BadTapTargetBelowFirstOnePager) { + MobileFriendliness actual_mf = CalculateMainFrameMetricsForHTMLString(R"( + <head> + <meta name="viewport" content="width=480, initial-scale=1"> + </head> + <body style="font-size: 18px"> + <button style="position:absolute; width:50px; height:50px"> + a + </button> + <button style="position:relative; width:50px; height:50px"> + b + </button> + <!-- below area must be ignored --> + <div style="margin-top: 3200px"> + <a href="about:blank"> + <div style="width: 50px;height: 50px; margin: 50px; display:inline-block"> + have + </div> + </a> + <a href="about:blank"> + <div style="width: 50px;height: 50px; margin: 50px; display:inline-block"> + enough + </div> + </a> + <a href="about:blank"> + <div style="width: 50px;height: 50px; margin: 50px; display:inline-block"> + spans + </div> + </a> + </div> + </body>"; + )"); + EXPECT_EQ(actual_mf.bad_tap_targets_ratio, 100); +} + TEST_F(MobileFriendlinessCheckerTest, IFrameTest) { url_test_helpers::RegisterMockedURLLoadFromBase( WebString::FromUTF8(kBaseUrl), blink::test::CoreTestDataPath(),
diff --git a/third_party/blink/renderer/core/paint/outline_painter.cc b/third_party/blink/renderer/core/paint/outline_painter.cc index bb1a6d1..2943b6b 100644 --- a/third_party/blink/renderer/core/paint/outline_painter.cc +++ b/third_party/blink/renderer/core/paint/outline_painter.cc
@@ -23,78 +23,6 @@ namespace { -struct OutlineEdgeInfo { - int x1; - int y1; - int x2; - int y2; - BoxSide side; -}; - -// Adjust length of edges if needed. Returns the width of the joint. -int AdjustJoint(int outline_width, - OutlineEdgeInfo& edge1, - OutlineEdgeInfo& edge2) { - // A clockwise joint: - // - needs no adjustment of edge length because our edges are along the - // clockwise outer edge of the outline; - // - needs a positive adjacent joint width (required by - // BoxBorderPainter::DrawLineForBoxSide). - // A counterclockwise joint: - // - needs to increase the edge length to include the joint; - // - needs a negative adjacent joint width (required by - // BoxBorderPainter::DrawLineForBoxSide). - switch (edge1.side) { - case BoxSide::kTop: - switch (edge2.side) { - case BoxSide::kRight: // Clockwise - return outline_width; - case BoxSide::kLeft: // Counterclockwise - edge1.x2 += outline_width; - edge2.y2 += outline_width; - return -outline_width; - default: // Same side or no joint. - return 0; - } - case BoxSide::kRight: - switch (edge2.side) { - case BoxSide::kBottom: // Clockwise - return outline_width; - case BoxSide::kTop: // Counterclockwise - edge1.y2 += outline_width; - edge2.x1 -= outline_width; - return -outline_width; - default: // Same side or no joint. - return 0; - } - case BoxSide::kBottom: - switch (edge2.side) { - case BoxSide::kLeft: // Clockwise - return outline_width; - case BoxSide::kRight: // Counterclockwise - edge1.x1 -= outline_width; - edge2.y1 -= outline_width; - return -outline_width; - default: // Same side or no joint. - return 0; - } - case BoxSide::kLeft: - switch (edge2.side) { - case BoxSide::kTop: // Clockwise - return outline_width; - case BoxSide::kBottom: // Counterclockwise - edge1.y1 -= outline_width; - edge2.x2 += outline_width; - return -outline_width; - default: // Same side or no joint. - return 0; - } - default: - NOTREACHED(); - return 0; - } -} - // A negative outline-offset should not cause the rendered outline shape to // become smaller than twice the computed value of the outline-width, in each // direction separately. See: https://drafts.csswg.org/css-ui/#outline-offset @@ -184,91 +112,8 @@ } } -void PaintComplexRightAngleOutlineContour(GraphicsContext& context, - const Vector<Line>& lines, - const ComputedStyle& style, - Color color) { - int width = style.OutlineWidthInt(); - Vector<OutlineEdgeInfo> edges; - edges.ReserveInitialCapacity(lines.size()); - for (auto& line : lines) { - auto& edge = edges.emplace_back(); - edge.x1 = SkScalarTruncToInt(line.start.x()); - edge.y1 = SkScalarTruncToInt(line.start.y()); - edge.x2 = SkScalarTruncToInt(line.end.x()); - edge.y2 = SkScalarTruncToInt(line.end.y()); - if (edge.x1 == edge.x2) { - if (edge.y1 < edge.y2) { - edge.x1 -= width; - edge.side = BoxSide::kRight; - } else { - std::swap(edge.y1, edge.y2); - edge.x2 += width; - edge.side = BoxSide::kLeft; - } - } else { - DCHECK(edge.y1 == edge.y2); - if (edge.x1 < edge.x2) { - edge.y2 += width; - edge.side = BoxSide::kTop; - } else { - std::swap(edge.x1, edge.x2); - edge.y1 -= width; - edge.side = BoxSide::kBottom; - } - } - } - - int first_adjacent_width = AdjustJoint(width, edges.back(), edges.front()); - // The width of the angled part of starting and ending joint of the current - // edge. - int adjacent_width_start = first_adjacent_width; - int adjacent_width_end; - for (wtf_size_t i = 0; i < edges.size(); ++i) { - OutlineEdgeInfo& edge = edges[i]; - adjacent_width_end = i == edges.size() - 1 - ? first_adjacent_width - : AdjustJoint(width, edge, edges[i + 1]); - int adjacent_width1 = adjacent_width_start; - int adjacent_width2 = adjacent_width_end; - if (edge.side == BoxSide::kLeft || edge.side == BoxSide::kBottom) - std::swap(adjacent_width1, adjacent_width2); - BoxBorderPainter::DrawLineForBoxSide( - context, edge.x1, edge.y1, edge.x2, edge.y2, edge.side, color, - style.OutlineStyle(), adjacent_width1, adjacent_width2, - /*antialias*/ false); - adjacent_width_start = adjacent_width_end; - } -} - -void PaintComplexRightAngleOutline(GraphicsContext& context, - const Vector<IntRect>& rects, - const ComputedStyle& style) { - DCHECK(!style.OutlineStyleIsAuto()); - - SkPath path; - if (!ComputeRightAnglePath(path, rects, style.OutlineOffsetInt(), - style.OutlineWidthInt())) { - return; - } - - Color color = style.VisitedDependentColor(GetCSSPropertyOutlineColor()); - bool use_transparency_layer = color.HasAlpha(); - if (use_transparency_layer) { - context.BeginLayer(static_cast<float>(color.Alpha()) / 255); - color.SetRGB(color.Red(), color.Green(), color.Blue()); - } - - IterateRightAnglePath(path, [&](const Vector<Line>& lines) { - PaintComplexRightAngleOutlineContour(context, lines, style, color); - }); - - if (use_transparency_layer) - context.EndLayer(); -} - // Given 3 points defining a right angle corner, returns |p2| shifted to make -// the containing path shrink by |inset|. +// the containing path shrunk by |inset|. SkPoint ShrinkCorner(const SkPoint& p1, const SkPoint& p2, const SkPoint& p3, @@ -394,6 +239,9 @@ } } +// The weight of SkPath::conicTo() to create a 90deg rounded corner arc. +constexpr float kCornerConicWeight = 0.707106781187; // 1/sqrt(2) + // Create a rounded path from a right angle |path| by // - inserting arc segments for corners; // - adjusting length of the lines. @@ -413,29 +261,126 @@ } // Generate the new contour into |path|. DCHECK_EQ(lines.size(), new_lines.size()); - path.moveTo(new_lines[0].start); + path.moveTo(new_lines.back().end); for (wtf_size_t i = 0; i < new_lines.size(); i++) { - const Line& line = new_lines[i]; - if (line.end != line.start) - path.lineTo(line.end); - const Line& next_line = new_lines[i == lines.size() - 1 ? 0 : i + 1]; - if (line.end != next_line.start) { - constexpr float kCornerConicWeight = 0.707106781187; // 1/sqrt(2) - // This produces a 90 degree arc from line.end towards lines[i].end - // to next_line.start. - path.conicTo(lines[i].end, next_line.start, kCornerConicWeight); - } + // Keep empty arcs and lines to allow RoundedEdgePathIterator to match + // edges. Produce a 90 degree arc from the current point (end of the + // previous line) towards lines[i].start to new_lines[i].start. + path.conicTo(lines[i].start, new_lines[i].start, kCornerConicWeight); + path.lineTo(new_lines[i].end); } path.close(); }); } -class ComplexRoundedOutlinePainter { +// Move |point| so that the length of the line to |other| will be extended by +// |offset|. +void ExtendLineAtEndpoint(SkPoint& point, const SkPoint& other, int offset) { + if (point.x() == other.x()) { + point.offset(0, point.y() < other.y() ? -offset : offset); + } else { + DCHECK_EQ(point.y(), other.y()); + point.offset(point.x() < other.x() ? -offset : offset, 0); + } +} + +// Iterates a rounded outline center path, and for each edge [1] returns the +// path that can be used to stroke the edge. +// [1] An "edge" means a segment of the path, including a horizontal or vertical +// line and approximate halves of its adjacent arcs if any. +class RoundedEdgePathIterator { public: - ComplexRoundedOutlinePainter(GraphicsContext& context, - const Vector<IntRect>& rects, - const PhysicalRect& reference_border_rect, - const ComputedStyle& style) + RoundedEdgePathIterator(const SkPath& rounded_center_path, int center_inset) + : iter_(rounded_center_path, /*forceClose*/ true), + center_inset_(center_inset) {} + + SkPath Next() { + SkPath edge_stroke_path; + while (true) { + SkPoint points[4]; + switch (iter_.next(points)) { + case SkPath::kConic_Verb: + if (is_new_contour_) { + std::copy_n(points, kArcPointCount, prev_arc_points_); + std::copy_n(points, kArcPointCount, first_arc_points_); + is_new_contour_ = false; + continue; + } + GenerateEdgeStrokePath(edge_stroke_path, prev_arc_points_, points); + std::copy_n(points, kArcPointCount, prev_arc_points_); + return edge_stroke_path; + case SkPath::kClose_Verb: + DCHECK(!is_new_contour_); + GenerateEdgeStrokePath(edge_stroke_path, prev_arc_points_, + first_arc_points_); + is_new_contour_ = true; + return edge_stroke_path; + case SkPath::kDone_Verb: + return edge_stroke_path; + default: + continue; + } + } + } + + private: + // An example of an edge stroke path: + // | Short extension before the starting arc (see code comment) + // \ Starting arc + // \______ Line + // \ Ending arc + // | Short extension after the ending arc (see code comment) + // The edge will drawn with a clip to remove the first half of the starting + // arc and the second half of the ending arc. + void GenerateEdgeStrokePath(SkPath& edge_stroke_path, + const SkPoint starting_arc_points[], + const SkPoint ending_arc_points[]) { + SkPoint line_start = starting_arc_points[2]; + SkPoint line_end = ending_arc_points[0]; + if (starting_arc_points[0] == line_start) { + // No starting arc. Extend the line to fill the miter. + ExtendLineAtEndpoint(line_start, ending_arc_points[1], center_inset_); + edge_stroke_path.moveTo(line_start); + } else { + SkPoint start = starting_arc_points[0]; + // Add a short line before the arc in case the starting arc is too short + // to fill the miter. + ExtendLineAtEndpoint(start, starting_arc_points[1], center_inset_); + edge_stroke_path.moveTo(start); + edge_stroke_path.lineTo(starting_arc_points[0]); + edge_stroke_path.conicTo(starting_arc_points[1], line_start, + kCornerConicWeight); + } + if (line_end == ending_arc_points[2]) { + // No ending arc. Extend the line to fill the miter. + ExtendLineAtEndpoint(line_end, starting_arc_points[1], center_inset_); + edge_stroke_path.lineTo(line_end); + } else { + edge_stroke_path.lineTo(line_end); + SkPoint end = ending_arc_points[2]; + edge_stroke_path.conicTo(ending_arc_points[1], end, kCornerConicWeight); + // Add a short line after the ending arc in case the arc is too short to + // fill the miter. + ExtendLineAtEndpoint(end, ending_arc_points[1], center_inset_); + edge_stroke_path.lineTo(end); + } + } + + SkPath::Iter iter_; + const int center_inset_; + bool is_new_contour_ = true; + // The three points are: start, control (the right-angle corner), end. + static constexpr size_t kArcPointCount = 3; + SkPoint first_arc_points_[kArcPointCount]; + SkPoint prev_arc_points_[kArcPointCount]; +}; + +class ComplexOutlinePainter { + public: + ComplexOutlinePainter(GraphicsContext& context, + const Vector<IntRect>& rects, + const PhysicalRect& reference_border_rect, + const ComputedStyle& style) : context_(context), rects_(rects), reference_border_rect_(reference_border_rect), @@ -443,8 +388,10 @@ outline_style_(style.OutlineStyle()), offset_(style.OutlineOffsetInt()), width_(style.OutlineWidthInt()), - color_(style.VisitedDependentColor(GetCSSPropertyOutlineColor())) { + color_(style.VisitedDependentColor(GetCSSPropertyOutlineColor())), + is_rounded_(style.HasBorderRadius()) { DCHECK(!style.OutlineStyleIsAuto()); + DCHECK_NE(width_, 0); if (width_ <= 2 && outline_style_ == EBorderStyle::kDouble) { outline_style_ = EBorderStyle::kSolid; } else if (width_ == 1 && (outline_style_ == EBorderStyle::kRidge || @@ -457,26 +404,34 @@ } } - bool Paint() { - if (width_ == 0) - return true; - + void Paint() { if (!ComputeRightAnglePath(right_angle_outer_path_, rects_, offset_, width_)) { - return true; + return; + } + + bool use_alpha_layer = color_.HasAlpha() && + outline_style_ != EBorderStyle::kSolid && + outline_style_ != EBorderStyle::kDouble; + if (use_alpha_layer) { + context_.BeginLayer(color_.Alpha() / 255.0); + color_.SetRGB(color_.Red(), color_.Green(), color_.Blue()); } SkPath outer_path = right_angle_outer_path_; SkPath inner_path = right_angle_outer_path_; ShrinkRightAnglePath(inner_path, width_); - auto inner_radii = ComputeRadii(0); - auto outer_radii = ComputeRadii(width_); - AddCornerRadiiToPath(outer_path, outer_radii, inner_radii); - AddCornerRadiiToPath(inner_path, inner_radii, outer_radii); + if (is_rounded_) { + auto inner_radii = ComputeRadii(0); + auto outer_radii = ComputeRadii(width_); + AddCornerRadiiToPath(outer_path, outer_radii, inner_radii); + AddCornerRadiiToPath(inner_path, inner_radii, outer_radii); + } GraphicsContextStateSaver saver(context_); context_.ClipPath(outer_path, kAntiAliased); - context_.ClipOut(inner_path); + MakeClipOutPath(inner_path); + context_.ClipPath(inner_path, kAntiAliased); context_.SetFillColor(color_); switch (outline_style_) { @@ -490,12 +445,21 @@ case EBorderStyle::kDashed: PaintDottedOrDashedOutline(); break; + case EBorderStyle::kGroove: + case EBorderStyle::kRidge: + PaintGrooveOrRidgeOutline(); + break; + case EBorderStyle::kInset: + case EBorderStyle::kOutset: + PaintInsetOrOutsetOutline(CenterPath(), + outline_style_ == EBorderStyle::kInset); + break; default: - // TODO(wangxianzhu): Draw kRidge, kGroove, kInset, kOutset by calling - // BoxBorderPainter::DrawBoxSideFromPath() for each segment of the path. - return false; + NOTREACHED(); } - return true; + + if (use_alpha_layer) + context_.EndLayer(); } private: @@ -505,46 +469,194 @@ int stroke_width = std::round(width_ / 3.0); ShrinkRightAnglePath(inner_third_path, width_ - stroke_width); ShrinkRightAnglePath(outer_third_path, stroke_width); - auto inner_third_radii = ComputeRadii(stroke_width); - auto outer_third_radii = ComputeRadii(width_ - stroke_width); - AddCornerRadiiToPath(inner_third_path, inner_third_radii, - outer_third_radii); - AddCornerRadiiToPath(outer_third_path, outer_third_radii, - inner_third_radii); - { - GraphicsContextStateSaver saver(context_); - context_.ClipOut(outer_third_path); - context_.FillRect(right_angle_outer_path_.getBounds()); + if (is_rounded_) { + auto inner_third_radii = ComputeRadii(stroke_width); + auto outer_third_radii = ComputeRadii(width_ - stroke_width); + AddCornerRadiiToPath(inner_third_path, inner_third_radii, + outer_third_radii); + AddCornerRadiiToPath(outer_third_path, outer_third_radii, + inner_third_radii); } context_.FillPath(inner_third_path); + MakeClipOutPath(outer_third_path); + context_.ClipPath(outer_third_path, kAntiAliased); + context_.FillRect(right_angle_outer_path_.getBounds()); } void PaintDottedOrDashedOutline() { - SkPath center_path = right_angle_outer_path_; - int center_outset = width_ / 2; - ShrinkRightAnglePath(center_path, width_ - center_outset); - auto center_radii = ComputeRadii(center_outset); - AddCornerRadiiToPath(center_path, center_radii, center_radii); context_.SetStrokeColor(color_); auto stroke_style = outline_style_ == EBorderStyle::kDashed ? kDashedStroke : kDottedStroke; context_.SetStrokeStyle(stroke_style); - if (StrokeData::StrokeIsDashed(width_, stroke_style)) { - // Draw wider to fill the clip area between inner_path_ and outer_path_, - // to get smoother edges, and even stroke thickness when the outline is - // thin. + if ((width_ % 2) && StrokeData::StrokeIsDashed(width_, stroke_style)) { + // If width_ is odd, draw wider to fill the clip area. context_.SetStrokeThickness(width_ + 2); } else { context_.SetStrokeThickness(width_); - context_.SetLineCap(kRoundCap); } - context_.StrokePath(center_path, Path(center_path).length(), width_); + + SkPath center_path = CenterPath(); + if (is_rounded_) { + context_.StrokePath(center_path, Path(center_path).length() + width_, + width_); + } else { + // Draw edges one by one instead of the whole path to let the corners + // have starting/ending dots/dashes. + IterateRightAnglePath(center_path, [this](const Vector<Line>& lines) { + for (const auto& line : lines) + PaintStraightEdge(line); + }); + } + } + + void PaintGrooveOrRidgeOutline() { + SkPath center_path = CenterPath(); + // Paint the whole outline, treating kGroove as kInset. + PaintInsetOrOutsetOutline(center_path, + outline_style_ == EBorderStyle::kGroove); + // Paint dark color in the inner half. + context_.ClipPath(center_path, kAntiAliased); + context_.SetStrokeColor(color_.Dark()); + PaintTopLeftOrBottomRight(center_path, + outline_style_ == EBorderStyle::kRidge); + // Paint light color in the inner half. If width_ is odd, draw thinner + // (by preferring outer half) because light color looks wider. + if (width_ % 2) { + SkPath center_path_prefer_outer = CenterPath(/*prefer_outer*/ true); + context_.ClipPath(center_path_prefer_outer, kAntiAliased); + } + context_.SetStrokeColor(color_); + PaintTopLeftOrBottomRight(center_path, + outline_style_ == EBorderStyle::kGroove); + } + + void PaintInsetOrOutsetOutline(const SkPath& center_path, bool is_inset) { + context_.SetStrokeColor(color_); + PaintTopLeftOrBottomRight(center_path, !is_inset); + context_.SetStrokeColor(color_.Dark()); + PaintTopLeftOrBottomRight(center_path, is_inset); + } + + void PaintTopLeftOrBottomRight(const SkPath& center_path, + bool top_left_or_bottom_right) { + // If width_ is odd, draw wider to fill the clip area. + context_.SetStrokeThickness(width_ % 2 ? width_ + 2 : width_); + absl::optional<RoundedEdgePathIterator> rounded_edge_path_iterator; + if (is_rounded_) + rounded_edge_path_iterator.emplace(center_path, (width_ + 1) / 2); + IterateRightAnglePath( + is_rounded_ ? right_angle_outer_path_ : center_path, + [this, top_left_or_bottom_right, + &rounded_edge_path_iterator](const Vector<Line>& lines) { + for (wtf_size_t i = 0; i < lines.size(); i++) { + const Line& line = lines[i]; + absl::optional<SkPath> rounded_edge_path; + if (rounded_edge_path_iterator) + rounded_edge_path = rounded_edge_path_iterator->Next(); + bool is_top_or_left = + line.start.x() < line.end.x() || line.start.y() > line.end.y(); + if (is_top_or_left != top_left_or_bottom_right) + continue; + const Line& prev_line = lines[i == 0 ? lines.size() - 1 : i - 1]; + const Line& next_line = lines[i == lines.size() - 1 ? 0 : i + 1]; + GraphicsContextStateSaver clip_saver(context_); + context_.ClipPath( + MiterClipPath(prev_line.start, line, next_line.end), + kNotAntiAliased); + if (is_rounded_) { + context_.StrokePath(*rounded_edge_path); + } else { + PaintStraightEdge(line); + } + } + }); + } + + void MakeClipOutPath(SkPath& path) const { + // Add a counter-clockwise rect around the path, so that with kWinding fill + // type: + // 1. the areas enclosed in clockwise boundaries become "out", + // 2. the areas outside of the original path become "in", and + // 3. the areas enclosed in counter-clockwise boundaries are still "in". + // This is different from kInverseWinding or GraphicsContext::ClipOut() + // in #3, which is important not to clip out the areas enclosed by crossing + // edges produced when shrinking from the outer path. + DCHECK_EQ(path.getFillType(), SkPathFillType::kWinding); + path.addRect(right_angle_outer_path_.getBounds(), SkPathDirection::kCCW); } FloatRoundedRect::Radii ComputeRadii(int outset) const { + DCHECK(is_rounded_); return ComputeCornerRadii(style_, reference_border_rect_, offset_ + outset); } + SkPath CenterPath(bool prefer_outer_half = false) const { + SkPath center_path = right_angle_outer_path_; + // If |prefer_outer_half| and width_ is odd_, give the outer half 1 more + // pixel than the inner half. + int outset_from_inner = prefer_outer_half ? width_ / 2 : (width_ + 1) / 2; + ShrinkRightAnglePath(center_path, width_ - outset_from_inner); + if (is_rounded_) { + auto center_radii = ComputeRadii(outset_from_inner); + AddCornerRadiiToPath(center_path, center_radii, center_radii); + } + return center_path; + } + + static int MiterSlope(const SkPoint& p1, + const SkPoint& p2, + const SkPoint& p3) { + if (p1.x() == p2.x()) + return (p3.x() > p2.x()) == (p2.y() > p1.y()) ? 1 : -1; + return (p3.y() > p2.y()) == (p2.x() > p1.x()) ? 1 : -1; + } + + // Apply clip to remove the extra part of an edge exceeding the miters + // (formed by 45deg divisions between edges, across the rounded or right-angle + // corners). The clip should be big enough to include rounded corners within + // the miters. + SkPath MiterClipPath(const SkPoint& prev_point, + const Line& line, + const SkPoint& next_point) const { + SkRect bounds = right_angle_outer_path_.getBounds(); + int start_miter_slope = MiterSlope(prev_point, line.start, line.end); + int end_miter_slope = MiterSlope(line.start, line.end, next_point); + SkPoint p1 = SkPoint::Make( + line.start.x() + start_miter_slope * (line.start.y() - bounds.top()), + bounds.top()); + SkPoint p2 = SkPoint::Make( + line.end.x() + end_miter_slope * (line.end.y() - bounds.top()), + bounds.top()); + SkPoint p3 = SkPoint::Make( + line.end.x() - end_miter_slope * (bounds.bottom() - line.end.y()), + bounds.bottom()); + SkPoint p4 = SkPoint::Make( + line.start.x() - start_miter_slope * (bounds.bottom() - line.start.y()), + bounds.bottom()); + // If start_miter_slope == end_miter_slope, the clip path is a parallelogram + // which is good for both horizontal and vertical edges. Otherwise the path + // is a trapezoid or a butterfly quadrilateral, and a vertical edge is + // outside of the path. + auto path = SkPath::Polygon({p1, p2, p3, p4}, /*isClosed*/ true); + if (start_miter_slope != end_miter_slope && line.start.x() == line.end.x()) + path.setFillType(SkPathFillType::kInverseWinding); + return path; + } + + void PaintStraightEdge(const Line& line) { + Line adjusted_line = line; + // GraphicsContext::DrawLine requires the line to be top-to-down or + // left-to-right get correct interval among dots/dashes. + if (line.start.x() > line.end.x() || line.start.y() > line.end.y()) + std::swap(adjusted_line.start, adjusted_line.end); + // Extend the line to fully cover the corners at both endpoints. + int joint_offset = (width_ + 1) / 2; + ExtendLineAtEndpoint(adjusted_line.start, adjusted_line.end, joint_offset); + ExtendLineAtEndpoint(adjusted_line.end, adjusted_line.start, joint_offset); + context_.DrawLine(RoundedIntPoint(FloatPoint(adjusted_line.start)), + RoundedIntPoint(FloatPoint(adjusted_line.end))); + } + GraphicsContext& context_; const Vector<IntRect>& rects_; const PhysicalRect& reference_border_rect_; @@ -553,6 +665,7 @@ int offset_; int width_; Color color_; + bool is_rounded_; SkPath right_angle_outer_path_; }; @@ -699,14 +812,9 @@ return; } - if (style.HasBorderRadius() && - ComplexRoundedOutlinePainter(context, pixel_snapped_outline_rects, - outline_rects[0], style) - .Paint()) { - return; - } - - PaintComplexRightAngleOutline(context, pixel_snapped_outline_rects, style); + ComplexOutlinePainter(context, pixel_snapped_outline_rects, outline_rects[0], + style) + .Paint(); } void OutlinePainter::PaintFocusRingPath(GraphicsContext& context,
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_device.cc b/third_party/blink/renderer/modules/webgpu/gpu_device.cc index d865e5d..a2deb46 100644 --- a/third_party/blink/renderer/modules/webgpu/gpu_device.cc +++ b/third_party/blink/renderer/modules/webgpu/gpu_device.cc
@@ -291,7 +291,8 @@ ExceptionState& exception_state) { GPUExternalTexture* externalTexture = GPUExternalTexture::FromVideo(this, descriptor, exception_state); - EnsureExternalTextureDestroyed(externalTexture); + if (externalTexture) + EnsureExternalTextureDestroyed(externalTexture); return externalTexture; } @@ -485,7 +486,9 @@ void GPUDevice::EnsureExternalTextureDestroyed( GPUExternalTexture* externalTexture) { + DCHECK(externalTexture); external_textures_pending_destroy_.push_back(externalTexture); + if (has_pending_microtask_) return;
diff --git a/third_party/blink/renderer/modules/xr/xr_frame.cc b/third_party/blink/renderer/modules/xr/xr_frame.cc index e67ff0c..a258d70 100644 --- a/third_party/blink/renderer/modules/xr/xr_frame.cc +++ b/third_party/blink/renderer/modules/xr/xr_frame.cc
@@ -92,7 +92,23 @@ session_->LogGetPose(); - device::mojom::blink::XRReferenceSpaceType type = reference_space->GetType(); + absl::optional<TransformationMatrix> native_from_mojo = + reference_space->NativeFromMojo(); + if (!native_from_mojo) { + DVLOG(1) << __func__ << ": native_from_mojo is invalid"; + return nullptr; + } + + TransformationMatrix ref_space_from_mojo = + reference_space->OffsetFromNativeMatrix(); + ref_space_from_mojo.Multiply(*native_from_mojo); + + // Can only update an XRViewerPose's views with an invertible matrix. + if (!ref_space_from_mojo.IsInvertible()) { + DVLOG(1) << __func__ << ": ref_space_from_mojo is not invertible"; + return nullptr; + } + absl::optional<TransformationMatrix> offset_space_from_viewer = reference_space->OffsetFromViewer(); @@ -105,10 +121,12 @@ return nullptr; } + device::mojom::blink::XRReferenceSpaceType type = reference_space->GetType(); + // If the |reference_space| type is kViewer, we know that the pose is not // emulated. Otherwise, ask the session if the poses are emulated or not. return MakeGarbageCollected<XRViewerPose>( - this, *offset_space_from_viewer, + this, ref_space_from_mojo, *offset_space_from_viewer, (type == device::mojom::blink::XRReferenceSpaceType::kViewer) ? false : session_->EmulatedPosition());
diff --git a/third_party/blink/renderer/modules/xr/xr_session.cc b/third_party/blink/renderer/modules/xr/xr_session.cc index ec73130..0604ca7 100644 --- a/third_party/blink/renderer/modules/xr/xr_session.cc +++ b/third_party/blink/renderer/modules/xr/xr_session.cc
@@ -504,22 +504,18 @@ void XRSession::UpdateViews( const Vector<device::mojom::blink::XRViewPtr>& views) { - bool updated = false; + if (views.IsEmpty()) { + // If there are no views provided for this frame, keep the views we + // currently have from the previous frame. + return; + } if (pending_views_.size() != views.size()) { pending_views_.resize(views.size()); - updated = true; } for (wtf_size_t i = 0; i < views.size(); i++) { - if (!pending_views_[i] || !pending_views_[i]->Equals(*views[i])) { pending_views_[i] = views[i].Clone(); - updated = true; - } - } - - if (updated) { - update_views_next_frame_ = true; } } @@ -1519,7 +1515,6 @@ if (pending_render_state_.size() > 0) { prev_base_layer_ = render_state_->baseLayer(); HTMLCanvasElement* prev_ouput_canvas = render_state_->output_canvas(); - update_views_next_frame_ = true; // Loop through each pending render state and apply it to the active one. for (auto& init : pending_render_state_) { @@ -1578,22 +1573,28 @@ if (ended_) return; - // Apply dynamic viewport scaling if available. - if (frame_data && supports_viewport_scaling_) { - float gpu_load = frame_data->rendering_time_ratio; - absl::optional<double> scale = absl::nullopt; - if (gpu_load > 0.0f) { - if (!viewport_scaler_) { - // Lazily create an instance of the viewport scaler on first use. - viewport_scaler_ = std::make_unique<XRSessionViewportScaler>(); - } + if (frame_data) { + // Views need to be updated first, since views() creates a new set of views. + UpdateViews(frame_data->views); - viewport_scaler_->UpdateRenderingTimeRatio(gpu_load); - scale = viewport_scaler_->Scale(); - DVLOG(3) << __func__ << ": gpu_load=" << gpu_load << " scale=" << *scale; - } - for (XRViewData* view : views()) { - view->SetRecommendedViewportScale(scale); + // Apply dynamic viewport scaling if available. + if (supports_viewport_scaling_) { + float gpu_load = frame_data->rendering_time_ratio; + absl::optional<double> scale = absl::nullopt; + if (gpu_load > 0.0f) { + if (!viewport_scaler_) { + // Lazily create an instance of the viewport scaler on first use. + viewport_scaler_ = std::make_unique<XRSessionViewportScaler>(); + } + + viewport_scaler_->UpdateRenderingTimeRatio(gpu_load); + scale = viewport_scaler_->Scale(); + DVLOG(3) << __func__ << ": gpu_load=" << gpu_load + << " scale=" << *scale; + } + for (XRViewData* view : views()) { + view->SetRecommendedViewportScale(scale); + } } } @@ -1831,11 +1832,7 @@ XRFrame* presentation_frame = CreatePresentationFrame(true); - // Make sure that any frame-bounded changed to the views array take effect. - if (update_views_next_frame_) { - views_dirty_ = true; - update_views_next_frame_ = false; - } + views_updated_this_frame_ = false; // If the device has opted in, mark the viewports as modifiable // at the start of an animation frame: @@ -1937,7 +1934,6 @@ devicePixelRatio = window->GetFrame()->DevicePixelRatio(); } - update_views_next_frame_ = true; output_width_ = element->OffsetWidth() * devicePixelRatio; output_height_ = element->OffsetHeight() * devicePixelRatio; @@ -2212,19 +2208,38 @@ // always hold true, however, so the view configuration should ultimately come // from the backing service. See also XRWebGLLayer::UpdateViewports() which // assumes that the views are arranged as follows. - if (views_dirty_) { + if (!views_updated_this_frame_) { if (immersive()) { // In immersive mode the projection and view matrices must be aligned with // the device's physical optics. + + // Views shouldn't be re-created on each frame because they contain + // viewport scaling information, such as requested viewport scales. + // However, if the number of views changed or if the order of the views + // changed, we should recreate the views since we aren't able to match + // the old views to the new views. + bool create_views = false; if (views_.size() != pending_views_.size()) { views_.clear(); views_.resize(pending_views_.size()); + create_views = true; } - for (wtf_size_t i = 0; i < pending_views_.size(); ++i) { - views_[i] = MakeGarbageCollected<XRViewData>(pending_views_[i], - render_state_->depthNear(), - render_state_->depthFar()); + for (wtf_size_t i = 0; !create_views && i < pending_views_.size(); ++i) { + if (views_[i]->Eye() == pending_views_[i]->eye) { + views_[i]->UpdateView(pending_views_[i], render_state_->depthNear(), + render_state_->depthFar()); + } else { + create_views = true; + } + } + + if (create_views) { + for (wtf_size_t i = 0; i < pending_views_.size(); ++i) { + views_[i] = MakeGarbageCollected<XRViewData>( + pending_views_[i], render_state_->depthNear(), + render_state_->depthFar()); + } } } else { if (views_.IsEmpty()) { @@ -2251,7 +2266,7 @@ render_state_->depthFar()); } - views_dirty_ = false; + views_updated_this_frame_ = true; } return views_;
diff --git a/third_party/blink/renderer/modules/xr/xr_session.h b/third_party/blink/renderer/modules/xr/xr_session.h index 83e74bd..767c7dac 100644 --- a/third_party/blink/renderer/modules/xr/xr_session.h +++ b/third_party/blink/renderer/modules/xr/xr_session.h
@@ -586,10 +586,10 @@ bool pending_frame_ = false; bool resolving_frame_ = false; - bool update_views_next_frame_ = false; - bool views_dirty_ = true; bool frames_throttled_ = false; + bool views_updated_this_frame_ = false; + // Indicates that we've already logged a metric, so don't need to log it // again. mutable bool did_log_getInputSources_ = false;
diff --git a/third_party/blink/renderer/modules/xr/xr_view.cc b/third_party/blink/renderer/modules/xr/xr_view.cc index 965e0055..5e9b48d 100644 --- a/third_party/blink/renderer/modules/xr/xr_view.cc +++ b/third_party/blink/renderer/modules/xr/xr_view.cc
@@ -26,7 +26,9 @@ } // namespace -XRView::XRView(XRFrame* frame, XRViewData* view_data) +XRView::XRView(XRFrame* frame, + XRViewData* view_data, + const TransformationMatrix& ref_space_from_mojo) : eye_(view_data->Eye()), frame_(frame), view_data_(view_data) { switch (eye_) { case device::mojom::blink::XREye::kLeft: @@ -38,8 +40,8 @@ default: eye_string_ = "none"; } - ref_space_from_eye_ = - MakeGarbageCollected<XRRigidTransform>(view_data->Transform()); + ref_space_from_view_ = MakeGarbageCollected<XRRigidTransform>( + ref_space_from_mojo * view_data->MojoFromView()); projection_matrix_ = transformationMatrixToDOMFloat32Array(view_data->ProjectionMatrix()); } @@ -67,15 +69,21 @@ double depth_near, double depth_far) : eye_(view->eye) { - const device::mojom::blink::VRFieldOfViewPtr& fov = view->field_of_view; + UpdateView(view, depth_near, depth_far); +} +void XRViewData::UpdateView(const device::mojom::blink::XRViewPtr& view, + double depth_near, + double depth_far) { + DCHECK_EQ(eye_, view->eye); + + const device::mojom::blink::VRFieldOfViewPtr& fov = view->field_of_view; UpdateProjectionMatrixFromFoV( fov->up_degrees * kDegToRad, fov->down_degrees * kDegToRad, fov->left_degrees * kDegToRad, fov->right_degrees * kDegToRad, depth_near, depth_far); - const TransformationMatrix matrix(view->head_from_eye.matrix()); - SetHeadFromEyeTransform(matrix); + mojo_from_view_ = TransformationMatrix(view->mojo_from_view.matrix()); } void XRViewData::UpdateProjectionMatrixFromFoV(float up_rad, @@ -159,20 +167,8 @@ return inv_pointer.Inverse(); } -void XRViewData::SetHeadFromEyeTransform( - const TransformationMatrix& head_from_eye) { - head_from_eye_ = head_from_eye; -} - -// ref_space_from_eye_ = ref_space_from_head * head_from_eye_ -void XRViewData::UpdatePoseMatrix( - const TransformationMatrix& ref_space_from_head) { - ref_space_from_eye_ = ref_space_from_head; - ref_space_from_eye_.Multiply(head_from_eye_); -} - -XRRigidTransform* XRView::transform() const { - return ref_space_from_eye_; +XRRigidTransform* XRView::refSpaceFromView() const { + return ref_space_from_view_; } absl::optional<double> XRView::recommendedViewportScale() const { @@ -213,7 +209,7 @@ void XRView::Trace(Visitor* visitor) const { visitor->Trace(frame_); visitor->Trace(projection_matrix_); - visitor->Trace(ref_space_from_eye_); + visitor->Trace(ref_space_from_view_); visitor->Trace(view_data_); ScriptWrappable::Trace(visitor); }
diff --git a/third_party/blink/renderer/modules/xr/xr_view.h b/third_party/blink/renderer/modules/xr/xr_view.h index 4c454974..93b6c2f 100644 --- a/third_party/blink/renderer/modules/xr/xr_view.h +++ b/third_party/blink/renderer/modules/xr/xr_view.h
@@ -27,7 +27,7 @@ DEFINE_WRAPPERTYPEINFO(); public: - XRView(XRFrame*, XRViewData*); + XRView(XRFrame*, XRViewData*, const TransformationMatrix&); const String& eye() const { return eye_string_; } device::mojom::blink::XREye EyeValue() const { return eye_; } @@ -36,7 +36,7 @@ XRFrame* frame() const; XRSession* session() const; DOMFloat32Array* projectionMatrix() const; - XRRigidTransform* transform() const; + XRRigidTransform* refSpaceFromView() const; XRCamera* camera() const; // isFirstPersonObserver is only true for views that composed with a video @@ -56,7 +56,9 @@ String eye_string_; Member<XRFrame> frame_; Member<XRViewData> view_data_; - Member<XRRigidTransform> ref_space_from_eye_; + // The transform from the view to the reference space requested by + // XRFrame::getViewerPose. + Member<XRRigidTransform> ref_space_from_view_; Member<DOMFloat32Array> projection_matrix_; }; @@ -67,7 +69,10 @@ double depth_near, double depth_far); - void UpdatePoseMatrix(const TransformationMatrix& ref_space_from_head); + void UpdateView(const device::mojom::blink::XRViewPtr& view, + double depth_near, + double depth_far); + void UpdateProjectionMatrixFromFoV(float up_rad, float down_rad, float left_rad, @@ -79,15 +84,13 @@ float near_depth, float far_depth); - void SetHeadFromEyeTransform(const TransformationMatrix& head_from_eye); - TransformationMatrix UnprojectPointer(double x, double y, double canvas_width, double canvas_height); device::mojom::blink::XREye Eye() const { return eye_; } - const TransformationMatrix& Transform() const { return ref_space_from_eye_; } + const TransformationMatrix& MojoFromView() const { return mojo_from_view_; } const TransformationMatrix& ProjectionMatrix() const { return projection_matrix_; } @@ -113,10 +116,9 @@ private: const device::mojom::blink::XREye eye_; - TransformationMatrix ref_space_from_eye_; + TransformationMatrix mojo_from_view_; TransformationMatrix projection_matrix_; TransformationMatrix inv_projection_; - TransformationMatrix head_from_eye_; bool inv_projection_dirty_ = true; absl::optional<double> recommended_viewport_scale_ = absl::nullopt; double requested_viewport_scale_ = 1.0;
diff --git a/third_party/blink/renderer/modules/xr/xr_view.idl b/third_party/blink/renderer/modules/xr/xr_view.idl index 8bac52d0..76231d5 100644 --- a/third_party/blink/renderer/modules/xr/xr_view.idl +++ b/third_party/blink/renderer/modules/xr/xr_view.idl
@@ -16,7 +16,7 @@ ] interface XRView { readonly attribute XREye eye; readonly attribute Float32Array projectionMatrix; - [SameObject] readonly attribute XRRigidTransform transform; + [SameObject, ImplementedAs=refSpaceFromView] readonly attribute XRRigidTransform transform; [RuntimeEnabled=WebXRViewportScale] readonly attribute double? recommendedViewportScale; // Added by the AR module.
diff --git a/third_party/blink/renderer/modules/xr/xr_view_test.cc b/third_party/blink/renderer/modules/xr/xr_view_test.cc index f8b55936..bfdb478 100644 --- a/third_party/blink/renderer/modules/xr/xr_view_test.cc +++ b/third_party/blink/renderer/modules/xr/xr_view_test.cc
@@ -13,39 +13,58 @@ #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h" #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_testing.h" #include "third_party/blink/renderer/platform/bindings/script_state.h" +#include "ui/gfx/geometry/vector2d_f.h" +#include "ui/gfx/geometry/vector3d_f.h" namespace blink { namespace { -TEST(XRViewTest, UpdatePoseMatrix) { - XRViewData view(device::mojom::blink::XREye::kLeft); - - TransformationMatrix head_from_eye; - head_from_eye.Translate3d(-1.0, 2.0, 3.0); - view.SetHeadFromEyeTransform(head_from_eye); - - DOMPointInit* position = MakePointForTest(1.0, -1.0, 4.0, 1.0); - DOMPointInit* orientation = - MakePointForTest(0.3701005885691383, -0.5678993882056005, - 0.31680366148754113, 0.663438979322567); - XRRigidTransform* initial_transform = - MakeGarbageCollected<XRRigidTransform>(position, orientation); - TransformationMatrix pose_matrix = initial_transform->TransformMatrix(); - - view.UpdatePoseMatrix(pose_matrix); - TransformationMatrix view_transform_matrix = view.Transform(); - const Vector<double> actual_matrix = - GetMatrixDataForTest(view_transform_matrix); - - const Vector<double> expected_matrix{ - 0.154251, 0.000000, 0.988032, 0.000000, -0.840720, 0.525322, - 0.131253, 0.000000, -0.519035, -0.850904, 0.081032, 0.000000, - -2.392795, -2.502067, 3.517570, 1.000000}; - +void AssertMatrixEquals(const Vector<double>& actual, + const Vector<double>& expected) { for (int i = 0; i < 16; ++i) { - ASSERT_NEAR(actual_matrix[i], expected_matrix[i], kEpsilon); + ASSERT_NEAR(actual[i], expected[i], kEpsilon); } } +TEST(XRViewTest, ViewMatrices) { + const double kDepthNear = 0.1; + const double kDepthFar = 1000.0; + const float kFov = 52.0f; + const int kRenderSize = 1024; + + gfx::Transform mojo_from_view; + mojo_from_view.Translate3d(gfx::Vector3dF(4.3, 0.8, -2.5)); + mojo_from_view.RotateAboutXAxis(5.2); + mojo_from_view.RotateAboutYAxis(30.9); + mojo_from_view.RotateAboutZAxis(23.1); + + gfx::Transform ref_space_from_mojo; + ref_space_from_mojo.Translate(gfx::Vector2dF(0.0, -5.0)); + + gfx::Transform ref_space_from_view = ref_space_from_mojo * mojo_from_view; + + device::mojom::blink::XRViewPtr xr_view = device::mojom::blink::XRView::New(); + xr_view->eye = device::mojom::blink::XREye::kLeft; + xr_view->field_of_view = + device::mojom::blink::VRFieldOfView::New(kFov, kFov, kFov, kFov); + xr_view->mojo_from_view = mojo_from_view; + xr_view->viewport = gfx::Size(kRenderSize, kRenderSize); + + XRViewData view_data(xr_view, kDepthNear, kDepthFar); + XRView view(nullptr, &view_data, + TransformationMatrix(ref_space_from_mojo.matrix())); + + AssertMatrixEquals( + GetMatrixDataForTest(view_data.MojoFromView()), + GetMatrixDataForTest(TransformationMatrix(mojo_from_view.matrix()))); + AssertMatrixEquals( + GetMatrixDataForTest(view.refSpaceFromView()->TransformMatrix()), + GetMatrixDataForTest(TransformationMatrix(ref_space_from_view.matrix()))); + AssertMatrixEquals(GetMatrixDataForTest(view_data.ProjectionMatrix()), + GetMatrixDataForTest(TransformationMatrix( + 0.78128596636, 0, 0, 0, 0, 0.78128596636, 0, 0, 0, 0, + -1.00020002, -1, 0, 0, -0.200020002, 0))); +} + } // namespace } // namespace blink
diff --git a/third_party/blink/renderer/modules/xr/xr_viewer_pose.cc b/third_party/blink/renderer/modules/xr/xr_viewer_pose.cc index abc2a07..a8590b4 100644 --- a/third_party/blink/renderer/modules/xr/xr_viewer_pose.cc +++ b/third_party/blink/renderer/modules/xr/xr_viewer_pose.cc
@@ -12,17 +12,18 @@ namespace blink { XRViewerPose::XRViewerPose(XRFrame* frame, - const TransformationMatrix& pose_model_matrix, + const TransformationMatrix& ref_space_from_mojo, + const TransformationMatrix& ref_space_from_viewer, bool emulated_position) - : XRPose(pose_model_matrix, emulated_position) { + : XRPose(ref_space_from_viewer, emulated_position) { DVLOG(3) << __func__ << ": emulatedPosition()=" << emulatedPosition(); const HeapVector<Member<XRViewData>>& view_data = frame->session()->views(); // Snapshot the session's current views. for (XRViewData* view : view_data) { - view->UpdatePoseMatrix(transform_->TransformMatrix()); - XRView* xr_view = MakeGarbageCollected<XRView>(frame, view); + XRView* xr_view = + MakeGarbageCollected<XRView>(frame, view, ref_space_from_mojo); views_.push_back(xr_view); } }
diff --git a/third_party/blink/renderer/modules/xr/xr_viewer_pose.h b/third_party/blink/renderer/modules/xr/xr_viewer_pose.h index fba4244..7cc207d5 100644 --- a/third_party/blink/renderer/modules/xr/xr_viewer_pose.h +++ b/third_party/blink/renderer/modules/xr/xr_viewer_pose.h
@@ -20,6 +20,7 @@ public: explicit XRViewerPose(XRFrame*, const TransformationMatrix&, + const TransformationMatrix&, bool emulated_position); ~XRViewerPose() override = default;
diff --git a/third_party/blink/renderer/platform/bindings/dom_wrapper_world.cc b/third_party/blink/renderer/platform/bindings/dom_wrapper_world.cc index 54096d3..024ed87 100644 --- a/third_party/blink/renderer/platform/bindings/dom_wrapper_world.cc +++ b/third_party/blink/renderer/platform/bindings/dom_wrapper_world.cc
@@ -36,6 +36,7 @@ #include "third_party/blink/renderer/platform/bindings/dom_data_store.h" #include "third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h" #include "third_party/blink/renderer/platform/weborigin/security_origin.h" +#include "third_party/blink/renderer/platform/wtf/hash_map.h" #include "third_party/blink/renderer/platform/wtf/hash_traits.h" #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h" @@ -104,10 +105,10 @@ void DOMWrapperWorld::AllWorldsInCurrentThread( Vector<scoped_refptr<DOMWrapperWorld>>& worlds) { + DCHECK(worlds.IsEmpty()); + WTF::CopyValuesToVector(GetWorldMap(), worlds); if (IsMainThread()) worlds.push_back(&MainWorld()); - for (DOMWrapperWorld* world : GetWorldMap().Values()) - worlds.push_back(world); } DOMWrapperWorld::~DOMWrapperWorld() {
diff --git a/third_party/blink/renderer/platform/graphics/graphics_context.h b/third_party/blink/renderer/platform/graphics/graphics_context.h index 02cb4af..13fc594e 100644 --- a/third_party/blink/renderer/platform/graphics/graphics_context.h +++ b/third_party/blink/renderer/platform/graphics/graphics_context.h
@@ -208,7 +208,8 @@ void DrawRect(const IntRect&); // DrawLine() only operates on horizontal or vertical lines and uses the - // current stroke settings. + // current stroke settings. For dotted or dashed stroke, the line need to be + // top-to-down or left-to-right to get correct interval of dots/dashes. void DrawLine(const IntPoint&, const IntPoint&, const DarkModeFilter::ElementRole role =
diff --git a/third_party/blink/renderer/platform/graphics/paint/paint_controller.cc b/third_party/blink/renderer/platform/graphics/paint/paint_controller.cc index c2b4895..336950c 100644 --- a/third_party/blink/renderer/platform/graphics/paint/paint_controller.cc +++ b/third_party/blink/renderer/platform/graphics/paint/paint_controller.cc
@@ -126,7 +126,7 @@ if (usage_ == kTransient) return false; - if (ShouldInvalidateDisplayItemForBenchmark()) + if (benchmark_mode_ == PaintBenchmarkMode::kCachingDisabled) return false; if (!ClientCacheIsValid(client)) @@ -173,7 +173,8 @@ if (usage_ == kTransient) return false; - if (ShouldInvalidateSubsequenceForBenchmark()) + if (benchmark_mode_ == PaintBenchmarkMode::kCachingDisabled || + benchmark_mode_ == PaintBenchmarkMode::kSubsequenceCachingDisabled) return false; if (!ClientCacheIsValid(client)) @@ -767,52 +768,9 @@ #endif } -bool PaintController::ShouldInvalidateDisplayItemForBenchmark() { - if (benchmark_mode_ == PaintBenchmarkMode::kCachingDisabled) - return true; - - // For kPartialInvalidation, invalidate one out of every - // |kInvalidateDisplayItemInterval| display items for the micro benchmark of - // record time with partial invalidation. - constexpr int kInvalidateDisplayItemInterval = 8; - return benchmark_mode_ == PaintBenchmarkMode::kPartialInvalidation && - !(partial_invalidation_display_item_count_++ % - kInvalidateDisplayItemInterval); -} - -bool PaintController::ShouldInvalidateSubsequenceForBenchmark() { - if (benchmark_mode_ == PaintBenchmarkMode::kCachingDisabled || - benchmark_mode_ == PaintBenchmarkMode::kSubsequenceCachingDisabled) - return true; - - // Similar to the ShouldInvalidateDisplayItemsForBenchmark(), but for - // subsequences. - constexpr int kInvalidateSubsequenceInterval = 2; - return benchmark_mode_ == PaintBenchmarkMode::kPartialInvalidation && - !(partial_invalidation_subsequence_count_++ % - kInvalidateSubsequenceInterval); -} - void PaintController::SetBenchmarkMode(PaintBenchmarkMode mode) { DCHECK(new_paint_artifact_->IsEmpty()); benchmark_mode_ = mode; - if (mode == PaintBenchmarkMode::kPartialInvalidation) { - partial_invalidation_display_item_count_ = 0; - partial_invalidation_subsequence_count_ = 0; - } else if (mode == PaintBenchmarkMode::kSmallInvalidation) { - auto& subsequences = current_subsequences_.tree; - if (subsequences.size()) { - // Invalidate the clients of the middle subsequence and its ancestors. - wtf_size_t middle_index = subsequences.size() / 2; - const auto& middle_markers = subsequences[middle_index]; - for (wtf_size_t i = 0; i <= middle_index; i++) { - const auto& markers = subsequences[i]; - DCHECK_LE(markers.start_chunk_index, middle_markers.start_chunk_index); - if (markers.end_chunk_index >= middle_markers.end_chunk_index) - markers.client->Invalidate(); - } - } - } } } // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/paint/paint_controller.h b/third_party/blink/renderer/platform/graphics/paint/paint_controller.h index 8a2b98c..b3d0d10 100644 --- a/third_party/blink/renderer/platform/graphics/paint/paint_controller.h +++ b/third_party/blink/renderer/platform/graphics/paint/paint_controller.h
@@ -35,12 +35,11 @@ kNormal, kForceRasterInvalidationAndConvert, kForcePaintArtifactCompositorUpdate, + // Tests PaintController performance of moving cached subsequences. kForcePaint, - // The above modes don't additionally invalidate paintings, i.e. during - // repeated benchmarking, the PaintController is fully cached. - kPartialInvalidation, - kSmallInvalidation, + // Tests performance of core paint tree walk and moving cached display items. kSubsequenceCachingDisabled, + // Tests performance of full repaint. kCachingDisabled, }; @@ -379,8 +378,6 @@ #endif void SetBenchmarkMode(PaintBenchmarkMode); - bool ShouldInvalidateDisplayItemForBenchmark(); - bool ShouldInvalidateSubsequenceForBenchmark(); void CheckNoNewPaint() const { #if DCHECK_IS_ON() @@ -459,8 +456,6 @@ wtf_size_t current_fragment_ = 0; PaintBenchmarkMode benchmark_mode_ = PaintBenchmarkMode::kNormal; - int partial_invalidation_display_item_count_ = 0; - int partial_invalidation_subsequence_count_ = 0; static CounterForTesting* counter_for_testing_;
diff --git a/third_party/blink/web_tests/SlowTests b/third_party/blink/web_tests/SlowTests index c791823..f9d9692 100644 --- a/third_party/blink/web_tests/SlowTests +++ b/third_party/blink/web_tests/SlowTests
@@ -160,20 +160,14 @@ crbug.com/1074122 http/tests/serviceworker/webexposed/global-interface-listing-service-worker.html [ Slow ] # SwiftShader slow tests -crbug.com/726075 [ Win ] virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow.html [ Slow ] crbug.com/726075 [ Win ] css3/filters/effect-reference-zoom-hw.html [ Slow ] crbug.com/726075 [ Linux ] css3/filters/effect-reference-zoom-hw.html [ Slow ] crbug.com/726075 [ Mac ] css3/filters/effect-reference-zoom-hw.html [ Slow ] -crbug.com/726075 [ Win ] virtual/gpu/fast/canvas/canvas-composite-shadow.html [ Slow ] -crbug.com/726075 [ Linux ] virtual/gpu/fast/canvas/canvas-composite-shadow.html [ Slow ] -crbug.com/726075 [ Mac ] virtual/gpu/fast/canvas/canvas-composite-shadow.html [ Slow ] # Slow oopr canvas tests crbug.com/1081534 [ Mac ] virtual/oopr-canvas2d/fast/canvas/canvas-composite.html [ Slow ] crbug.com/1081534 [ Mac ] virtual/oopr-canvas2d/fast/canvas/canvas-composite-alpha.html [ Slow ] crbug.com/1081534 [ Linux ] virtual/oopr-canvas2d/fast/canvas/canvas-composite-alpha.html [ Slow ] -crbug.com/1081534 [ Linux ] virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow.html [ Slow ] -crbug.com/1081534 [ Mac ] virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow.html [ Slow ] crbug.com/1081534 [ Mac ] virtual/oopr-canvas2d/fast/canvas/canvas-composite-transformclip.html [ Slow ] crbug.com/1081534 [ Mac ] virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-shadow.html [ Slow ] crbug.com/1081534 [ Mac ] virtual/oopr-canvas2d/fast/canvas/canvas-composite-video.html [ Slow ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 31b908d6..b894cd1 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -2694,7 +2694,6 @@ crbug.com/626703 external/wpt/service-workers/service-worker/worker-interception.https.html [ Failure ] # ====== New tests from wpt-importer added here ====== -crbug.com/626703 [ Mac10.14 ] virtual/threaded/external/wpt/animation-worklet/worklet-animation-with-scroll-timeline-and-overflow-hidden.https.html [ Failure ] crbug.com/626703 [ Mac10.15 ] external/wpt/css/css-fonts/generic-family-keywords-002.html [ Failure Timeout ] crbug.com/1240701 virtual/dialogfocus-old-behavior/external/wpt/html/semantics/interactive-elements/the-dialog-element/modal-dialog-display-contents.html [ Failure ] crbug.com/1240701 external/wpt/html/semantics/interactive-elements/the-dialog-element/modal-dialog-display-contents.html [ Failure ] @@ -4124,14 +4123,12 @@ crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/bbox-with-glyph-overflow-on-path.html [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/bbox-with-glyph-overflow-zoomed.html [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/bidi-dir-rtl.html [ Failure ] -crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/bidi-embedded-direction.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/getextentofchar-nonbmp.html [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/text-decorations-in-scaled-pattern.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/text-selection-deco-01-b.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/text-selection-text-03-b.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-deco-01-b.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-text-03-b.svg [ Failure ] -crbug.com/1179585 virtual/layout_ng_svg_text/svg/zoom/page/zoom-zoom-coords.xhtml [ Failure ] # Ignore older OSes during SVGTextNG development crbug.com/1179585 [ Mac10.12 ] virtual/layout_ng_svg_text/* [ Skip ] crbug.com/1179585 [ Mac10.13 ] virtual/layout_ng_svg_text/* [ Skip ] @@ -6692,7 +6689,6 @@ crbug.com/1149734 http/tests/devtools/sources/debugger-ui/reveal-execution-line.js [ Failure Pass Timeout ] crbug.com/1149987 external/wpt/websockets/Create-blocked-port.any.html [ Pass Timeout ] crbug.com/1149987 external/wpt/websockets/Create-blocked-port.any.worker.html [ Pass Timeout ] -crbug.com/1150518 [ Win ] virtual/gpu/fast/canvas/canvas-composite-shadow.html [ Pass Timeout ] crbug.com/1150475 fast/dom/open-and-close-by-DOM.html [ Failure Pass ] #Sheriff 2020-11-23 @@ -7729,3 +7725,6 @@ crbug.com/1240252 [ Linux ] inspector-protocol/dom/dom-get-nodes-for-subtree-by-style-with-pierce-unslotted-elements.js [ Pass Timeout ] crbug.com/1240252 [ Linux ] inspector-protocol/dom/dom-get-nodes-for-subtree-by-style-with-pierce.js [ Pass Timeout ] crbug.com/1240252 [ Linux ] inspector-protocol/dom/dom-get-nodes-for-subtree-by-style.js [ Pass Timeout ] + +# Sheriff 2021-08-19 +crbug.com/1234315 [ Mac ] virtual/threaded/external/wpt/animation-worklet/worklet-animation-with-scroll-timeline-and-overflow-hidden.https.html [ Failure ]
diff --git a/third_party/blink/web_tests/WebDriverExpectations b/third_party/blink/web_tests/WebDriverExpectations index d7600b5..bafa203 100644 --- a/third_party/blink/web_tests/WebDriverExpectations +++ b/third_party/blink/web_tests/WebDriverExpectations
@@ -79,25 +79,6 @@ crbug.com/1167321 [ Linux ] external/wpt/webdriver/tests/find_elements_from_shadow_root/find.py [ Failure ] -crbug.com/1240985 [ Linux ] external/wpt/webdriver/tests/find_elements_from_shadow_root/user_prompts.py>>test_accept_and_notify[capabilities0-alert-None] [ Failure ] -crbug.com/1240985 [ Linux ] external/wpt/webdriver/tests/find_elements_from_shadow_root/user_prompts.py>>test_accept_and_notify[capabilities0-confirm-True] [ Failure ] -crbug.com/1240985 [ Linux ] external/wpt/webdriver/tests/find_elements_from_shadow_root/user_prompts.py>>test_accept_and_notify[capabilities0-prompt-] [ Failure ] -crbug.com/1240985 [ Linux ] external/wpt/webdriver/tests/find_elements_from_shadow_root/user_prompts.py>>test_accept[capabilities0-alert-None] [ Failure ] -crbug.com/1240985 [ Linux ] external/wpt/webdriver/tests/find_elements_from_shadow_root/user_prompts.py>>test_accept[capabilities0-confirm-True] [ Failure ] -crbug.com/1240985 [ Linux ] external/wpt/webdriver/tests/find_elements_from_shadow_root/user_prompts.py>>test_accept[capabilities0-prompt-] [ Failure ] -crbug.com/1240985 [ Linux ] external/wpt/webdriver/tests/find_elements_from_shadow_root/user_prompts.py>>test_default[alert-None] [ Failure ] -crbug.com/1240985 [ Linux ] external/wpt/webdriver/tests/find_elements_from_shadow_root/user_prompts.py>>test_default[confirm-False] [ Failure ] -crbug.com/1240985 [ Linux ] external/wpt/webdriver/tests/find_elements_from_shadow_root/user_prompts.py>>test_default[prompt-None] [ Failure ] -crbug.com/1240985 [ Linux ] external/wpt/webdriver/tests/find_elements_from_shadow_root/user_prompts.py>>test_dismiss_and_notify[capabilities0-alert-None] [ Failure ] -crbug.com/1240985 [ Linux ] external/wpt/webdriver/tests/find_elements_from_shadow_root/user_prompts.py>>test_dismiss_and_notify[capabilities0-confirm-False] [ Failure ] -crbug.com/1240985 [ Linux ] external/wpt/webdriver/tests/find_elements_from_shadow_root/user_prompts.py>>test_dismiss_and_notify[capabilities0-prompt-None] [ Failure ] -crbug.com/1240985 [ Linux ] external/wpt/webdriver/tests/find_elements_from_shadow_root/user_prompts.py>>test_dismiss[capabilities0-alert-None] [ Failure ] -crbug.com/1240985 [ Linux ] external/wpt/webdriver/tests/find_elements_from_shadow_root/user_prompts.py>>test_dismiss[capabilities0-confirm-False] [ Failure ] -crbug.com/1240985 [ Linux ] external/wpt/webdriver/tests/find_elements_from_shadow_root/user_prompts.py>>test_dismiss[capabilities0-prompt-None] [ Failure ] -crbug.com/1240985 [ Linux ] external/wpt/webdriver/tests/find_elements_from_shadow_root/user_prompts.py>>test_ignore[capabilities0-alert] [ Failure ] -crbug.com/1240985 [ Linux ] external/wpt/webdriver/tests/find_elements_from_shadow_root/user_prompts.py>>test_ignore[capabilities0-confirm] [ Failure ] -crbug.com/1240985 [ Linux ] external/wpt/webdriver/tests/find_elements_from_shadow_root/user_prompts.py>>test_ignore[capabilities0-prompt] [ Failure ] - # ====== New tests from wpt-importer added here ====== crbug.com/626703 [ Linux ] external/wpt/webdriver/tests/print/printcmd.py>>test_large_html_document [ Failure ] crbug.com/626703 [ Linux ] external/wpt/webdriver/tests/bidi/new_session/connect.py>>test_bidi_session_with_different_capability[capabilities0] [ Failure ]
diff --git a/third_party/blink/web_tests/WebGPUExpectations b/third_party/blink/web_tests/WebGPUExpectations index d338154..1340bc0a 100644 --- a/third_party/blink/web_tests/WebGPUExpectations +++ b/third_party/blink/web_tests/WebGPUExpectations
@@ -94,6 +94,11 @@ crbug.com/dawn/1047 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,non_array:format="rg8snorm";* [ Failure ] crbug.com/dawn/1047 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,non_array:format="rgba8snorm";* [ Failure ] +# Incorrect results, only on Mac Intel. +crbug.com/dawn/1083 wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:copy_depth_stencil:format="depth32float";* [ Failure ] +crbug.com/dawn/1083 wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:copy_depth_stencil:format="depth24plus";* [ Failure ] +crbug.com/dawn/1083 wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:copy_depth_stencil:format="depth24plus-stencil8";* [ Failure ] + # Limits that should be updated. # maxStorageTexturePerShaderStage 8 -> 4 crbug.com/dawn/796 wpt_internal/webgpu/cts.html?q=webgpu:api,validation,createBindGroupLayout:max_resources_per_stage,in_pipeline_layout:* [ Failure ] @@ -162,6 +167,8 @@ crbug.com/dawn/690 wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,image_copy:rowsPerImage_and_bytesPerRow_depth_stencil:format="stencil8";* [ Failure ] crbug.com/dawn/690 wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,image_copy:rowsPerImage_and_bytesPerRow_depth_stencil:format="depth16unorm";* [ Failure ] crbug.com/dawn/690 wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:copy_stencil_aspect:format="stencil8";* [ Failure ] +crbug.com/dawn/690 wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:copy_depth_stencil:format="depth16unorm";* [ Failure ] +crbug.com/dawn/690 wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:copy_depth_stencil:format="stencil8";* [ Failure ] wpt_internal/webgpu/cts.html?q=webgpu:api,validation,createTexture:zero_size:dimension="1d";* [ Failure ] wpt_internal/webgpu/cts.html?q=webgpu:api,validation,createTexture:mipLevelCount,bound_check:dimension="1d";* [ Failure ] wpt_internal/webgpu/cts.html?q=webgpu:api,validation,createTexture:mipLevelCount,format:format="depth16unorm";* [ Failure ]
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-items/replaced-element-014.html b/third_party/blink/web_tests/external/wpt/css/css-grid/grid-items/replaced-element-014.html new file mode 100644 index 0000000..4aa1041 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/grid-items/replaced-element-014.html
@@ -0,0 +1,7 @@ +<!DOCTYPE html> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1241154"> +<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html"> +<p>Test passes if there is a filled green square.</p> +<div style="width: 100px; display: grid; grid-template-column: 1fr;"> + <img src="support/500x500-green.png" style="background: green; height: auto; width: 200px; max-width: 100%;"> +</div> \ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/modal-dialog-display-contents-expected.html b/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/modal-dialog-display-contents-expected.html index ab37ed1..7ac66f5 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/modal-dialog-display-contents-expected.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/modal-dialog-display-contents-expected.html
@@ -4,9 +4,9 @@ <meta charset="utf-8"> <link rel="author" title="Tim Nguyen" href="https://github.com/nt1m"> <p>Test passes if there is a green dialog</p> -<p id="computed-value">block</p> -<p id="computed-value-backdrop">block</p> -<dialog></dialog> +<p>Dialog is display:block</p> +<p>Dialog::backdrop is display:block</p> +<dialog>Dialog Contents</dialog> <style> dialog { background-color: green;
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/modal-dialog-display-contents.html b/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/modal-dialog-display-contents.html index a3548d7..74d44720 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/modal-dialog-display-contents.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/modal-dialog-display-contents.html
@@ -3,11 +3,13 @@ <title>Test that display: contents; on modal dialog & ::backdrop acts like display: block</title> <meta charset="utf-8"> <link rel="author" title="Tim Nguyen" href="https://github.com/nt1m"> +<link rel="help" href="https://fullscreen.spec.whatwg.org/#new-stacking-layer"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/interactive-elements.html#the-dialog-element"> <link rel="match" href="modal-dialog-display-contents-expected.html"> <p>Test passes if there is a green dialog</p> -<p id="computed-value"></p> -<p id="computed-value-backdrop"></p> -<dialog></dialog> +<p>Dialog is display:<span id="computed-value"></span></p> +<p>Dialog::backdrop is display:<span id="computed-value-backdrop"></span></p> +<dialog>Dialog Contents</dialog> <style> dialog { display: contents;
diff --git a/third_party/blink/web_tests/external/wpt/resources/chromium/webxr-test.js b/third_party/blink/web_tests/external/wpt/resources/chromium/webxr-test.js index 4e32992..e8e3708 100644 --- a/third_party/blink/web_tests/external/wpt/resources/chromium/webxr-test.js +++ b/third_party/blink/web_tests/external/wpt/resources/chromium/webxr-test.js
@@ -502,8 +502,10 @@ setViews(views) { if (views) { this.displayInfo_.views = []; + this.viewOffsets_ = []; for (let i = 0; i < views.length; i++) { this.displayInfo_.views[i] = this.getView(views[i]); + this.viewOffsets_[i] = composeGFXTransform(views[i].viewOffset); } if (this.sessionClient_) { @@ -733,10 +735,10 @@ leftDegrees: 50.899, rightDegrees: 35.197 }, - headFromEye: composeGFXTransform({ + mojoFromView: this._getMojoFromViewerWithOffset(composeGFXTransform({ position: [-0.032, 0, 0], orientation: [0, 0, 0, 1] - }), + })), viewport: { width: viewport_size, height: viewport_size } }, { @@ -747,10 +749,10 @@ leftDegrees: 50.899, rightDegrees: 35.197 }, - headFromEye: composeGFXTransform({ + mojoFromView: this._getMojoFromViewerWithOffset(composeGFXTransform({ position: [0.032, 0, 0], orientation: [0, 0, 0, 1] - }), + })), viewport: { width: viewport_size, height: viewport_size } }] }; @@ -807,7 +809,7 @@ return { eye: viewEye, fieldOfView: fov, - headFromEye: composeGFXTransform(fakeXRViewInit.viewOffset), + mojoFromView: this._getMojoFromViewerWithOffset(composeGFXTransform(fakeXRViewInit.viewOffset)), viewport: { width: fakeXRViewInit.resolution.width, height: fakeXRViewInit.resolution.height @@ -881,9 +883,14 @@ } } + let views = this.displayInfo_.views; + for (let i = 0; i < views.length; i++) { + views[i].mojoFromView = this._getMojoFromViewerWithOffset(this.viewOffsets_[i]); + } + const frameData = { pose: this.pose_, - views: [], + views: views, mojoSpaceReset: mojo_space_reset, inputState: input_state, timeDelta: { @@ -1547,6 +1554,9 @@ } _getMojoFromViewer() { + if (!this.pose_) { + return XRMathHelper.identity(); + } const transform = { position: [ this.pose_.position.x, @@ -1562,6 +1572,10 @@ return getMatrixFromTransform(transform); } + _getMojoFromViewerWithOffset(viewOffset) { + return { matrix: XRMathHelper.mul4x4(this._getMojoFromViewer(), viewOffset.matrix) }; + } + _getMojoFromNativeOrigin(nativeOriginInformation) { const mojo_from_viewer = this._getMojoFromViewer();
diff --git a/third_party/blink/web_tests/fast/canvas/canvas-composite-shadow-part1.html b/third_party/blink/web_tests/fast/canvas/canvas-composite-shadow-part1.html new file mode 100644 index 0000000..b44dc46 --- /dev/null +++ b/third_party/blink/web_tests/fast/canvas/canvas-composite-shadow-part1.html
@@ -0,0 +1,57 @@ +<html> + <head> + <title>A canvas globalCompositeOperation with shadow</title> + <script> + var compositeTypes = [ + 'source-over', 'source-in', 'source-out', 'source-atop', + 'destination-over', 'destination-in' + ]; + function draw(){ + for (i=0;i<compositeTypes.length;i++){ + var label = document.createTextNode(compositeTypes[i]); + document.getElementById('lab'+i).appendChild(label); + var canvas = document.getElementById('tut'+i); + canvas.width = 80; + canvas.height = 80; + var ctx = canvas.getContext('2d'); + + // draw rectangle + ctx.fillStyle = "#09f"; + ctx.fillRect(5,5,45,45); + + // set composite property + ctx.globalCompositeOperation = compositeTypes[i]; + + // draw rectangle with shadow + ctx.fillStyle = "#f30"; + ctx.shadowColor = 'blue'; + ctx.shadowBlur = 10; + ctx.shadowOffsetX = 10; + ctx.shadowOffsetY = -10; + ctx.fillRect(20,25,45,45); + } + } + </script> + <style type="text/css"> + body { margin: 20px; font-family: arial,verdana,helvetica; background: #fff;} + h1 { font-size: 140%; font-weight:normal; color: #036; border-bottom: 1px solid #ccc; } + canvas { border: 2px solid #000; margin-bottom: 5px; } + td { padding: 4px; } + pre { float:left; display:block; background: rgb(238,238,238); border: 1px dashed #666; padding: 15px 20px; margin: 0 0 10px 0; } + </style> + </head> + <body onload="draw();"> + <div> + <table> + <tr> + <td><canvas id="tut0"></canvas><br/><label id="lab0"></label></td> + <td><canvas id="tut1"></canvas><br/><label id="lab1"></label></td> + <td><canvas id="tut2"></canvas><br/><label id="lab2"></label></td> + <td><canvas id="tut3"></canvas><br/><label id="lab3"></label></td> + <td><canvas id="tut4"></canvas><br/><label id="lab4"></label></td> + <td><canvas id="tut5"></canvas><br/><label id="lab5"></label></td> + </tr> + </table> + </div> + </body> +</html>
diff --git a/third_party/blink/web_tests/fast/canvas/canvas-composite-shadow-part2.html b/third_party/blink/web_tests/fast/canvas/canvas-composite-shadow-part2.html new file mode 100644 index 0000000..d42fd65c --- /dev/null +++ b/third_party/blink/web_tests/fast/canvas/canvas-composite-shadow-part2.html
@@ -0,0 +1,57 @@ +<html> + <head> + <title>A canvas globalCompositeOperation with shadow</title> + <script> + var compositeTypes = [ + 'destination-out', 'destination-atop', 'lighter', 'copy', 'xor', 'multiply', 'screen' + ]; + function draw(){ + for (i=0;i<compositeTypes.length;i++){ + var label = document.createTextNode(compositeTypes[i]); + document.getElementById('lab'+i).appendChild(label); + var canvas = document.getElementById('tut'+i); + canvas.width = 80; + canvas.height = 80; + var ctx = canvas.getContext('2d'); + + // draw rectangle + ctx.fillStyle = "#09f"; + ctx.fillRect(5,5,45,45); + + // set composite property + ctx.globalCompositeOperation = compositeTypes[i]; + + // draw rectangle with shadow + ctx.fillStyle = "#f30"; + ctx.shadowColor = 'blue'; + ctx.shadowBlur = 10; + ctx.shadowOffsetX = 10; + ctx.shadowOffsetY = -10; + ctx.fillRect(20,25,45,45); + } + } + </script> + <style type="text/css"> + body { margin: 20px; font-family: arial,verdana,helvetica; background: #fff;} + h1 { font-size: 140%; font-weight:normal; color: #036; border-bottom: 1px solid #ccc; } + canvas { border: 2px solid #000; margin-bottom: 5px; } + td { padding: 4px; } + pre { float:left; display:block; background: rgb(238,238,238); border: 1px dashed #666; padding: 15px 20px; margin: 0 0 10px 0; } + </style> + </head> + <body onload="draw();"> + <div> + <table> + <tr> + <td><canvas id="tut0"></canvas><br/><label id="lab0"></label></td> + <td><canvas id="tut1"></canvas><br/><label id="lab1"></label></td> + <td><canvas id="tut2"></canvas><br/><label id="lab2"></label></td> + <td><canvas id="tut3"></canvas><br/><label id="lab3"></label></td> + <td><canvas id="tut4"></canvas><br/><label id="lab4"></label></td> + <td><canvas id="tut5"></canvas><br/><label id="lab5"></label></td> + <td><canvas id="tut6"></canvas><br/><label id="lab6"></label></td> + </tr> + </table> + </div> + </body> +</html>
diff --git a/third_party/blink/web_tests/fast/canvas/canvas-composite-shadow-part3.html b/third_party/blink/web_tests/fast/canvas/canvas-composite-shadow-part3.html new file mode 100644 index 0000000..0260977 --- /dev/null +++ b/third_party/blink/web_tests/fast/canvas/canvas-composite-shadow-part3.html
@@ -0,0 +1,57 @@ +<html> + <head> + <title>A canvas globalCompositeOperation with shadow</title> + <script> + var compositeTypes = [ + 'difference', 'exclusion', 'hue', 'saturation', 'color', + 'luminosity' + ]; + function draw(){ + for (i=0;i<compositeTypes.length;i++){ + var label = document.createTextNode(compositeTypes[i]); + document.getElementById('lab'+i).appendChild(label); + var canvas = document.getElementById('tut'+i); + canvas.width = 80; + canvas.height = 80; + var ctx = canvas.getContext('2d'); + + // draw rectangle + ctx.fillStyle = "#09f"; + ctx.fillRect(5,5,45,45); + + // set composite property + ctx.globalCompositeOperation = compositeTypes[i]; + + // draw rectangle with shadow + ctx.fillStyle = "#f30"; + ctx.shadowColor = 'blue'; + ctx.shadowBlur = 10; + ctx.shadowOffsetX = 10; + ctx.shadowOffsetY = -10; + ctx.fillRect(20,25,45,45); + } + } + </script> + <style type="text/css"> + body { margin: 20px; font-family: arial,verdana,helvetica; background: #fff;} + h1 { font-size: 140%; font-weight:normal; color: #036; border-bottom: 1px solid #ccc; } + canvas { border: 2px solid #000; margin-bottom: 5px; } + td { padding: 4px; } + pre { float:left; display:block; background: rgb(238,238,238); border: 1px dashed #666; padding: 15px 20px; margin: 0 0 10px 0; } + </style> + </head> + <body onload="draw();"> + <div> + <table> + <tr> + <td><canvas id="tut0"></canvas><br/><label id="lab0"></label></td> + <td><canvas id="tut1"></canvas><br/><label id="lab1"></label></td> + <td><canvas id="tut2"></canvas><br/><label id="lab2"></label></td> + <td><canvas id="tut3"></canvas><br/><label id="lab3"></label></td> + <td><canvas id="tut4"></canvas><br/><label id="lab4"></label></td> + <td><canvas id="tut5"></canvas><br/><label id="lab5"></label></td> + </tr> + </table> + </div> + </body> +</html>
diff --git a/third_party/blink/web_tests/fast/canvas/canvas-composite-shadow-part4.html b/third_party/blink/web_tests/fast/canvas/canvas-composite-shadow-part4.html new file mode 100644 index 0000000..4ed8622 --- /dev/null +++ b/third_party/blink/web_tests/fast/canvas/canvas-composite-shadow-part4.html
@@ -0,0 +1,58 @@ +<html> + <head> + <title>A canvas globalCompositeOperation with shadow</title> + <script> + var compositeTypes = [ + 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', + 'soft-light' + ]; + function draw(){ + for (i=0;i<compositeTypes.length;i++){ + var label = document.createTextNode(compositeTypes[i]); + document.getElementById('lab'+i).appendChild(label); + var canvas = document.getElementById('tut'+i); + canvas.width = 80; + canvas.height = 80; + var ctx = canvas.getContext('2d'); + + // draw rectangle + ctx.fillStyle = "#09f"; + ctx.fillRect(5,5,45,45); + + // set composite property + ctx.globalCompositeOperation = compositeTypes[i]; + + // draw rectangle with shadow + ctx.fillStyle = "#f30"; + ctx.shadowColor = 'blue'; + ctx.shadowBlur = 10; + ctx.shadowOffsetX = 10; + ctx.shadowOffsetY = -10; + ctx.fillRect(20,25,45,45); + } + } + </script> + <style type="text/css"> + body { margin: 20px; font-family: arial,verdana,helvetica; background: #fff;} + h1 { font-size: 140%; font-weight:normal; color: #036; border-bottom: 1px solid #ccc; } + canvas { border: 2px solid #000; margin-bottom: 5px; } + td { padding: 4px; } + pre { float:left; display:block; background: rgb(238,238,238); border: 1px dashed #666; padding: 15px 20px; margin: 0 0 10px 0; } + </style> + </head> + <body onload="draw();"> + <div> + <table> + <tr> + <td><canvas id="tut0"></canvas><br/><label id="lab0"></label></td> + <td><canvas id="tut1"></canvas><br/><label id="lab1"></label></td> + <td><canvas id="tut2"></canvas><br/><label id="lab2"></label></td> + <td><canvas id="tut3"></canvas><br/><label id="lab3"></label></td> + <td><canvas id="tut4"></canvas><br/><label id="lab4"></label></td> + <td><canvas id="tut5"></canvas><br/><label id="lab5"></label></td> + <td><canvas id="tut6"></canvas><br/><label id="lab6"></label></td> + </tr> + </table> + </div> + </body> +</html>
diff --git a/third_party/blink/web_tests/fast/canvas/canvas-composite-shadow.html b/third_party/blink/web_tests/fast/canvas/canvas-composite-shadow.html deleted file mode 100644 index 013d136..0000000 --- a/third_party/blink/web_tests/fast/canvas/canvas-composite-shadow.html +++ /dev/null
@@ -1,86 +0,0 @@ -<html> - <head> - <title>A canvas globalCompositeOperation with shadow</title> - <script> - var compositeTypes = [ - 'source-over', 'source-in', 'source-out', 'source-atop', - 'destination-over', 'destination-in', 'destination-out', 'destination-atop', - 'lighter', 'copy', 'xor', 'multiply', 'screen', 'overlay', 'darken', - 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', - 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity' - ]; - function draw(){ - for (i=0;i<compositeTypes.length;i++){ - var label = document.createTextNode(compositeTypes[i]); - document.getElementById('lab'+i).appendChild(label); - var canvas = document.getElementById('tut'+i); - canvas.width = 80; - canvas.height = 80; - var ctx = canvas.getContext('2d'); - - // draw rectangle - ctx.fillStyle = "#09f"; - ctx.fillRect(5,5,45,45); - - // set composite property - ctx.globalCompositeOperation = compositeTypes[i]; - - // draw rectangle with shadow - ctx.fillStyle = "#f30"; - ctx.shadowColor = 'blue'; - ctx.shadowBlur = 10; - ctx.shadowOffsetX = 10; - ctx.shadowOffsetY = -10; - ctx.fillRect(20,25,45,45); - } - } - </script> - <style type="text/css"> - body { margin: 20px; font-family: arial,verdana,helvetica; background: #fff;} - h1 { font-size: 140%; font-weight:normal; color: #036; border-bottom: 1px solid #ccc; } - canvas { border: 2px solid #000; margin-bottom: 5px; } - td { padding: 4px; } - pre { float:left; display:block; background: rgb(238,238,238); border: 1px dashed #666; padding: 15px 20px; margin: 0 0 10px 0; } - </style> - </head> - <body onload="draw();"> - <div> - <table> - <tr> - <td><canvas id="tut0"></canvas><br/><label id="lab0"></label></td> - <td><canvas id="tut1"></canvas><br/><label id="lab1"></label></td> - <td><canvas id="tut2"></canvas><br/><label id="lab2"></label></td> - <td><canvas id="tut3"></canvas><br/><label id="lab3"></label></td> - <td><canvas id="tut4"></canvas><br/><label id="lab4"></label></td> - <td><canvas id="tut5"></canvas><br/><label id="lab5"></label></td> - <td><canvas id="tut6"></canvas><br/><label id="lab6"></label></td> - </tr> - <tr> - <td><canvas id="tut7"></canvas><br/><label id="lab7"></label></td> - <td><canvas id="tut8"></canvas><br/><label id="lab8"></label></td> - <td><canvas id="tut9"></canvas><br/><label id="lab9"></label></td> - <td><canvas id="tut10"></canvas><br/><label id="lab10"></label></td> - <td><canvas id="tut11"></canvas><br/><label id="lab11"></label></td> - <td><canvas id="tut12"></canvas><br/><label id="lab12"></label></td> - <td><canvas id="tut13"></canvas><br/><label id="lab13"></label></td> - </tr> - <tr> - <td><canvas id="tut14"></canvas><br/><label id="lab14"></label></td> - <td><canvas id="tut15"></canvas><br/><label id="lab15"></label></td> - <td><canvas id="tut16"></canvas><br/><label id="lab16"></label></td> - <td><canvas id="tut17"></canvas><br/><label id="lab17"></label></td> - <td><canvas id="tut18"></canvas><br/><label id="lab18"></label></td> - <td><canvas id="tut19"></canvas><br/><label id="lab19"></label></td> - <td><canvas id="tut20"></canvas><br/><label id="lab20"></label></td> - </tr> - <tr> - <td><canvas id="tut21"></canvas><br/><label id="lab21"></label></td> - <td><canvas id="tut22"></canvas><br/><label id="lab22"></label></td> - <td><canvas id="tut23"></canvas><br/><label id="lab23"></label></td> - <td><canvas id="tut24"></canvas><br/><label id="lab24"></label></td> - <td><canvas id="tut25"></canvas><br/><label id="lab25"></label></td> - </tr> - </table> - </div> - </body> -</html>
diff --git a/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-big-neg-offset-expected.png b/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-big-neg-offset-expected.png index 22507793..dd9758d 100644 --- a/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-big-neg-offset-expected.png +++ b/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-big-neg-offset-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-dashed-expected.png b/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-dashed-expected.png index 5325129..4a700b3 100644 --- a/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-dashed-expected.png +++ b/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-dashed-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-dotted-expected.png b/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-dotted-expected.png index bd9d46c7..5590083e 100644 --- a/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-dotted-expected.png +++ b/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-dotted-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-double-expected.png b/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-double-expected.png index b31593ef..2401270 100644 --- a/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-double-expected.png +++ b/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-double-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-groove-expected.png b/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-groove-expected.png index 7c38741..af01e92f 100644 --- a/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-groove-expected.png +++ b/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-groove-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-inset-expected.png b/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-inset-expected.png index 34af25f..1e9fa00 100644 --- a/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-inset-expected.png +++ b/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-inset-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-outset-expected.png b/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-outset-expected.png index ce0ec87..82909a6 100644 --- a/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-outset-expected.png +++ b/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-outset-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-ridge-expected.png b/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-ridge-expected.png index e2d47d4..306c620 100644 --- a/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-ridge-expected.png +++ b/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-ridge-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-solid-expected.png b/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-solid-expected.png index cb696613..47a45ad 100644 --- a/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-solid-expected.png +++ b/third_party/blink/web_tests/fast/css/inline-outline-with-border-radius-solid-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/borders/border-antialiasing-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/borders/border-antialiasing-expected.png index 38f9221..8640f331 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/borders/border-antialiasing-expected.png +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/borders/border-antialiasing-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/canvas/canvas-composite-shadow-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/canvas/canvas-composite-shadow-expected.png deleted file mode 100644 index 8618dbb..0000000 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/canvas/canvas-composite-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/inline/outline-offset-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/inline/outline-offset-expected.png deleted file mode 100644 index 282d0e9e..0000000 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/inline/outline-offset-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png deleted file mode 100644 index e9167d1df..0000000 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-shadow-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-shadow-expected.png deleted file mode 100644 index 8618dbb..0000000 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-expected.png deleted file mode 100644 index e9167d1df..0000000 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/fast/borders/border-antialiasing-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/fast/borders/border-antialiasing-expected.png index ba2574b..d0d8851 100644 --- a/third_party/blink/web_tests/flag-specific/highdpi/fast/borders/border-antialiasing-expected.png +++ b/third_party/blink/web_tests/flag-specific/highdpi/fast/borders/border-antialiasing-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/fast/borders/outline-alpha-inline-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/fast/borders/outline-alpha-inline-expected.png index 8d24fbce..c4d018a 100644 --- a/third_party/blink/web_tests/flag-specific/highdpi/fast/borders/outline-alpha-inline-expected.png +++ b/third_party/blink/web_tests/flag-specific/highdpi/fast/borders/outline-alpha-inline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-focus-ring-with-non-uniform-border-radius-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-focus-ring-with-non-uniform-border-radius-expected.png index a97bd59e..5168419 100644 --- a/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-focus-ring-with-non-uniform-border-radius-expected.png +++ b/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-focus-ring-with-non-uniform-border-radius-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-big-neg-offset-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-big-neg-offset-expected.png index fe6b4a9..3a156689 100644 --- a/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-big-neg-offset-expected.png +++ b/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-big-neg-offset-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-dashed-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-dashed-expected.png index 427d009d..50356d3 100644 --- a/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-dashed-expected.png +++ b/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-dashed-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-dotted-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-dotted-expected.png index 211c7ae7..65c806e 100644 --- a/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-dotted-expected.png +++ b/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-dotted-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-double-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-double-expected.png index 75c8fd3..c8e2915 100644 --- a/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-double-expected.png +++ b/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-double-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-groove-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-groove-expected.png index 68dcfc2..073a9051 100644 --- a/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-groove-expected.png +++ b/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-groove-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-inset-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-inset-expected.png index e804fc2..bf7ec34 100644 --- a/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-inset-expected.png +++ b/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-inset-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-outset-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-outset-expected.png index 82295ea..c12ae5676 100644 --- a/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-outset-expected.png +++ b/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-outset-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-ridge-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-ridge-expected.png index c97fda6..8fcadc2 100644 --- a/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-ridge-expected.png +++ b/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-ridge-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-solid-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-solid-expected.png index 50e661da..344464e 100644 --- a/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-solid-expected.png +++ b/third_party/blink/web_tests/flag-specific/highdpi/fast/css/inline-outline-with-border-radius-solid-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/paint/inline/outline-offset-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/paint/inline/outline-offset-expected.png index ad87fda..9058c6f 100644 --- a/third_party/blink/web_tests/flag-specific/highdpi/paint/inline/outline-offset-expected.png +++ b/third_party/blink/web_tests/flag-specific/highdpi/paint/inline/outline-offset-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/paint/inline/outline-offset.html b/third_party/blink/web_tests/paint/inline/outline-offset.html index 4aff490..f509974 100644 --- a/third_party/blink/web_tests/paint/inline/outline-offset.html +++ b/third_party/blink/web_tests/paint/inline/outline-offset.html
@@ -1,8 +1,11 @@ <!DOCTYPE html> <style> +.outer-wrapper { + display: inline-block; +} .wrapper { width: 140px; - margin: 50px; + margin: 50px 20px; font-family: sans-serif; } .out1 { @@ -14,6 +17,31 @@ outline-offset: -5px; } </style> +<div class="outer-wrapper" style="line-height: 24px"> +<div class="wrapper"> +Lorem <span class="out1">ipsum dolor sit amet</span>, consectetur adipiscing elit. Quisque <span class="out1">fringilla libero vel</span> ligula viverra tincidunt. Quisque lacinia tincidunt tristique. +</div> +<div class="wrapper"> +Lorem <span class="out2">ipsum dolor sit amet</span>, consectetur adipiscing elit. Quisque <span class="out2">fringilla libero vel</span> ligula viverra tincidunt. Quisque lacinia tincidunt tristique. +</div> +</div> +<div class="outer-wrapper"> +<div class="wrapper"> +Lorem <span class="out1">ipsum dolor sit amet</span>, consectetur adipiscing elit. Quisque <span class="out1">fringilla libero vel</span> ligula viverra tincidunt. Quisque lacinia tincidunt tristique. +</div> +<div class="wrapper"> +Lorem <span class="out2">ipsum dolor sit amet</span>, consectetur adipiscing elit. Quisque <span class="out2">fringilla libero vel</span> ligula viverra tincidunt. Quisque lacinia tincidunt tristique. +</div> +</div> +<div class="outer-wrapper" style="line-height: 18px"> +<div class="wrapper"> +Lorem <span class="out1">ipsum dolor sit amet</span>, consectetur adipiscing elit. Quisque <span class="out1">fringilla libero vel</span> ligula viverra tincidunt. Quisque lacinia tincidunt tristique. +</div> +<div class="wrapper"> +Lorem <span class="out2">ipsum dolor sit amet</span>, consectetur adipiscing elit. Quisque <span class="out2">fringilla libero vel</span> ligula viverra tincidunt. Quisque lacinia tincidunt tristique. +</div> +</div> +<div class="outer-wrapper" style="line-height: 15px"> <div class="wrapper"> Lorem <span class="out1">ipsum dolor sit amet</span>, consectetur adipiscing elit. Quisque <span class="out1">fringilla libero vel</span> ligula viverra tincidunt. Quisque lacinia tincidunt tristique. </div>
diff --git a/third_party/blink/web_tests/platform/linux/fast/borders/border-antialiasing-expected.png b/third_party/blink/web_tests/platform/linux/fast/borders/border-antialiasing-expected.png index 7fbe766..291d9eb 100644 --- a/third_party/blink/web_tests/platform/linux/fast/borders/border-antialiasing-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/borders/border-antialiasing-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/borders/outline-alpha-inline-expected.png b/third_party/blink/web_tests/platform/linux/fast/borders/outline-alpha-inline-expected.png index f636968..3a27641 100644 --- a/third_party/blink/web_tests/platform/linux/fast/borders/outline-alpha-inline-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/borders/outline-alpha-inline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/canvas/canvas-composite-shadow-expected.png b/third_party/blink/web_tests/platform/linux/fast/canvas/canvas-composite-shadow-expected.png deleted file mode 100644 index 8618dbb..0000000 --- a/third_party/blink/web_tests/platform/linux/fast/canvas/canvas-composite-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/canvas/canvas-composite-shadow-part1-expected.png b/third_party/blink/web_tests/platform/linux/fast/canvas/canvas-composite-shadow-part1-expected.png new file mode 100644 index 0000000..b8b2f1e --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/fast/canvas/canvas-composite-shadow-part1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/canvas/canvas-composite-shadow-part2-expected.png b/third_party/blink/web_tests/platform/linux/fast/canvas/canvas-composite-shadow-part2-expected.png new file mode 100644 index 0000000..613958e5 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/fast/canvas/canvas-composite-shadow-part2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/canvas/canvas-composite-shadow-part3-expected.png b/third_party/blink/web_tests/platform/linux/fast/canvas/canvas-composite-shadow-part3-expected.png new file mode 100644 index 0000000..39ea836 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/fast/canvas/canvas-composite-shadow-part3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/canvas/canvas-composite-shadow-part4-expected.png b/third_party/blink/web_tests/platform/linux/fast/canvas/canvas-composite-shadow-part4-expected.png new file mode 100644 index 0000000..7799bb0 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/fast/canvas/canvas-composite-shadow-part4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/inline/outline-offset-expected.png b/third_party/blink/web_tests/platform/linux/paint/inline/outline-offset-expected.png index 282d0e9e..91d240f 100644 --- a/third_party/blink/web_tests/platform/linux/paint/inline/outline-offset-expected.png +++ b/third_party/blink/web_tests/platform/linux/paint/inline/outline-offset-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png b/third_party/blink/web_tests/platform/linux/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png deleted file mode 100644 index e9167d1df..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/gpu/fast/canvas/canvas-composite-shadow-part1-expected.png b/third_party/blink/web_tests/platform/linux/virtual/gpu/fast/canvas/canvas-composite-shadow-part1-expected.png new file mode 100644 index 0000000..eb8560cd --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/gpu/fast/canvas/canvas-composite-shadow-part1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/gpu/fast/canvas/canvas-composite-shadow-part2-expected.png b/third_party/blink/web_tests/platform/linux/virtual/gpu/fast/canvas/canvas-composite-shadow-part2-expected.png new file mode 100644 index 0000000..8de4009 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/gpu/fast/canvas/canvas-composite-shadow-part2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/gpu/fast/canvas/canvas-composite-shadow-part3-expected.png b/third_party/blink/web_tests/platform/linux/virtual/gpu/fast/canvas/canvas-composite-shadow-part3-expected.png new file mode 100644 index 0000000..6bff921 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/gpu/fast/canvas/canvas-composite-shadow-part3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/gpu/fast/canvas/canvas-composite-shadow-part4-expected.png b/third_party/blink/web_tests/platform/linux/virtual/gpu/fast/canvas/canvas-composite-shadow-part4-expected.png new file mode 100644 index 0000000..dc9156a --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/gpu/fast/canvas/canvas-composite-shadow-part4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/text/bidi-embedded-direction-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/text/bidi-embedded-direction-expected.png new file mode 100644 index 0000000..3a7e9e9b --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/text/bidi-embedded-direction-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-shadow-expected.png b/third_party/blink/web_tests/platform/linux/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-shadow-expected.png deleted file mode 100644 index 8618dbb..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-shadow-part1-expected.png b/third_party/blink/web_tests/platform/linux/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-shadow-part1-expected.png new file mode 100644 index 0000000..b8b2f1e --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-shadow-part1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-shadow-part2-expected.png b/third_party/blink/web_tests/platform/linux/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-shadow-part2-expected.png new file mode 100644 index 0000000..613958e5 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-shadow-part2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-shadow-part3-expected.png b/third_party/blink/web_tests/platform/linux/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-shadow-part3-expected.png new file mode 100644 index 0000000..39ea836 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-shadow-part3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-shadow-part4-expected.png b/third_party/blink/web_tests/platform/linux/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-shadow-part4-expected.png new file mode 100644 index 0000000..7799bb0 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/no-alloc-direct-call/fast/canvas/canvas-composite-shadow-part4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-expected.png b/third_party/blink/web_tests/platform/linux/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-expected.png deleted file mode 100644 index e9167d1df..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part1-expected.png b/third_party/blink/web_tests/platform/linux/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part1-expected.png new file mode 100644 index 0000000..eb8560cd --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part2-expected.png b/third_party/blink/web_tests/platform/linux/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part2-expected.png new file mode 100644 index 0000000..8de4009 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part3-expected.png b/third_party/blink/web_tests/platform/linux/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part3-expected.png new file mode 100644 index 0000000..6bff921 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part4-expected.png b/third_party/blink/web_tests/platform/linux/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part4-expected.png new file mode 100644 index 0000000..dc9156a --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/canvas/canvas-composite-shadow-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/canvas/canvas-composite-shadow-expected.png deleted file mode 100644 index 42072ce..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/canvas/canvas-composite-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-expected.png deleted file mode 100644 index 42072ce..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/borders/border-antialiasing-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/borders/border-antialiasing-expected.png index 159ed96..abdd378 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/borders/border-antialiasing-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/borders/border-antialiasing-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png deleted file mode 100644 index 272cc3e..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png deleted file mode 100644 index 272cc3e..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/paint/inline/outline-offset-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/paint/inline/outline-offset-expected.png index 839eee9..5a36939 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.14/paint/inline/outline-offset-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.14/paint/inline/outline-offset-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png deleted file mode 100644 index 272cc3e..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png deleted file mode 100644 index 272cc3e..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/border-antialiasing-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/border-antialiasing-expected.png index e39a254e..d22996d 100644 --- a/third_party/blink/web_tests/platform/mac/fast/borders/border-antialiasing-expected.png +++ b/third_party/blink/web_tests/platform/mac/fast/borders/border-antialiasing-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/outline-alpha-inline-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/outline-alpha-inline-expected.png index 83c8f01..31a85f30 100644 --- a/third_party/blink/web_tests/platform/mac/fast/borders/outline-alpha-inline-expected.png +++ b/third_party/blink/web_tests/platform/mac/fast/borders/outline-alpha-inline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-shadow-expected.png b/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-shadow-expected.png deleted file mode 100644 index 3f2f1c3..0000000 --- a/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-shadow-part1-expected.png b/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-shadow-part1-expected.png new file mode 100644 index 0000000..bfce0aa9 --- /dev/null +++ b/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-shadow-part1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-shadow-part2-expected.png b/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-shadow-part2-expected.png new file mode 100644 index 0000000..dd8866d --- /dev/null +++ b/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-shadow-part2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-shadow-part3-expected.png b/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-shadow-part3-expected.png new file mode 100644 index 0000000..a45545c --- /dev/null +++ b/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-shadow-part3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-shadow-part4-expected.png b/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-shadow-part4-expected.png new file mode 100644 index 0000000..d7ec9fcd --- /dev/null +++ b/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-composite-shadow-part4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/inline/outline-offset-expected.png b/third_party/blink/web_tests/platform/mac/paint/inline/outline-offset-expected.png index 278352e..81f0150 100644 --- a/third_party/blink/web_tests/platform/mac/paint/inline/outline-offset-expected.png +++ b/third_party/blink/web_tests/platform/mac/paint/inline/outline-offset-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png b/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png deleted file mode 100644 index 272cc3e..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-shadow-part1-expected.png b/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-shadow-part1-expected.png new file mode 100644 index 0000000..a9838dc1 --- /dev/null +++ b/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-shadow-part1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-shadow-part2-expected.png b/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-shadow-part2-expected.png new file mode 100644 index 0000000..d3faf26 --- /dev/null +++ b/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-shadow-part2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-shadow-part3-expected.png b/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-shadow-part3-expected.png new file mode 100644 index 0000000..260c52e --- /dev/null +++ b/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-shadow-part3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-shadow-part4-expected.png b/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-shadow-part4-expected.png new file mode 100644 index 0000000..f349305 --- /dev/null +++ b/third_party/blink/web_tests/platform/mac/virtual/gpu/fast/canvas/canvas-composite-shadow-part4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_svg_text/svg/text/bidi-embedded-direction-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_svg_text/svg/text/bidi-embedded-direction-expected.png new file mode 100644 index 0000000..082c6b9 --- /dev/null +++ b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_svg_text/svg/text/bidi-embedded-direction-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_svg_text/svg/zoom/page/zoom-zoom-coords-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_svg_text/svg/zoom/page/zoom-zoom-coords-expected.txt new file mode 100644 index 0000000..b8da044 --- /dev/null +++ b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_svg_text/svg/zoom/page/zoom-zoom-coords-expected.txt
@@ -0,0 +1,125 @@ +Test +Test +Test + +This test checks getBoundingClientRect() on zoomed HTML and SVG elements + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + +Gray rectangles: 100x50 +Green rectangles: 100x50, zoom=200% +Blue rectangles: 200x100, zoom=50% + + +Checking HTML elements: + + +PASS div1.left is 0.00 +PASS div1.top is 0.00 +PASS div1.width is 100.00 +PASS div1.height is 50.00 +PASS div1.right is 100.00 +PASS div1.bottom is 50.00 + + +PASS div2.left is 0.00 +PASS div2.top is 25.00 +PASS div2.width is 100.00 +PASS div2.height is 50.00 +PASS div2.right is 100.00 +PASS div2.bottom is 75.00 + + +PASS div3.left is 0.00 +PASS div3.top is 300.00 +PASS div3.width is 200.00 +PASS div3.height is 100.00 +PASS div3.right is 200.00 +PASS div3.bottom is 400.00 + + +Checking SVG elements: + + +PASS svg1.left is 0.00 +PASS svg1.top is 250.00 +PASS svg1.width is 150.00 +PASS svg1.height is 50.00 +PASS svg1.right is 150.00 +PASS svg1.bottom is 300.00 +PASS rect1.left is 0.00 +PASS rect1.top is 250.00 +PASS rect1.width is 100.00 +PASS rect1.height is 50.00 +PASS rect1.right is 100.00 +PASS rect1.bottom is 300.00 +PASS image1.left is 100.00 +PASS image1.top is 250.00 +PASS image1.width is 50.00 +PASS image1.height is 25.00 +PASS image1.right is 150.00 +PASS image1.bottom is 275.00 +PASS text1.left is 100.00 +PASS text1.top is 282.66 +PASS text1.width is 47.98 +PASS text1.height is 6.16 +PASS text1.right is 147.98 +PASS text1.bottom is 288.82 + + +PASS svg2.left is 75.00 +PASS svg2.top is 100.00 +PASS svg2.width is 150.00 +PASS svg2.height is 50.00 +PASS svg2.right is 225.00 +PASS svg2.bottom is 150.00 +PASS rect2.left is 75.00 +PASS rect2.top is 100.00 +PASS rect2.width is 100.00 +PASS rect2.height is 50.00 +PASS rect2.right is 175.00 +PASS rect2.bottom is 150.00 +PASS image2.left is 175.00 +PASS image2.top is 100.00 +PASS image2.width is 50.00 +PASS image2.height is 25.00 +PASS image2.right is 225.00 +PASS image2.bottom is 125.00 +PASS text2.left is 175.00 +PASS text2.top is 132.66 +PASS text2.width is 47.98 +FAIL text2.height should be 6.02. Was 5.929279327392578. +PASS text2.right is 222.98 +FAIL text2.bottom should be 138.7. Was 138.5980110168457. + + +PASS svg3.left is 900.00 +PASS svg3.top is 500.00 +PASS svg3.width is 300.00 +PASS svg3.height is 100.00 +PASS svg3.right is 1200.00 +PASS svg3.bottom is 600.00 +PASS rect3.left is 900.00 +PASS rect3.top is 500.00 +PASS rect3.width is 200.00 +PASS rect3.height is 100.00 +PASS rect3.right is 1100.00 +PASS rect3.bottom is 600.00 +PASS image3.left is 1100.00 +PASS image3.top is 500.00 +PASS image3.width is 100.00 +PASS image3.height is 50.00 +PASS image3.right is 1200.00 +PASS image3.bottom is 550.00 +PASS text3.left is 1100.00 +PASS text3.top is 565.33 +FAIL text3.width should be 95.97. Was 95.99380493164062. +PASS text3.height is 12.31 +FAIL text3.right should be 1195.97. Was 1195.9938049316406. +PASS text3.bottom is 577.64 + + +PASS successfullyParsed is true + +TEST COMPLETE +
diff --git a/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-expected.png b/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-expected.png deleted file mode 100644 index 272cc3e..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part1-expected.png b/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part1-expected.png new file mode 100644 index 0000000..a9838dc1 --- /dev/null +++ b/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part2-expected.png b/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part2-expected.png new file mode 100644 index 0000000..d3faf26 --- /dev/null +++ b/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part3-expected.png b/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part3-expected.png new file mode 100644 index 0000000..260c52e --- /dev/null +++ b/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part4-expected.png b/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part4-expected.png new file mode 100644 index 0000000..f349305 --- /dev/null +++ b/third_party/blink/web_tests/platform/mac/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/border-antialiasing-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/border-antialiasing-expected.png index 3029626..46d3a214 100644 --- a/third_party/blink/web_tests/platform/win/fast/borders/border-antialiasing-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/borders/border-antialiasing-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/outline-alpha-inline-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/outline-alpha-inline-expected.png index 5f60111..d96b5a0 100644 --- a/third_party/blink/web_tests/platform/win/fast/borders/outline-alpha-inline-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/borders/outline-alpha-inline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/canvas/canvas-composite-shadow-expected.png b/third_party/blink/web_tests/platform/win/fast/canvas/canvas-composite-shadow-expected.png deleted file mode 100644 index 513a795..0000000 --- a/third_party/blink/web_tests/platform/win/fast/canvas/canvas-composite-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/canvas/canvas-composite-shadow-part1-expected.png b/third_party/blink/web_tests/platform/win/fast/canvas/canvas-composite-shadow-part1-expected.png new file mode 100644 index 0000000..158a2a0 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/fast/canvas/canvas-composite-shadow-part1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/canvas/canvas-composite-shadow-part2-expected.png b/third_party/blink/web_tests/platform/win/fast/canvas/canvas-composite-shadow-part2-expected.png new file mode 100644 index 0000000..4879912 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/fast/canvas/canvas-composite-shadow-part2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/canvas/canvas-composite-shadow-part3-expected.png b/third_party/blink/web_tests/platform/win/fast/canvas/canvas-composite-shadow-part3-expected.png new file mode 100644 index 0000000..1ec75e0a --- /dev/null +++ b/third_party/blink/web_tests/platform/win/fast/canvas/canvas-composite-shadow-part3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/canvas/canvas-composite-shadow-part4-expected.png b/third_party/blink/web_tests/platform/win/fast/canvas/canvas-composite-shadow-part4-expected.png new file mode 100644 index 0000000..3ea208a2 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/fast/canvas/canvas-composite-shadow-part4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/inline/outline-offset-expected.png b/third_party/blink/web_tests/platform/win/paint/inline/outline-offset-expected.png index c1eeaf3..c79e29d 100644 --- a/third_party/blink/web_tests/platform/win/paint/inline/outline-offset-expected.png +++ b/third_party/blink/web_tests/platform/win/paint/inline/outline-offset-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png deleted file mode 100644 index 6b9b402a..0000000 --- a/third_party/blink/web_tests/platform/win/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu/fast/canvas/canvas-composite-shadow-part1-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu/fast/canvas/canvas-composite-shadow-part1-expected.png new file mode 100644 index 0000000..b2ff2b1d --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/gpu/fast/canvas/canvas-composite-shadow-part1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu/fast/canvas/canvas-composite-shadow-part2-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu/fast/canvas/canvas-composite-shadow-part2-expected.png new file mode 100644 index 0000000..a52baacc --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/gpu/fast/canvas/canvas-composite-shadow-part2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu/fast/canvas/canvas-composite-shadow-part3-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu/fast/canvas/canvas-composite-shadow-part3-expected.png new file mode 100644 index 0000000..c2ea07e8 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/gpu/fast/canvas/canvas-composite-shadow-part3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu/fast/canvas/canvas-composite-shadow-part4-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu/fast/canvas/canvas-composite-shadow-part4-expected.png new file mode 100644 index 0000000..b1bc4830 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/gpu/fast/canvas/canvas-composite-shadow-part4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/svg/text/bidi-embedded-direction-expected.png b/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/svg/text/bidi-embedded-direction-expected.png new file mode 100644 index 0000000..f9670ee --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/svg/text/bidi-embedded-direction-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/svg/zoom/page/zoom-zoom-coords-expected.txt b/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/svg/zoom/page/zoom-zoom-coords-expected.txt new file mode 100644 index 0000000..4413b0f --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/svg/zoom/page/zoom-zoom-coords-expected.txt
@@ -0,0 +1,125 @@ +Test +Test +Test + +This test checks getBoundingClientRect() on zoomed HTML and SVG elements + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + +Gray rectangles: 100x50 +Green rectangles: 100x50, zoom=200% +Blue rectangles: 200x100, zoom=50% + + +Checking HTML elements: + + +PASS div1.left is 0.00 +PASS div1.top is 0.00 +PASS div1.width is 100.00 +PASS div1.height is 50.00 +PASS div1.right is 100.00 +PASS div1.bottom is 50.00 + + +PASS div2.left is 0.00 +PASS div2.top is 25.00 +PASS div2.width is 100.00 +PASS div2.height is 50.00 +PASS div2.right is 100.00 +PASS div2.bottom is 75.00 + + +PASS div3.left is 0.00 +PASS div3.top is 300.00 +PASS div3.width is 200.00 +PASS div3.height is 100.00 +PASS div3.right is 200.00 +PASS div3.bottom is 400.00 + + +Checking SVG elements: + + +PASS svg1.left is 0.00 +PASS svg1.top is 250.00 +PASS svg1.width is 150.00 +PASS svg1.height is 50.00 +PASS svg1.right is 150.00 +PASS svg1.bottom is 300.00 +PASS rect1.left is 0.00 +PASS rect1.top is 250.00 +PASS rect1.width is 100.00 +PASS rect1.height is 50.00 +PASS rect1.right is 100.00 +PASS rect1.bottom is 300.00 +PASS image1.left is 100.00 +PASS image1.top is 250.00 +PASS image1.width is 50.00 +PASS image1.height is 25.00 +PASS image1.right is 150.00 +PASS image1.bottom is 275.00 +PASS text1.left is 100.00 +PASS text1.top is 282.66 +FAIL text1.width should be 47.98. Was 49.19098663330078. +PASS text1.height is 6.16 +FAIL text1.right should be 147.98. Was 149.19098663330078. +PASS text1.bottom is 288.82 + + +PASS svg2.left is 75.00 +PASS svg2.top is 100.00 +PASS svg2.width is 150.00 +PASS svg2.height is 50.00 +PASS svg2.right is 225.00 +PASS svg2.bottom is 150.00 +PASS rect2.left is 75.00 +PASS rect2.top is 100.00 +PASS rect2.width is 100.00 +PASS rect2.height is 50.00 +PASS rect2.right is 175.00 +PASS rect2.bottom is 150.00 +PASS image2.left is 175.00 +PASS image2.top is 100.00 +PASS image2.width is 50.00 +PASS image2.height is 25.00 +PASS image2.right is 225.00 +PASS image2.bottom is 125.00 +PASS text2.left is 175.00 +PASS text2.top is 132.66 +FAIL text2.width should be 47.98. Was 47.43418884277344. +FAIL text2.height should be 6.02. Was 5.929279327392578. +FAIL text2.right should be 222.98. Was 222.43418884277344. +FAIL text2.bottom should be 138.7. Was 138.5980110168457. + + +PASS svg3.left is 900.00 +PASS svg3.top is 500.00 +PASS svg3.width is 300.00 +PASS svg3.height is 100.00 +PASS svg3.right is 1200.00 +PASS svg3.bottom is 600.00 +PASS rect3.left is 900.00 +PASS rect3.top is 500.00 +PASS rect3.width is 200.00 +PASS rect3.height is 100.00 +PASS rect3.right is 1100.00 +PASS rect3.bottom is 600.00 +PASS image3.left is 1100.00 +PASS image3.top is 500.00 +PASS image3.width is 100.00 +PASS image3.height is 50.00 +PASS image3.right is 1200.00 +PASS image3.bottom is 550.00 +PASS text3.left is 1100.00 +PASS text3.top is 565.33 +FAIL text3.width should be 95.97. Was 98.38197326660156. +PASS text3.height is 12.31 +FAIL text3.right should be 1195.97. Was 1198.3819732666016. +PASS text3.bottom is 577.64 + + +PASS successfullyParsed is true + +TEST COMPLETE +
diff --git a/third_party/blink/web_tests/platform/win/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-expected.png b/third_party/blink/web_tests/platform/win/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-expected.png deleted file mode 100644 index 6b9b402a..0000000 --- a/third_party/blink/web_tests/platform/win/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part1-expected.png b/third_party/blink/web_tests/platform/win/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part1-expected.png new file mode 100644 index 0000000..b2ff2b1d --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part2-expected.png b/third_party/blink/web_tests/platform/win/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part2-expected.png new file mode 100644 index 0000000..a52baacc --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part3-expected.png b/third_party/blink/web_tests/platform/win/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part3-expected.png new file mode 100644 index 0000000..c2ea07e8 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part4-expected.png b/third_party/blink/web_tests/platform/win/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part4-expected.png new file mode 100644 index 0000000..b1bc4830 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win10.1909/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part3-expected.png b/third_party/blink/web_tests/platform/win10.1909/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part3-expected.png new file mode 100644 index 0000000..c2ea07e8 --- /dev/null +++ b/third_party/blink/web_tests/platform/win10.1909/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part3-expected.png b/third_party/blink/web_tests/platform/win7/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part3-expected.png new file mode 100644 index 0000000..c2ea07e8 --- /dev/null +++ b/third_party/blink/web_tests/platform/win7/virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow-part3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png b/third_party/blink/web_tests/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png deleted file mode 100644 index 7b84ccb..0000000 --- a/third_party/blink/web_tests/virtual/gpu/fast/canvas/canvas-composite-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/wpt_internal/webgpu/cts.html b/third_party/blink/web_tests/wpt_internal/webgpu/cts.html index 5289a52..b32dadee 100644 --- a/third_party/blink/web_tests/wpt_internal/webgpu/cts.html +++ b/third_party/blink/web_tests/wpt_internal/webgpu/cts.html
@@ -175,7 +175,7 @@ <meta name=variant content='?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,compressed,array:format="bc7-rgba-unorm";*'> <meta name=variant content='?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,compressed,array:format="bc7-rgba-unorm-srgb";*'> <meta name=variant content='?q=webgpu:api,operation,command_buffer,copyTextureToTexture:zero_sized:*'> -<meta name=variant content='?q=webgpu:api,operation,command_buffer,copyTextureToTexture:copy_stencil_aspect:*'> +<meta name=variant content='?q=webgpu:api,operation,command_buffer,copyTextureToTexture:copy_depth_stencil:*'> <meta name=variant content='?q=webgpu:api,operation,command_buffer,image_copy:rowsPerImage_and_bytesPerRow:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r8unorm";*'> <meta name=variant content='?q=webgpu:api,operation,command_buffer,image_copy:rowsPerImage_and_bytesPerRow:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r8uint";*'> <meta name=variant content='?q=webgpu:api,operation,command_buffer,image_copy:rowsPerImage_and_bytesPerRow:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r8sint";*'> @@ -1460,7 +1460,11 @@ <meta name=variant content='?q=webgpu:api,validation,encoding,cmds,setBindGroup:dynamic_offsets_passed_but_not_expected:*'> <meta name=variant content='?q=webgpu:api,validation,encoding,cmds,setBindGroup:dynamic_offsets_match_expectations_in_pass_encoder:*'> <meta name=variant content='?q=webgpu:api,validation,encoding,cmds,setBindGroup:u32array_start_and_length:*'> +<meta name=variant content='?q=webgpu:api,validation,encoding,programmable,pipeline_bind_group_compat:bind_groups_and_pipeline_layout_mismatch:*'> <meta name=variant content='?q=webgpu:api,validation,encoding,programmable,pipeline_bind_group_compat:it_is_invalid_to_draw_in_a_render_pass_with_missing_bind_groups:*'> +<meta name=variant content='?q=webgpu:api,validation,encoding,programmable,pipeline_bind_group_compat:bgl_binding_mismatch:*'> +<meta name=variant content='?q=webgpu:api,validation,encoding,programmable,pipeline_bind_group_compat:bgl_visibility_mismatch:*'> +<meta name=variant content='?q=webgpu:api,validation,encoding,programmable,pipeline_bind_group_compat:bgl_resource_type_mismatch:*'> <meta name=variant content='?q=webgpu:api,validation,encoding,queries,begin_end:occlusion_query,begin_end_balance:*'> <meta name=variant content='?q=webgpu:api,validation,encoding,queries,begin_end:occlusion_query,begin_end_invalid_nesting:*'> <meta name=variant content='?q=webgpu:api,validation,encoding,queries,begin_end:occlusion_query,disjoint_queries_with_same_query_index:*'>
diff --git a/third_party/boringssl/BUILD.generated.gni b/third_party/boringssl/BUILD.generated.gni index 501604e3..f2ab001 100644 --- a/third_party/boringssl/BUILD.generated.gni +++ b/third_party/boringssl/BUILD.generated.gni
@@ -18,6 +18,7 @@ "src/crypto/asn1/a_object.c", "src/crypto/asn1/a_octet.c", "src/crypto/asn1/a_print.c", + "src/crypto/asn1/a_strex.c", "src/crypto/asn1/a_strnid.c", "src/crypto/asn1/a_time.c", "src/crypto/asn1/a_type.c", @@ -26,6 +27,7 @@ "src/crypto/asn1/asn1_lib.c", "src/crypto/asn1/asn1_par.c", "src/crypto/asn1/asn_pack.c", + "src/crypto/asn1/charmap.h", "src/crypto/asn1/f_enum.c", "src/crypto/asn1/f_int.c", "src/crypto/asn1/f_string.c", @@ -202,15 +204,14 @@ "src/crypto/trust_token/voprf.c", "src/crypto/x509/a_digest.c", "src/crypto/x509/a_sign.c", - "src/crypto/x509/a_strex.c", "src/crypto/x509/a_verify.c", "src/crypto/x509/algorithm.c", "src/crypto/x509/asn1_gen.c", "src/crypto/x509/by_dir.c", "src/crypto/x509/by_file.c", - "src/crypto/x509/charmap.h", "src/crypto/x509/i2d_pr.c", "src/crypto/x509/internal.h", + "src/crypto/x509/name_print.c", "src/crypto/x509/rsa_pss.c", "src/crypto/x509/t_crl.c", "src/crypto/x509/t_req.c", @@ -424,6 +425,7 @@ "src/tool/digest.cc", "src/tool/fd.cc", "src/tool/file.cc", + "src/tool/generate_ech.cc", "src/tool/generate_ed25519.cc", "src/tool/genrsa.cc", "src/tool/internal.h",
diff --git a/third_party/boringssl/ios-aarch64/crypto/fipsmodule/ghashv8-armx64.S b/third_party/boringssl/ios-aarch64/crypto/fipsmodule/ghashv8-armx64.S index 566330f1..dcef3c56 100644 --- a/third_party/boringssl/ios-aarch64/crypto/fipsmodule/ghashv8-armx64.S +++ b/third_party/boringssl/ios-aarch64/crypto/fipsmodule/ghashv8-armx64.S
@@ -14,6 +14,7 @@ #endif #include <openssl/arm_arch.h> +#if __ARM_MAX_ARCH__>=7 .text .globl _gcm_init_v8 @@ -64,8 +65,48 @@ ext v17.16b,v22.16b,v22.16b,#8 //Karatsuba pre-processing eor v17.16b,v17.16b,v22.16b ext v21.16b,v16.16b,v17.16b,#8 //pack Karatsuba pre-processed - st1 {v21.2d,v22.2d},[x0] //store Htable[1..2] + st1 {v21.2d,v22.2d},[x0],#32 //store Htable[1..2] + //calculate H^3 and H^4 + pmull v0.1q,v20.1d, v22.1d + pmull v5.1q,v22.1d,v22.1d + pmull2 v2.1q,v20.2d, v22.2d + pmull2 v7.1q,v22.2d,v22.2d + pmull v1.1q,v16.1d,v17.1d + pmull v6.1q,v17.1d,v17.1d + ext v16.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + ext v17.16b,v5.16b,v7.16b,#8 + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v16.16b + eor v4.16b,v5.16b,v7.16b + eor v6.16b,v6.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + pmull v18.1q,v0.1d,v19.1d //1st phase + eor v6.16b,v6.16b,v4.16b + pmull v4.1q,v5.1d,v19.1d + + ins v2.d[0],v1.d[1] + ins v7.d[0],v6.d[1] + ins v1.d[1],v0.d[0] + ins v6.d[1],v5.d[0] + eor v0.16b,v1.16b,v18.16b + eor v5.16b,v6.16b,v4.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase + ext v4.16b,v5.16b,v5.16b,#8 + pmull v0.1q,v0.1d,v19.1d + pmull v5.1q,v5.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v4.16b,v4.16b,v7.16b + eor v20.16b, v0.16b,v18.16b //H^3 + eor v22.16b,v5.16b,v4.16b //H^4 + + ext v16.16b,v20.16b, v20.16b,#8 //Karatsuba pre-processing + ext v17.16b,v22.16b,v22.16b,#8 + eor v16.16b,v16.16b,v20.16b + eor v17.16b,v17.16b,v22.16b + ext v21.16b,v16.16b,v17.16b,#8 //pack Karatsuba pre-processed + st1 {v20.2d,v21.2d,v22.2d},[x0] //store Htable[3..5] ret .globl _gcm_gmult_v8 @@ -117,6 +158,8 @@ .align 4 _gcm_ghash_v8: AARCH64_VALID_CALL_TARGET + cmp x3,#64 + b.hs Lgcm_ghash_v8_4x ld1 {v0.2d},[x0] //load [rotated] Xi //"[rotated]" means that //loaded value would have @@ -243,7 +286,288 @@ ret + +.align 4 +gcm_ghash_v8_4x: +Lgcm_ghash_v8_4x: + ld1 {v0.2d},[x0] //load [rotated] Xi + ld1 {v20.2d,v21.2d,v22.2d},[x1],#48 //load twisted H, ..., H^2 + movi v19.16b,#0xe1 + ld1 {v26.2d,v27.2d,v28.2d},[x1] //load twisted H^3, ..., H^4 + shl v19.2d,v19.2d,#57 //compose 0xc2.0 constant + + ld1 {v4.2d,v5.2d,v6.2d,v7.2d},[x2],#64 +#ifndef __ARMEB__ + rev64 v0.16b,v0.16b + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v7.16b,v7.16b + rev64 v4.16b,v4.16b +#endif + ext v25.16b,v7.16b,v7.16b,#8 + ext v24.16b,v6.16b,v6.16b,#8 + ext v23.16b,v5.16b,v5.16b,#8 + + pmull v29.1q,v20.1d,v25.1d //H·Ii+3 + eor v7.16b,v7.16b,v25.16b + pmull2 v31.1q,v20.2d,v25.2d + pmull v30.1q,v21.1d,v7.1d + + pmull v16.1q,v22.1d,v24.1d //H^2·Ii+2 + eor v6.16b,v6.16b,v24.16b + pmull2 v24.1q,v22.2d,v24.2d + pmull2 v6.1q,v21.2d,v6.2d + + eor v29.16b,v29.16b,v16.16b + eor v31.16b,v31.16b,v24.16b + eor v30.16b,v30.16b,v6.16b + + pmull v7.1q,v26.1d,v23.1d //H^3·Ii+1 + eor v5.16b,v5.16b,v23.16b + pmull2 v23.1q,v26.2d,v23.2d + pmull v5.1q,v27.1d,v5.1d + + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + eor v30.16b,v30.16b,v5.16b + + subs x3,x3,#128 + b.lo Ltail4x + + b Loop4x + +.align 4 +Loop4x: + eor v16.16b,v4.16b,v0.16b + ld1 {v4.2d,v5.2d,v6.2d,v7.2d},[x2],#64 + ext v3.16b,v16.16b,v16.16b,#8 +#ifndef __ARMEB__ + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v7.16b,v7.16b + rev64 v4.16b,v4.16b +#endif + + pmull v0.1q,v28.1d,v3.1d //H^4·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v28.2d,v3.2d + ext v25.16b,v7.16b,v7.16b,#8 + pmull2 v1.1q,v27.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + ext v24.16b,v6.16b,v6.16b,#8 + eor v1.16b,v1.16b,v30.16b + ext v23.16b,v5.16b,v5.16b,#8 + + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + pmull v29.1q,v20.1d,v25.1d //H·Ii+3 + eor v7.16b,v7.16b,v25.16b + eor v1.16b,v1.16b,v17.16b + pmull2 v31.1q,v20.2d,v25.2d + eor v1.16b,v1.16b,v18.16b + pmull v30.1q,v21.1d,v7.1d + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + pmull v16.1q,v22.1d,v24.1d //H^2·Ii+2 + eor v6.16b,v6.16b,v24.16b + pmull2 v24.1q,v22.2d,v24.2d + eor v0.16b,v1.16b,v18.16b + pmull2 v6.1q,v21.2d,v6.2d + + eor v29.16b,v29.16b,v16.16b + eor v31.16b,v31.16b,v24.16b + eor v30.16b,v30.16b,v6.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + pmull v7.1q,v26.1d,v23.1d //H^3·Ii+1 + eor v5.16b,v5.16b,v23.16b + eor v18.16b,v18.16b,v2.16b + pmull2 v23.1q,v26.2d,v23.2d + pmull v5.1q,v27.1d,v5.1d + + eor v0.16b,v0.16b,v18.16b + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + ext v0.16b,v0.16b,v0.16b,#8 + eor v30.16b,v30.16b,v5.16b + + subs x3,x3,#64 + b.hs Loop4x + +Ltail4x: + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull v0.1q,v28.1d,v3.1d //H^4·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v28.2d,v3.2d + pmull2 v1.1q,v27.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + + adds x3,x3,#64 + b.eq Ldone4x + + cmp x3,#32 + b.lo Lone + b.eq Ltwo +Lthree: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d,v5.2d,v6.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __ARMEB__ + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + ext v24.16b,v6.16b,v6.16b,#8 + ext v23.16b,v5.16b,v5.16b,#8 + eor v0.16b,v1.16b,v18.16b + + pmull v29.1q,v20.1d,v24.1d //H·Ii+2 + eor v6.16b,v6.16b,v24.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + pmull2 v31.1q,v20.2d,v24.2d + pmull v30.1q,v21.1d,v6.1d + eor v0.16b,v0.16b,v18.16b + pmull v7.1q,v22.1d,v23.1d //H^2·Ii+1 + eor v5.16b,v5.16b,v23.16b + ext v0.16b,v0.16b,v0.16b,#8 + + pmull2 v23.1q,v22.2d,v23.2d + eor v16.16b,v4.16b,v0.16b + pmull2 v5.1q,v21.2d,v5.2d + ext v3.16b,v16.16b,v16.16b,#8 + + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + eor v30.16b,v30.16b,v5.16b + + pmull v0.1q,v26.1d,v3.1d //H^3·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v26.2d,v3.2d + pmull v1.1q,v27.1d,v16.1d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + b Ldone4x + +.align 4 +Ltwo: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d,v5.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __ARMEB__ + rev64 v5.16b,v5.16b + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + ext v23.16b,v5.16b,v5.16b,#8 + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + + pmull v29.1q,v20.1d,v23.1d //H·Ii+1 + eor v5.16b,v5.16b,v23.16b + + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull2 v31.1q,v20.2d,v23.2d + pmull v30.1q,v21.1d,v5.1d + + pmull v0.1q,v22.1d,v3.1d //H^2·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v22.2d,v3.2d + pmull2 v1.1q,v21.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + b Ldone4x + +.align 4 +Lone: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __ARMEB__ + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull v0.1q,v20.1d,v3.1d + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v20.2d,v3.2d + pmull v1.1q,v21.1d,v16.1d + +Ldone4x: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + +#ifndef __ARMEB__ + rev64 v0.16b,v0.16b +#endif + st1 {v0.2d},[x0] //write out Xi + + ret + .byte 71,72,65,83,72,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 2 .align 2 +#endif #endif // !OPENSSL_NO_ASM
diff --git a/third_party/boringssl/ios-arm/crypto/fipsmodule/ghashv8-armx32.S b/third_party/boringssl/ios-arm/crypto/fipsmodule/ghashv8-armx32.S index 4a7497f..dcac580 100644 --- a/third_party/boringssl/ios-arm/crypto/fipsmodule/ghashv8-armx32.S +++ b/third_party/boringssl/ios-arm/crypto/fipsmodule/ghashv8-armx32.S
@@ -14,6 +14,7 @@ #endif #include <openssl/arm_arch.h> +#if __ARM_MAX_ARCH__>=7 .text .code 32 @@ -68,8 +69,7 @@ vext.8 q9,q14,q14,#8 @ Karatsuba pre-processing veor q9,q9,q14 vext.8 q13,q8,q9,#8 @ pack Karatsuba pre-processed - vst1.64 {q13,q14},[r0] @ store Htable[1..2] - + vst1.64 {q13,q14},[r0]! @ store Htable[1..2] bx lr .globl _gcm_gmult_v8 @@ -256,4 +256,5 @@ .byte 71,72,65,83,72,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 2 .align 2 +#endif #endif // !OPENSSL_NO_ASM
diff --git a/third_party/boringssl/linux-aarch64/crypto/fipsmodule/ghashv8-armx64.S b/third_party/boringssl/linux-aarch64/crypto/fipsmodule/ghashv8-armx64.S index 62e5884..9480a38a 100644 --- a/third_party/boringssl/linux-aarch64/crypto/fipsmodule/ghashv8-armx64.S +++ b/third_party/boringssl/linux-aarch64/crypto/fipsmodule/ghashv8-armx64.S
@@ -15,6 +15,7 @@ #endif #include <openssl/arm_arch.h> +#if __ARM_MAX_ARCH__>=7 .text .arch armv8-a+crypto .globl gcm_init_v8 @@ -65,8 +66,48 @@ ext v17.16b,v22.16b,v22.16b,#8 //Karatsuba pre-processing eor v17.16b,v17.16b,v22.16b ext v21.16b,v16.16b,v17.16b,#8 //pack Karatsuba pre-processed - st1 {v21.2d,v22.2d},[x0] //store Htable[1..2] + st1 {v21.2d,v22.2d},[x0],#32 //store Htable[1..2] + //calculate H^3 and H^4 + pmull v0.1q,v20.1d, v22.1d + pmull v5.1q,v22.1d,v22.1d + pmull2 v2.1q,v20.2d, v22.2d + pmull2 v7.1q,v22.2d,v22.2d + pmull v1.1q,v16.1d,v17.1d + pmull v6.1q,v17.1d,v17.1d + ext v16.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + ext v17.16b,v5.16b,v7.16b,#8 + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v16.16b + eor v4.16b,v5.16b,v7.16b + eor v6.16b,v6.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + pmull v18.1q,v0.1d,v19.1d //1st phase + eor v6.16b,v6.16b,v4.16b + pmull v4.1q,v5.1d,v19.1d + + ins v2.d[0],v1.d[1] + ins v7.d[0],v6.d[1] + ins v1.d[1],v0.d[0] + ins v6.d[1],v5.d[0] + eor v0.16b,v1.16b,v18.16b + eor v5.16b,v6.16b,v4.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase + ext v4.16b,v5.16b,v5.16b,#8 + pmull v0.1q,v0.1d,v19.1d + pmull v5.1q,v5.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v4.16b,v4.16b,v7.16b + eor v20.16b, v0.16b,v18.16b //H^3 + eor v22.16b,v5.16b,v4.16b //H^4 + + ext v16.16b,v20.16b, v20.16b,#8 //Karatsuba pre-processing + ext v17.16b,v22.16b,v22.16b,#8 + eor v16.16b,v16.16b,v20.16b + eor v17.16b,v17.16b,v22.16b + ext v21.16b,v16.16b,v17.16b,#8 //pack Karatsuba pre-processed + st1 {v20.2d,v21.2d,v22.2d},[x0] //store Htable[3..5] ret .size gcm_init_v8,.-gcm_init_v8 .globl gcm_gmult_v8 @@ -118,6 +159,8 @@ .align 4 gcm_ghash_v8: AARCH64_VALID_CALL_TARGET + cmp x3,#64 + b.hs .Lgcm_ghash_v8_4x ld1 {v0.2d},[x0] //load [rotated] Xi //"[rotated]" means that //loaded value would have @@ -244,9 +287,290 @@ ret .size gcm_ghash_v8,.-gcm_ghash_v8 +.type gcm_ghash_v8_4x,%function +.align 4 +gcm_ghash_v8_4x: +.Lgcm_ghash_v8_4x: + ld1 {v0.2d},[x0] //load [rotated] Xi + ld1 {v20.2d,v21.2d,v22.2d},[x1],#48 //load twisted H, ..., H^2 + movi v19.16b,#0xe1 + ld1 {v26.2d,v27.2d,v28.2d},[x1] //load twisted H^3, ..., H^4 + shl v19.2d,v19.2d,#57 //compose 0xc2.0 constant + + ld1 {v4.2d,v5.2d,v6.2d,v7.2d},[x2],#64 +#ifndef __ARMEB__ + rev64 v0.16b,v0.16b + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v7.16b,v7.16b + rev64 v4.16b,v4.16b +#endif + ext v25.16b,v7.16b,v7.16b,#8 + ext v24.16b,v6.16b,v6.16b,#8 + ext v23.16b,v5.16b,v5.16b,#8 + + pmull v29.1q,v20.1d,v25.1d //H·Ii+3 + eor v7.16b,v7.16b,v25.16b + pmull2 v31.1q,v20.2d,v25.2d + pmull v30.1q,v21.1d,v7.1d + + pmull v16.1q,v22.1d,v24.1d //H^2·Ii+2 + eor v6.16b,v6.16b,v24.16b + pmull2 v24.1q,v22.2d,v24.2d + pmull2 v6.1q,v21.2d,v6.2d + + eor v29.16b,v29.16b,v16.16b + eor v31.16b,v31.16b,v24.16b + eor v30.16b,v30.16b,v6.16b + + pmull v7.1q,v26.1d,v23.1d //H^3·Ii+1 + eor v5.16b,v5.16b,v23.16b + pmull2 v23.1q,v26.2d,v23.2d + pmull v5.1q,v27.1d,v5.1d + + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + eor v30.16b,v30.16b,v5.16b + + subs x3,x3,#128 + b.lo .Ltail4x + + b .Loop4x + +.align 4 +.Loop4x: + eor v16.16b,v4.16b,v0.16b + ld1 {v4.2d,v5.2d,v6.2d,v7.2d},[x2],#64 + ext v3.16b,v16.16b,v16.16b,#8 +#ifndef __ARMEB__ + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v7.16b,v7.16b + rev64 v4.16b,v4.16b +#endif + + pmull v0.1q,v28.1d,v3.1d //H^4·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v28.2d,v3.2d + ext v25.16b,v7.16b,v7.16b,#8 + pmull2 v1.1q,v27.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + ext v24.16b,v6.16b,v6.16b,#8 + eor v1.16b,v1.16b,v30.16b + ext v23.16b,v5.16b,v5.16b,#8 + + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + pmull v29.1q,v20.1d,v25.1d //H·Ii+3 + eor v7.16b,v7.16b,v25.16b + eor v1.16b,v1.16b,v17.16b + pmull2 v31.1q,v20.2d,v25.2d + eor v1.16b,v1.16b,v18.16b + pmull v30.1q,v21.1d,v7.1d + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + pmull v16.1q,v22.1d,v24.1d //H^2·Ii+2 + eor v6.16b,v6.16b,v24.16b + pmull2 v24.1q,v22.2d,v24.2d + eor v0.16b,v1.16b,v18.16b + pmull2 v6.1q,v21.2d,v6.2d + + eor v29.16b,v29.16b,v16.16b + eor v31.16b,v31.16b,v24.16b + eor v30.16b,v30.16b,v6.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + pmull v7.1q,v26.1d,v23.1d //H^3·Ii+1 + eor v5.16b,v5.16b,v23.16b + eor v18.16b,v18.16b,v2.16b + pmull2 v23.1q,v26.2d,v23.2d + pmull v5.1q,v27.1d,v5.1d + + eor v0.16b,v0.16b,v18.16b + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + ext v0.16b,v0.16b,v0.16b,#8 + eor v30.16b,v30.16b,v5.16b + + subs x3,x3,#64 + b.hs .Loop4x + +.Ltail4x: + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull v0.1q,v28.1d,v3.1d //H^4·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v28.2d,v3.2d + pmull2 v1.1q,v27.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + + adds x3,x3,#64 + b.eq .Ldone4x + + cmp x3,#32 + b.lo .Lone + b.eq .Ltwo +.Lthree: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d,v5.2d,v6.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __ARMEB__ + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + ext v24.16b,v6.16b,v6.16b,#8 + ext v23.16b,v5.16b,v5.16b,#8 + eor v0.16b,v1.16b,v18.16b + + pmull v29.1q,v20.1d,v24.1d //H·Ii+2 + eor v6.16b,v6.16b,v24.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + pmull2 v31.1q,v20.2d,v24.2d + pmull v30.1q,v21.1d,v6.1d + eor v0.16b,v0.16b,v18.16b + pmull v7.1q,v22.1d,v23.1d //H^2·Ii+1 + eor v5.16b,v5.16b,v23.16b + ext v0.16b,v0.16b,v0.16b,#8 + + pmull2 v23.1q,v22.2d,v23.2d + eor v16.16b,v4.16b,v0.16b + pmull2 v5.1q,v21.2d,v5.2d + ext v3.16b,v16.16b,v16.16b,#8 + + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + eor v30.16b,v30.16b,v5.16b + + pmull v0.1q,v26.1d,v3.1d //H^3·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v26.2d,v3.2d + pmull v1.1q,v27.1d,v16.1d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + b .Ldone4x + +.align 4 +.Ltwo: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d,v5.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __ARMEB__ + rev64 v5.16b,v5.16b + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + ext v23.16b,v5.16b,v5.16b,#8 + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + + pmull v29.1q,v20.1d,v23.1d //H·Ii+1 + eor v5.16b,v5.16b,v23.16b + + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull2 v31.1q,v20.2d,v23.2d + pmull v30.1q,v21.1d,v5.1d + + pmull v0.1q,v22.1d,v3.1d //H^2·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v22.2d,v3.2d + pmull2 v1.1q,v21.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + b .Ldone4x + +.align 4 +.Lone: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __ARMEB__ + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull v0.1q,v20.1d,v3.1d + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v20.2d,v3.2d + pmull v1.1q,v21.1d,v16.1d + +.Ldone4x: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + +#ifndef __ARMEB__ + rev64 v0.16b,v0.16b +#endif + st1 {v0.2d},[x0] //write out Xi + + ret +.size gcm_ghash_v8_4x,.-gcm_ghash_v8_4x .byte 71,72,65,83,72,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 2 .align 2 #endif +#endif #endif // !OPENSSL_NO_ASM .section .note.GNU-stack,"",%progbits
diff --git a/third_party/boringssl/linux-arm/crypto/fipsmodule/ghashv8-armx32.S b/third_party/boringssl/linux-arm/crypto/fipsmodule/ghashv8-armx32.S index b97457b5..096dfb7 100644 --- a/third_party/boringssl/linux-arm/crypto/fipsmodule/ghashv8-armx32.S +++ b/third_party/boringssl/linux-arm/crypto/fipsmodule/ghashv8-armx32.S
@@ -15,6 +15,7 @@ #endif #include <openssl/arm_arch.h> +#if __ARM_MAX_ARCH__>=7 .text .fpu neon .code 32 @@ -67,8 +68,7 @@ vext.8 q9,q14,q14,#8 @ Karatsuba pre-processing veor q9,q9,q14 vext.8 q13,q8,q9,#8 @ pack Karatsuba pre-processed - vst1.64 {q13,q14},[r0] @ store Htable[1..2] - + vst1.64 {q13,q14},[r0]! @ store Htable[1..2] bx lr .size gcm_init_v8,.-gcm_init_v8 .globl gcm_gmult_v8 @@ -252,5 +252,6 @@ .align 2 .align 2 #endif +#endif #endif // !OPENSSL_NO_ASM .section .note.GNU-stack,"",%progbits
diff --git a/third_party/boringssl/win-aarch64/crypto/fipsmodule/ghashv8-armx64.S b/third_party/boringssl/win-aarch64/crypto/fipsmodule/ghashv8-armx64.S index 75f7b643..7cba4da 100644 --- a/third_party/boringssl/win-aarch64/crypto/fipsmodule/ghashv8-armx64.S +++ b/third_party/boringssl/win-aarch64/crypto/fipsmodule/ghashv8-armx64.S
@@ -15,6 +15,7 @@ #endif #include <openssl/arm_arch.h> +#if __ARM_MAX_ARCH__>=7 .text .arch armv8-a+crypto .globl gcm_init_v8 @@ -67,8 +68,48 @@ ext v17.16b,v22.16b,v22.16b,#8 //Karatsuba pre-processing eor v17.16b,v17.16b,v22.16b ext v21.16b,v16.16b,v17.16b,#8 //pack Karatsuba pre-processed - st1 {v21.2d,v22.2d},[x0] //store Htable[1..2] + st1 {v21.2d,v22.2d},[x0],#32 //store Htable[1..2] + //calculate H^3 and H^4 + pmull v0.1q,v20.1d, v22.1d + pmull v5.1q,v22.1d,v22.1d + pmull2 v2.1q,v20.2d, v22.2d + pmull2 v7.1q,v22.2d,v22.2d + pmull v1.1q,v16.1d,v17.1d + pmull v6.1q,v17.1d,v17.1d + ext v16.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + ext v17.16b,v5.16b,v7.16b,#8 + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v16.16b + eor v4.16b,v5.16b,v7.16b + eor v6.16b,v6.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + pmull v18.1q,v0.1d,v19.1d //1st phase + eor v6.16b,v6.16b,v4.16b + pmull v4.1q,v5.1d,v19.1d + + ins v2.d[0],v1.d[1] + ins v7.d[0],v6.d[1] + ins v1.d[1],v0.d[0] + ins v6.d[1],v5.d[0] + eor v0.16b,v1.16b,v18.16b + eor v5.16b,v6.16b,v4.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase + ext v4.16b,v5.16b,v5.16b,#8 + pmull v0.1q,v0.1d,v19.1d + pmull v5.1q,v5.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v4.16b,v4.16b,v7.16b + eor v20.16b, v0.16b,v18.16b //H^3 + eor v22.16b,v5.16b,v4.16b //H^4 + + ext v16.16b,v20.16b, v20.16b,#8 //Karatsuba pre-processing + ext v17.16b,v22.16b,v22.16b,#8 + eor v16.16b,v16.16b,v20.16b + eor v17.16b,v17.16b,v22.16b + ext v21.16b,v16.16b,v17.16b,#8 //pack Karatsuba pre-processed + st1 {v20.2d,v21.2d,v22.2d},[x0] //store Htable[3..5] ret .globl gcm_gmult_v8 @@ -124,6 +165,8 @@ .align 4 gcm_ghash_v8: AARCH64_VALID_CALL_TARGET + cmp x3,#64 + b.hs Lgcm_ghash_v8_4x ld1 {v0.2d},[x0] //load [rotated] Xi //"[rotated]" means that //loaded value would have @@ -250,8 +293,291 @@ ret +.def gcm_ghash_v8_4x + .type 32 +.endef +.align 4 +gcm_ghash_v8_4x: +Lgcm_ghash_v8_4x: + ld1 {v0.2d},[x0] //load [rotated] Xi + ld1 {v20.2d,v21.2d,v22.2d},[x1],#48 //load twisted H, ..., H^2 + movi v19.16b,#0xe1 + ld1 {v26.2d,v27.2d,v28.2d},[x1] //load twisted H^3, ..., H^4 + shl v19.2d,v19.2d,#57 //compose 0xc2.0 constant + + ld1 {v4.2d,v5.2d,v6.2d,v7.2d},[x2],#64 +#ifndef __ARMEB__ + rev64 v0.16b,v0.16b + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v7.16b,v7.16b + rev64 v4.16b,v4.16b +#endif + ext v25.16b,v7.16b,v7.16b,#8 + ext v24.16b,v6.16b,v6.16b,#8 + ext v23.16b,v5.16b,v5.16b,#8 + + pmull v29.1q,v20.1d,v25.1d //H·Ii+3 + eor v7.16b,v7.16b,v25.16b + pmull2 v31.1q,v20.2d,v25.2d + pmull v30.1q,v21.1d,v7.1d + + pmull v16.1q,v22.1d,v24.1d //H^2·Ii+2 + eor v6.16b,v6.16b,v24.16b + pmull2 v24.1q,v22.2d,v24.2d + pmull2 v6.1q,v21.2d,v6.2d + + eor v29.16b,v29.16b,v16.16b + eor v31.16b,v31.16b,v24.16b + eor v30.16b,v30.16b,v6.16b + + pmull v7.1q,v26.1d,v23.1d //H^3·Ii+1 + eor v5.16b,v5.16b,v23.16b + pmull2 v23.1q,v26.2d,v23.2d + pmull v5.1q,v27.1d,v5.1d + + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + eor v30.16b,v30.16b,v5.16b + + subs x3,x3,#128 + b.lo Ltail4x + + b Loop4x + +.align 4 +Loop4x: + eor v16.16b,v4.16b,v0.16b + ld1 {v4.2d,v5.2d,v6.2d,v7.2d},[x2],#64 + ext v3.16b,v16.16b,v16.16b,#8 +#ifndef __ARMEB__ + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v7.16b,v7.16b + rev64 v4.16b,v4.16b +#endif + + pmull v0.1q,v28.1d,v3.1d //H^4·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v28.2d,v3.2d + ext v25.16b,v7.16b,v7.16b,#8 + pmull2 v1.1q,v27.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + ext v24.16b,v6.16b,v6.16b,#8 + eor v1.16b,v1.16b,v30.16b + ext v23.16b,v5.16b,v5.16b,#8 + + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + pmull v29.1q,v20.1d,v25.1d //H·Ii+3 + eor v7.16b,v7.16b,v25.16b + eor v1.16b,v1.16b,v17.16b + pmull2 v31.1q,v20.2d,v25.2d + eor v1.16b,v1.16b,v18.16b + pmull v30.1q,v21.1d,v7.1d + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + pmull v16.1q,v22.1d,v24.1d //H^2·Ii+2 + eor v6.16b,v6.16b,v24.16b + pmull2 v24.1q,v22.2d,v24.2d + eor v0.16b,v1.16b,v18.16b + pmull2 v6.1q,v21.2d,v6.2d + + eor v29.16b,v29.16b,v16.16b + eor v31.16b,v31.16b,v24.16b + eor v30.16b,v30.16b,v6.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + pmull v7.1q,v26.1d,v23.1d //H^3·Ii+1 + eor v5.16b,v5.16b,v23.16b + eor v18.16b,v18.16b,v2.16b + pmull2 v23.1q,v26.2d,v23.2d + pmull v5.1q,v27.1d,v5.1d + + eor v0.16b,v0.16b,v18.16b + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + ext v0.16b,v0.16b,v0.16b,#8 + eor v30.16b,v30.16b,v5.16b + + subs x3,x3,#64 + b.hs Loop4x + +Ltail4x: + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull v0.1q,v28.1d,v3.1d //H^4·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v28.2d,v3.2d + pmull2 v1.1q,v27.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + + adds x3,x3,#64 + b.eq Ldone4x + + cmp x3,#32 + b.lo Lone + b.eq Ltwo +Lthree: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d,v5.2d,v6.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __ARMEB__ + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + ext v24.16b,v6.16b,v6.16b,#8 + ext v23.16b,v5.16b,v5.16b,#8 + eor v0.16b,v1.16b,v18.16b + + pmull v29.1q,v20.1d,v24.1d //H·Ii+2 + eor v6.16b,v6.16b,v24.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + pmull2 v31.1q,v20.2d,v24.2d + pmull v30.1q,v21.1d,v6.1d + eor v0.16b,v0.16b,v18.16b + pmull v7.1q,v22.1d,v23.1d //H^2·Ii+1 + eor v5.16b,v5.16b,v23.16b + ext v0.16b,v0.16b,v0.16b,#8 + + pmull2 v23.1q,v22.2d,v23.2d + eor v16.16b,v4.16b,v0.16b + pmull2 v5.1q,v21.2d,v5.2d + ext v3.16b,v16.16b,v16.16b,#8 + + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + eor v30.16b,v30.16b,v5.16b + + pmull v0.1q,v26.1d,v3.1d //H^3·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v26.2d,v3.2d + pmull v1.1q,v27.1d,v16.1d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + b Ldone4x + +.align 4 +Ltwo: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d,v5.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __ARMEB__ + rev64 v5.16b,v5.16b + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + ext v23.16b,v5.16b,v5.16b,#8 + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + + pmull v29.1q,v20.1d,v23.1d //H·Ii+1 + eor v5.16b,v5.16b,v23.16b + + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull2 v31.1q,v20.2d,v23.2d + pmull v30.1q,v21.1d,v5.1d + + pmull v0.1q,v22.1d,v3.1d //H^2·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v22.2d,v3.2d + pmull2 v1.1q,v21.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + b Ldone4x + +.align 4 +Lone: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __ARMEB__ + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull v0.1q,v20.1d,v3.1d + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v20.2d,v3.2d + pmull v1.1q,v21.1d,v16.1d + +Ldone4x: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + +#ifndef __ARMEB__ + rev64 v0.16b,v0.16b +#endif + st1 {v0.2d},[x0] //write out Xi + + ret + .byte 71,72,65,83,72,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 2 .align 2 #endif +#endif #endif // !OPENSSL_NO_ASM
diff --git a/third_party/nearby/BUILD.gn b/third_party/nearby/BUILD.gn index 53f7b68..af226d2ad 100644 --- a/third_party/nearby/BUILD.gn +++ b/third_party/nearby/BUILD.gn
@@ -410,7 +410,7 @@ source_set("core_internal_test") { testonly = true public_configs = [ ":nearby_include_config" ] - public = [ "src/cpp/core/internal/mock_service_controller.h" ] + public = [ "src/cpp/core/internal/mock_service_controller_router.h" ] deps = [ ":core_internal", "//third_party/googletest:gmock",
diff --git a/third_party/nearby/README.chromium b/third_party/nearby/README.chromium index e00fb1a..79c86d3c 100644 --- a/third_party/nearby/README.chromium +++ b/third_party/nearby/README.chromium
@@ -1,7 +1,7 @@ Name: Nearby Connections Library Short Name: Nearby URL: https://github.com/google/nearby-connections -Version: 7a02eaad37a4e0d3948750c987e82fcb94225547 +Version: f483110a8d92cf4d26f2d725a09655a0ce3b0f6c License: Apache 2.0 License File: LICENSE Security Critical: yes
diff --git a/third_party/wpt_tools/README.chromium b/third_party/wpt_tools/README.chromium index f7a83d7..80f05f30 100644 --- a/third_party/wpt_tools/README.chromium +++ b/third_party/wpt_tools/README.chromium
@@ -1,7 +1,7 @@ Name: web-platform-tests - Test Suites for Web Platform specifications Short Name: wpt URL: https://github.com/web-platform-tests/wpt/ -Version: 1c62628e8bb4e8fda03a7e1af9aefbca60293381 +Version: d20629e2888762b4bf62d3f7eb0e45e0c19d369c License: LICENSES FOR W3C TEST SUITES (https://www.w3.org/Consortium/Legal/2008/03-bsd-license.html) License File: NOT_SHIPPED Security Critical: no
diff --git a/third_party/wpt_tools/WPTIncludeList b/third_party/wpt_tools/WPTIncludeList index 2a294f0..98e16768 100644 --- a/third_party/wpt_tools/WPTIncludeList +++ b/third_party/wpt_tools/WPTIncludeList
@@ -219,6 +219,7 @@ ./tools/webdriver/webdriver/transport.py ./tools/webdriver/webdriver/bidi/__init__.py ./tools/webdriver/webdriver/bidi/client.py +./tools/webdriver/webdriver/bidi/error.py ./tools/wpt/__init__.py ./tools/wpt/android.py ./tools/wpt/browser.py
diff --git a/third_party/wpt_tools/checkout.sh b/third_party/wpt_tools/checkout.sh index e0dbe75..dc9454c1 100755 --- a/third_party/wpt_tools/checkout.sh +++ b/third_party/wpt_tools/checkout.sh
@@ -11,7 +11,7 @@ TARGET_DIR=$DIR/wpt REMOTE_REPO="https://github.com/web-platform-tests/wpt.git" -WPT_HEAD=1c62628e8bb4e8fda03a7e1af9aefbca60293381 +WPT_HEAD=d20629e2888762b4bf62d3f7eb0e45e0c19d369c function clone { # Remove existing repo if already exists.
diff --git a/third_party/wpt_tools/wpt/tools/webdriver/webdriver/bidi/client.py b/third_party/wpt_tools/wpt/tools/webdriver/webdriver/bidi/client.py index 4309a25..1bb4c9d 100644 --- a/third_party/wpt_tools/wpt/tools/webdriver/webdriver/bidi/client.py +++ b/third_party/wpt_tools/wpt/tools/webdriver/webdriver/bidi/client.py
@@ -9,17 +9,11 @@ import websockets +from .error import from_error_details logger = logging.getLogger("webdriver.bidi") -class BidiException(Exception): - def __init__(self, err: str, msg: str, stack: Optional[str] = None): - self.err = err - self.msg = msg - self.stack = stack - - def get_running_loop() -> asyncio.AbstractEventLoop: if sys.version_info >= (3, 7): return asyncio.get_running_loop() @@ -183,9 +177,10 @@ elif "error" in data and "message" in data: assert isinstance(data["error"], str) assert isinstance(data["message"], str) - future.set_exception(BidiException(data["error"], - data["message"], - data.get("stacktrace"))) + exception = from_error_details(data["error"], + data["message"], + data.get("stacktrace")) + future.set_exception(exception) else: raise ValueError(f"Unexpected message: {data!r}") elif "method" in data and "params" in data: @@ -365,9 +360,9 @@ @command def subscribe(self, - events: Optional[List[str]] = None, + events: List[str], contexts: Optional[List[str]] = None) -> Mapping[str, Any]: - params: MutableMapping[str, Any] = {"events": events if events is not None else []} + params: MutableMapping[str, Any] = {"events": events} if contexts is not None: params["contexts"] = contexts return params
diff --git a/third_party/wpt_tools/wpt/tools/webdriver/webdriver/bidi/error.py b/third_party/wpt_tools/wpt/tools/webdriver/webdriver/bidi/error.py new file mode 100644 index 0000000..61303d4 --- /dev/null +++ b/third_party/wpt_tools/wpt/tools/webdriver/webdriver/bidi/error.py
@@ -0,0 +1,65 @@ +import collections + +from typing import ClassVar, DefaultDict, Optional, Type + + +class BidiException(Exception): + # The error_code class variable is used to map the JSON Error Code (see + # https://w3c.github.io/webdriver/#errors) to a BidiException subclass. + # TODO: Match on error and let it be a class variables only. + error_code = None # type: ClassVar[str] + + def __init__(self, error: str, message: str, stacktrace: Optional[str]): + super(BidiException, self) + + self.error = error + self.message = message + self.stacktrace = stacktrace + + def __repr__(self): + """Return the object representation in string format.""" + return f"{self.__class__.__name__}({self.error}, {self.message}, {self.stacktrace})" + + def __str__(self): + """Return the string representation of the object.""" + message = f"{self.error} ({self.message})" + + if self.stacktrace: + message += f"\n\nRemote-end stacktrace:\n\n{self.stacktrace}" + + return message + + +class InvalidArgumentException(BidiException): + error_code = "invalid argument" + + +class UnknownCommandException(BidiException): + error_code = "unknown command" + + +class UnknownErrorException(BidiException): + error_code = "unknown error" + + +def from_error_details(error: str, message: str, stacktrace: Optional[str]) -> BidiException: + """Create specific WebDriver BiDi exception class from error details. + + Defaults to ``UnknownErrorException`` if `error` is unknown. + """ + cls = get(error) + return cls(error, message, stacktrace) + + +def get(error_code: str) -> Type[BidiException]: + """Get exception from `error_code`. + + It's falling back to ``UnknownErrorException`` if it is not found. + """ + return _errors.get(error_code, UnknownErrorException) + + +_errors: DefaultDict[str, Type[BidiException]] = collections.defaultdict() +for item in list(locals().values()): + if type(item) == type and issubclass(item, BidiException): + _errors[item.error_code] = item
diff --git a/third_party/wpt_tools/wpt/tools/webdriver/webdriver/client.py b/third_party/wpt_tools/wpt/tools/webdriver/webdriver/client.py index a7a1357..61c04a37 100644 --- a/third_party/wpt_tools/wpt/tools/webdriver/webdriver/client.py +++ b/third_party/wpt_tools/wpt/tools/webdriver/webdriver/client.py
@@ -376,7 +376,7 @@ class ShadowRoot(object): - identifier = "shadow-075b-4da1-b6ba-e579c2d3230a" + identifier = "shadow-6066-11e4-a52e-4f735466cecf" def __init__(self, session, id): """ @@ -392,7 +392,7 @@ @classmethod def from_json(cls, json, session): uuid = json[ShadowRoot.identifier] - return cls(uuid, session) + return cls(session, uuid) def send_shadow_command(self, method, uri, body=None): url = "shadow/{}/{}".format(self.id, uri)
diff --git a/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/browsers/firefox_android.py b/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/browsers/firefox_android.py index 4d7ebf5e..0eaa81a 100644 --- a/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/browsers/firefox_android.py +++ b/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/browsers/firefox_android.py
@@ -8,13 +8,14 @@ browser_command) from ..executors.executormarionette import (MarionetteTestharnessExecutor, # noqa: F401 MarionetteRefTestExecutor, # noqa: F401 - MarionetteCrashtestExecutor) # noqa: F401 + MarionetteCrashtestExecutor, # noqa: F401 + MarionetteWdspecExecutor) # noqa: F401 from .base import (Browser, ExecutorBrowser) from .firefox import (get_timeout_multiplier, # noqa: F401 run_info_extras as fx_run_info_extras, update_properties, # noqa: F401 - executor_kwargs, # noqa: F401 + executor_kwargs as fx_executor_kwargs, # noqa: F401 ProfileCreator as FirefoxProfileCreator) @@ -23,7 +24,8 @@ "browser": "FirefoxAndroidBrowser", "executor": {"testharness": "MarionetteTestharnessExecutor", "reftest": "MarionetteRefTestExecutor", - "crashtest": "MarionetteCrashtestExecutor"}, + "crashtest": "MarionetteCrashtestExecutor", + "wdspec": "MarionetteWdspecExecutor"}, "browser_kwargs": "browser_kwargs", "executor_kwargs": "executor_kwargs", "env_extras": "env_extras", @@ -66,6 +68,15 @@ "specialpowers_path": kwargs["specialpowers_path"]} +def executor_kwargs(logger, test_type, test_environment, run_info_data, + **kwargs): + rv = fx_executor_kwargs(logger, test_type, test_environment, run_info_data, + **kwargs) + if test_type == "wdspec": + rv["capabilities"]["moz:firefoxOptions"]["androidPackage"] = kwargs["package_name"] + return rv + + def env_extras(**kwargs): return []
diff --git a/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/executors/pytestrunner/runner.py b/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/executors/pytestrunner/runner.py index 50819a9..78da846 100644 --- a/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/executors/pytestrunner/runner.py +++ b/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/executors/pytestrunner/runner.py
@@ -103,35 +103,34 @@ if report.passed and report.when == "call": self.record_pass(report) elif report.failed: + # pytest outputs the stacktrace followed by an error message prefixed + # with "E ", e.g. + # + # def test_example(): + # > assert "fuu" in "foobar" + # > E AssertionError: assert 'fuu' in 'foobar' + message = "" + for line in report.longreprtext.splitlines(): + if line.startswith("E "): + message = line[1:].strip() + break + if report.when != "call": - self.record_error(report) + self.record_error(report, message) else: - self.record_fail(report) + self.record_fail(report, message) elif report.skipped: self.record_skip(report) def record_pass(self, report): self.record(report.nodeid, "PASS") - def record_fail(self, report): - # pytest outputs the stacktrace followed by an error message prefixed - # with "E ", e.g. - # - # def test_example(): - # > assert "fuu" in "foobar" - # > E AssertionError: assert 'fuu' in 'foobar' - message = "" - for line in report.longreprtext.splitlines(): - if line.startswith("E "): - message = line[1:].strip() - break - + def record_fail(self, report, message): self.record(report.nodeid, "FAIL", message=message, stack=report.longrepr) - def record_error(self, report): + def record_error(self, report, message): # error in setup/teardown - if report.when != "call": - message = "%s error" % report.when + message = "{} error: {}".format(report.when, message) self.record(report.nodeid, "ERROR", message, report.longrepr) def record_skip(self, report):
diff --git a/tools/metrics/histograms/metadata/download/histograms.xml b/tools/metrics/histograms/metadata/download/histograms.xml index 7b4beb99..a2b8b0f 100644 --- a/tools/metrics/histograms/metadata/download/histograms.xml +++ b/tools/metrics/histograms/metadata/download/histograms.xml
@@ -730,6 +730,26 @@ </summary> </histogram> +<histogram name="Download.Progress.InfoBar.CloseButtonClicked" + enum="DownloadInfoBarState" expires_after="M97"> + <owner>shaktisahu@chromium.org</owner> + <owner>clank-downloads@google.com</owner> + <summary> + Records the state of the download progress infobar on android when the user + taps on the infobar's close button. + </summary> +</histogram> + +<histogram name="Download.Progress.InfoBar.Shown" + enum="DownloadInfoBar.ShownState" expires_after="2022-02-01"> + <owner>shaktisahu@chromium.org</owner> + <owner>clank-downloads@google.com</owner> + <summary> + Records various types of messages representing the state of the downloads as + they are shown on the download progress infobar on android. + </summary> +</histogram> + <histogram name="Download.QuarantineService.ConnectionError" enum="BooleanConnectionError" expires_after="M80"> <owner>pmonette@chromium.org</owner>
diff --git a/tools/perf/measurements/rasterize_and_record_micro.py b/tools/perf/measurements/rasterize_and_record_micro.py index af92569..6e3baee 100644 --- a/tools/perf/measurements/rasterize_and_record_micro.py +++ b/tools/perf/measurements/rasterize_and_record_micro.py
@@ -80,8 +80,6 @@ for metric in ('rasterize_time', 'record_time', 'record_time_caching_disabled', 'record_time_subsequence_caching_disabled', - 'record_time_partial_invalidation', - 'record_time_small_invalidation', 'raster_invalidation_and_convert_time', 'paint_artifact_compositor_update_time'): results.AddMeasurement(metric, 'ms', data.get(metric + '_ms', 0))
diff --git a/ui/android/java/src/org/chromium/ui/widget/RippleBackgroundHelper.java b/ui/android/java/src/org/chromium/ui/widget/RippleBackgroundHelper.java index 9181974f..e04da7c 100644 --- a/ui/android/java/src/org/chromium/ui/widget/RippleBackgroundHelper.java +++ b/ui/android/java/src/org/chromium/ui/widget/RippleBackgroundHelper.java
@@ -144,10 +144,12 @@ GradientDrawable mask = new GradientDrawable(); mask.setCornerRadii(cornerRadii); mask.setColor(Color.WHITE); - return wrapDrawableWithInsets( - new RippleDrawable(convertToRippleDrawableColorList(rippleColorList), - mBackgroundGradient, mask), - verticalInset); + // The RippledDrawable must wrap the InsetDrawable (which wraps the content). + // The InsetDrawable cannot wrap the RippleDrawable, + // otherwise it creates corner artifacts on Android S. + // Refer to crbug.com/1233720 for details. + return new RippleDrawable(convertToRippleDrawableColorList(rippleColorList), + wrapDrawableWithInsets(mBackgroundGradient, verticalInset), mask); } /**
diff --git a/ui/base/ime/win/tsf_bridge.cc b/ui/base/ime/win/tsf_bridge.cc index dd001839..cdb112e 100644 --- a/ui/base/ime/win/tsf_bridge.cc +++ b/ui/base/ime/win/tsf_bridge.cc
@@ -674,10 +674,6 @@ if (!base::CurrentUIThread::IsSet()) { return; } - - TSFBridgeImpl* delegate = GetThreadLocalTSFBridge(); - if (delegate) - return; if (!base::FeatureList::IsEnabled(features::kTSFImeSupport)) return; ReplaceThreadLocalTSFBridge(new MockTSFBridge()); @@ -688,8 +684,7 @@ if (!base::CurrentUIThread::IsSet()) { return; } - - TSFBridgeImpl* old_instance = GetThreadLocalTSFBridge(); + TSFBridge* old_instance = GetThreadLocalTSFBridge(); TSFBridgeTLS().Set(new_instance); delete old_instance; } @@ -697,8 +692,6 @@ // static void TSFBridge::Shutdown() { TRACE_EVENT0("ime", "TSFBridge::Shutdown"); - if (!base::CurrentUIThread::IsSet()) { - } ReplaceThreadLocalTSFBridge(nullptr); }
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ta.xtb b/ui/chromeos/translations/ui_chromeos_strings_ta.xtb index 1ca2cac..89ac139 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ta.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ta.xtb
@@ -223,7 +223,7 @@ <translation id="2994669386200004489"><ph name="FILE_NAME" />ஐக் காப்புப் பிரதி எடுக்க முடியவில்லை</translation> <translation id="299638574917407533">ஃபிரெஞ்சு (கனடா)</translation> <translation id="3003189754374775221">நெட்வொர்க்: <ph name="NETWORK_INDEX" />/<ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="NETWORK_PROVIDER_NAME" />, சிக்னல் வலிமை: <ph name="SIGNAL_STRENGTH" />%, இணை</translation> -<translation id="3003633581067744647">சிறு படக் காட்சிக்கு மாறு</translation> +<translation id="3003633581067744647">சிறுபடக் காட்சிக்கு மாறு</translation> <translation id="3029114385395636667">Docs, Sheets, Slides ஆகியவற்றை ஆஃப்லைனில் பயன்படுத்த 'Google Docs ஆஃப்லைன்' நீட்டிப்பை இயக்கவும்.</translation> <translation id="303198083543495566">புவியியல்</translation> <translation id="3047197340186497470">சீனம் (தூயே)</translation> @@ -472,7 +472,7 @@ <translation id="5163869187418756376">பகிர்வு தோல்வியடைந்தது. உங்கள் இணைப்பைச் சரிபார்த்து, பிறகு மீண்டும் முயற்சிக்கவும்.</translation> <translation id="516592729076796170">US புரோகிராமர் டிவோரக்</translation> <translation id="5170477580121653719">Google இயக்ககத்தில் காலியாக உள்ள இடம்: <ph name="SPACE_AVAILABLE" />.</translation> -<translation id="5177526793333269655">சிறு பட காட்சி</translation> +<translation id="5177526793333269655">சிறுபட காட்சி</translation> <translation id="5194713942430106590">நெடுவரிசையை ஏறுவரிசைப்படுத்த கிளிக் செய்யவும்.</translation> <translation id="5211614973734216083">ஃபாரோசே</translation> <translation id="5218183485292899140">சுவிஸ் ஃபிரெஞ்சு</translation>
diff --git a/url/OWNERS b/url/OWNERS index 0b1362a..2ecc933 100644 --- a/url/OWNERS +++ b/url/OWNERS
@@ -3,5 +3,4 @@ csharrison@chromium.org dcheng@chromium.org mkwst@chromium.org -palmer@chromium.org # NOTE: keep this in sync with lsc-owners-override@chromium.org owners
diff --git a/weblayer/browser/content_view_render_view.cc b/weblayer/browser/content_view_render_view.cc index cc08db1..6dc244d 100644 --- a/weblayer/browser/content_view_render_view.cc +++ b/weblayer/browser/content_view_render_view.cc
@@ -143,11 +143,14 @@ jint width, jint height, jboolean transparent_background, - const JavaParamRef<jobject>& surface) { + const JavaParamRef<jobject>& new_surface) { use_transparent_background_ = transparent_background; UpdateWebContentsBaseBackgroundColor(); compositor_->SetRequiresAlphaChannel(use_transparent_background_); - compositor_->SetSurface(surface, can_be_used_with_surface_control); + // Java side will pass a null `new_surface` if the surface did not change. + if (new_surface) { + compositor_->SetSurface(new_surface, can_be_used_with_surface_control); + } compositor_->SetWindowBounds(gfx::Size(width, height)); }
diff --git a/weblayer/browser/content_view_render_view.h b/weblayer/browser/content_view_render_view.h index 273146d..47361700 100644 --- a/weblayer/browser/content_view_render_view.h +++ b/weblayer/browser/content_view_render_view.h
@@ -59,7 +59,7 @@ jint width, jint height, jboolean transparent_background, - const base::android::JavaParamRef<jobject>& surface); + const base::android::JavaParamRef<jobject>& new_surface); void SetNeedsRedraw(JNIEnv* env); void EvictCachedSurface(JNIEnv* env); base::android::ScopedJavaLocalRef<jobject> GetResourceManager(JNIEnv* env);
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/ContentViewRenderView.java b/weblayer/browser/java/org/chromium/weblayer_private/ContentViewRenderView.java index c963f6de..ed95cc3a 100644 --- a/weblayer/browser/java/org/chromium/weblayer_private/ContentViewRenderView.java +++ b/weblayer/browser/java/org/chromium/weblayer_private/ContentViewRenderView.java
@@ -64,6 +64,9 @@ // The native side of this object. private long mNativeContentViewRenderView; + private Surface mLastSurface; + private boolean mLastCanBeUsedWithSurfaceControl; + private int mMinimumSurfaceWidth; private int mMinimumSurfaceHeight; @@ -164,6 +167,13 @@ int height, boolean transparentBackground) { assert mNativeContentViewRenderView != 0; assert mSurfaceData == ContentViewRenderView.this.mCurrent; + if (mLastSurface == surface + && mLastCanBeUsedWithSurfaceControl == canBeUsedWithSurfaceControl) { + surface = null; + } else { + mLastSurface = surface; + mLastCanBeUsedWithSurfaceControl = canBeUsedWithSurfaceControl; + } ContentViewRenderViewJni.get().surfaceChanged(mNativeContentViewRenderView, canBeUsedWithSurfaceControl, width, height, transparentBackground, surface); mCompositorHasSurface = surface != null; @@ -178,6 +188,8 @@ ContentViewRenderViewJni.get().surfaceDestroyed( mNativeContentViewRenderView, cacheBackBuffer); mCompositorHasSurface = false; + mLastSurface = null; + mLastCanBeUsedWithSurfaceControl = false; } @Override @@ -1023,7 +1035,7 @@ void surfaceCreated(long nativeContentViewRenderView); void surfaceDestroyed(long nativeContentViewRenderView, boolean cacheBackBuffer); void surfaceChanged(long nativeContentViewRenderView, boolean canBeUsedWithSurfaceControl, - int width, int height, boolean transparentBackground, Surface surface); + int width, int height, boolean transparentBackground, Surface newSurface); void setNeedsRedraw(long nativeContentViewRenderView); void evictCachedSurface(long nativeContentViewRenderView); ResourceManager getResourceManager(long nativeContentViewRenderView);