diff --git a/DEPS b/DEPS index e9286bc..8760cf6 100644 --- a/DEPS +++ b/DEPS
@@ -304,7 +304,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'src_internal_revision': '30fdbead0c83d2500fbcfd3309af0e4eb3c9ece6', + 'src_internal_revision': 'f4265bdd4f42aff11fc3c350a5da34634afb9818', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. @@ -399,7 +399,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling devtools-frontend # and whatever else without interference from each other. - 'devtools_frontend_revision': '7f28655bc9e25129032852b084aa07a171d1cca2', + 'devtools_frontend_revision': '698166359a5ecb172961eb5ea79a8469c06bf9be', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libprotobuf-mutator # and whatever else without interference from each other. @@ -475,7 +475,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': 'ea028d4d2b8a901f6302f5371c68a24480766e2b', + 'libcxxabi_revision': '9986707a5f2fc6d5d1ffa7f224a032bdd45c95fd', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -499,7 +499,7 @@ # If you change this, also update the libc++ revision in # //buildtools/deps_revisions.gni. - 'libcxx_revision': '28aa23ffb4c7344914a5b4ac7169f12e5a12333f', + 'libcxx_revision': '24cb5545a9a648f580ef7ce7b758689578f0a2a7', # GN CIPD package version. 'gn_version': 'git_revision:f99e015ac35f689cfdbf46e4eb174e5d2da78d8e', @@ -1195,13 +1195,13 @@ }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '46cb7d0aca592cd20ddc2f6cb16ee386b2abbf0d', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'c341d58921ab188e4edacce04a221559bce86e8d', 'src/third_party/devtools-frontend/src': Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), 'src/third_party/devtools-frontend-internal': { - 'url': Var('chrome_git') + '/devtools/devtools-internal.git' + '@' + '4e0cc80c5875ea35501cf9ff3b859cc2c8565ccd', + 'url': Var('chrome_git') + '/devtools/devtools-internal.git' + '@' + '1fbe815582914a424a0615e0ca6d2d58815c3616', 'condition': 'checkout_src_internal', }, @@ -1524,7 +1524,7 @@ }, 'src/third_party/libunwindstack': { - 'url': Var('chromium_git') + '/chromium/src/third_party/libunwindstack.git' + '@' + '4dbfa0e8c844c8e243b297bc185e54a99ff94f9e', + 'url': Var('chromium_git') + '/chromium/src/third_party/libunwindstack.git' + '@' + 'a3bb4cd02e0e984a235069f812cbef2b37c389e5', 'condition': 'checkout_android', }, @@ -1661,7 +1661,7 @@ Var('pdfium_git') + '/pdfium.git' + '@' + Var('pdfium_revision'), 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + 'd6af17fef257af28ee2417216ef87d5c5b743a1b', + Var('android_git') + '/platform/external/perfetto.git' + '@' + '30666f946a71e4e05cb789cc391472b6c21c7741', 'src/third_party/perl': { 'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '8ef97ff3b7332e38e61b347a2fbed425a4617151', @@ -1799,7 +1799,7 @@ 'packages': [ { 'package': 'chromium/third_party/turbine', - 'version': 'ABguU2WKErRBdXX1LMt0zqZListLS_05X0Rp_V7pwAYC', + 'version': 'KfCqNpZ5XxbfuKiIsjeMWFX-6aJc5WN37x9weHyVDIkC', }, ], 'condition': 'checkout_android', @@ -1969,7 +1969,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/help_app/app', - 'version': 'zOVvjrx-YUZ_7L2eQsnfpw0Wf8Klnm0f2GaLp3gGbTIC', + 'version': 'T2L4eCZoLBfD5jbAfm6CtGFubQrFsh8hBTH_gG6UyewC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal', @@ -2013,7 +2013,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/projector_app/app', - 'version': 'tvUHqVITZhcrIZZ6v9NiBy49PHA3oaAq0TI8--9t9zsC', + 'version': 'je0l3f95yPXSEJdiw4B20oNpQ4qtxwkdWYRdPDyt3MUC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal', @@ -3955,7 +3955,7 @@ 'src/components/plus_addresses/resources/internal': { 'url': Var('chrome_git') + '/chrome/components/plus_addresses/resources.git' + '@' + - 'b8de132a09f542f2db9567c5a9969f55b4499122', + '61a9cd635c8317c7c4be901936629e12b2bdea3c', 'condition': 'checkout_src_internal', }, @@ -4009,7 +4009,7 @@ 'src/ios_internal': { 'url': Var('chrome_git') + '/chrome/ios_internal.git' + '@' + - 'e0312dbf4d16d483662226c982fafc3165f1aecb', + '90b0f3af09097f927b40df7c795276e629892140', 'condition': 'checkout_ios and checkout_src_internal', }, @@ -4803,7 +4803,7 @@ '--no_resume', '--extract', '--no_auth', - '--bucket', 'chromium-nodejs/16.13.0', + '--bucket', 'chromium-nodejs/20.11.0', '-s', 'src/third_party/node/linux/node-linux-x64.tar.gz.sha1', ], }, @@ -4820,7 +4820,7 @@ '--no_resume', '--extract', '--no_auth', - '--bucket', 'chromium-nodejs/16.13.0', + '--bucket', 'chromium-nodejs/20.11.0', '-s', 'src/third_party/node/mac/node-darwin-x64.tar.gz.sha1', ], }, @@ -4833,7 +4833,7 @@ '--no_resume', '--extract', '--no_auth', - '--bucket', 'chromium-nodejs/16.13.0', + '--bucket', 'chromium-nodejs/20.11.0', '-s', 'src/third_party/node/mac/node-darwin-arm64.tar.gz.sha1', ], }, @@ -4845,7 +4845,7 @@ 'src/third_party/depot_tools/download_from_google_storage.py', '--no_resume', '--no_auth', - '--bucket', 'chromium-nodejs/16.13.0', + '--bucket', 'chromium-nodejs/20.11.0', '-s', 'src/third_party/node/win/node.exe.sha1', ], },
diff --git a/WATCHLISTS b/WATCHLISTS index e4b4517..9ed7157 100644 --- a/WATCHLISTS +++ b/WATCHLISTS
@@ -868,6 +868,9 @@ 'chromevox': { 'filepath': 'chromevox|spoken_feedback', }, + 'clang': { + 'filepath': 'tools/clang/' + }, 'clang_update': { 'filepath': 'tools/clang/scripts/update.py' }, @@ -2748,6 +2751,7 @@ 'dtseng+chromevox@chromium.org', 'josiahk+watch@chromium.org', 'katie+watch@chromium.org'], + 'clang': ['hans@chromium.org'], 'clang_update': ['chromium-toolchains@engflow.com', 'dcheng@chromium.org', 'eugenis+clang@chromium.org',
diff --git a/android_webview/expectations/trichrome_webview_64_32_bundle.AndroidManifest.expected b/android_webview/expectations/trichrome_webview_64_32_bundle.AndroidManifest.expected index 20661fb3..48ba8b85 100644 --- a/android_webview/expectations/trichrome_webview_64_32_bundle.AndroidManifest.expected +++ b/android_webview/expectations/trichrome_webview_64_32_bundle.AndroidManifest.expected
@@ -5,7 +5,7 @@ platformBuildVersionCode="34" platformBuildVersionName="14" android:isolatedSplits="true" - android:versionCode="OFFSET=32" + android:versionCode="OFFSET=33" android:versionName="#.#.#.#"> <uses-feature android:name="android.hardware.touchscreen" android:required="false"/> <uses-feature android:name="android.software.leanback" android:required="false"/> @@ -494,6 +494,6 @@ android:visibleToInstantApps="true"> </service> # DIFF-ANCHOR: e2f3bbbd <uses-library android:name="android.ext.adservices" android:required="false"/> - <uses-static-library android:name="org.chromium.trichromelibrary" android:certDigest="32a2fc74d731105859e5a85df16d95f102d85b22099b8064c5d8915c61dad1e0" android:version="OFFSET=32"/> + <uses-static-library android:name="org.chromium.trichromelibrary" android:certDigest="32a2fc74d731105859e5a85df16d95f102d85b22099b8064c5d8915c61dad1e0" android:version="OFFSET=33"/> </application> </manifest>
diff --git a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java index 550fa83..bd8f61a0 100644 --- a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java +++ b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java
@@ -300,6 +300,9 @@ AutofillFeatures.AUTOFILL_USE_I18N_ADDRESS_MODEL, "When enabled, Autofill uses the i18n version of the address model."), Flag.baseFeature( + AutofillFeatures.AUTOFILL_USE_DE_ADDRESS_MODEL, + "When enabled, Autofill uses a custom address model for Germany."), + Flag.baseFeature( AutofillFeatures.AUTOFILL_STREET_NAME_OR_HOUSE_NUMBER_PRECEDENCE_OVER_AUTOCOMPLETE, "When enabled, Autofill prioritizes local heuristics over some server " + "classifications."),
diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/DeveloperUiService.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/DeveloperUiService.java index b147706..f30a3236 100644 --- a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/DeveloperUiService.java +++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/DeveloperUiService.java
@@ -74,9 +74,6 @@ CommandLine.getInstance().getSwitches(); @GuardedBy("sLock") - private boolean mDeveloperModeEnabled; - - @GuardedBy("sLock") private static @NonNull Flag[] sFlagList = ProductionSupportedFlagList.sFlagList; private final IDeveloperUiService.Stub mBinder = @@ -94,11 +91,7 @@ if (sOverriddenFlags.isEmpty()) { disableDeveloperMode(); } else { - try { - enableDeveloperMode(); - } catch (IllegalStateException e) { - logSuspectedForegroundServiceStartNotAllowedException(); - } + enableDeveloperMode(); } } } @@ -282,14 +275,6 @@ startForeground(FLAG_OVERRIDE_NOTIFICATION_ID, notification); } catch (IllegalStateException e) { logSuspectedForegroundServiceStartNotAllowedException(); - - // Mark that we failed to start developer mode fully. - // Mark as not enabled to let enableDeveloperMode run again, which will call - // onStartCommand. - // https://developer.android.com/guide/components/services#StartingAService - synchronized (sLock) { - mDeveloperModeEnabled = false; - } } } @@ -314,14 +299,8 @@ */ private void enableDeveloperMode() { synchronized (sLock) { - if (mDeveloperModeEnabled) return; - // Keep this service alive as long as we're in developer mode. - Intent intent = new Intent(this, DeveloperUiService.class); - // Android O doesn't allow bound Services to request foreground status unless the - // app is running in the foreground already or we already started the service with - // Context#startForegroundService. - startForegroundService(intent); + // Mark developer mode as enabled for other apps. ComponentName developerModeState = new ComponentName(this, DeveloperModeUtils.DEVELOPER_MODE_STATE_COMPONENT); getPackageManager() @@ -330,15 +309,21 @@ PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); - mDeveloperModeEnabled = true; + // Keep this service alive as long as we're in developer mode. + Intent intent = new Intent(this, DeveloperUiService.class); + try { + startForegroundService(intent); + } catch (IllegalStateException e) { + // Android O doesn't allow bound Services to request foreground status unless the + // app is running in the foreground already or we already started the service with + // Context#startForegroundService. + logSuspectedForegroundServiceStartNotAllowedException(); + } } } private void disableDeveloperMode() { synchronized (sLock) { - if (!mDeveloperModeEnabled) return; - mDeveloperModeEnabled = false; - ComponentName developerModeState = new ComponentName(this, DeveloperModeUtils.DEVELOPER_MODE_STATE_COMPONENT); getPackageManager()
diff --git a/ash/controls/contextual_tooltip.cc b/ash/controls/contextual_tooltip.cc index 14b40a1..83e7546 100644 --- a/ash/controls/contextual_tooltip.cc +++ b/ash/controls/contextual_tooltip.cc
@@ -64,6 +64,8 @@ return "time_of_day_feature_banner"; case TooltipType::kTimeOfDayWallpaperDialog: return "time_of_day_wallpaper_dialog"; + case TooltipType::kSeaPenWallpaperTermsDialog: + return "sea_pen_wallpaper_terms_dialog"; } return "invalid"; } @@ -137,7 +139,9 @@ (type == TooltipType::kTimeOfDayFeatureBanner && success_count >= kSuccessLimitTimeOfDayFeatureBanner) || (type == TooltipType::kTimeOfDayWallpaperDialog && - success_count >= kSuccessLimitTimeOfDayWallpaperDialog)) { + success_count >= kSuccessLimitTimeOfDayWallpaperDialog) || + (type == TooltipType::kSeaPenWallpaperTermsDialog && + success_count >= kSuccessLimitSeaPenWallpaperTermsDialog)) { set_recheck_delay(base::TimeDelta()); return false; }
diff --git a/ash/controls/contextual_tooltip.h b/ash/controls/contextual_tooltip.h index f05529ed..28dab0c 100644 --- a/ash/controls/contextual_tooltip.h +++ b/ash/controls/contextual_tooltip.h
@@ -23,6 +23,7 @@ kKeyboardBacklightWallpaperColor, kTimeOfDayFeatureBanner, kTimeOfDayWallpaperDialog, + kSeaPenWallpaperTermsDialog, }; // These values are persisted to logs. Entries should not be renumbered and @@ -51,6 +52,7 @@ constexpr int kSuccessLimitKeyboardBacklightColor = 1; constexpr int kSuccessLimitTimeOfDayFeatureBanner = 1; constexpr int kSuccessLimitTimeOfDayWallpaperDialog = 1; +constexpr int kSuccessLimitSeaPenWallpaperTermsDialog = 1; // Minimum time between showing contextual nudges to the user. constexpr base::TimeDelta kMinInterval = base::Days(1);
diff --git a/ash/login/ui/lock_contents_view.cc b/ash/login/ui/lock_contents_view.cc index bdfb2e42a..4af7dc9 100644 --- a/ash/login/ui/lock_contents_view.cc +++ b/ash/login/ui/lock_contents_view.cc
@@ -1319,109 +1319,6 @@ void LockContentsView::OnEnterpriseAccountDomainChanged() {} -void LockContentsView::ToggleManagementForUserForDebug(const AccountId& user) { - auto replace = [](const LoginUserInfo& user_info) { - auto changed = user_info; - if (user_info.user_account_manager) { - changed.user_account_manager.reset(); - } else { - changed.user_account_manager = "example@example.com"; - } - return changed; - }; - - LoginBigUserView* big = TryToFindBigUser(user, false /*require_auth_active*/); - if (big) { - big->UpdateForUser(replace(big->GetCurrentUser())); - return; - } - - LoginUserView* user_view = - users_list_ ? users_list_->GetUserView(user) : nullptr; - if (user_view) { - user_view->UpdateForUser(replace(user_view->current_user()), - false /*animate*/); - return; - } -} - -void LockContentsView::SetMultiUserSignInPolicyForUserForDebug( - const AccountId& user, - user_manager::MultiUserSignInPolicy policy) { - auto replace = [policy](const LoginUserInfo& user_info) { - auto changed = user_info; - changed.multi_user_sign_in_policy = policy; - changed.is_multi_user_sign_in_allowed = - policy == user_manager::MultiUserSignInPolicy::kUnrestricted; - return changed; - }; - - LoginBigUserView* big = TryToFindBigUser(user, false /*require_auth_active*/); - if (big) { - big->UpdateForUser(replace(big->GetCurrentUser())); - } - - LoginUserView* user_view = - users_list_ ? users_list_->GetUserView(user) : nullptr; - if (user_view) { - user_view->UpdateForUser(replace(user_view->current_user()), - false /*animate*/); - } - - LayoutAuth(CurrentBigUserView(), nullptr /*opt_to_hide*/, true /*animate*/); -} - -void LockContentsView::ToggleForceOnlineSignInForUserForDebug( - const AccountId& user) { - UserState* state = FindStateForUser(user); - if (!state) { - LOG(ERROR) << "Unable to find user forcing online sign in"; - return; - } - state->force_online_sign_in = !state->force_online_sign_in; - - LoginBigUserView* big_user = - TryToFindBigUser(user, true /*require_auth_active*/); - if (big_user && big_user->auth_user()) { - LayoutAuth(big_user, nullptr /*opt_to_hide*/, true /*animate*/); - } -} - -void LockContentsView::ToggleDisableTpmForUserForDebug(const AccountId& user) { - UserState* state = FindStateForUser(user); - if (!state) { - LOG(ERROR) << "Unable to find user to toggle TPM disabled message"; - return; - } - if (state->time_until_tpm_unlock.has_value()) { - state->time_until_tpm_unlock = std::nullopt; - } else { - state->time_until_tpm_unlock = base::Minutes(5); - } - - LoginBigUserView* big_user = - TryToFindBigUser(user, true /*require_auth_active*/); - if (big_user && big_user->auth_user()) { - LayoutAuth(big_user, nullptr /*opt_to_hide*/, true /*animate*/); - } -} - -void LockContentsView::UndoForceOnlineSignInForUserForDebug( - const AccountId& user) { - UserState* state = FindStateForUser(user); - if (!state) { - LOG(ERROR) << "Unable to find user forcing online sign in"; - return; - } - state->force_online_sign_in = false; - - LoginBigUserView* big_user = - TryToFindBigUser(user, true /*require_auth_active*/); - if (big_user && big_user->auth_user()) { - LayoutAuth(big_user, nullptr /*opt_to_hide*/, true /*animate*/); - } -} - void LockContentsView::FocusNextWidget(bool reverse) { Shelf* shelf = Shelf::ForWindow(GetWidget()->GetNativeWindow()); // Tell the focus direction to the status area or the shelf so they can focus @@ -2427,16 +2324,6 @@ kiosk_default_message_->SetVisible(!has_kiosk_apps_); } -void LockContentsView::SetKioskLicenseModeForTesting( - bool is_kiosk_license_mode) { - kiosk_license_mode_ = is_kiosk_license_mode; - - // Normally when management device mode is updated, via - // OnDeviceEnterpriseInfoChanged, it updates the visibility of Kiosk default - // meesage too. - UpdateKioskDefaultMessageVisibility(); -} - void LockContentsView::RecordAndResetPasswordAttempts( AuthEventsRecorder::AuthenticationOutcome outcome, AccountId account_id) {
diff --git a/ash/login/ui/lock_contents_view.h b/ash/login/ui/lock_contents_view.h index aaacd0b..caf7c9d0 100644 --- a/ash/login/ui/lock_contents_view.h +++ b/ash/login/ui/lock_contents_view.h
@@ -211,27 +211,6 @@ void OnDeviceEnterpriseInfoChanged() override; void OnEnterpriseAccountDomainChanged() override; - // Called for debugging to make |user| managed and display an icon along with - // a note in the menu user view. - void ToggleManagementForUserForDebug(const AccountId& user); - - // Called for debugging to make |user| having a multi-user-sign-in policy. - void SetMultiUserSignInPolicyForUserForDebug( - const AccountId& user, - user_manager::MultiUserSignInPolicy policy); - - // Called for debugging to toggle forced online sign-in form |user|. - void ToggleForceOnlineSignInForUserForDebug(const AccountId& user); - - // Called for debugging to toggle TPM disabled message for |user|. - void ToggleDisableTpmForUserForDebug(const AccountId& user); - - // Called for debugging to remove forced online sign-in form |user|. - void UndoForceOnlineSignInForUserForDebug(const AccountId& user); - - // Test API. Set device to have kiosk license. - void SetKioskLicenseModeForTesting(bool is_kiosk_license_mode); - // Called by LockScreenMediaControlsView. void CreateMediaControlsLayout(); void HideMediaControlsLayout();
diff --git a/ash/login/ui/lock_contents_view_test_api.cc b/ash/login/ui/lock_contents_view_test_api.cc index a62a2547..568416e9 100644 --- a/ash/login/ui/lock_contents_view_test_api.cc +++ b/ash/login/ui/lock_contents_view_test_api.cc
@@ -211,4 +211,119 @@ auth_error_bubble()->OnLearnMoreButtonPressed(); } +void LockContentsViewTestApi::ToggleManagementForUser(const AccountId& user) { + auto replace = [](const LoginUserInfo& user_info) { + auto changed = user_info; + if (user_info.user_account_manager) { + changed.user_account_manager.reset(); + } else { + changed.user_account_manager = "example@example.com"; + } + return changed; + }; + + LoginBigUserView* big = + view_->TryToFindBigUser(user, false /*require_auth_active*/); + if (big) { + big->UpdateForUser(replace(big->GetCurrentUser())); + return; + } + + LoginUserView* user_view = + view_->users_list_ ? view_->users_list_->GetUserView(user) : nullptr; + if (user_view) { + user_view->UpdateForUser(replace(user_view->current_user()), + false /*animate*/); + return; + } +} + +void LockContentsViewTestApi::SetMultiUserSignInPolicyForUser( + const AccountId& user, + user_manager::MultiUserSignInPolicy policy) { + auto replace = [policy](const LoginUserInfo& user_info) { + auto changed = user_info; + changed.multi_user_sign_in_policy = policy; + changed.is_multi_user_sign_in_allowed = + policy == user_manager::MultiUserSignInPolicy::kUnrestricted; + return changed; + }; + + LoginBigUserView* big = + view_->TryToFindBigUser(user, false /*require_auth_active*/); + if (big) { + big->UpdateForUser(replace(big->GetCurrentUser())); + } + + LoginUserView* user_view = + view_->users_list_ ? view_->users_list_->GetUserView(user) : nullptr; + if (user_view) { + user_view->UpdateForUser(replace(user_view->current_user()), + false /*animate*/); + } + + view_->LayoutAuth(view_->CurrentBigUserView(), nullptr /*opt_to_hide*/, + true /*animate*/); +} + +void LockContentsViewTestApi::ToggleForceOnlineSignInForUser( + const AccountId& user) { + UserState* state = view_->FindStateForUser(user); + if (!state) { + LOG(ERROR) << "Unable to find user forcing online sign in"; + return; + } + state->force_online_sign_in = !state->force_online_sign_in; + + LoginBigUserView* big_user = + view_->TryToFindBigUser(user, true /*require_auth_active*/); + if (big_user && big_user->auth_user()) { + view_->LayoutAuth(big_user, nullptr /*opt_to_hide*/, true /*animate*/); + } +} + +void LockContentsViewTestApi::ToggleDisableTpmForUser(const AccountId& user) { + UserState* state = view_->FindStateForUser(user); + if (!state) { + LOG(ERROR) << "Unable to find user to toggle TPM disabled message"; + return; + } + if (state->time_until_tpm_unlock.has_value()) { + state->time_until_tpm_unlock = std::nullopt; + } else { + state->time_until_tpm_unlock = base::Minutes(5); + } + + LoginBigUserView* big_user = + view_->TryToFindBigUser(user, true /*require_auth_active*/); + if (big_user && big_user->auth_user()) { + view_->LayoutAuth(big_user, nullptr /*opt_to_hide*/, true /*animate*/); + } +} + +void LockContentsViewTestApi::UndoForceOnlineSignInForUser( + const AccountId& user) { + UserState* state = view_->FindStateForUser(user); + if (!state) { + LOG(ERROR) << "Unable to find user forcing online sign in"; + return; + } + state->force_online_sign_in = false; + + LoginBigUserView* big_user = + view_->TryToFindBigUser(user, true /*require_auth_active*/); + if (big_user && big_user->auth_user()) { + view_->LayoutAuth(big_user, nullptr /*opt_to_hide*/, true /*animate*/); + } +} + +void LockContentsViewTestApi::SetKioskLicenseMode(bool is_kiosk_license_mode) { + view_->kiosk_license_mode_ = is_kiosk_license_mode; + + // Normally when management device mode is updated, via + // OnDeviceEnterpriseInfoChanged, it updates the visibility of Kiosk default + // meesage too. + view_->UpdateKioskDefaultMessageVisibility(); +} + } // namespace ash
diff --git a/ash/login/ui/lock_contents_view_test_api.h b/ash/login/ui/lock_contents_view_test_api.h index bb6c29c..8d2259a6 100644 --- a/ash/login/ui/lock_contents_view_test_api.h +++ b/ash/login/ui/lock_contents_view_test_api.h
@@ -68,6 +68,27 @@ void PressAuthErrorRecoveryButton() const; void PressAuthErrorLearnMoreButton() const; + // Called for debugging to make |user| managed and display an icon along with + // a note in the menu user view. + void ToggleManagementForUser(const AccountId& user); + + // Called for debugging to make |user| having a multi-user-sign-in policy. + void SetMultiUserSignInPolicyForUser( + const AccountId& user, + user_manager::MultiUserSignInPolicy policy); + + // Called for debugging to toggle forced online sign-in form |user|. + void ToggleForceOnlineSignInForUser(const AccountId& user); + + // Called for debugging to toggle TPM disabled message for |user|. + void ToggleDisableTpmForUser(const AccountId& user); + + // Called for debugging to remove forced online sign-in form |user|. + void UndoForceOnlineSignInForUser(const AccountId& user); + + // Set device to have kiosk license. + void SetKioskLicenseMode(bool is_kiosk_license_mode); + private: const raw_ptr<LockContentsView, DanglingUntriaged> view_; };
diff --git a/ash/login/ui/lock_contents_view_unittest.cc b/ash/login/ui/lock_contents_view_unittest.cc index 2f16697..64aa32d 100644 --- a/ash/login/ui/lock_contents_view_unittest.cc +++ b/ash/login/ui/lock_contents_view_unittest.cc
@@ -3320,18 +3320,19 @@ login_shelf_view_->SetKioskLicenseModeForTesting(is_kiosk_license_mode); // Show login screen with no user. ASSERT_NO_FATAL_FAILURE(ShowLoginScreen()); - LockContentsView* lock_contents_view = - LockScreen::TestApi(LockScreen::Get()).contents_view(); - lock_contents_view->SetKioskLicenseModeForTesting(is_kiosk_license_mode); - LockContentsViewTestApi test_api(lock_contents_view); + LockScreen::TestApi lock_screen_test_api(LockScreen::Get()); + LockContentsViewTestApi lock_contents_view_test_api( + lock_screen_test_api.contents_view()); + lock_contents_view_test_api.SetKioskLicenseMode(is_kiosk_license_mode); SetUserCount(0); - SetWidget(CreateWidgetWithContent(lock_contents_view)); + SetWidget(CreateWidgetWithContent(lock_screen_test_api.contents_view())); NotifySessionStateChanged(session_manager::SessionState::LOGIN_PRIMARY); SetNFakeKioskApps(1); - EXPECT_TRUE(test_api.kiosk_default_message()); - EXPECT_FALSE(test_api.kiosk_default_message()->GetVisible()); + EXPECT_TRUE(lock_contents_view_test_api.kiosk_default_message()); + EXPECT_FALSE( + lock_contents_view_test_api.kiosk_default_message()->GetVisible()); } // Checks default message hidden if device is not with kiosk license and has @@ -3342,17 +3343,17 @@ login_shelf_view_->SetKioskLicenseModeForTesting(is_kiosk_license_mode); // Show login screen with no user. ASSERT_NO_FATAL_FAILURE(ShowLoginScreen()); - LockContentsView* lock_contents_view = - LockScreen::TestApi(LockScreen::Get()).contents_view(); - lock_contents_view->SetKioskLicenseModeForTesting(is_kiosk_license_mode); - LockContentsViewTestApi test_api(lock_contents_view); + LockScreen::TestApi lock_screen_test_api(LockScreen::Get()); + LockContentsViewTestApi lock_contents_view_test_api( + lock_screen_test_api.contents_view()); + lock_contents_view_test_api.SetKioskLicenseMode(is_kiosk_license_mode); SetUserCount(0); - SetWidget(CreateWidgetWithContent(lock_contents_view)); + SetWidget(CreateWidgetWithContent(lock_screen_test_api.contents_view())); NotifySessionStateChanged(session_manager::SessionState::LOGIN_PRIMARY); SetNFakeKioskApps(0); - EXPECT_FALSE(test_api.kiosk_default_message()); + EXPECT_FALSE(lock_contents_view_test_api.kiosk_default_message()); } // Checks default message appeared if device is with kiosk license and no @@ -3364,18 +3365,19 @@ login_shelf_view_->SetKioskLicenseModeForTesting(is_kiosk_license_mode); // Show login screen with no user. ASSERT_NO_FATAL_FAILURE(ShowLoginScreen()); - LockContentsView* lock_contents_view = - LockScreen::TestApi(LockScreen::Get()).contents_view(); - lock_contents_view->SetKioskLicenseModeForTesting(is_kiosk_license_mode); - LockContentsViewTestApi test_api(lock_contents_view); + LockScreen::TestApi lock_screen_test_api(LockScreen::Get()); + LockContentsViewTestApi lock_contents_view_test_api( + lock_screen_test_api.contents_view()); + lock_contents_view_test_api.SetKioskLicenseMode(is_kiosk_license_mode); SetUserCount(0); - SetWidget(CreateWidgetWithContent(lock_contents_view)); + SetWidget(CreateWidgetWithContent(lock_screen_test_api.contents_view())); NotifySessionStateChanged(session_manager::SessionState::LOGIN_PRIMARY); SetNFakeKioskApps(0); - EXPECT_TRUE(test_api.kiosk_default_message()); - EXPECT_TRUE(test_api.kiosk_default_message()->GetVisible()); + EXPECT_TRUE(lock_contents_view_test_api.kiosk_default_message()); + EXPECT_TRUE( + lock_contents_view_test_api.kiosk_default_message()->GetVisible()); } // Checks default message appeared if device is with kiosk license, no @@ -3387,18 +3389,19 @@ login_shelf_view_->SetKioskLicenseModeForTesting(is_kiosk_license_mode); // Show login screen with one user. ASSERT_NO_FATAL_FAILURE(ShowLoginScreen()); - LockContentsView* lock_contents_view = - LockScreen::TestApi(LockScreen::Get()).contents_view(); - lock_contents_view->SetKioskLicenseModeForTesting(is_kiosk_license_mode); - LockContentsViewTestApi test_api(lock_contents_view); + LockScreen::TestApi lock_screen_test_api(LockScreen::Get()); + LockContentsViewTestApi lock_contents_view_test_api( + lock_screen_test_api.contents_view()); + lock_contents_view_test_api.SetKioskLicenseMode(is_kiosk_license_mode); SetUserCount(1); - SetWidget(CreateWidgetWithContent(lock_contents_view)); + SetWidget(CreateWidgetWithContent(lock_screen_test_api.contents_view())); NotifySessionStateChanged(session_manager::SessionState::LOGIN_PRIMARY); SetNFakeKioskApps(0); - EXPECT_TRUE(test_api.kiosk_default_message()); - EXPECT_TRUE(test_api.kiosk_default_message()->GetVisible()); + EXPECT_TRUE(lock_contents_view_test_api.kiosk_default_message()); + EXPECT_TRUE( + lock_contents_view_test_api.kiosk_default_message()->GetVisible()); } // Checks default message appeared if device is with kiosk license and no @@ -3411,23 +3414,25 @@ login_shelf_view_->SetKioskLicenseModeForTesting(is_kiosk_license_mode); // Show login screen with no user. ASSERT_NO_FATAL_FAILURE(ShowLoginScreen()); - LockContentsView* lock_contents_view = - LockScreen::TestApi(LockScreen::Get()).contents_view(); - lock_contents_view->SetKioskLicenseModeForTesting(is_kiosk_license_mode); - LockContentsViewTestApi test_api(lock_contents_view); + LockScreen::TestApi lock_screen_test_api(LockScreen::Get()); + LockContentsViewTestApi lock_contents_view_test_api( + lock_screen_test_api.contents_view()); + lock_contents_view_test_api.SetKioskLicenseMode(is_kiosk_license_mode); SetUserCount(0); - SetWidget(CreateWidgetWithContent(lock_contents_view)); + SetWidget(CreateWidgetWithContent(lock_screen_test_api.contents_view())); NotifySessionStateChanged(session_manager::SessionState::LOGIN_PRIMARY); SetNFakeKioskApps(0); - EXPECT_TRUE(test_api.kiosk_default_message()); - EXPECT_TRUE(test_api.kiosk_default_message()->GetVisible()); + EXPECT_TRUE(lock_contents_view_test_api.kiosk_default_message()); + EXPECT_TRUE( + lock_contents_view_test_api.kiosk_default_message()->GetVisible()); SetNFakeKioskApps(1); - EXPECT_TRUE(test_api.kiosk_default_message()); - EXPECT_FALSE(test_api.kiosk_default_message()->GetVisible()); + EXPECT_TRUE(lock_contents_view_test_api.kiosk_default_message()); + EXPECT_FALSE( + lock_contents_view_test_api.kiosk_default_message()->GetVisible()); } // UMA metrics recorded correctly after the successful login attempt.
diff --git a/ash/login/ui/lock_debug_view.cc b/ash/login/ui/lock_debug_view.cc index 4615854..665b8c4 100644 --- a/ash/login/ui/lock_debug_view.cc +++ b/ash/login/ui/lock_debug_view.cc
@@ -430,22 +430,23 @@ // Toggles force online sign-in for the user at |user_index|. void ToggleForceOnlineSignInForUserIndex(size_t user_index) { DCHECK(user_index >= 0 && user_index < debug_users_.size()); - lock_debug_view_->lock()->ToggleForceOnlineSignInForUserForDebug( + LockContentsViewTestApi lock_test_api(lock_debug_view_->lock()); + lock_test_api.ToggleForceOnlineSignInForUser( debug_users_[user_index].account_id); } // Enables or disables user management for the user at |user_index|. void ToggleManagementForUserIndex(size_t user_index) { DCHECK(user_index >= 0 && user_index < debug_users_.size()); - lock_debug_view_->lock()->ToggleManagementForUserForDebug( - debug_users_[user_index].account_id); + LockContentsViewTestApi lock_test_api(lock_debug_view_->lock()); + lock_test_api.ToggleManagementForUser(debug_users_[user_index].account_id); } // Toggles TPM disabled message for the user at |user_index|. void ToggleDisableTpmForUserIndex(size_t user_index) { DCHECK(user_index >= 0 && user_index < debug_users_.size()); - lock_debug_view_->lock()->ToggleDisableTpmForUserForDebug( - debug_users_[user_index].account_id); + LockContentsViewTestApi lock_test_api(lock_debug_view_->lock()); + lock_test_api.ToggleDisableTpmForUser(debug_users_[user_index].account_id); } // Cycles disabled auth message for the user at |user_index|. @@ -488,9 +489,10 @@ } debug_dispatcher_.EnableAuthForUser(debug_user->account_id); - lock_debug_view_->lock()->SetMultiUserSignInPolicyForUserForDebug( + LockContentsViewTestApi lock_test_api(lock_debug_view_->lock()); + lock_test_api.SetMultiUserSignInPolicyForUser( debug_users_[user_index].account_id, multi_user_sign_in_policy); - lock_debug_view_->lock()->UndoForceOnlineSignInForUserForDebug( + lock_test_api.UndoForceOnlineSignInForUser( debug_users_[user_index].account_id); switch (debug_user->auth_enable_state) { @@ -508,7 +510,7 @@ break; case DebugAuthEnabledState::kMultiUserPolicyPrimaryOnly: case DebugAuthEnabledState::kMultiUserPolicyNotAllowed: - lock_debug_view_->lock()->SetMultiUserSignInPolicyForUserForDebug( + lock_test_api.SetMultiUserSignInPolicyForUser( debug_users_[user_index].account_id, multi_user_sign_in_policy); break; case DebugAuthEnabledState::kForceOnlineSignIn:
diff --git a/ash/strings/ash_strings_am.xtb b/ash/strings/ash_strings_am.xtb index e983739d3..af09cfd 100644 --- a/ash/strings/ash_strings_am.xtb +++ b/ash/strings/ash_strings_am.xtb
@@ -622,6 +622,7 @@ <translation id="3577473026931028326">የሆነ ችግር ተፈጥሯል። እንደገና ይሞክሩ።</translation> <translation id="3580650856351781466">የንግግር ፋይሎችን በማውረድ ላይ</translation> <translation id="3585296979871889131">የስልክዎን ፎቶዎች፣ ሚዲያ፣ ማሳወቂያዎች እና መተግበሪያዎች ይመልከቱ</translation> +<translation id="3590441166907930941">የጎን አዝራር</translation> <translation id="3593039967545720377">የእርስዎን የቅንጥብ ሰሌዳ ለመመልከት <ph name="SHORTCUT_KEY_NAME" /> + Vን በመጫን የቅንጥብ ሰሌዳዎን ይድረሱ። ለመጀመር አንድ ንጥል ይቅዱ።</translation> <translation id="3593646411856133110">ክፍት መተግበሪያዎችን ለመመልከት ወደ ላይ በጣት ጠርገው ይያዙ</translation> <translation id="3595596368722241419">ባትሪ ሙሉ ነው</translation> @@ -1034,6 +1035,7 @@ <translation id="5163434717504750796">የባትሪ ጤና <ph name="BATTERY_HEALTH_PERCENTAGE" />% | የዑደት ቁጥር <ph name="CYCLE_COUNT" /></translation> <translation id="5166007464919321363">ዴስክን እንደ ቅንብር ደንብ አስቀምጥ</translation> <translation id="5168181903108465623">የCast መሣሪያዎች ይገኛሉ</translation> +<translation id="5168753792967365150">Google ተግባሮች ውስጥ ያርትዑ</translation> <translation id="5170568018924773124">በአቃፊ አሳይ</translation> <translation id="5176318573511391780">ከፊል የማያ ገጽን ቅረጽ</translation> <translation id="5187627942836026988">የመገናኛ ነጥብ ዝርዝሮችን አሳይ። መገናኛ ነጥብ በአስተዳዳሪዎ ታግዷል።</translation> @@ -1303,6 +1305,8 @@ <translation id="6168622430237609329">የተጫኑ መተግበሪያዎችዎ</translation> <translation id="6173151025443907148">Lacros ከነቃ ሁለተኛ ተጠቃሚ በመለያ ማስገባት አይደገፍም። እባክዎ በምትኩ በLacros ውስጥ ሁለተኛ የአሳሽ መገለጫ ይጠቀሙ ወይም Lacrosን ያሰናክሉ እና እንደገና ይሞክሩ።</translation> <translation id="6179832488876878285">እዚህ አስፈላጊ ፋይሎችዎን መሰካት ይችላሉ። ለመጀመር የፋይሎች መተግበሪያን ይክፈቱ።</translation> +<translation id="6180193585172850042">ተመለስ አዝራር</translation> +<translation id="6180651297859206670">አስተላልፍ አዝራር</translation> <translation id="6182592640011875895">ዴስክ ክፈት</translation> <translation id="6185696379715117369">ገፅ ወደላይ</translation> <translation id="619335566042889110">አሁን ሙሉ ኃይል ይሙሉ</translation>
diff --git a/ash/strings/ash_strings_as.xtb b/ash/strings/ash_strings_as.xtb index 9109044..6be9122 100644 --- a/ash/strings/ash_strings_as.xtb +++ b/ash/strings/ash_strings_as.xtb
@@ -622,6 +622,7 @@ <translation id="3577473026931028326">কিবা ভুল হ’ল। পুনৰ চেষ্টা কৰক।</translation> <translation id="3580650856351781466">কথনৰ ফাইল ডাউনল’ড কৰি থকা হৈছে</translation> <translation id="3585296979871889131">আপোনাৰ ফ’নৰ শেহতীয়া ফট’, মিডিয়া, জাননী আৰু এপ্সমূহ চাওক</translation> +<translation id="3590441166907930941">কাষৰ বুটাম</translation> <translation id="3593039967545720377">আপোনাৰ ক্লিপব’ৰ্ড চাবলৈ <ph name="SHORTCUT_KEY_NAME" /> + V টিপি নিজৰ ক্লিপব’ৰ্ডৰ ইতিহাস এক্সেছ কৰক। আৰম্ভ কৰিবলৈ এটা বস্তু প্ৰতিলিপি কৰক।</translation> <translation id="3593646411856133110">খোলা এপ্সমূহ চাবলৈ ওপৰলৈ ছোৱাইপ কৰি ধৰি ৰাখক</translation> <translation id="3595596368722241419">বেটাৰী চাৰ্জ সম্পূৰ্ণ হৈছে</translation> @@ -1034,6 +1035,7 @@ <translation id="5163434717504750796">বেটাৰীৰ স্বাস্থ্য <ph name="BATTERY_HEALTH_PERCENTAGE" />% | চক্ৰৰ গণনা <ph name="CYCLE_COUNT" /></translation> <translation id="5166007464919321363">এটা টেমপ্লে’ট হিচাপে ডেস্ক ছেভ কৰক</translation> <translation id="5168181903108465623">কাষ্ট কৰিব পৰা ডিভাইচ উপলব্ধ</translation> +<translation id="5168753792967365150">Google Tasksত সম্পাদনা কৰক</translation> <translation id="5170568018924773124">ফ’ল্ডাৰত দেখুৱাওক</translation> <translation id="5176318573511391780">আংশিক স্ক্ৰীন ৰেকৰ্ড কৰক</translation> <translation id="5187627942836026988">হ’টস্প’টৰ সবিশেষ দেখুৱাওক। আপোনাৰ প্ৰশাসকে হ’টস্প’ট অৱৰোধ কৰিছে।</translation> @@ -1303,6 +1305,8 @@ <translation id="6168622430237609329">আপোনাৰ ইনষ্টল কৰা এপ্</translation> <translation id="6173151025443907148">Lacros সক্ষম কৰি থোৱাৰ সময়ত দ্বিতীয় এগৰাকী ব্যৱহাৰকাৰী ছাইন ইন কৰাটো সমৰ্থিত নহয়। অনুগ্ৰহ কৰি তাৰ সলনি Lacrosত দ্বিতীয় এটা ব্ৰাউজাৰ প্ৰ’ফাইল ব্যৱহাৰ কৰক অথবা Lacros অক্ষম কৰি পুনৰ চেষ্টা কৰক।</translation> <translation id="6179832488876878285">আপুনি নিজৰ গুৰুত্বপূৰ্ণ ফাইলসমূহ ইয়াত পিন কৰিব পাৰে। আৰম্ভ কৰিবলৈ Files এপ্টো খোলক।</translation> +<translation id="6180193585172850042">উভতি যোৱাৰ বুটাম</translation> +<translation id="6180651297859206670">ফৰৱাৰ্ড কৰাৰ বুটাম</translation> <translation id="6182592640011875895">ডেস্ক খোলক</translation> <translation id="6185696379715117369">পেজ আপ</translation> <translation id="619335566042889110">এতিয়াই সম্পূৰ্ণৰূপে চাৰ্জ কৰক</translation>
diff --git a/ash/strings/ash_strings_ca.xtb b/ash/strings/ash_strings_ca.xtb index 09bf4e07..814db4be 100644 --- a/ash/strings/ash_strings_ca.xtb +++ b/ash/strings/ash_strings_ca.xtb
@@ -622,6 +622,7 @@ <translation id="3577473026931028326">S'ha produït un error. Torna-ho a provar.</translation> <translation id="3580650856351781466">S'estan baixant els fitxers de veu</translation> <translation id="3585296979871889131">Consulta les aplicacions, les notificacions, els fitxers multimèdia i les fotos recents del telèfon</translation> +<translation id="3590441166907930941">Botó lateral</translation> <translation id="3593039967545720377">Accedeix a l'historial del porta-retalls prement <ph name="SHORTCUT_KEY_NAME" />+V. Copia un element per començar.</translation> <translation id="3593646411856133110">Llisca cap amunt i mantén premut per veure les aplicacions obertes</translation> <translation id="3595596368722241419">Bateria carregada.</translation> @@ -1034,6 +1035,7 @@ <translation id="5163434717504750796">Estat de la bateria: <ph name="BATTERY_HEALTH_PERCENTAGE" />% | Recompte de cicles: <ph name="CYCLE_COUNT" /></translation> <translation id="5166007464919321363">Desa l'escriptori com a plantilla</translation> <translation id="5168181903108465623">Dispositius d'emissió disponibles</translation> +<translation id="5168753792967365150">Edita a Google Tasks</translation> <translation id="5170568018924773124">Mostra a la carpeta</translation> <translation id="5176318573511391780">Grava una part de la pantalla</translation> <translation id="5187627942836026988">Mostra els detalls del punt d'accés Wi‐Fi. El teu administrador l'ha bloquejat.</translation> @@ -1303,6 +1305,8 @@ <translation id="6168622430237609329">Les teves aplicacions instal·lades</translation> <translation id="6173151025443907148">Si Lacros està activat, no s'admet l'inici de sessió amb un segon usuari. Utilitza un altre perfil del navegador o desactiva Lacros i torna-ho a provar.</translation> <translation id="6179832488876878285">Pots fixar els teus fitxers importants aquí. Obre l'aplicació Fitxers per començar.</translation> +<translation id="6180193585172850042">Botó Enrere</translation> +<translation id="6180651297859206670">Botó Endavant</translation> <translation id="6182592640011875895">Obre l'escriptori</translation> <translation id="6185696379715117369">Re Pàg</translation> <translation id="619335566042889110">Carrega completament ara</translation>
diff --git a/ash/strings/ash_strings_cs.xtb b/ash/strings/ash_strings_cs.xtb index 59b379cd..9ac8623 100644 --- a/ash/strings/ash_strings_cs.xtb +++ b/ash/strings/ash_strings_cs.xtb
@@ -622,6 +622,7 @@ <translation id="3577473026931028326">Došlo k chybě. Zkuste to znovu.</translation> <translation id="3580650856351781466">Stahování řečových souborů</translation> <translation id="3585296979871889131">Zobrazovat nedávné fotky, média, oznámení a aplikace z telefonu</translation> +<translation id="3590441166907930941">Boční tlačítko</translation> <translation id="3593039967545720377">Stisknutím kláves <ph name="SHORTCUT_KEY_NAME" /> + V zobrazíte schránku a najdete její historii. Začněte tím, že zkopírujete položku.</translation> <translation id="3593646411856133110">Přejetím nahoru a podržením zobrazíte otevřené aplikace</translation> <translation id="3595596368722241419">Baterie je nabitá</translation> @@ -1034,6 +1035,7 @@ <translation id="5163434717504750796">Stav baterie: <ph name="BATTERY_HEALTH_PERCENTAGE" /> % | Počet cyklů <ph name="CYCLE_COUNT" /></translation> <translation id="5166007464919321363">Uložit plochu jako šablonu</translation> <translation id="5168181903108465623">Dostupná zařízení pro streamování obsahu</translation> +<translation id="5168753792967365150">Upravit v Úkolech Google</translation> <translation id="5170568018924773124">Zobrazit ve složce</translation> <translation id="5176318573511391780">Zaznamenat část obrazovky</translation> <translation id="5187627942836026988">Zobrazit podrobnosti o hotspotu. Administrátor hotspot zakázal.</translation> @@ -1303,6 +1305,8 @@ <translation id="6168622430237609329">Vaše nainstalované aplikace</translation> <translation id="6173151025443907148">Když je povolen prohlížeč Lacros, přihlášení druhého uživatele není podporováno. Použijte druhý profil v prohlížeči Lacros nebo Lacros zakažte.</translation> <translation id="6179832488876878285">Sem si můžete připnout důležité soubory. Začněte tím, že otevřete aplikaci Soubory.</translation> +<translation id="6180193585172850042">Tlačítko Zpět</translation> +<translation id="6180651297859206670">Tlačítko Vpřed</translation> <translation id="6182592640011875895">Otevřít plochu</translation> <translation id="6185696379715117369">O stránku nahoru</translation> <translation id="619335566042889110">Plně nabít</translation>
diff --git a/ash/strings/ash_strings_en-GB.xtb b/ash/strings/ash_strings_en-GB.xtb index 9c69801..d20e060 100644 --- a/ash/strings/ash_strings_en-GB.xtb +++ b/ash/strings/ash_strings_en-GB.xtb
@@ -622,6 +622,7 @@ <translation id="3577473026931028326">Something went wrong. Try again.</translation> <translation id="3580650856351781466">Downloading speech files</translation> <translation id="3585296979871889131">View your phone's recent photos, media, notifications and apps</translation> +<translation id="3590441166907930941">Side button</translation> <translation id="3593039967545720377">Access your clipboard history by pressing <ph name="SHORTCUT_KEY_NAME" /> + V to view your clipboard. Copy an item to get started.</translation> <translation id="3593646411856133110">Swipe up and hold to see open apps</translation> <translation id="3595596368722241419">Battery full</translation> @@ -1034,6 +1035,7 @@ <translation id="5163434717504750796">Battery health <ph name="BATTERY_HEALTH_PERCENTAGE" />% | Cycle count <ph name="CYCLE_COUNT" /></translation> <translation id="5166007464919321363">Save desk as a template</translation> <translation id="5168181903108465623">Cast devices available</translation> +<translation id="5168753792967365150">Edit in Google Tasks</translation> <translation id="5170568018924773124">Show in folder</translation> <translation id="5176318573511391780">Record partial screen</translation> <translation id="5187627942836026988">Show hotspot details. Hotspot is blocked by your administrator.</translation> @@ -1303,6 +1305,8 @@ <translation id="6168622430237609329">Your installed apps</translation> <translation id="6173151025443907148">Signing in a second user is not supported if Lacros is enabled. Please use a second browser profile in Lacros instead, or disable Lacros and try again.</translation> <translation id="6179832488876878285">You can pin your important files here. Open Files app to get started.</translation> +<translation id="6180193585172850042">Back button</translation> +<translation id="6180651297859206670">Forward button</translation> <translation id="6182592640011875895">Open desk</translation> <translation id="6185696379715117369">Page up</translation> <translation id="619335566042889110">Fully charge now</translation>
diff --git a/ash/strings/ash_strings_fr.xtb b/ash/strings/ash_strings_fr.xtb index 126294e..e7995270 100644 --- a/ash/strings/ash_strings_fr.xtb +++ b/ash/strings/ash_strings_fr.xtb
@@ -622,6 +622,7 @@ <translation id="3577473026931028326">Un problème est survenu. Réessayez.</translation> <translation id="3580650856351781466">Téléchargement des fichiers vocaux…</translation> <translation id="3585296979871889131">Afficher les photos, notifications, applis et contenus multimédias de votre téléphone</translation> +<translation id="3590441166907930941">Bouton latéral</translation> <translation id="3593039967545720377">Appuyez sur <ph name="SHORTCUT_KEY_NAME" />+V pour afficher le presse-papiers et son historique. Copiez un élément pour commencer.</translation> <translation id="3593646411856133110">Balayez l'écran vers le haut et appuyez de manière prolongée pour afficher les applications ouvertes</translation> <translation id="3595596368722241419">Batterie pleine</translation> @@ -1034,6 +1035,7 @@ <translation id="5163434717504750796">Batterie à <ph name="BATTERY_HEALTH_PERCENTAGE" /> % | <ph name="CYCLE_COUNT" /> cycles</translation> <translation id="5166007464919321363">Enregistrer le bureau comme modèle</translation> <translation id="5168181903108465623">Appareils Cast disponibles</translation> +<translation id="5168753792967365150">Modifier dans Google Tasks</translation> <translation id="5170568018924773124">Afficher le dossier</translation> <translation id="5176318573511391780">Enregistrer une partie de l'écran</translation> <translation id="5187627942836026988">Voir les détails du point d'accès. Celui-ci est bloqué par votre administrateur.</translation> @@ -1303,6 +1305,8 @@ <translation id="6168622430237609329">Vos applis installées</translation> <translation id="6173151025443907148">Un second utilisateur ne peut pas se connecter si Lacros est activé. Veuillez utiliser un second profil de navigateur dans Lacros ou désactiver ce dernier, puis réessayer.</translation> <translation id="6179832488876878285">Vous pouvez épingler vos fichiers importants ici. Pour commencer, ouvrez l'application Fichiers.</translation> +<translation id="6180193585172850042">Bouton Retour</translation> +<translation id="6180651297859206670">Bouton Suivant</translation> <translation id="6182592640011875895">Ouvrir le bureau</translation> <translation id="6185696379715117369">Accéder à la page précédente</translation> <translation id="619335566042889110">Recharger complètement</translation>
diff --git a/ash/strings/ash_strings_it.xtb b/ash/strings/ash_strings_it.xtb index 5251366e..d80817c 100644 --- a/ash/strings/ash_strings_it.xtb +++ b/ash/strings/ash_strings_it.xtb
@@ -622,6 +622,7 @@ <translation id="3577473026931028326">Si è verificato un errore. Riprova.</translation> <translation id="3580650856351781466">Download dei file di contenuti vocali in corso…</translation> <translation id="3585296979871889131">Visualizza app, notifiche, contenuti multimediali e foto recenti dello smartphone</translation> +<translation id="3590441166907930941">Tasto laterale</translation> <translation id="3593039967545720377">Accedi alla cronologia degli appunti premendo <ph name="SHORTCUT_KEY_NAME" /> + V per visualizzare gli appunti. Copia un elemento per iniziare.</translation> <translation id="3593646411856133110">Scorri verso l'alto e tieni premuto per vedere le app aperte</translation> <translation id="3595596368722241419">Batteria carica</translation> @@ -1031,6 +1032,7 @@ <translation id="5163434717504750796">Integrità della batteria <ph name="BATTERY_HEALTH_PERCENTAGE" />% | Numero di cicli <ph name="CYCLE_COUNT" /></translation> <translation id="5166007464919321363">Salva scrivania come modello</translation> <translation id="5168181903108465623">Dispositivi di trasmissione disponibili</translation> +<translation id="5168753792967365150">Modifica in Google Tasks</translation> <translation id="5170568018924773124">Mostra nella cartella</translation> <translation id="5176318573511391780">Registra schermo parziale</translation> <translation id="5187627942836026988">Mostra i dettagli relativi all'hotspot. L'hotspot è stato bloccato dall'amministratore.</translation> @@ -1300,6 +1302,8 @@ <translation id="6168622430237609329">Le app che hai installato</translation> <translation id="6173151025443907148">L'accesso di un secondo utente non è supportato se Lacros è attivo. Usa un secondo profilo del browser in Lacros oppure disattiva Lacros e riprova.</translation> <translation id="6179832488876878285">Puoi bloccare qui i tuoi file importanti. Apri l'app File per iniziare.</translation> +<translation id="6180193585172850042">Tasto Indietro</translation> +<translation id="6180651297859206670">Tasto Avanti</translation> <translation id="6182592640011875895">Apri scrivania</translation> <translation id="6185696379715117369">Pagina su</translation> <translation id="619335566042889110">Ricarica completamente adesso</translation>
diff --git a/ash/strings/ash_strings_ja.xtb b/ash/strings/ash_strings_ja.xtb index 64133fa..a1d24e1 100644 --- a/ash/strings/ash_strings_ja.xtb +++ b/ash/strings/ash_strings_ja.xtb
@@ -622,6 +622,7 @@ <translation id="3577473026931028326">エラーが発生しました。もう一度お試しください。</translation> <translation id="3580650856351781466">音声認識ファイルをダウンロードしています</translation> <translation id="3585296979871889131">スマートフォンの写真、メディア、通知、アプリを表示する</translation> +<translation id="3590441166907930941">サイドボタン</translation> <translation id="3593039967545720377"><ph name="SHORTCUT_KEY_NAME" /> + V キーを押してクリップボードを表示すると、クリップボードにコピーしたデータの履歴にアクセスできます。開始するにはアイテムをコピーします。</translation> <translation id="3593646411856133110">開いているアプリを表示するには、上にスワイプして長押ししてください</translation> <translation id="3595596368722241419">バッテリー残量: フル</translation> @@ -1034,6 +1035,7 @@ <translation id="5163434717504750796">バッテリーの状態 <ph name="BATTERY_HEALTH_PERCENTAGE" />% | サイクル数 <ph name="CYCLE_COUNT" /></translation> <translation id="5166007464919321363">デスクをテンプレートとして保存</translation> <translation id="5168181903108465623">キャスト デバイスを利用できます</translation> +<translation id="5168753792967365150">Google ToDo リストで編集</translation> <translation id="5170568018924773124">フォルダを開く</translation> <translation id="5176318573511391780">画面の一部を録画</translation> <translation id="5187627942836026988">アクセス ポイントの詳細を表示します。アクセス ポイントは管理者によってブロックされています。</translation> @@ -1303,6 +1305,8 @@ <translation id="6168622430237609329">インストール済みアプリ</translation> <translation id="6173151025443907148">Lacros が有効になっている場合は、2 つ目のユーザーにログインできません。代わりに Lacros で 2 つ目のブラウザ プロフィールを使用するか、Lacros を無効にしてログインしなおしてください。</translation> <translation id="6179832488876878285">重要なファイルをここに固定できます。この機能を使用するには、ファイルアプリを開いてください。</translation> +<translation id="6180193585172850042">[戻る] ボタン</translation> +<translation id="6180651297859206670">[進む] ボタン</translation> <translation id="6182592640011875895">デスクを開く</translation> <translation id="6185696379715117369">ページ内を上に移動</translation> <translation id="619335566042889110">今すぐ完全に充電</translation>
diff --git a/ash/strings/ash_strings_ka.xtb b/ash/strings/ash_strings_ka.xtb index 56d2817..96bba00 100644 --- a/ash/strings/ash_strings_ka.xtb +++ b/ash/strings/ash_strings_ka.xtb
@@ -622,6 +622,7 @@ <translation id="3577473026931028326">წარმოიქმნა შეფერხება. ცადეთ ხელახლა.</translation> <translation id="3580650856351781466">მიმდინარეობს მეტყველების ფაილების ჩამოტვირთვა</translation> <translation id="3585296979871889131">თქვენი ტელეფონის ბოლოდროინდელი ფოტოების, მედიაფაილების, შეტყობინებებისა და აპების ნახვა</translation> +<translation id="3590441166907930941">გვერდითა ღილაკი</translation> <translation id="3593039967545720377">თქვენი გაცვლის ბუფერის ისტორიაზე წვდომისთვის და გაცვლის ბუფერის სანახავად დააჭირეთ კლავიშთა კომბინაციას <ph name="SHORTCUT_KEY_NAME" /> + V. დასაწყებად დააკოპირეთ ერთეული.</translation> <translation id="3593646411856133110">გახსნილი აპების სანახავად გადაფურცლეთ ზემოთ და არ აუშვათ</translation> <translation id="3595596368722241419">ბატარეა სავსეა</translation> @@ -1034,6 +1035,7 @@ <translation id="5163434717504750796">ბატარეის მდგომარეობა: <ph name="BATTERY_HEALTH_PERCENTAGE" />% | ციკლების რაოდენობა: <ph name="CYCLE_COUNT" /></translation> <translation id="5166007464919321363">სამუშაო მაგიდის შენახვა შაბლონად</translation> <translation id="5168181903108465623">ხელმისაწვდომია გადაცემის მოწყობილობები</translation> +<translation id="5168753792967365150">Google Tasks-ში რედაქტირება</translation> <translation id="5170568018924773124">საქაღალდეში ჩვენება</translation> <translation id="5176318573511391780">ეკრანის ნაწილის ჩაწერა</translation> <translation id="5187627942836026988">უსადენო ქსელის დეტალების ნახვა. უსადენო ქსელი დაბლოკილია თქვენი ადმინისტრატორის მიერ.</translation> @@ -1303,6 +1305,8 @@ <translation id="6168622430237609329">თქვენი დაინსტალირებული აპები</translation> <translation id="6173151025443907148">მეორე მომხმარებლის შესვლა მხარდაუჭერელია, როცა Lacros ჩართულია. გამოიყენეთ ბრაუზერის მეორე პროფილი Lacros-ში, ან გათიშეთ Lacros და ცადეთ ხელახლა.</translation> <translation id="6179832488876878285">აქ შეგიძლიათ მნიშვნელოვანი ფაილების ჩამაგრება. დასაწყებად გახსენით ფაილების აპი.</translation> +<translation id="6180193585172850042">ღილაკი „უკან“</translation> +<translation id="6180651297859206670">ღილაკი „წინ“</translation> <translation id="6182592640011875895">სამუშაო მაგიდის გახსნა</translation> <translation id="6185696379715117369">ერთი გვერდით ზემოთ</translation> <translation id="619335566042889110">სრულად დატენა ახლავე</translation>
diff --git a/ash/strings/ash_strings_ms.xtb b/ash/strings/ash_strings_ms.xtb index 420afc34..08f12d0 100644 --- a/ash/strings/ash_strings_ms.xtb +++ b/ash/strings/ash_strings_ms.xtb
@@ -622,6 +622,7 @@ <translation id="3577473026931028326">Kesilapan telah berlaku. Cuba lagi.</translation> <translation id="3580650856351781466">Memuat turun fail pertuturan</translation> <translation id="3585296979871889131">Lihat foto, media, pemberitahuan dan apl terbaharu telefon anda</translation> +<translation id="3590441166907930941">Butang Sisi</translation> <translation id="3593039967545720377">Akses sejarah papan keratan anda dengan menekan <ph name="SHORTCUT_KEY_NAME" /> + V untuk melihat papan keratan anda. Salin item untuk bermula.</translation> <translation id="3593646411856133110">Leret ke atas dan tahan untuk melihat apl yang terbuka</translation> <translation id="3595596368722241419">Bateri penuh</translation> @@ -1034,6 +1035,7 @@ <translation id="5163434717504750796">Kesihatan bateri <ph name="BATTERY_HEALTH_PERCENTAGE" />% | Kiraan kitaran <ph name="CYCLE_COUNT" /></translation> <translation id="5166007464919321363">Simpan meja sebagai templat</translation> <translation id="5168181903108465623">Peranti Cast tersedia</translation> +<translation id="5168753792967365150">Edit dalam Google Tasks</translation> <translation id="5170568018924773124">Paparkan dalam folder</translation> <translation id="5176318573511391780">Rakam skrin separa</translation> <translation id="5187627942836026988">Tunjukkan butiran tempat liputan. Tempat liputan disekat oleh pentadbir anda.</translation> @@ -1303,6 +1305,8 @@ <translation id="6168622430237609329">Apl anda yang dipasang</translation> <translation id="6173151025443907148">Log masuk pengguna kedua tidak disokong jika Lacros didayakan. Sila gunakan profil penyemak imbas kedua dalam Lacros atau lumpuhkan Lacros dan cuba lagi.</translation> <translation id="6179832488876878285">Anda boleh menyematkan fail penting anda di sini. Buka apl Files untuk bermula.</translation> +<translation id="6180193585172850042">Butang Belakang</translation> +<translation id="6180651297859206670">Butang Hadapan</translation> <translation id="6182592640011875895">Buka meja</translation> <translation id="6185696379715117369">Halaman atas</translation> <translation id="619335566042889110">Caskan penuh sekarang</translation>
diff --git a/ash/strings/ash_strings_nl.xtb b/ash/strings/ash_strings_nl.xtb index 677691c1..acd31eb 100644 --- a/ash/strings/ash_strings_nl.xtb +++ b/ash/strings/ash_strings_nl.xtb
@@ -622,6 +622,7 @@ <translation id="3577473026931028326">Er is iets misgegaan. Probeer het opnieuw.</translation> <translation id="3580650856351781466">Spraakbestanden downloaden</translation> <translation id="3585296979871889131">Recente foto's, media, meldingen en apps van je telefoon bekijken</translation> +<translation id="3590441166907930941">Zijknop</translation> <translation id="3593039967545720377">Je opent je klembordgeschiedenis door op <ph name="SHORTCUT_KEY_NAME" /> + V te drukken. Daarna kun je kopiëren wat je nodig hebt.</translation> <translation id="3593646411856133110">Swipe omhoog en houd vast om apps te openen</translation> <translation id="3595596368722241419">Batterij is vol</translation> @@ -1034,6 +1035,7 @@ <translation id="5163434717504750796">Batterijconditie <ph name="BATTERY_HEALTH_PERCENTAGE" />% | Aantal cycli <ph name="CYCLE_COUNT" /></translation> <translation id="5166007464919321363">Bureau opslaan als template</translation> <translation id="5168181903108465623">Cast-apparaten beschikbaar</translation> +<translation id="5168753792967365150">Bewerken in Google Tasks</translation> <translation id="5170568018924773124">Tonen in map</translation> <translation id="5176318573511391780">Opname van gedeeltelijk scherm maken</translation> <translation id="5187627942836026988">Toon de hotspotdetails. Hotspot wordt geblokkeerd door je beheerder.</translation> @@ -1303,6 +1305,8 @@ <translation id="6168622430237609329">Je geïnstalleerde apps</translation> <translation id="6173151025443907148">Een tweede gebruiker inloggen wordt niet ondersteund als Lacros aanstaat. Gebruik in plaats daarvan een tweede browserprofiel in Lacros of zet Lacros uit en probeer het opnieuw.</translation> <translation id="6179832488876878285">Je kunt hier je belangrijke bestanden vastzetten. Open de app Bestanden om aan de slag te gaan.</translation> +<translation id="6180193585172850042">Terugknop</translation> +<translation id="6180651297859206670">Vooruitknop</translation> <translation id="6182592640011875895">Bureau openen</translation> <translation id="6185696379715117369">Page Up</translation> <translation id="619335566042889110">Nu volledig opladen</translation>
diff --git a/ash/strings/ash_strings_pa.xtb b/ash/strings/ash_strings_pa.xtb index 7f4690dd..536fa7a 100644 --- a/ash/strings/ash_strings_pa.xtb +++ b/ash/strings/ash_strings_pa.xtb
@@ -622,6 +622,7 @@ <translation id="3577473026931028326">ਕੋਈ ਗੜਬੜ ਹੋ ਗਈ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> <translation id="3580650856351781466">ਬੋਲੀ ਵਾਲੀਆਂ ਫ਼ਾਈਲਾਂ ਨੂੰ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ</translation> <translation id="3585296979871889131">ਆਪਣੇ ਫ਼ੋਨ ਦੀਆਂ ਹਾਲੀਆ ਫ਼ੋਟੋਆਂ, ਮੀਡੀਆ, ਸੂਚਨਾਵਾਂ ਅਤੇ ਐਪਾਂ ਨੂੰ ਦੇਖੋ</translation> +<translation id="3590441166907930941">ਸਾਈਡ ਬਟਨ</translation> <translation id="3593039967545720377">ਆਪਣਾ ਕਲਿੱਪਬੋਰਡ ਦੇਖਣ ਲਈ <ph name="SHORTCUT_KEY_NAME" /> + V ਦਬਾ ਕੇ ਆਪਣੇ ਕਲਿੱਪਬੋਰਡ ਦੇ ਇਤਿਹਾਸ ਤੱਕ ਪਹੁੰਚ ਕਰੋ। ਸ਼ੁਰੂਆਤ ਕਰਨ ਲਈ ਕੋਈ ਆਈਟਮ ਕਾਪੀ ਕਰੋ।</translation> <translation id="3593646411856133110">ਖੁੱਲ੍ਹੀਆਂ ਐਪਾਂ ਦੇਖਣ ਲਈ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰਕੇ ਦਬਾਈ ਰੱਖੋ</translation> <translation id="3595596368722241419">ਬੈਟਰੀ ਪੂਰੀ</translation> @@ -1035,6 +1036,7 @@ <translation id="5163434717504750796">ਬੈਟਰੀ ਦੀ ਸਥਿਤੀ <ph name="BATTERY_HEALTH_PERCENTAGE" />% | ਸਾਈਕਲ ਗਿਣਤੀ <ph name="CYCLE_COUNT" /></translation> <translation id="5166007464919321363">ਡੈਸਕ ਨੂੰ ਟੈਮਪਲੇਟ ਵਜੋਂ ਰੱਖਿਅਤ ਕਰੋ</translation> <translation id="5168181903108465623">ਕਾਸਟ ਡਿਵਾਈਸਾਂ ਉਪਲਬਧ</translation> +<translation id="5168753792967365150">Google Tasks ਵਿੱਚ ਸੰਪਾਦਨ ਕਰੋ</translation> <translation id="5170568018924773124">ਫੋਲਡਰ ਵਿੱਚ ਦਿਖਾਓ</translation> <translation id="5176318573511391780">ਅੰਸ਼ਕ ਸਕ੍ਰੀਨ ਨੂੰ ਰਿਕਾਰਡ ਕਰੋ</translation> <translation id="5187627942836026988">ਹੌਟਸਪੌਟ ਦੇ ਵੇਰਵੇ ਦੇਖੋ। ਹੌਟਸਪੌਟ ਨੂੰ ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਬਲਾਕ ਕੀਤਾ ਗਿਆ ਹੈ।</translation> @@ -1304,6 +1306,8 @@ <translation id="6168622430237609329">ਤੁਹਾਡੀਆਂ ਸਥਾਪਤ ਕੀਤੀਆਂ ਐਪਾਂ</translation> <translation id="6173151025443907148">Lacros ਦੇ ਚਾਲੂ ਹੋਣ 'ਤੇ ਦੂਜੇ ਵਰਤੋਂਕਾਰ ਦੇ ਲਈ ਸਾਈਨ-ਇਨ ਕਰਨ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ। ਕਿਰਪਾ ਕਰਕੇ ਇਸਦੀ ਬਜਾਏ Lacros ਵਿੱਚ ਦੂਜੇ ਬ੍ਰਾਊਜ਼ਰ ਪ੍ਰੋਫਾਈਲ ਦੀ ਵਰਤੋਂ ਕਰੋ ਜਾਂ Lacros ਨੂੰ ਬੰਦ ਕਰ ਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> <translation id="6179832488876878285">ਇੱਥੇ ਤੁਸੀਂ ਆਪਣੀਆਂ ਮਹੱਤਵਪੂਰਨ ਫ਼ਾਈਲਾਂ ਨੂੰ ਪਿੰਨ ਕਰ ਸਕਦੇ ਹੋ। ਸ਼ੁਰੂਆਤ ਕਰਨ ਲਈ Files ਐਪ ਨੂੰ ਖੋਲ੍ਹੋ।</translation> +<translation id="6180193585172850042">'ਪਿੱਛੇ' ਬਟਨ</translation> +<translation id="6180651297859206670">'ਅੱਗੇ ਭੇਜੋ' ਬਟਨ</translation> <translation id="6182592640011875895">ਡੈਸਕ ਖੋਲ੍ਹੋ</translation> <translation id="6185696379715117369">ਸਫ਼ਾ ਉੱਪਰ</translation> <translation id="619335566042889110">ਹੁਣ ਪੂਰੀ ਤਰ੍ਹਾਂ ਚਾਰਜ ਕਰੋ</translation>
diff --git a/ash/strings/ash_strings_pl.xtb b/ash/strings/ash_strings_pl.xtb index af1b515..fd1d0ce 100644 --- a/ash/strings/ash_strings_pl.xtb +++ b/ash/strings/ash_strings_pl.xtb
@@ -622,6 +622,7 @@ <translation id="3577473026931028326">Coś poszło nie tak. Spróbuj ponownie.</translation> <translation id="3580650856351781466">Pobieram pliki z mową</translation> <translation id="3585296979871889131">Wyświetlaj najnowsze zdjęcia, pliki multimedialne, powiadomienia i aplikacje z telefonu</translation> +<translation id="3590441166907930941">Przycisk boczny</translation> <translation id="3593039967545720377">Aby wyświetlić schowek i jego historię, naciśnij <ph name="SHORTCUT_KEY_NAME" /> + V. Najpierw skopiuj element.</translation> <translation id="3593646411856133110">Aby zobaczyć otwarte aplikacje, przesuń palcem w górę i przytrzymaj</translation> <translation id="3595596368722241419">Bateria naładowana</translation> @@ -1034,6 +1035,7 @@ <translation id="5163434717504750796">Kondycja baterii <ph name="BATTERY_HEALTH_PERCENTAGE" />% | Liczba cykli: <ph name="CYCLE_COUNT" /></translation> <translation id="5166007464919321363">Zapisz biurko jako szablon</translation> <translation id="5168181903108465623">Dostępne są urządzenia przesyłające</translation> +<translation id="5168753792967365150">Edytuj w Liście zadań Google</translation> <translation id="5170568018924773124">Pokaż w folderze</translation> <translation id="5176318573511391780">Nagraj fragment ekranu</translation> <translation id="5187627942836026988">Pokaż szczegóły hotspota. Jest on zablokowany przez administratora.</translation> @@ -1303,6 +1305,8 @@ <translation id="6168622430237609329">Twoje zainstalowane aplikacje</translation> <translation id="6173151025443907148">Logowanie drugiego użytkownika nie jest obsługiwane, jeśli jest włączona aplikacja Lacros. Użyj 2 profilu przeglądarki w Lacros lub zamknij Lacros i spróbuj ponownie.</translation> <translation id="6179832488876878285">Tutaj możesz przypiąć ważne pliki. Aby rozpocząć, otwórz aplikację Pliki.</translation> +<translation id="6180193585172850042">Przycisk Wstecz</translation> +<translation id="6180651297859206670">Przycisk Dalej</translation> <translation id="6182592640011875895">Otwórz biurko</translation> <translation id="6185696379715117369">Strona do góry</translation> <translation id="619335566042889110">Naładuj do pełna teraz</translation>
diff --git a/ash/strings/ash_strings_sk.xtb b/ash/strings/ash_strings_sk.xtb index 2c143ad..4cfbafd 100644 --- a/ash/strings/ash_strings_sk.xtb +++ b/ash/strings/ash_strings_sk.xtb
@@ -622,6 +622,7 @@ <translation id="3577473026931028326">Vyskytol sa problém. Skúste to znova.</translation> <translation id="3580650856351781466">Sťahujú sa súbory s balíkmi reči</translation> <translation id="3585296979871889131">Zobrazujte si nedávne fotky, médiá, upozornenia a aplikácie z telefónu</translation> +<translation id="3590441166907930941">Bočné tlačidlo</translation> <translation id="3593039967545720377">Do histórie schránky môžete prejsť po zobrazení schránky stlačením klávesovej skratky <ph name="SHORTCUT_KEY_NAME" /> + V. Začnite skopírovaním položky.</translation> <translation id="3593646411856133110">Otvorené aplikácie zobrazíte potiahnutím nahor a pridržaním</translation> <translation id="3595596368722241419">Batéria je nabitá</translation> @@ -1034,6 +1035,7 @@ <translation id="5163434717504750796">Stav batérie: <ph name="BATTERY_HEALTH_PERCENTAGE" /> % | Počet cyklov: <ph name="CYCLE_COUNT" /></translation> <translation id="5166007464919321363">Uložiť plochu ako šablónu</translation> <translation id="5168181903108465623">Dostupné zariadenia na prenos</translation> +<translation id="5168753792967365150">Upraviť v Úlohách Google</translation> <translation id="5170568018924773124">Zobraziť v priečinku</translation> <translation id="5176318573511391780">Nahrať časť obrazovky</translation> <translation id="5187627942836026988">Zobraziť podrobnosti o hotspote Hotspot zablokoval váš správca.</translation> @@ -1303,6 +1305,8 @@ <translation id="6168622430237609329">Vaše nainštalované aplikácie</translation> <translation id="6173151025443907148">Prihlásenie druhého používateľa nie je podporované, keď je spustený prehliadač Lacros. Použite radšej druhý profil v prehliadači Lacros alebo Lacros deaktivujte a skúste to znova.</translation> <translation id="6179832488876878285">Tu si môžete pripnúť dôležité súbory. Začnite otvorením aplikácie Súbory.</translation> +<translation id="6180193585172850042">Tlačidlo Späť</translation> +<translation id="6180651297859206670">Tlačidlo Ďalej</translation> <translation id="6182592640011875895">Otvoriť plochu</translation> <translation id="6185696379715117369">Posunúť o stránku nahor</translation> <translation id="619335566042889110">Úplne nabiť</translation>
diff --git a/ash/strings/ash_strings_th.xtb b/ash/strings/ash_strings_th.xtb index 21a3d8e..e659f3d 100644 --- a/ash/strings/ash_strings_th.xtb +++ b/ash/strings/ash_strings_th.xtb
@@ -622,6 +622,7 @@ <translation id="3577473026931028326">เกิดข้อผิดพลาด ลองใหม่</translation> <translation id="3580650856351781466">กำลังดาวน์โหลดไฟล์คำพูด</translation> <translation id="3585296979871889131">ดูรูปภาพ สื่อ การแจ้งเตือน และแอปล่าสุดของโทรศัพท์</translation> +<translation id="3590441166907930941">ปุ่มด้านข้าง</translation> <translation id="3593039967545720377">เข้าถึงประวัติคลิปบอร์ดโดยกด <ph name="SHORTCUT_KEY_NAME" /> + V เพื่อดูคลิปบอร์ด คัดลอกรายการเพื่อเริ่มต้นใช้งาน</translation> <translation id="3593646411856133110">เลื่อนขึ้นค้างไว้เพื่อดูแอปที่เปิดอยู่</translation> <translation id="3595596368722241419">แบตเตอรี่เต็ม</translation> @@ -1029,6 +1030,7 @@ <translation id="5163434717504750796">ประสิทธิภาพของแบตเตอรี่ <ph name="BATTERY_HEALTH_PERCENTAGE" />% | จำนวนรอบ <ph name="CYCLE_COUNT" /></translation> <translation id="5166007464919321363">บันทึกเดสก์เป็นเทมเพลต</translation> <translation id="5168181903108465623">เครื่องส่งพร้อมใช้งาน</translation> +<translation id="5168753792967365150">แก้ไขใน Google Tasks</translation> <translation id="5170568018924773124">แสดงในโฟลเดอร์</translation> <translation id="5176318573511391780">บันทึกหน้าจอบางส่วน</translation> <translation id="5187627942836026988">แสดงรายละเอียดฮอตสปอต ผู้ดูแลระบบบล็อกฮอตสปอต</translation> @@ -1298,6 +1300,8 @@ <translation id="6168622430237609329">แอปที่ติดตั้งของคุณ</translation> <translation id="6173151025443907148">ระบบไม่รองรับการลงชื่อเข้าใช้ของผู้ใช้คนที่ 2 หากเปิดใช้ Lacros โปรดใช้โปรไฟล์ที่ 2 ของเบราว์เซอร์ใน Lacros แทน หรือปิดใช้ Lacros แล้วลองอีกครั้ง</translation> <translation id="6179832488876878285">คุณปักหมุดไฟล์สำคัญๆ ไว้ที่นี่ได้ เปิดแอป Files เพื่อเริ่มต้นใช้งาน</translation> +<translation id="6180193585172850042">ปุ่มย้อนกลับ</translation> +<translation id="6180651297859206670">ปุ่มไปข้างหน้า</translation> <translation id="6182592640011875895">เปิดเดสก์</translation> <translation id="6185696379715117369">เลื่อนหน้าขึ้น</translation> <translation id="619335566042889110">ชาร์จจนเต็มเลย</translation>
diff --git a/ash/webui/common/mojom/sea_pen.mojom b/ash/webui/common/mojom/sea_pen.mojom index dd6f20b..98b8a48 100644 --- a/ash/webui/common/mojom/sea_pen.mojom +++ b/ash/webui/common/mojom/sea_pen.mojom
@@ -747,4 +747,10 @@ // Pops up a feedback dialog when user clicks feedback buttons. OpenFeedbackDialog(SeaPenFeedbackMetadata metadata); + + // Determines whether to show the reviewing Sea Pen terms of service dialog. + ShouldShowSeaPenTermsOfServiceDialog() => (bool should_show_dialog); + + // Called when the user accepts the terms of service for Sea Pen wallpaper. + HandleSeaPenTermsOfServiceAccepted(); };
diff --git a/ash/webui/common/resources/BUILD.gn b/ash/webui/common/resources/BUILD.gn index d162735..bcc9add 100644 --- a/ash/webui/common/resources/BUILD.gn +++ b/ash/webui/common/resources/BUILD.gn
@@ -148,6 +148,7 @@ "sea_pen/sea_pen_router_element.ts", "sea_pen/sea_pen_template_query_element.ts", "sea_pen/sea_pen_templates_element.ts", + "sea_pen/sea_pen_terms_of_service_dialog_element.ts", "sea_pen/surface_effects/sparkle_placeholder.ts", "shortcut_input_ui/shortcut_input_key.ts", "shortcut_input_ui/shortcut_input.ts", @@ -533,6 +534,7 @@ "sea_pen/sea_pen_router_element.html.js", "sea_pen/sea_pen_template_query_element.html.js", "sea_pen/sea_pen_templates_element.html.js", + "sea_pen/sea_pen_terms_of_service_dialog_element.html.js", "sea_pen/surface_effects/sparkle_placeholder.html.js", "shortcut_input_ui/shortcut_input_key.html.js", "shortcut_input_ui/icons.html.js",
diff --git a/ash/webui/common/resources/multidevice_setup/multidevice_setup.d.ts b/ash/webui/common/resources/multidevice_setup/multidevice_setup.d.ts index 52db2d9e..08c0dcc 100644 --- a/ash/webui/common/resources/multidevice_setup/multidevice_setup.d.ts +++ b/ash/webui/common/resources/multidevice_setup/multidevice_setup.d.ts
@@ -9,10 +9,12 @@ import {PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js'; -export class MultiDeviceSetupElement extends PolymerElement {} +export class MultiDeviceSetup extends PolymerElement { + updateLocalizedContent(): void; +} declare global { interface HTMLElementTagNameMap { - 'multidevice-setup': MultiDeviceSetupElement; + 'multidevice-setup': MultiDeviceSetup; } }
diff --git a/ash/webui/common/resources/multidevice_setup/multidevice_setup.js b/ash/webui/common/resources/multidevice_setup/multidevice_setup.js index f507f75..bc02ecab 100644 --- a/ash/webui/common/resources/multidevice_setup/multidevice_setup.js +++ b/ash/webui/common/resources/multidevice_setup/multidevice_setup.js
@@ -28,7 +28,7 @@ START: 'start-setup-page', }; -const MultiDeviceSetup = Polymer({ +export const MultiDeviceSetup = Polymer({ _template: getTemplate(), is: 'multidevice-setup',
diff --git a/ash/webui/common/resources/sea_pen/sea_pen_actions.ts b/ash/webui/common/resources/sea_pen/sea_pen_actions.ts index cdb9a2da..f811677 100644 --- a/ash/webui/common/resources/sea_pen/sea_pen_actions.ts +++ b/ash/webui/common/resources/sea_pen/sea_pen_actions.ts
@@ -2,11 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import {MantaStatusCode, SeaPenQuery, SeaPenThumbnail} from './sea_pen.mojom-webui.js'; +import {assert} from 'chrome://resources/js/assert.js'; import {Action} from 'chrome://resources/js/store.js'; import {FilePath} from 'chrome://resources/mojo/mojo/public/mojom/base/file_path.mojom-webui.js'; import {RecentSeaPenData} from './constants.js'; +import {MantaStatusCode, SeaPenQuery, SeaPenThumbnail} from './sea_pen.mojom-webui.js'; /** * @fileoverview defines the actions to change SeaPen state. @@ -28,6 +29,8 @@ SET_RECENT_SEA_PEN_IMAGES = 'set_recent_sea_pen_images', SET_RECENT_SEA_PEN_IMAGE_DATA = 'set_recent_sea_pen_image_data', SET_SELECTED_RECENT_SEA_PEN_IMAGE = 'set_selected_recent_sea_pen_image', + SET_SHOULD_SHOW_SEA_PEN_TERMS_OF_SERVICE_DIALOG = + 'set_should_show_sea_pen_terms_of_service_dialog', } export type SeaPenActions = BeginSearchSeaPenThumbnailsAction| @@ -37,7 +40,8 @@ SetThumbnailResponseStatusCodeAction|SetSeaPenThumbnailsAction| SetRecentSeaPenImagesAction|SetRecentSeaPenImageDataAction| SetSelectedRecentSeaPenImageAction|BeginSelectSeaPenThumbnailAction| - EndSelectSeaPenThumbnailAction; + EndSelectSeaPenThumbnailAction| + SetShouldShowSeaPenTermsOfServiceDialogAction; export interface BeginSearchSeaPenThumbnailsAction extends Action { name: SeaPenActionName.BEGIN_SEARCH_SEA_PEN_THUMBNAILS; @@ -245,3 +249,21 @@ export function clearSeaPenThumbnailsAction(): ClearSeaPenThumbnailsAction { return {name: SeaPenActionName.CLEAR_SEA_PEN_THUMBNAILS}; } + +export interface SetShouldShowSeaPenTermsOfServiceDialogAction extends Action { + name: SeaPenActionName.SET_SHOULD_SHOW_SEA_PEN_TERMS_OF_SERVICE_DIALOG; + shouldShowDialog: boolean; +} + +/** + * Sets the boolean that determines whether to show the Sea Pen terms of service + * dialog. + */ +export function setShouldShowSeaPenTermsOfServiceDialogAction( + shouldShowDialog: boolean): SetShouldShowSeaPenTermsOfServiceDialogAction { + assert(typeof shouldShowDialog === 'boolean'); + return { + name: SeaPenActionName.SET_SHOULD_SHOW_SEA_PEN_TERMS_OF_SERVICE_DIALOG, + shouldShowDialog, + }; +}
diff --git a/ash/webui/common/resources/sea_pen/sea_pen_controller.ts b/ash/webui/common/resources/sea_pen/sea_pen_controller.ts index 16baaac6..1fbb1708b 100644 --- a/ash/webui/common/resources/sea_pen/sea_pen_controller.ts +++ b/ash/webui/common/resources/sea_pen/sea_pen_controller.ts
@@ -163,3 +163,29 @@ metadata: SeaPenFeedbackMetadata, provider: SeaPenProviderInterface) { provider.openFeedbackDialog(metadata); } + +export async function getShouldShowSeaPenTermsOfServiceDialog( + provider: SeaPenProviderInterface, + store: SeaPenStoreInterface): Promise<void> { + const {shouldShowDialog} = + await provider.shouldShowSeaPenTermsOfServiceDialog(); + + // Dispatch action to set the should show dialog boolean. + store.dispatch(seaPenAction.setShouldShowSeaPenTermsOfServiceDialogAction( + shouldShowDialog)); +} + +export async function acceptSeaPenTermsOfService( + provider: SeaPenProviderInterface, + store: SeaPenStoreInterface): Promise<void> { + if (!store.data.shouldShowSeaPenTermsOfServiceDialog) { + // Do nothing if the terms are already accepted; + return; + } + + await provider.handleSeaPenTermsOfServiceAccepted(); + + // Dispatch action to set the should show dialog boolean. + store.dispatch( + seaPenAction.setShouldShowSeaPenTermsOfServiceDialogAction(false)); +}
diff --git a/ash/webui/common/resources/sea_pen/sea_pen_reducer.ts b/ash/webui/common/resources/sea_pen/sea_pen_reducer.ts index 4f1f1da7..c0a4d9f 100644 --- a/ash/webui/common/resources/sea_pen/sea_pen_reducer.ts +++ b/ash/webui/common/resources/sea_pen/sea_pen_reducer.ts
@@ -196,6 +196,16 @@ } } +function shouldShowSeaPenTermsOfServiceDialogReducer( + state: boolean, action: SeaPenActions): boolean { + switch (action.name) { + case SeaPenActionName.SET_SHOULD_SHOW_SEA_PEN_TERMS_OF_SERVICE_DIALOG: + return action.shouldShowDialog; + default: + return state; + } +} + export function seaPenReducer( state: SeaPenState, action: SeaPenActions): SeaPenState { const newState = { @@ -208,6 +218,9 @@ currentSelected: currentSelectedReducer(state.currentSelected, action), pendingSelected: pendingSelectedReducer(state.pendingSelected, action, state), + shouldShowSeaPenTermsOfServiceDialog: + shouldShowSeaPenTermsOfServiceDialogReducer( + state.shouldShowSeaPenTermsOfServiceDialog, action), }; return newState; }
diff --git a/ash/webui/common/resources/sea_pen/sea_pen_router_element.html b/ash/webui/common/resources/sea_pen/sea_pen_router_element.html index 786afb35..55d164b 100644 --- a/ash/webui/common/resources/sea_pen/sea_pen_router_element.html +++ b/ash/webui/common/resources/sea_pen/sea_pen_router_element.html
@@ -83,6 +83,11 @@ </sea-pen-images> </template> </div> + <template is="dom-if" if="[[showSeaPenTermsOfServiceDialog_]]" restamp> + <sea-pen-terms-of-service-dialog + on-sea-pen-terms-dialog-accept="onAcceptSeaPenTerms_" + </sea-pen-terms-of-service-dialog> + </template> <!-- Prevent the right margin from collapsing when window gets very narrow --> <div class="rightspacertop"></div> <div class="rightspacerbottom"></div>
diff --git a/ash/webui/common/resources/sea_pen/sea_pen_router_element.ts b/ash/webui/common/resources/sea_pen/sea_pen_router_element.ts index 420ae78d..154ddad6 100644 --- a/ash/webui/common/resources/sea_pen/sea_pen_router_element.ts +++ b/ash/webui/common/resources/sea_pen/sea_pen_router_element.ts
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import 'chrome://resources/cr_elements/cr_dialog/cr_dialog.js'; import 'chrome://resources/polymer/v3_0/iron-location/iron-location.js'; import 'chrome://resources/polymer/v3_0/iron-location/iron-query-params.js'; import './sea_pen_images_element.js'; @@ -9,14 +10,17 @@ import './sea_pen_recent_wallpapers_element.js'; import './sea_pen_template_query_element.js'; import './sea_pen_templates_element.js'; +import './sea_pen_terms_of_service_dialog_element.js'; import {assert} from 'chrome://resources/js/assert.js'; -import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {Query} from './constants.js'; import {isSeaPenEnabled, isSeaPenTextInputEnabled} from './load_time_booleans.js'; import {SeaPenTemplateId} from './sea_pen.mojom-webui.js'; +import {acceptSeaPenTermsOfService, getShouldShowSeaPenTermsOfServiceDialog} from './sea_pen_controller.js'; +import {getSeaPenProvider} from './sea_pen_interface_provider.js'; import {getTemplate} from './sea_pen_router_element.html.js'; +import {WithSeaPenStore} from './sea_pen_store.js'; export enum SeaPenPaths { ROOT = '', @@ -29,7 +33,7 @@ let instance: SeaPenRouterElement|null = null; -export class SeaPenRouterElement extends PolymerElement { +export class SeaPenRouterElement extends WithSeaPenStore { static get is() { return 'sea-pen-router'; } @@ -50,6 +54,8 @@ computed: 'computeRelativePath_(path_, basePath)', observer: 'onRelativePathChanged_', }, + + showSeaPenTermsOfServiceDialog_: Boolean, }; } @@ -63,11 +69,17 @@ private query_: string; private queryParams_: SeaPenQueryParams; private relativePath_: string|null; + private showSeaPenTermsOfServiceDialog_: boolean; override connectedCallback() { assert(isSeaPenEnabled(), 'sea pen must be enabled'); super.connectedCallback(); instance = this; + this.watch<SeaPenRouterElement['showSeaPenTermsOfServiceDialog_']>( + 'showSeaPenTermsOfServiceDialog_', + state => state.shouldShowSeaPenTermsOfServiceDialog); + this.updateFromStore(); + this.fetchTermsOfServiceDialogStatus(); } override disconnectedCallback() { @@ -162,6 +174,15 @@ } return parseInt(templateId) as SeaPenTemplateId; } + + private async fetchTermsOfServiceDialogStatus() { + await getShouldShowSeaPenTermsOfServiceDialog( + getSeaPenProvider(), this.getStore()); + } + + private async onAcceptSeaPenTerms_() { + await acceptSeaPenTermsOfService(getSeaPenProvider(), this.getStore()); + } } declare global {
diff --git a/ash/webui/common/resources/sea_pen/sea_pen_state.ts b/ash/webui/common/resources/sea_pen/sea_pen_state.ts index 682f79e..d103b44 100644 --- a/ash/webui/common/resources/sea_pen/sea_pen_state.ts +++ b/ash/webui/common/resources/sea_pen/sea_pen_state.ts
@@ -23,6 +23,7 @@ currentSelected: string|null; pendingSelected: FilePath|SeaPenThumbnail|null; thumbnailResponseStatusCode: MantaStatusCode|null; + shouldShowSeaPenTermsOfServiceDialog: boolean; } export function emptyState(): SeaPenState { @@ -40,5 +41,6 @@ thumbnails: null, currentSelected: null, pendingSelected: null, + shouldShowSeaPenTermsOfServiceDialog: false, }; }
diff --git a/ash/webui/common/resources/sea_pen/sea_pen_terms_of_service_dialog_element.html b/ash/webui/common/resources/sea_pen/sea_pen_terms_of_service_dialog_element.html new file mode 100644 index 0000000..caa35c5e --- /dev/null +++ b/ash/webui/common/resources/sea_pen/sea_pen_terms_of_service_dialog_element.html
@@ -0,0 +1,25 @@ +<style include="common cros-button-style"> + h3, + p { + margin: 0; + } + + cr-button + cr-button { + margin-inline-start: 8px; + } +</style> +<cr-dialog id="dialog" show-on-attach no-cancel> + <h3 slot="title">[[i18n('seaPenWallpaperTermsDialogTitle')]]</h3> + <div slot="body"> + <!-- TODO(b/317235695): add the real content and header image. --> + <span id="termsOfServiceContent" inner-h-t-m-l="[[i18nAdvanced('seaPenWallpaperTermsOfServiceDesc')]]"></span> + </div> + <div slot="button-container"> + <cr-button id="refuse" on-click="onClickRefuse_"> + <span>[[i18n('seaPenWallpaperTermsRefuseButton')]]</span> + </cr-button> + <cr-button id="accept" on-click="onClickAccept_" class="action-button"> + <span>[[i18n('seaPenWallpaperTermsAcceptButton')]]</span> + </cr-button> + </div> +</cr-dialog>
diff --git a/ash/webui/common/resources/sea_pen/sea_pen_terms_of_service_dialog_element.ts b/ash/webui/common/resources/sea_pen/sea_pen_terms_of_service_dialog_element.ts new file mode 100644 index 0000000..4bb7e78 --- /dev/null +++ b/ash/webui/common/resources/sea_pen/sea_pen_terms_of_service_dialog_element.ts
@@ -0,0 +1,83 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/** + * @fileoverview Displays a dialog asking the user to review the Sea Pen + * wallpaper terms before accessing Sea Pen feature. + */ + +import 'chrome://resources/cr_elements/cr_auto_img/cr_auto_img.js'; + +import {CrDialogElement} from 'chrome://resources/cr_elements/cr_dialog/cr_dialog.js'; +import {I18nMixin} from 'chrome://resources/cr_elements/i18n_mixin.js'; +import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; + +import {getTemplate} from './sea_pen_terms_of_service_dialog_element.html.js'; + +export class SeaPenTermsAcceptEvent extends CustomEvent<null> { + static readonly EVENT_NAME = 'sea-pen-terms-dialog-accept'; + + constructor() { + super( + SeaPenTermsAcceptEvent.EVENT_NAME, + { + bubbles: true, + composed: true, + detail: null, + }, + ); + } +} + +export class SeaPenTermsRefuseEvent extends CustomEvent<null> { + static readonly EVENT_NAME = 'sea-pen-terms-dialog-refuse'; + + constructor() { + super( + SeaPenTermsRefuseEvent.EVENT_NAME, + { + bubbles: true, + composed: true, + detail: null, + }, + ); + } +} + +declare global { + interface HTMLElementTagNameMap { + 'sea-pen-wallpaper-terms-dialog': SeaPenTermsOfServiceDialogElement; + } +} + +export interface SeaPenTermsOfServiceDialogElement { + $: {dialog: CrDialogElement}; +} + +export class SeaPenTermsOfServiceDialogElement extends I18nMixin +(PolymerElement) { + static get is() { + return 'sea-pen-terms-of-service-dialog'; + } + + static get template() { + return getTemplate(); + } + + static get properties() { + return {}; + } + + private onClickAccept_() { + this.$.dialog.cancel(); + this.dispatchEvent(new SeaPenTermsAcceptEvent()); + } + + private onClickRefuse_() { + this.dispatchEvent(new SeaPenTermsRefuseEvent()); + } +} + +customElements.define( + SeaPenTermsOfServiceDialogElement.is, SeaPenTermsOfServiceDialogElement);
diff --git a/ash/webui/common/sea_pen_resources.cc b/ash/webui/common/sea_pen_resources.cc index 031d237..fa19bd9 100644 --- a/ash/webui/common/sea_pen_resources.cc +++ b/ash/webui/common/sea_pen_resources.cc
@@ -33,6 +33,14 @@ {"seaPenErrorGeneric", IDS_SEA_PEN_ERROR_GENERIC}, {"seaPenExperimentLabel", IDS_SEA_PEN_EXPERIMENT_LABEL}, {"seaPenThumbnailsLoading", IDS_SEA_PEN_THUMBNAILS_LOADING}, + {"seaPenWallpaperTermsDialogTitle", + IDS_SEA_PEN_WALLPAPER_TERMS_DIALOG_TITLE}, + {"seaPenWallpaperTermsAcceptButton", + IDS_SEA_PEN_WALLPAPER_TERMS_ACCEPT_BUTTON}, + {"seaPenWallpaperTermsRefuseButton", + IDS_SEA_PEN_WALLPAPER_TERMS_REFUSE_BUTTON}, + {"seaPenWallpaperTermsOfServiceDesc", + IDS_SEA_PEN_WALLPAPER_TERMS_OF_SERVICE_DESC}, }; source->AddLocalizedStrings(kLocalizedStrings); }
diff --git a/ash/webui/personalization_app/resources/js/personalization_app.ts b/ash/webui/personalization_app/resources/js/personalization_app.ts index 6eb5e9c..436b649 100644 --- a/ash/webui/personalization_app/resources/js/personalization_app.ts +++ b/ash/webui/personalization_app/resources/js/personalization_app.ts
@@ -130,6 +130,7 @@ export {SeaPenTemplateQueryElement} from 'chrome://resources/ash/common/sea_pen/sea_pen_template_query_element.js'; export {SeaPenTemplatesElement} from 'chrome://resources/ash/common/sea_pen/sea_pen_templates_element.js'; export {setSeaPenProviderForTesting} from 'chrome://resources/ash/common/sea_pen/sea_pen_interface_provider.js'; +export {SeaPenTermsOfServiceDialogElement} from 'chrome://resources/ash/common/sea_pen/sea_pen_terms_of_service_dialog_element.js'; export {isDefaultImage, isGooglePhotosPhoto, isWallpaperImage} from './wallpaper/utils.js'; export * from './wallpaper/wallpaper_actions.js'; export {WallpaperCollectionsElement} from './wallpaper/wallpaper_collections_element.js';
diff --git a/ash/webui/personalization_app/resources/js/personalization_router_element.html b/ash/webui/personalization_app/resources/js/personalization_router_element.html index 9dfeb51..bea52893 100644 --- a/ash/webui/personalization_app/resources/js/personalization_router_element.html +++ b/ash/webui/personalization_app/resources/js/personalization_router_element.html
@@ -77,7 +77,7 @@ </wallpaper-subpage> </template> <template is="dom-if" if="[[shouldShowSeaPen_(path_)]]" restamp> - <sea-pen-router base-path="[[seaPenBasePath_]]"></sea-pen-router> + <sea-pen-router base-path="[[seaPenBasePath_]]" on-sea-pen-terms-dialog-refuse="onRefuseSeaPenTermsOfService_"></sea-pen-router> </template> <personalization-toast></personalization-toast> </div>
diff --git a/ash/webui/personalization_app/resources/js/personalization_router_element.ts b/ash/webui/personalization_app/resources/js/personalization_router_element.ts index cc42e0c..bcd0c4d 100644 --- a/ash/webui/personalization_app/resources/js/personalization_router_element.ts +++ b/ash/webui/personalization_app/resources/js/personalization_router_element.ts
@@ -255,6 +255,10 @@ break; } } + + private onRefuseSeaPenTermsOfService_() { + this.goToRoute(Paths.COLLECTIONS); + } } customElements.define(
diff --git a/ash/webui/personalization_app/resources/js/wallpaper/index.ts b/ash/webui/personalization_app/resources/js/wallpaper/index.ts index e38de27..4e75a0f6 100644 --- a/ash/webui/personalization_app/resources/js/wallpaper/index.ts +++ b/ash/webui/personalization_app/resources/js/wallpaper/index.ts
@@ -9,6 +9,7 @@ import 'chrome://resources/ash/common/sea_pen/sea_pen_recent_wallpapers_element.js'; import 'chrome://resources/ash/common/sea_pen/sea_pen_template_query_element.js'; import 'chrome://resources/ash/common/sea_pen/sea_pen_templates_element.js'; +import 'chrome://resources/ash/common/sea_pen/sea_pen_terms_of_service_dialog_element.js'; import './google_photos_albums_element.js'; import './google_photos_collection_element.js'; import './google_photos_photos_by_album_id_element.js';
diff --git a/ash/webui/personalization_app/test/personalization_app_mojom_banned_mocha_test_base.cc b/ash/webui/personalization_app/test/personalization_app_mojom_banned_mocha_test_base.cc index 335fdce..a56a8b3e 100644 --- a/ash/webui/personalization_app/test/personalization_app_mojom_banned_mocha_test_base.cc +++ b/ash/webui/personalization_app/test/personalization_app_mojom_banned_mocha_test_base.cc
@@ -145,6 +145,11 @@ OpenFeedbackDialog, (mojom::SeaPenFeedbackMetadataPtr metadata), (override)); + MOCK_METHOD(void, + ShouldShowSeaPenTermsOfServiceDialog, + (ShouldShowSeaPenTermsOfServiceDialogCallback callback), + (override)); + MOCK_METHOD(void, HandleSeaPenTermsOfServiceAccepted, (), (override)); }; class MockPersonalizationAppThemeProvider
diff --git a/ash/webui/vc_background_ui/resources/js/vc_background_app.html b/ash/webui/vc_background_ui/resources/js/vc_background_app.html index e2432f5bf..fb6db743 100644 --- a/ash/webui/vc_background_ui/resources/js/vc_background_app.html +++ b/ash/webui/vc_background_ui/resources/js/vc_background_app.html
@@ -36,5 +36,5 @@ sea-pen-template-id="[[queryParams_.seaPenTemplateId]]"> </vc-background-breadcrumb> </div> - <sea-pen-router base-path=""></sea-pen-router> + <sea-pen-router base-path="" on-sea-pen-terms-dialog-refuse="onRefuseSeaPenTermsOfService_"></sea-pen-router> </div>
diff --git a/ash/webui/vc_background_ui/resources/js/vc_background_app.ts b/ash/webui/vc_background_ui/resources/js/vc_background_app.ts index 65b4c99..9717a5e 100644 --- a/ash/webui/vc_background_ui/resources/js/vc_background_app.ts +++ b/ash/webui/vc_background_ui/resources/js/vc_background_app.ts
@@ -54,6 +54,10 @@ // Navigates to the top of the subpage. window.scrollTo(0, 0); } + + private onRefuseSeaPenTermsOfService_() { + window.close(); + } } declare global {
diff --git a/base/process/process_metrics_unittest.cc b/base/process/process_metrics_unittest.cc index 4be0adc..c387cb7 100644 --- a/base/process/process_metrics_unittest.cc +++ b/base/process/process_metrics_unittest.cc
@@ -43,7 +43,7 @@ #include <sys/mman.h> #endif -#if BUILDFLAG(IS_MAC) +#if BUILDFLAG(IS_MAC) || (BUILDFLAG(IS_IOS) && BUILDFLAG(USE_BLINK)) #include <mach/mach.h> #include "base/apple/mach_logging.h" @@ -136,13 +136,13 @@ CommandLine command_line_ = GetMultiProcessTestChildBaseCommandLine(); Process child_process_; -#if BUILDFLAG(IS_MAC) +#if BUILDFLAG(IS_MAC) || (BUILDFLAG(IS_IOS) && BUILDFLAG(USE_BLINK)) class TestChildPortProvider; std::unique_ptr<TestChildPortProvider> port_provider_; #endif }; -#if BUILDFLAG(IS_MAC) +#if BUILDFLAG(IS_MAC) || (BUILDFLAG(IS_IOS) && BUILDFLAG(USE_BLINK)) // Adapted from base/mac/mach_port_rendezvous_unittest.cc and // https://mw.foldr.org/posts/computers/macosx/task-info-fun-with-mach/ @@ -208,8 +208,12 @@ } std::unique_ptr<ProcessMetrics> TestChildLauncher::CreateChildProcessMetrics() { +#if BUILDFLAG(IS_MAC) return ProcessMetrics::CreateProcessMetrics(child_process_.Handle(), port_provider_.get()); +#else + return ProcessMetrics::CreateProcessMetrics(child_process_.Handle()); +#endif } bool TestChildLauncher::TerminateChildProcess() {
diff --git a/base/value_iterators_unittest.cc b/base/value_iterators_unittest.cc index 655e6e6..9f40e38 100644 --- a/base/value_iterators_unittest.cc +++ b/base/value_iterators_unittest.cc
@@ -15,24 +15,6 @@ namespace detail { -namespace { - -// Implementation of std::equal variant that is missing in C++11. -template <class BinaryPredicate, class InputIterator1, class InputIterator2> -bool are_equal(InputIterator1 first1, - InputIterator1 last1, - InputIterator2 first2, - InputIterator2 last2, - BinaryPredicate pred) { - for (; first1 != last1 && first2 != last2; ++first1, ++first2) { - if (!pred(*first1, *first2)) - return false; - } - return first1 == last1 && first2 == last2; -} - -} // namespace - TEST(ValueIteratorsTest, IsAssignable) { static_assert( !std::is_assignable<dict_iterator::reference::first_type, std::string>(),
diff --git a/build/android/gyp/proguard.py b/build/android/gyp/proguard.py index 8dffcdd..fbe0208 100755 --- a/build/android/gyp/proguard.py +++ b/build/android/gyp/proguard.py
@@ -335,6 +335,10 @@ tmp_mapping_path, ] + if options.uses_split: + # Provided by our CustomR8.java wrapper. + cmd += ['--enable-isolated-splits-asserts'] + if options.disable_checks: cmd += ['--map-diagnostics:CheckDiscardDiagnostic', 'error', 'none'] cmd += ['--map-diagnostics', 'info', 'warning']
diff --git a/build/config/chrome_build.gni b/build/config/chrome_build.gni index 01e6843..4100059f 100644 --- a/build/config/chrome_build.gni +++ b/build/config/chrome_build.gni
@@ -22,7 +22,9 @@ # Set to true to enable settings for high end Android devices, typically # enhancing speed at the expense of resources such as binary sizes and memory. - is_high_end_android = false + # Non-official builds should ignore this argument so that arm64 builders + # remain fast and independent from PGO without having to set the value to false. + is_high_end_android = target_cpu == "arm64" if (is_android) { # By default, Trichrome channels are compiled using separate package names. @@ -33,6 +35,9 @@ } } +# Ensure !is_android implies !is_high_end_android. +is_high_end_android = is_high_end_android && is_android + declare_args() { # Whether to apply size->speed trade-offs to the secondary toolchain. # Relevant only for 64-bit target_cpu.
diff --git a/buildtools/deps_revisions.gni b/buildtools/deps_revisions.gni index cca8526..dfcc428 100644 --- a/buildtools/deps_revisions.gni +++ b/buildtools/deps_revisions.gni
@@ -5,5 +5,5 @@ declare_args() { # Used to cause full rebuilds on libc++ rolls. This should be kept in sync # with the libcxx_revision vars in //DEPS. - libcxx_revision = "28aa23ffb4c7344914a5b4ac7169f12e5a12333f" + libcxx_revision = "24cb5545a9a648f580ef7ce7b758689578f0a2a7" }
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn index a14f449d..8f9184b0 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn
@@ -363,6 +363,7 @@ "//chrome/browser/fullscreen/android:java", "//chrome/browser/gesturenav/android:java", "//chrome/browser/gsa:java", + "//chrome/browser/history:java", "//chrome/browser/history_clusters:java", "//chrome/browser/history_clusters:java_resources", "//chrome/browser/hub:factory_java", @@ -3053,14 +3054,17 @@ extra_args = _bundle_smoke_test_extra_args } - if (defined(expected_static_initializer_32bit_count)) { + _verify_32bit_static_initializers = + defined(expected_static_initializer_32bit_count) && + !skip_secondary_abi_for_cq + _verify_64bit_static_initializers = + defined(expected_static_initializer_64bit_count) && + android_64bit_target_cpu + if (_verify_32bit_static_initializers || _verify_64bit_static_initializers) { # Old name alias to be removed after migration is done. group("monochrome_static_initializers") { deps = [ ":check_chrome_static_initializers" ] } - _verify_32bit_static_initializers = - !android_64bit_target_cpu || !skip_secondary_abi_for_cq - _verify_64bit_static_initializers = android_64bit_target_cpu group("check_chrome_static_initializers") { deps = [] if (_verify_32bit_static_initializers) { @@ -3648,6 +3652,7 @@ "java/src/org/chromium/chrome/browser/net/nqe/NetworkQualityProvider.java", "java/src/org/chromium/chrome/browser/notifications/ActionInfo.java", "java/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridge.java", + "java/src/org/chromium/chrome/browser/notifications/NotificationSuspender.java", "java/src/org/chromium/chrome/browser/notifications/NotificationTriggerScheduler.java", "java/src/org/chromium/chrome/browser/notifications/PushMessagingServiceBridge.java", "java/src/org/chromium/chrome/browser/notifications/scheduler/DisplayAgent.java", @@ -3714,7 +3719,6 @@ "java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaverImpl.java", "java/src/org/chromium/chrome/browser/tabmodel/TabModelJniBridge.java", "java/src/org/chromium/chrome/browser/tabmodel/TabModelObserverJniBridge.java", - "java/src/org/chromium/chrome/browser/usage_stats/NotificationSuspender.java", "java/src/org/chromium/chrome/browser/usage_stats/UsageStatsBridge.java", "java/src/org/chromium/chrome/browser/webapps/WebApkDataProvider.java", "java/src/org/chromium/chrome/browser/webapps/WebApkHandlerDelegate.java", @@ -3770,6 +3774,7 @@ "//chrome/browser/enterprise/util:jni_headers", "//chrome/browser/feature_engagement:jni_headers", "//chrome/browser/flags:jni_headers", + "//chrome/browser/history:jni_headers", "//chrome/browser/history_clusters:jni_headers", "//chrome/browser/image_descriptions:jni_headers", "//chrome/browser/incognito:jni_headers",
diff --git a/chrome/android/chrome_common_shared_library.gni b/chrome/android/chrome_common_shared_library.gni index ef4000f..b6477b5 100644 --- a/chrome/android/chrome_common_shared_library.gni +++ b/chrome/android/chrome_common_shared_library.gni
@@ -19,7 +19,10 @@ # efficient, but supported only on API 28+. # This is not permanently enabled for Trichrome because it shares its native # library with Monochrome. - use_relr_relocations = is_high_end_android + # Restricted to official builds to avoid turning off is_high_end_android + # explicitly on all relevant non-official bots. TODO(crbug.com/1515925): + # Always use RELR when Android O (and O_MR1) is no longer supported. + use_relr_relocations = is_high_end_android && is_official_build } # This template contains all common configuration for native shared libraries,
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni index 3fa752c..b532d79 100644 --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni
@@ -796,6 +796,7 @@ "java/src/org/chromium/chrome/browser/notifications/NotificationJobServiceImpl.java", "java/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridge.java", "java/src/org/chromium/chrome/browser/notifications/NotificationServiceImpl.java", + "java/src/org/chromium/chrome/browser/notifications/NotificationSuspender.java", "java/src/org/chromium/chrome/browser/notifications/NotificationTriggerBackgroundTask.java", "java/src/org/chromium/chrome/browser/notifications/NotificationTriggerScheduler.java", "java/src/org/chromium/chrome/browser/notifications/PushMessagingServiceBridge.java", @@ -1167,7 +1168,6 @@ "java/src/org/chromium/chrome/browser/upgrade/PackageReplacedBroadcastReceiver.java", "java/src/org/chromium/chrome/browser/usage_stats/DigitalWellbeingClient.java", "java/src/org/chromium/chrome/browser/usage_stats/EventTracker.java", - "java/src/org/chromium/chrome/browser/usage_stats/NotificationSuspender.java", "java/src/org/chromium/chrome/browser/usage_stats/PageViewObserver.java", "java/src/org/chromium/chrome/browser/usage_stats/SuspendedTab.java", "java/src/org/chromium/chrome/browser/usage_stats/SuspensionTracker.java",
diff --git a/chrome/android/chrome_test_java_sources.gni b/chrome/android/chrome_test_java_sources.gni index b9cc0df..a592f20 100644 --- a/chrome/android/chrome_test_java_sources.gni +++ b/chrome/android/chrome_test_java_sources.gni
@@ -80,7 +80,6 @@ "javatests/src/org/chromium/chrome/browser/automotive/BackButtonToolbarTest.java", "javatests/src/org/chromium/chrome/browser/background_sync/BackgroundSyncTest.java", "javatests/src/org/chromium/chrome/browser/background_sync/PeriodicBackgroundSyncTest.java", - "javatests/src/org/chromium/chrome/browser/bookmarks/AccountBookmarkTest.java", "javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkBridgeTest.java", "javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkFolderPickerRenderTest.java", "javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkModelTest.java",
diff --git a/chrome/android/expectations/lint-baseline.xml b/chrome/android/expectations/lint-baseline.xml index 558f4468..a8d23d0 100644 --- a/chrome/android/expectations/lint-baseline.xml +++ b/chrome/android/expectations/lint-baseline.xml
@@ -920,7 +920,7 @@ errorLine1=" return getBitmapFromIcon(notification.getLargeIcon());" errorLine2=" ~~~~~~~~~~~~~~~~~"> <location - file="../../chrome/android/java/src/org/chromium/chrome/browser/usage_stats/NotificationSuspender.java" + file="../../chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationSuspender.java" line="145" column="16"/> </issue> @@ -931,7 +931,7 @@ errorLine1=" return getBitmapFromIcon(notification.getSmallIcon());" errorLine2=" ~~~~~~~~~~~~~~~~~"> <location - file="../../chrome/android/java/src/org/chromium/chrome/browser/usage_stats/NotificationSuspender.java" + file="../../chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationSuspender.java" line="149" column="16"/> </issue>
diff --git a/chrome/android/expectations/trichrome_chrome_64_32_bundle__base.AndroidManifest.expected b/chrome/android/expectations/trichrome_chrome_64_32_bundle__base.AndroidManifest.expected index c79455f..262c244 100644 --- a/chrome/android/expectations/trichrome_chrome_64_32_bundle__base.AndroidManifest.expected +++ b/chrome/android/expectations/trichrome_chrome_64_32_bundle__base.AndroidManifest.expected
@@ -5,7 +5,7 @@ platformBuildVersionCode="34" platformBuildVersionName="14" android:isolatedSplits="true" - android:versionCode="OFFSET=32" + android:versionCode="OFFSET=33" android:versionName="#.#.#.#"> <permission android:name="$PACKAGE.TOS_ACKED" android:protectionLevel="signatureOrSystem"/> <permission android:name="$PACKAGE.permission.C2D_MESSAGE" android:protectionLevel="signature"/> @@ -502,6 +502,6 @@ android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process9"> </service> # DIFF-ANCHOR: e2f3bbbd - <uses-static-library android:name="org.chromium.trichromelibrary" android:certDigest="32a2fc74d731105859e5a85df16d95f102d85b22099b8064c5d8915c61dad1e0" android:version="OFFSET=32"/> + <uses-static-library android:name="org.chromium.trichromelibrary" android:certDigest="32a2fc74d731105859e5a85df16d95f102d85b22099b8064c5d8915c61dad1e0" android:version="OFFSET=33"/> </application> </manifest>
diff --git a/chrome/android/expectations/trichrome_library_64_32_apk.AndroidManifest.expected b/chrome/android/expectations/trichrome_library_64_32_apk.AndroidManifest.expected index cc6fc93..47424a9 100644 --- a/chrome/android/expectations/trichrome_library_64_32_apk.AndroidManifest.expected +++ b/chrome/android/expectations/trichrome_library_64_32_apk.AndroidManifest.expected
@@ -4,7 +4,7 @@ package="org.chromium.trichromelibrary" platformBuildVersionCode="34" platformBuildVersionName="14" - android:versionCode="OFFSET=32" + android:versionCode="OFFSET=33" android:versionName="#.#.#.#"> <uses-feature android:glEsVersion="0x00020000"/> <uses-feature android:name="android.hardware.touchscreen" android:required="false"/> @@ -16,6 +16,6 @@ android:icon="@drawable/icon_webview" android:label="Trichrome Library" android:multiArch="true"> - <static-library android:name="$PACKAGE" android:version="OFFSET=32"/> + <static-library android:name="$PACKAGE" android:version="OFFSET=33"/> </application> </manifest>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ar.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ar.xtb index 0dd6d39..5f77c09d 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ar.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ar.xtb
@@ -39,6 +39,7 @@ <translation id="3996880007329611795">تلقّي إشعارات</translation> <translation id="4133493477912226187">يبدو أن هناك <ph name="NUMBER_OF_TABS" /> من علامات التبويب متشابهة. هل تريد تجميعها؟</translation> <translation id="4212246570487010370">مواصلة التصفّح</translation> +<translation id="427987768447457592">مجموعة علامات تبويب جديدة</translation> <translation id="4648718555153979859">يتم جمع علامات التبويب معًا هنا</translation> <translation id="4788280460033928884">{REVIEWS,plural, =1{(مراجعة واحدة (<ph name="REVIEWS_COUNT_ONE" />))}zero{(<ph name="REVIEWS_COUNT_MANY" /> مراجعة)}two{(مراجعتان (<ph name="REVIEWS_COUNT_MANY" />))}few{(<ph name="REVIEWS_COUNT_MANY" /> مراجعات)}many{(<ph name="REVIEWS_COUNT_MANY" /> مراجعة)}other{(<ph name="REVIEWS_COUNT_MANY" /> مراجعة)}}</translation> <translation id="4850886885716139402">عرض</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_cs.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_cs.xtb index 274c0f0..dae87ea 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_cs.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_cs.xtb
@@ -39,6 +39,7 @@ <translation id="3996880007329611795">Zasílat oznámení</translation> <translation id="4133493477912226187">Některé karty (<ph name="NUMBER_OF_TABS" />) spolu pravděpodobně souvisejí. Chcete je seskupit?</translation> <translation id="4212246570487010370">Pokračovat v prohlížení</translation> +<translation id="427987768447457592">Nová skupina karet</translation> <translation id="4648718555153979859">Zde jsou seskupeny vaše karty</translation> <translation id="4788280460033928884">{REVIEWS,plural, =1{(<ph name="REVIEWS_COUNT_ONE" /> recenze)}few{(<ph name="REVIEWS_COUNT_MANY" /> recenze)}many{(<ph name="REVIEWS_COUNT_MANY" /> recenze)}other{(<ph name="REVIEWS_COUNT_MANY" /> recenzí)}}</translation> <translation id="4850886885716139402">Zobrazit</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_en-GB.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_en-GB.xtb index f0b20cf..77dd6dc 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_en-GB.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_en-GB.xtb
@@ -39,6 +39,7 @@ <translation id="3996880007329611795">Get notified</translation> <translation id="4133493477912226187"><ph name="NUMBER_OF_TABS" /> tabs seem related. Group them?</translation> <translation id="4212246570487010370">Continue browsing</translation> +<translation id="427987768447457592">New tab group</translation> <translation id="4648718555153979859">Your tabs are grouped together here</translation> <translation id="4788280460033928884">{REVIEWS,plural, =1{(<ph name="REVIEWS_COUNT_ONE" /> review)}other{(<ph name="REVIEWS_COUNT_MANY" /> reviews)}}</translation> <translation id="4850886885716139402">View</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fi.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fi.xtb index cd8fa96b..0c4a55ac 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fi.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fi.xtb
@@ -39,6 +39,7 @@ <translation id="3996880007329611795">Tilaan ilmoitukset</translation> <translation id="4133493477912226187"><ph name="NUMBER_OF_TABS" /> välilehteä vaikuttaa liittyvän toisiinsa. Lisätäänkö ne ryhmäksi?</translation> <translation id="4212246570487010370">Jatka selaamista</translation> +<translation id="427987768447457592">Uusi välilehtiryhmä</translation> <translation id="4648718555153979859">Välilehtesi on koottu tänne</translation> <translation id="4788280460033928884">{REVIEWS,plural, =1{(<ph name="REVIEWS_COUNT_ONE" /> arvostelu)}other{(<ph name="REVIEWS_COUNT_MANY" /> arvostelua)}}</translation> <translation id="4850886885716139402">Näytä</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ja.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ja.xtb index 38398fb8..560d1ab 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ja.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ja.xtb
@@ -39,6 +39,7 @@ <translation id="3996880007329611795">通知を受け取る</translation> <translation id="4133493477912226187"><ph name="NUMBER_OF_TABS" /> 個のタブは関連しているようです。グループ化しますか?</translation> <translation id="4212246570487010370">引き続き閲覧</translation> +<translation id="427987768447457592">新しいタブグループ</translation> <translation id="4648718555153979859">タブはここにグループ化されます</translation> <translation id="4788280460033928884">{REVIEWS,plural, =1{(<ph name="REVIEWS_COUNT_ONE" /> 件のクチコミ)}other{(<ph name="REVIEWS_COUNT_MANY" /> 件のクチコミ)}}</translation> <translation id="4850886885716139402">表示</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_kn.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_kn.xtb index 41c8071..6044ebfd 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_kn.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_kn.xtb
@@ -39,6 +39,7 @@ <translation id="3996880007329611795">ಸೂಚನೆ ಪಡೆಯಿರಿ</translation> <translation id="4133493477912226187"><ph name="NUMBER_OF_TABS" /> ಟ್ಯಾಬ್ಗಳು ಸಂಬಂಧಿಸಿರುವ ಹಾಗೆ ಕಾಣುತ್ತಿದೆ. ಅವುಗಳನ್ನು ಗುಂಪು ಮಾಡಬೇಕೆ?</translation> <translation id="4212246570487010370">ಬ್ರೌಸಿಂಗ್ ಮುಂದುವರಿಸಿ</translation> +<translation id="427987768447457592">ಹೊಸ ಟ್ಯಾಬ್ ಗುಂಪು</translation> <translation id="4648718555153979859">ಟ್ಯಾಬ್ಗಳನ್ನು ಇಲ್ಲಿ ಒಟ್ಟಿಗೆ ಗುಂಪುಗೂಡಿಸಲಾಗಿದೆ</translation> <translation id="4788280460033928884">{REVIEWS,plural, =1{(<ph name="REVIEWS_COUNT_ONE" /> ವಿಮರ್ಶೆ)}one{(<ph name="REVIEWS_COUNT_MANY" /> ವಿಮರ್ಶೆಗಳು)}other{(<ph name="REVIEWS_COUNT_MANY" /> ವಿಮರ್ಶೆಗಳು)}}</translation> <translation id="4850886885716139402">ವೀಕ್ಷಣೆ</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ko.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ko.xtb index 030498e..b4573a70 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ko.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ko.xtb
@@ -39,6 +39,7 @@ <translation id="3996880007329611795">알림 받기</translation> <translation id="4133493477912226187">탭 <ph name="NUMBER_OF_TABS" />개가 서로 관련된 것으로 보입니다. 그룹화할까요?</translation> <translation id="4212246570487010370">계속 탐색</translation> +<translation id="427987768447457592">새 탭 그룹</translation> <translation id="4648718555153979859">탭이 여기에서 그룹화됩니다.</translation> <translation id="4788280460033928884">{REVIEWS,plural, =1{(리뷰 <ph name="REVIEWS_COUNT_ONE" />개)}other{(리뷰 <ph name="REVIEWS_COUNT_MANY" />개)}}</translation> <translation id="4850886885716139402">보기</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_mr.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_mr.xtb index 940abae..d0b51c1b 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_mr.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_mr.xtb
@@ -39,6 +39,7 @@ <translation id="3996880007329611795">सूचना मिळवा</translation> <translation id="4133493477912226187"><ph name="NUMBER_OF_TABS" /> टॅब संबंधित वाटतात. त्यांचा गट बनवायचा का?</translation> <translation id="4212246570487010370">ब्राउझ करणे सुरू ठेवा</translation> +<translation id="427987768447457592">नवीन टॅब गट</translation> <translation id="4648718555153979859">तुमचे टॅब येथे एकत्रित केले आहेत</translation> <translation id="4788280460033928884">{REVIEWS,plural, =1{(<ph name="REVIEWS_COUNT_ONE" /> परीक्षण)}other{(<ph name="REVIEWS_COUNT_MANY" /> परीक्षणे)}}</translation> <translation id="4850886885716139402">पहा</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ro.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ro.xtb index 7094d70..be359b03 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ro.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ro.xtb
@@ -39,6 +39,7 @@ <translation id="3996880007329611795">Primește notificări</translation> <translation id="4133493477912226187"><ph name="NUMBER_OF_TABS" /> file par similare. Vrei să le grupezi?</translation> <translation id="4212246570487010370">Continuă navigarea</translation> +<translation id="427987768447457592">Grup de file nou</translation> <translation id="4648718555153979859">Filele tale sunt grupate aici</translation> <translation id="4788280460033928884">{REVIEWS,plural, =1{(<ph name="REVIEWS_COUNT_ONE" /> recenzie)}few{(<ph name="REVIEWS_COUNT_MANY" /> recenzii)}other{(<ph name="REVIEWS_COUNT_MANY" /> de recenzii)}}</translation> <translation id="4850886885716139402">Afișează</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sl.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sl.xtb index a7d91fc..dbec0769 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sl.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sl.xtb
@@ -39,6 +39,7 @@ <translation id="3996880007329611795">Bodite obveščeni</translation> <translation id="4133493477912226187">Videti je, da je toliko zavihkov sorodnih: <ph name="NUMBER_OF_TABS" />. Jih želite uvrstiti v skupino?</translation> <translation id="4212246570487010370">Nadaljevanje brskanja</translation> +<translation id="427987768447457592">Nova skupina zavihkov</translation> <translation id="4648718555153979859">Zavihki so združeni tukaj</translation> <translation id="4788280460033928884">{REVIEWS,plural, =1{(<ph name="REVIEWS_COUNT_ONE" /> mnenje)}one{(<ph name="REVIEWS_COUNT_MANY" /> mnenje)}two{(<ph name="REVIEWS_COUNT_MANY" /> mnenji)}few{(<ph name="REVIEWS_COUNT_MANY" /> mnenja)}other{(<ph name="REVIEWS_COUNT_MANY" /> mnenj)}}</translation> <translation id="4850886885716139402">Prikaži</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_uk.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_uk.xtb index 9eb23913..3fc1f1b 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_uk.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_uk.xtb
@@ -39,6 +39,7 @@ <translation id="3996880007329611795">Отримувати сповіщення</translation> <translation id="4133493477912226187">Схоже, ви відкрили кілька пов'язаних вкладок (<ph name="NUMBER_OF_TABS" />). Додати їх у групу?</translation> <translation id="4212246570487010370">Продовжити перегляд</translation> +<translation id="427987768447457592">Нова група вкладок</translation> <translation id="4648718555153979859">Тут згруповано ваші вкладки</translation> <translation id="4788280460033928884">{REVIEWS,plural, =1{(<ph name="REVIEWS_COUNT_ONE" /> відгук)}one{(<ph name="REVIEWS_COUNT_MANY" /> відгук)}few{(<ph name="REVIEWS_COUNT_MANY" /> відгуки)}many{(<ph name="REVIEWS_COUNT_MANY" /> відгуків)}other{(<ph name="REVIEWS_COUNT_MANY" /> відгуку)}}</translation> <translation id="4850886885716139402">Перегляд</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-CN.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-CN.xtb index 30f4a6f..869b7ff6e7 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-CN.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-CN.xtb
@@ -39,6 +39,7 @@ <translation id="3996880007329611795">接收通知</translation> <translation id="4133493477912226187">有 <ph name="NUMBER_OF_TABS" /> 个标签页似乎彼此相关。为它们建组?</translation> <translation id="4212246570487010370">继续浏览</translation> +<translation id="427987768447457592">新标签页分组</translation> <translation id="4648718555153979859">您的标签页会按组列在此处</translation> <translation id="4788280460033928884">{REVIEWS,plural, =1{(共有 <ph name="REVIEWS_COUNT_ONE" /> 条评价)}other{(共有 <ph name="REVIEWS_COUNT_MANY" /> 条评价)}}</translation> <translation id="4850886885716139402">视图</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-HK.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-HK.xtb index a71afa2..929c903c 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-HK.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-HK.xtb
@@ -39,6 +39,7 @@ <translation id="3996880007329611795">接收通知</translation> <translation id="4133493477912226187">似乎有 <ph name="NUMBER_OF_TABS" /> 個相關的分頁。要唔要將佢哋分組?</translation> <translation id="4212246570487010370">繼續瀏覽</translation> +<translation id="427987768447457592">新分頁群組</translation> <translation id="4648718555153979859">您的分頁在這裡分組顯示</translation> <translation id="4788280460033928884">{REVIEWS,plural, =1{(<ph name="REVIEWS_COUNT_ONE" /> 則評論)}other{(<ph name="REVIEWS_COUNT_MANY" /> 則評論)}}</translation> <translation id="4850886885716139402">檢視</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-TW.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-TW.xtb index 446dc74..37c82f7 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-TW.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-TW.xtb
@@ -39,6 +39,7 @@ <translation id="3996880007329611795">接收通知</translation> <translation id="4133493477912226187">似乎有 <ph name="NUMBER_OF_TABS" /> 個相關的分頁。要將這些分頁加入群組嗎?</translation> <translation id="4212246570487010370">繼續瀏覽</translation> +<translation id="427987768447457592">新分頁群組</translation> <translation id="4648718555153979859">你的分頁都集中顯示在這裡</translation> <translation id="4788280460033928884">{REVIEWS,plural, =1{(<ph name="REVIEWS_COUNT_ONE" /> 則評論)}other{(<ph name="REVIEWS_COUNT_MANY" /> 則評論)}}</translation> <translation id="4850886885716139402">檢視</translation>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java index 8eb3663..1cb26139 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -109,6 +109,7 @@ import org.chromium.chrome.browser.hub.DefaultPaneOrderController; import org.chromium.chrome.browser.hub.HubFieldTrial; import org.chromium.chrome.browser.hub.HubLayoutDependencyHolder; +import org.chromium.chrome.browser.hub.HubManager; import org.chromium.chrome.browser.hub.HubProvider; import org.chromium.chrome.browser.hub.Pane; import org.chromium.chrome.browser.hub.PaneId; @@ -397,6 +398,7 @@ private ObservableSupplierImpl<Tab> mStartSurfaceParentTabSupplier = new ObservableSupplierImpl<>(); private HubProvider mHubProvider; + private OneshotSupplierImpl<HubManager> mHubManagerSupplier = new OneshotSupplierImpl<>(); private ObservableSupplierImpl<TabModelStartupInfo> mTabModelStartupInfoSupplier; // Calls isStartSurfaceRefactorEnabled() instead of using this variable directly. private Boolean mIsStartSurfaceRefactorEnabled; @@ -905,6 +907,12 @@ () -> { return createTabSwitcherPane(true); })); + mHubProvider + .getHubManagerSupplier() + .onAvailable( + manager -> { + mHubManagerSupplier.set(manager); + }); } private Pane createTabSwitcherPane(boolean isIncognito) { @@ -2096,6 +2104,7 @@ mStartSurfaceSupplier, mTabSwitcherSupplier, mIncognitoTabSwitcherSupplier, + mHubManagerSupplier, mIntentMetadataOneshotSupplier, mLayoutStateProviderSupplier, mStartSurfaceParentTabSupplier,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java index d0d5949..eb71793 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java
@@ -416,6 +416,7 @@ new SettingsLauncherImpl(), /* incognitoReauthTopToolbarDelegate= */ null, /* layoutManager= */ null, + /* hubManagerSupplier= */ null, /* showRegularOverviewIntent= */ showRegularOverviewIntent, /* isTabbedActivity= */ false); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java index eee57dfa..13dfa04 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
@@ -46,6 +46,7 @@ import org.chromium.chrome.browser.firstrun.FirstRunSignInProcessor; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.fonts.FontPreloader; +import org.chromium.chrome.browser.history.HistoryTabHelper; import org.chromium.chrome.browser.infobar.InfoBarContainer; import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; import org.chromium.chrome.browser.night_mode.NightModeStateProvider; @@ -89,11 +90,13 @@ @Override public void onInitialTabCreated(@NonNull Tab tab, int mode) { resetPostMessageHandlersForCurrentSession(); + maybeCreateHistoryTabHelper(tab); } @Override public void onTabSwapped(@NonNull Tab tab) { resetPostMessageHandlersForCurrentSession(); + maybeCreateHistoryTabHelper(tab); } @Override @@ -102,6 +105,11 @@ } }; + private void maybeCreateHistoryTabHelper(Tab tab) { + String appId = mIntentDataProvider.getClientPackageName(); + if (appId != null) HistoryTabHelper.from(tab).setAppId(appId, tab.getWebContents()); + } + @Override protected BaseCustomTabActivityComponent createComponent( ChromeActivityCommonsModule commonsModule) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/BrowsingHistoryBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/history/BrowsingHistoryBridge.java index c4591f2..0b6bd396 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/history/BrowsingHistoryBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/BrowsingHistoryBridge.java
@@ -43,13 +43,14 @@ } @Override - public void queryHistory(String query) { + public void queryHistory(String query, String appId) { BrowsingHistoryBridgeJni.get() .queryHistory( mNativeHistoryBridge, BrowsingHistoryBridge.this, new ArrayList<HistoryItem>(), query, + appId, false); } @@ -61,6 +62,7 @@ BrowsingHistoryBridge.this, new ArrayList<HistoryItem>(), hostName, + null, true); } @@ -171,6 +173,7 @@ BrowsingHistoryBridge caller, List<HistoryItem> historyItems, String query, + String appId, boolean hostOnly); void queryHistoryContinuation(
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java index 9f5e2b163..8202bd8 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java
@@ -63,6 +63,7 @@ private boolean mClearBrowsingDataButtonVisible; private String mQueryText = EMPTY_QUERY; private String mHostName; + private String mAppId; // Not used if null i.e. query all entries regardless of app ID private boolean mDisableScrollToLoadForTest; private ObservableSupplier<Boolean> mShowHistoryToggleSupplier; @@ -103,7 +104,7 @@ if (mHostName != null) { mHistoryProvider.queryHistoryForHost(mHostName); } else { - mHistoryProvider.queryHistory(mQueryText); + mHistoryProvider.queryHistory(mQueryText, mAppId); } } @@ -149,7 +150,7 @@ mQueryText = query; mIsSearching = true; mClearOnNextQueryComplete = true; - mHistoryProvider.queryHistory(mQueryText); + mHistoryProvider.queryHistory(mQueryText, mAppId); } /** Called when a search is ended. */ @@ -434,6 +435,13 @@ mHostName = hostName; } + /** + * @param appId The app ID to retrieve history entries for. + */ + public void setAppId(String appId) { + mAppId = appId; + } + ItemGroup getFirstGroupForTests() { return getGroupAt(0).first; }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java index b38f33f..ce85528 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java
@@ -117,6 +117,7 @@ private SelectionDelegate<HistoryItem> mSelectionDelegate; private boolean mShouldShowPrivacyDisclaimers; private PrefChangeRegistrar mPrefChangeRegistrar; + private String mAppId; /** * Creates a new HistoryContentManager. @@ -251,10 +252,18 @@ mPrefChangeRegistrar.addObserver(Pref.INCOGNITO_MODE_AVAILABILITY, this); } + /** + * @param appId The app ID to retrieve history entries for. + */ + public void setAppId(String appId) { + mAppId = appId; + } + /** Tell the HistoryContentManager to start loading items. */ public void startLoadingItems() { // Filtering the adapter to only the results from this particular host. mHistoryAdapter.setHostName(mHostName); + mHistoryAdapter.setAppId(mAppId); mHistoryAdapter.startLoadingItems(); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java index 48c980a..6278fd71 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java
@@ -406,6 +406,7 @@ R.string.history_manager_empty_state_view_or_clear_page_visited); // 6. Load items. + // TODO: Set appId before loading items. mContentManager.startLoadingItems(); if (showHistoryClustersImmediately) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryProvider.java index 1680d47..0b17be3 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryProvider.java
@@ -43,9 +43,12 @@ /** * Query browsing history. Only one query may be in-flight at any time. See * BrowsingHistoryService::QueryHistory. + * * @param query The query search text. May be empty. + * @param appId The package name of the app to filter the query result visited by CCT. Can be + * null for the results visited by BrApp. */ - void queryHistory(String query); + void queryHistory(String query, String appId); /** * Query browsing history for a particular host. Only one query may be in-flight at any time.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridge.java index bbc5059..13669548 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridge.java
@@ -42,7 +42,7 @@ import org.chromium.chrome.browser.notifications.channels.SiteChannelsManager; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.settings.SettingsLauncherImpl; -import org.chromium.chrome.browser.usage_stats.NotificationSuspender; +import org.chromium.chrome.browser.usage_stats.UsageStatsService; import org.chromium.chrome.browser.webapps.ChromeWebApkHost; import org.chromium.chrome.browser.webapps.WebApkServiceClient; import org.chromium.components.browser_ui.notifications.NotificationManagerProxy; @@ -58,10 +58,13 @@ import org.chromium.components.url_formatter.UrlFormatter; import org.chromium.components.user_prefs.UserPrefs; import org.chromium.components.webapk.lib.client.WebApkValidator; +import org.chromium.content_public.browser.BrowserStartupController; +import org.chromium.content_public.browser.BrowserStartupController.StartupCallback; import org.chromium.url.URI; import org.chromium.webapk.lib.client.WebApkIdentityServiceClient; import java.net.URISyntaxException; +import java.util.Objects; /** * Provides the ability for the NotificationPlatformBridgeAndroid to talk to the Android platform @@ -95,6 +98,34 @@ private TrustedWebActivityClient mTwaClient; + /** Encapsulates attributes that identify a notification and where it originates from. */ + private static class NotificationIdentifyingAttributes { + public final String notificationId; + public final @NotificationType int notificationType; + public final String origin; + public final String scopeUrl; + public final String profileId; + public final boolean incognito; + public final String webApkPackage; + + public NotificationIdentifyingAttributes( + String notificationId, + @NotificationType int notificationType, + String origin, + String scopeUrl, + String profileId, + boolean incognito, + String webApkPackage) { + this.notificationId = notificationId; + this.notificationType = notificationType; + this.origin = origin; + this.scopeUrl = scopeUrl; + this.profileId = profileId; + this.incognito = incognito; + this.webApkPackage = webApkPackage; + } + } + /** * Creates a new instance of the NotificationPlatformBridge. * @@ -172,57 +203,43 @@ } recordJobStartDelayUMA(intent); - String notificationId = intent.getStringExtra(NotificationConstants.EXTRA_NOTIFICATION_ID); - @NotificationType - int notificationType = - intent.getIntExtra( - NotificationConstants.EXTRA_NOTIFICATION_TYPE, - NotificationType.WEB_PERSISTENT); + NotificationIdentifyingAttributes attributes = + new NotificationIdentifyingAttributes( + /* notificationId= */ intent.getStringExtra( + NotificationConstants.EXTRA_NOTIFICATION_ID), + /* notificationType= */ intent.getIntExtra( + NotificationConstants.EXTRA_NOTIFICATION_TYPE, + NotificationType.WEB_PERSISTENT), + /* origin= */ intent.getStringExtra( + NotificationConstants.EXTRA_NOTIFICATION_INFO_ORIGIN), + /* scopeUrl= */ Objects.requireNonNullElse( + intent.getStringExtra( + NotificationConstants.EXTRA_NOTIFICATION_INFO_SCOPE), + ""), + /* profileId= */ intent.getStringExtra( + NotificationConstants.EXTRA_NOTIFICATION_INFO_PROFILE_ID), + /* incognito= */ intent.getBooleanExtra( + NotificationConstants.EXTRA_NOTIFICATION_INFO_PROFILE_INCOGNITO, + false), + /* webApkPackage= */ Objects.requireNonNullElse( + intent.getStringExtra( + NotificationConstants + .EXTRA_NOTIFICATION_INFO_WEBAPK_PACKAGE), + "")); - String origin = intent.getStringExtra(NotificationConstants.EXTRA_NOTIFICATION_INFO_ORIGIN); - String scopeUrl = - intent.getStringExtra(NotificationConstants.EXTRA_NOTIFICATION_INFO_SCOPE); - if (scopeUrl == null) scopeUrl = ""; - String profileId = - intent.getStringExtra(NotificationConstants.EXTRA_NOTIFICATION_INFO_PROFILE_ID); - boolean incognito = - intent.getBooleanExtra( - NotificationConstants.EXTRA_NOTIFICATION_INFO_PROFILE_INCOGNITO, false); - - Log.i(TAG, "Dispatching notification event to native: " + notificationId); + Log.i(TAG, "Dispatching notification event to native: " + attributes.notificationId); if (NotificationConstants.ACTION_CLICK_NOTIFICATION.equals(intent.getAction())) { - String webApkPackage = - intent.getStringExtra( - NotificationConstants.EXTRA_NOTIFICATION_INFO_WEBAPK_PACKAGE); - if (webApkPackage == null) { - webApkPackage = ""; - } int actionIndex = intent.getIntExtra( NotificationConstants.EXTRA_NOTIFICATION_INFO_ACTION_INDEX, -1); - sInstance.onNotificationClicked( - notificationId, - notificationType, - origin, - scopeUrl, - profileId, - incognito, - webApkPackage, - actionIndex, - getNotificationReply(intent)); + sInstance.onNotificationClicked(attributes, actionIndex, getNotificationReply(intent)); return true; } else if (NotificationConstants.ACTION_CLOSE_NOTIFICATION.equals(intent.getAction())) { // Notification deleteIntent is executed only "when the notification is explicitly // dismissed by the user, either with the 'Clear All' button or by swiping it away // individually" (though a third-party NotificationListenerService may also trigger it). - sInstance.onNotificationClosed( - notificationId, - notificationType, - origin, - profileId, - incognito, - /* byUser= */ true); + sInstance.onNotificationClosed(attributes, /* byUser= */ true); return true; } @@ -329,49 +346,39 @@ * Returns the PendingIntent for completing |action| on the notification identified by the data * in the other parameters. * - * All parameters set here should also be set in - * {@link NotificationJobService#getJobExtrasFromIntent(Intent)}. + * <p>All parameters set here should also be set in {@link + * NotificationJobService#getJobExtrasFromIntent(Intent)}. * - * @param context An appropriate context for the intent class and broadcast. + * @param attributes Attributes identifying the notification and its source. * @param action The action this pending intent will represent. - * @param notificationId The id of the notification. - * @param origin The origin to whom the notification belongs. - * @param scopeUrl The scope of the service worker registered by the site where the notification - * comes from. - * @param profileId Id of the profile to which the notification belongs. - * @param incognito Whether the profile was in incognito mode. - * @param webApkPackage The package of the WebAPK associated with the notification. Empty if - * the notification is not associated with a WebAPK. * @param actionIndex The zero-based index of the action button, or -1 if not applicable. * @param mutable Whether the pending intent is mutable, see {@link - * PendingIntent#FLAG_IMMUTABLE}. + * PendingIntent#FLAG_IMMUTABLE}. */ private PendingIntentProvider makePendingIntent( - Context context, + NotificationIdentifyingAttributes attributes, String action, - String notificationId, - @NotificationType int notificationType, - String origin, - String scopeUrl, - String profileId, - boolean incognito, - String webApkPackage, int actionIndex, boolean mutable) { - Uri intentData = makeIntentData(notificationId, origin, actionIndex); + Context context = ContextUtils.getApplicationContext(); + Uri intentData = makeIntentData(attributes.notificationId, attributes.origin, actionIndex); Intent intent = new Intent(action, intentData); intent.setClass(context, NotificationServiceImpl.Receiver.class); // Make sure to update NotificationJobService.getJobExtrasFromIntent() when changing any // of the extras included with the |intent|. - intent.putExtra(NotificationConstants.EXTRA_NOTIFICATION_ID, notificationId); - intent.putExtra(NotificationConstants.EXTRA_NOTIFICATION_TYPE, notificationType); - intent.putExtra(NotificationConstants.EXTRA_NOTIFICATION_INFO_ORIGIN, origin); - intent.putExtra(NotificationConstants.EXTRA_NOTIFICATION_INFO_SCOPE, scopeUrl); - intent.putExtra(NotificationConstants.EXTRA_NOTIFICATION_INFO_PROFILE_ID, profileId); - intent.putExtra(NotificationConstants.EXTRA_NOTIFICATION_INFO_PROFILE_INCOGNITO, incognito); + intent.putExtra(NotificationConstants.EXTRA_NOTIFICATION_ID, attributes.notificationId); + intent.putExtra(NotificationConstants.EXTRA_NOTIFICATION_TYPE, attributes.notificationType); + intent.putExtra(NotificationConstants.EXTRA_NOTIFICATION_INFO_ORIGIN, attributes.origin); + intent.putExtra(NotificationConstants.EXTRA_NOTIFICATION_INFO_SCOPE, attributes.scopeUrl); intent.putExtra( - NotificationConstants.EXTRA_NOTIFICATION_INFO_WEBAPK_PACKAGE, webApkPackage); + NotificationConstants.EXTRA_NOTIFICATION_INFO_PROFILE_ID, attributes.profileId); + intent.putExtra( + NotificationConstants.EXTRA_NOTIFICATION_INFO_PROFILE_INCOGNITO, + attributes.incognito); + intent.putExtra( + NotificationConstants.EXTRA_NOTIFICATION_INFO_WEBAPK_PACKAGE, + attributes.webApkPackage); intent.putExtra(NotificationConstants.EXTRA_NOTIFICATION_INFO_ACTION_INDEX, actionIndex); // This flag ensures the broadcast is delivered with foreground priority. It also means the @@ -551,12 +558,14 @@ (Callback<String>) (webApkPackage) -> displayNotificationInternal( - notificationId, - notificationType, - origin, - scopeUrl, - profileId, - incognito, + new NotificationIdentifyingAttributes( + notificationId, + notificationType, + origin, + scopeUrl, + profileId, + incognito, + webApkPackage), vibrateEnabled, title, body, @@ -567,8 +576,7 @@ timestamp, renotify, silent, - actions, - webApkPackage)); + actions)); } private Promise<String> getWebApkPackage(String scopeUrl) { @@ -586,12 +594,7 @@ /** Called after querying whether the browser backs the given WebAPK. */ private void displayNotificationInternal( - String notificationId, - @NotificationType int notificationType, - String origin, - String scopeUrl, - String profileId, - boolean incognito, + NotificationIdentifyingAttributes identifyingAttributes, boolean vibrateEnabled, String title, String body, @@ -602,25 +605,19 @@ long timestamp, boolean renotify, boolean silent, - ActionInfo[] actions, - String webApkPackage) { + ActionInfo[] actions) { NotificationPlatformBridgeJni.get() .storeCachedWebApkPackageForNotificationId( mNativeNotificationPlatformBridge, NotificationPlatformBridge.this, - notificationId, - webApkPackage); + identifyingAttributes.notificationId, + identifyingAttributes.webApkPackage); // Record whether it's known whether notifications can be shown to the user at all. NotificationSystemStatusUtil.recordAppNotificationStatusHistogram(); NotificationBuilderBase notificationBuilder = prepareNotificationBuilder( - notificationId, - notificationType, - origin, - scopeUrl, - profileId, - incognito, + identifyingAttributes, vibrateEnabled, title, body, @@ -631,89 +628,123 @@ timestamp, renotify, silent, - actions, - webApkPackage); + actions); + + notificationBuilder.setContentIntent( + makePendingIntent( + identifyingAttributes, + NotificationConstants.ACTION_CLICK_NOTIFICATION, + /* actionIndex= */ -1, + /* mutable= */ false)); + + notificationBuilder.setDeleteIntent( + makePendingIntent( + identifyingAttributes, + NotificationConstants.ACTION_CLOSE_NOTIFICATION, + /* actionIndex= */ -1, + /* mutable= */ false)); // Delegate notification to WebAPK. - if (!webApkPackage.isEmpty()) { + if (!identifyingAttributes.webApkPackage.isEmpty()) { WebApkServiceClient.getInstance() .notifyNotification( - origin, - webApkPackage, + identifyingAttributes.origin, + identifyingAttributes.webApkPackage, notificationBuilder, - notificationId, + identifyingAttributes.notificationId, PLATFORM_ID); return; } // Delegate notification to TWA. - if (getTwaClient().twaExistsForScope(Uri.parse(scopeUrl))) { + Uri scopeUri = Uri.parse(identifyingAttributes.scopeUrl); + if (getTwaClient().twaExistsForScope(scopeUri)) { getTwaClient() .notifyNotification( - Uri.parse(scopeUrl), - notificationId, + scopeUri, + identifyingAttributes.notificationId, PLATFORM_ID, notificationBuilder, NotificationUmaTracker.getInstance()); return; } + appendSiteSettingsButton( + notificationBuilder, + identifyingAttributes.notificationId, + identifyingAttributes.origin, + actions); + NotificationWrapper notification = - buildNotificationWrapper( - notificationBuilder, - notificationType, - notificationId, - origin, - actions, - image); + buildNotificationWrapper(notificationBuilder, identifyingAttributes.notificationId); - Callback<Boolean> suspendedCallback = - (suspended) -> { - // We will call displayNotification() again after the suspension is over. - if (suspended) return; + // Either display the notification right away; or, if this kind of notification is currently + // under suspension, store the notification's resources back into the NotificationDatabase. + // Once the suspension is over, displayNotification() will be called again. + storeNotificationResourcesIfSuspended(identifyingAttributes, notification) + .then( + (suspended) -> { + if (suspended) { + return; + } - // Display notification as Chrome. - // Android may throw an exception on - // INotificationManager.enqueueNotificationWithTag, - // see crbug.com/1077027. - try { - mNotificationManager.notify(notification); - NotificationUmaTracker.getInstance() - .onNotificationShown( - NotificationUmaTracker.SystemNotificationType.SITES, - notification.getNotification()); - } catch (RuntimeException e) { - Log.e( - TAG, - "Failed to send notification, the IPC message might be corrupted."); - } - }; - - // Temporarily suspend web notifications if the origin is suspended. - if (notificationType == NotificationType.WEB_PERSISTENT) { - NotificationSuspender.maybeSuspendNotification(notification).then(suspendedCallback); - } else { - suspendedCallback.onResult(/* suspended= */ false); - } + // Display notification as Chrome. + // Android may throw an exception on + // INotificationManager.enqueueNotificationWithTag, + // see crbug.com/1077027. + try { + mNotificationManager.notify(notification); + NotificationUmaTracker.getInstance() + .onNotificationShown( + NotificationUmaTracker.SystemNotificationType.SITES, + notification.getNotification()); + } catch (RuntimeException e) { + Log.e( + TAG, + "Failed to send notification, the IPC message might be" + + " corrupted."); + } + }); // If Chrome has no app-level notifications permission, check if an origin-level permission // should be revoked. // Notifications permission is not allowed for incognito profile. - if (!origin.isEmpty() && !incognito) { + if (!identifyingAttributes.origin.isEmpty() && !identifyingAttributes.incognito) { NotificationManagerCompat manager = NotificationManagerCompat.from(ContextUtils.getApplicationContext()); PushMessagingServiceBridge.getInstance() - .verify(origin, profileId, manager.areNotificationsEnabled()); + .verify( + identifyingAttributes.origin, + identifyingAttributes.profileId, + manager.areNotificationsEnabled()); } } + private Promise<Boolean> storeNotificationResourcesIfSuspended( + NotificationIdentifyingAttributes identifyingAttributes, + NotificationWrapper notification) { + if (identifyingAttributes.notificationType != NotificationType.WEB_PERSISTENT) { + return Promise.fulfilled(false); + } + + if (!UsageStatsService.isEnabled()) { + return Promise.fulfilled(false); + } + + // Need to `waitForChromeStartup` because if we lazily end up constructing the + // `UsageStatsService` here, that constructor can call JNI. + // TODO(crbug.com/1520479): The only caller to `displayNotification` is native code, so we + // could be more confident here that native is running and remove this logic. + return waitForChromeStartup() + .then( + (Void v) -> + UsageStatsService.getInstance() + .getSuspensionTracker() + .storeNotificationResourcesIfSuspended(notification)); + } + private NotificationBuilderBase prepareNotificationBuilder( - String notificationId, - @NotificationType int notificationType, - String origin, - String scopeUrl, - String profileId, - boolean incognito, + NotificationIdentifyingAttributes identifyingAttributes, boolean vibrateEnabled, String title, String body, @@ -724,39 +755,12 @@ long timestamp, boolean renotify, boolean silent, - ActionInfo[] actions, - String webApkPackage) { + ActionInfo[] actions) { Context context = ContextUtils.getApplicationContext(); - PendingIntentProvider clickIntent = - makePendingIntent( - context, - NotificationConstants.ACTION_CLICK_NOTIFICATION, - notificationId, - notificationType, - origin, - scopeUrl, - profileId, - incognito, - webApkPackage, - /* actionIndex= */ -1, - false); - PendingIntentProvider closeIntent = - makePendingIntent( - context, - NotificationConstants.ACTION_CLOSE_NOTIFICATION, - notificationId, - notificationType, - origin, - scopeUrl, - profileId, - incognito, - webApkPackage, - /* actionIndex= */ -1, - false); - - boolean hasImage = image != null; - boolean forWebApk = !webApkPackage.isEmpty(); + final boolean hasImage = image != null; + final boolean forWebApk = !identifyingAttributes.webApkPackage.isEmpty(); + final String origin = identifyingAttributes.origin; NotificationBuilderBase notificationBuilder = new StandardNotificationBuilder(context) .setTitle(title) @@ -766,8 +770,6 @@ .setSmallIconId(R.drawable.ic_chrome) .setStatusBarIcon(badge) .setSmallIconForContent(badge) - .setContentIntent(clickIntent) - .setDeleteIntent(closeIntent) .setTicker(createTickerText(title, body)) .setTimestamp(timestamp) .setRenotify(renotify) @@ -787,15 +789,8 @@ boolean mutable = (action.type == NotificationActionType.TEXT); PendingIntentProvider intent = makePendingIntent( - context, + identifyingAttributes, NotificationConstants.ACTION_CLICK_NOTIFICATION, - notificationId, - notificationType, - origin, - scopeUrl, - profileId, - incognito, - webApkPackage, actionIndex, mutable); // Don't show action button icons when there's an image, as then action buttons go on @@ -823,13 +818,11 @@ return notificationBuilder; } - private NotificationWrapper buildNotificationWrapper( + private void appendSiteSettingsButton( NotificationBuilderBase notificationBuilder, - @NotificationType int notificationType, String notificationId, String origin, - ActionInfo[] actions, - Bitmap image) { + ActionInfo[] actions) { Context context = ContextUtils.getApplicationContext(); Resources res = context.getResources(); @@ -865,7 +858,10 @@ // last one, so add it after the other actions. notificationBuilder.addSettingsAction( settingsIconId, settingsTitle, settingsIntentProvider); + } + private NotificationWrapper buildNotificationWrapper( + NotificationBuilderBase notificationBuilder, String notificationId) { return notificationBuilder.build( new NotificationMetadata( NotificationUmaTracker.SystemNotificationType.SITES, @@ -979,26 +975,13 @@ * Calls NotificationPlatformBridgeAndroid::OnNotificationClicked in native code to indicate * that the notification with the given parameters has been clicked on. * - * @param notificationId The id of the notification. - * @param origin The origin of the notification. - * @param scopeUrl The scope of the service worker registered by the site where the notification - * comes from. - * @param profileId Id of the profile that showed the notification. - * @param incognito if the profile session was an off the record one. - * @param webApkPackage The package of the WebAPK associated with the notification. - * Empty if the notification is not associated with a WebAPK. + * @param identifyingAttributes Common attributes identifying a notification and its source. * @param actionIndex The index of the action button that was clicked, or -1 if not applicable. * @param reply User reply to a text action on the notification. Null if the user did not click - * on a text action or if inline replies are not supported. + * on a text action or if inline replies are not supported. */ private void onNotificationClicked( - String notificationId, - int notificationType, - String origin, - String scopeUrl, - String profileId, - boolean incognito, - String webApkPackage, + NotificationIdentifyingAttributes identifyingAttributes, int actionIndex, @Nullable String reply) { mLastNotificationClickMs = System.currentTimeMillis(); @@ -1006,13 +989,13 @@ .onNotificationClicked( mNativeNotificationPlatformBridge, NotificationPlatformBridge.this, - notificationId, - notificationType, - origin, - scopeUrl, - profileId, - incognito, - webApkPackage, + identifyingAttributes.notificationId, + identifyingAttributes.notificationType, + identifyingAttributes.origin, + identifyingAttributes.scopeUrl, + identifyingAttributes.profileId, + identifyingAttributes.incognito, + identifyingAttributes.webApkPackage, actionIndex, reply); } @@ -1021,28 +1004,20 @@ * Calls NotificationPlatformBridgeAndroid::OnNotificationClosed in native code to indicate that * the notification with the given parameters has been closed. * - * @param notificationId The id of the notification. - * @param origin The origin of the notification. - * @param profileId Id of the profile that showed the notification. - * @param incognito if the profile session was an off the record one. + * @param identifyingAttributes Common attributes identifying a notification and its source. * @param byUser Whether the notification was closed by a user gesture. */ private void onNotificationClosed( - String notificationId, - int notificationType, - String origin, - String profileId, - boolean incognito, - boolean byUser) { + NotificationIdentifyingAttributes identifyingAttributes, boolean byUser) { NotificationPlatformBridgeJni.get() .onNotificationClosed( mNativeNotificationPlatformBridge, NotificationPlatformBridge.this, - notificationId, - notificationType, - origin, - profileId, - incognito, + identifyingAttributes.notificationId, + identifyingAttributes.notificationType, + identifyingAttributes.origin, + identifyingAttributes.profileId, + identifyingAttributes.incognito, byUser); } @@ -1053,6 +1028,25 @@ return mTwaClient; } + private static Promise<Void> waitForChromeStartup() { + BrowserStartupController browserStartup = BrowserStartupController.getInstance(); + if (browserStartup.isFullBrowserStarted()) return Promise.fulfilled(null); + Promise<Void> promise = new Promise<>(); + browserStartup.addStartupCompletedObserver( + new StartupCallback() { + @Override + public void onSuccess() { + promise.fulfill(null); + } + + @Override + public void onFailure() { + promise.reject(null); + } + }); + return promise; + } + @NativeMethods interface Natives { void initializeNotificationPlatformBridge();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/usage_stats/NotificationSuspender.java b/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationSuspender.java similarity index 60% rename from chrome/android/java/src/org/chromium/chrome/browser/usage_stats/NotificationSuspender.java rename to chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationSuspender.java index 4b3c510..554382af 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/usage_stats/NotificationSuspender.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationSuspender.java
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -package org.chromium.chrome.browser.usage_stats; +package org.chromium.chrome.browser.notifications; import android.app.Notification; import android.app.NotificationManager; @@ -18,60 +18,28 @@ import androidx.annotation.RequiresApi; -import org.jni_zero.JNINamespace; import org.jni_zero.NativeMethods; import org.chromium.base.ContextUtils; -import org.chromium.base.Promise; -import org.chromium.chrome.browser.notifications.NotificationPlatformBridge; -import org.chromium.chrome.browser.notifications.NotificationUmaTracker; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.components.browser_ui.notifications.NotificationMetadata; import org.chromium.components.browser_ui.notifications.NotificationWrapper; -import org.chromium.content_public.browser.BrowserStartupController; -import org.chromium.content_public.browser.BrowserStartupController.StartupCallback; import java.util.ArrayList; -import java.util.Collections; +import java.util.Arrays; import java.util.List; /** - * Class that suspends and revives notifications for suspended websites. All calls must be made on - * the UI thread. + * Class that suspends and revives notifications. + * + * All calls must be made on the UI thread, and the full browser must be started before using this + * class. */ -@JNINamespace("usage_stats") public class NotificationSuspender { private final Profile mProfile; private final Context mContext; private final NotificationManager mNotificationManager; - private static boolean isEnabled() { - return UsageStatsService.isEnabled(); - } - - /** - * Suspends the given notification if it originates from a suspended domain. - * @param notification The notification to suspend. - * @return A {@link Promise} that resolves to whether the given notification got suspended. - */ - public static Promise<Boolean> maybeSuspendNotification(NotificationWrapper notification) { - // No need to initialize UsageStatsService if it is disabled. - if (!isEnabled()) return Promise.fulfilled(false); - return waitForChromeStartup() - .then((Void v) -> UsageStatsService.getInstance().getAllSuspendedWebsitesAsync()) - .then( - (List<String> fqdns) -> { - if (!fqdns.contains(getValidFqdnOrEmptyString(notification))) { - return false; - } - UsageStatsService.getInstance() - .getNotificationSuspender() - .storeNotificationResources( - Collections.singletonList(notification)); - return true; - }); - } - public NotificationSuspender(Profile profile) { mProfile = profile; mContext = ContextUtils.getApplicationContext(); @@ -79,39 +47,65 @@ (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); } - public void setWebsitesSuspended(List<String> fqdns, boolean suspended) { - if (fqdns.isEmpty() || !isEnabled()) return; - if (suspended) { - storeNotificationResources(getActiveNotificationsForFqdns(fqdns)); - } else { - unsuspendWebsites(fqdns); - } + /** + * Suspends notifications from the given domains. + * + * Suspending means storing the notification resources and canceling the Android notifications + * themselves, so that they can be re-displayed later. + * + * @param fqdns The list of domain strings to suspend notifications from. + */ + public void suspendNotificationsFromDomains(List<String> fqdns) { + List<String> storedNotificationIds = + storeNotificationResources(getActiveNotificationsForFqdns(fqdns)); + cancelNotificationsWithIds(storedNotificationIds); } - private void storeNotificationResources(List<NotificationWrapper> notifications) { - if (notifications.isEmpty()) return; + /** + * Stores resources for the given notifications back into the native NotificationDatabase. + * + * This allows re-displaying these notification later. + * + * @param notifications The list of notifications whose resources to store. + */ + public List<String> storeNotificationResources(List<NotificationWrapper> notifications) { + if (notifications.isEmpty()) { + return new ArrayList<String>(); + } - String[] ids = new String[notifications.size()]; + String[] notificationIds = new String[notifications.size()]; String[] origins = new String[notifications.size()]; Bitmap[] resources = new Bitmap[notifications.size() * 3]; for (int i = 0; i < notifications.size(); ++i) { Notification notification = notifications.get(i).getNotification(); String tag = notifications.get(i).getMetadata().tag; - ids[i] = tag; + // Chromium's `notificationId` is used as the Android notification's tag. + notificationIds[i] = tag; origins[i] = NotificationPlatformBridge.getOriginFromNotificationTag(tag); resources[i * 3 + 0] = getNotificationIcon(notification); resources[i * 3 + 1] = getNotificationBadge(notification); resources[i * 3 + 2] = getNotificationImage(notification); - mNotificationManager.cancel(tag, NotificationPlatformBridge.PLATFORM_ID); } NotificationSuspenderJni.get() - .storeNotificationResources(mProfile, ids, origins, resources); + .storeNotificationResources(mProfile, notificationIds, origins, resources); + return new ArrayList<String>(Arrays.asList(notificationIds)); } - private void unsuspendWebsites(List<String> fqdns) { - if (fqdns.isEmpty()) return; + + /** + * Unsuspends notifications from the given domains. + * + * This means re-displaying the notification using the prevously stored resources. + * + * @param fqdns The list of domain strings to unsuspend notifications from. + */ + public void unsuspendNotificationsFromDomains(List<String> fqdns) { + if (fqdns.isEmpty()) { + return; + } + // Handle both http and https schemes as native expects origins. String[] origins = new String[fqdns.size() * 2]; for (int i = 0; i < fqdns.size(); ++i) { @@ -121,9 +115,33 @@ NotificationSuspenderJni.get().reDisplayNotifications(mProfile, origins); } + /** + * Retrieves the fully-qualified domain name of the website that displayed a notification. + * + * @param notification The notification whose originating domain to return. + */ + public static String getValidFqdnOrEmptyString(NotificationWrapper notification) { + String tag = notification.getMetadata().tag; + String origin = NotificationPlatformBridge.getOriginFromNotificationTag(tag); + if (TextUtils.isEmpty(origin)) return ""; + String host = Uri.parse(origin).getHost(); + return host == null ? "" : host; + } + + private void cancelNotificationsWithIds(List<String> notificationIds) { + for (String notificationId : notificationIds) { + mNotificationManager.cancel( + /* tag= */ notificationId, NotificationPlatformBridge.PLATFORM_ID); + } + } + private List<NotificationWrapper> getActiveNotificationsForFqdns(List<String> fqdns) { List<NotificationWrapper> notifications = new ArrayList<>(); + if (fqdns.isEmpty()) { + return notifications; + } + for (StatusBarNotification notification : mNotificationManager.getActiveNotifications()) { if (notification.getId() != NotificationPlatformBridge.PLATFORM_ID) continue; String tag = notification.getTag(); @@ -159,33 +177,6 @@ return (Bitmap) notification.extras.get(Notification.EXTRA_PICTURE); } - private static String getValidFqdnOrEmptyString(NotificationWrapper notification) { - String tag = notification.getMetadata().tag; - String origin = NotificationPlatformBridge.getOriginFromNotificationTag(tag); - if (TextUtils.isEmpty(origin)) return ""; - String host = Uri.parse(origin).getHost(); - return host == null ? "" : host; - } - - private static Promise<Void> waitForChromeStartup() { - BrowserStartupController browserStartup = BrowserStartupController.getInstance(); - if (browserStartup.isFullBrowserStarted()) return Promise.fulfilled(null); - Promise<Void> promise = new Promise<>(); - browserStartup.addStartupCompletedObserver( - new StartupCallback() { - @Override - public void onSuccess() { - promise.fulfill(null); - } - - @Override - public void onFailure() { - promise.reject(null); - } - }); - return promise; - } - @NativeMethods interface Natives { // Stores the given |resources| to be displayed later again. Note that |resources| is
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java index 6cf50d5..27db32d 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
@@ -62,6 +62,7 @@ import org.chromium.chrome.browser.gesturenav.TabbedSheetDelegate; import org.chromium.chrome.browser.history.HistoryManagerUtils; import org.chromium.chrome.browser.hub.HubFieldTrial; +import org.chromium.chrome.browser.hub.HubManager; import org.chromium.chrome.browser.incognito.reauth.IncognitoReauthCoordinatorFactory; import org.chromium.chrome.browser.incognito.reauth.IncognitoReauthManager; import org.chromium.chrome.browser.incognito.reauth.IncognitoReauthTopToolbarDelegate; @@ -176,6 +177,7 @@ private MultiInstanceManager mMultiInstanceManager; private int mStatusIndicatorHeight; private TouchEventObserver mDragDropTouchObserver; + private final OneshotSupplier<HubManager> mHubManagerSupplier; /** * A common {@link CallbackController} used for being notified when {@link TabSwitcher} or @@ -231,6 +233,7 @@ * @param tabModelSelectorSupplier Supplies the {@link TabModelSelector}. * @param startSurfaceSupplier Supplier of the {@link StartSurface}. * @param tabSwitcherSupplier Supplier of the {@link TabSwitcher}. + * @param hubManagerSupplier Supplier for the {@link HubManager}. * @param incognitoTabSwitcherSupplier Supplier of the incognito {@link TabSwitcher}. * @param intentMetadataOneshotSupplier Supplier with information about the launching intent. * @param layoutStateProviderOneshotSupplier Supplier of the {@link LayoutStateProvider}. @@ -280,6 +283,7 @@ @NonNull OneshotSupplier<StartSurface> startSurfaceSupplier, @NonNull OneshotSupplier<TabSwitcher> tabSwitcherSupplier, @NonNull OneshotSupplier<TabSwitcher> incognitoTabSwitcherSupplier, + @NonNull OneshotSupplier<HubManager> hubManagerSupplier, @NonNull OneshotSupplier<ToolbarIntentMetadata> intentMetadataOneshotSupplier, @NonNull OneshotSupplier<LayoutStateProvider> layoutStateProviderOneshotSupplier, @NonNull Supplier<Tab> startSurfaceParentTabSupplier, @@ -384,6 +388,7 @@ } }; mMultiInstanceManager = multiInstanceManager; + mHubManagerSupplier = hubManagerSupplier; } @Override @@ -685,6 +690,7 @@ new SettingsLauncherImpl(), incognitoReauthTopToolbarDelegate, mLayoutManager, + mHubManagerSupplier, /* showRegularOverviewIntent= */ null, /* isTabbedActivity= */ true);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/usage_stats/SuspensionTracker.java b/chrome/android/java/src/org/chromium/chrome/browser/usage_stats/SuspensionTracker.java index eb3f991..5427676 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/usage_stats/SuspensionTracker.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/usage_stats/SuspensionTracker.java
@@ -5,8 +5,12 @@ package org.chromium.chrome.browser.usage_stats; import org.chromium.base.Promise; +import org.chromium.chrome.browser.notifications.NotificationSuspender; +import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.components.browser_ui.notifications.NotificationWrapper; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.function.Function; @@ -17,9 +21,9 @@ private final Promise<List<String>> mRootPromise; private Promise<Void> mWritePromise; - public SuspensionTracker(UsageStatsBridge bridge, NotificationSuspender notificationSuspender) { + public SuspensionTracker(UsageStatsBridge bridge, Profile profile) { mBridge = bridge; - mNotificationSuspender = notificationSuspender; + mNotificationSuspender = new NotificationSuspender(profile); mRootPromise = new Promise<>(); mBridge.getAllSuspensions( (result) -> { @@ -58,11 +62,14 @@ if (didSucceed) { if (suspended) { result.addAll(fqdns); + mNotificationSuspender + .suspendNotificationsFromDomains(fqdns); } else { result.removeAll(fqdns); + mNotificationSuspender + .unsuspendNotificationsFromDomains( + fqdns); } - mNotificationSuspender.setWebsitesSuspended( - fqdns, suspended); newWritePromise.fulfill(null); } else { newWritePromise.reject(); @@ -81,6 +88,30 @@ return newWritePromise; } + /** + * Stores the notification's resources if the notification originates from a suspended domain, + * so that in that case it will be shown later. + * + * @param notification The notification whose resources to store for later display. + * @return A {@link Promise} that resolves to whether the domain is suspended and thus the + * resources were stored. + */ + public Promise<Boolean> storeNotificationResourcesIfSuspended( + NotificationWrapper notification) { + return getAllSuspendedWebsites() + .then( + (List<String> fqdns) -> { + if (!fqdns.contains( + NotificationSuspender.getValidFqdnOrEmptyString( + notification))) { + return false; + } + mNotificationSuspender.storeNotificationResources( + Collections.singletonList(notification)); + return true; + }); + } + public Promise<List<String>> getAllSuspendedWebsites() { return mRootPromise.then( (Function<List<String>, List<String>>)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/usage_stats/UsageStatsService.java b/chrome/android/java/src/org/chromium/chrome/browser/usage_stats/UsageStatsService.java index 58b07bd..6afd8b7 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/usage_stats/UsageStatsService.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/usage_stats/UsageStatsService.java
@@ -36,7 +36,6 @@ private Profile mProfile; private EventTracker mEventTracker; - private NotificationSuspender mNotificationSuspender; private SuspensionTracker mSuspensionTracker; private TokenTracker mTokenTracker; private UsageStatsBridge mBridge; @@ -84,8 +83,7 @@ mProfile = Profile.getLastUsedRegularProfile(); mBridge = new UsageStatsBridge(mProfile, this); mEventTracker = new EventTracker(mBridge); - mNotificationSuspender = new NotificationSuspender(mProfile); - mSuspensionTracker = new SuspensionTracker(mBridge, mNotificationSuspender); + mSuspensionTracker = new SuspensionTracker(mBridge, mProfile); mTokenTracker = new TokenTracker(mBridge); mPageViewObservers = new ArrayList<>(); mClient = AppHooks.get().createDigitalWellbeingClient(); @@ -100,8 +98,8 @@ mOptInState = getOptInState(); } - /* package */ NotificationSuspender getNotificationSuspender() { - return mNotificationSuspender; + public SuspensionTracker getSuspensionTracker() { + return mSuspensionTracker; } /** @@ -220,7 +218,8 @@ (exceptionInner) -> { Log.e( TAG, - "Failed to clear all events for history deletion"); + "Failed to clear all events for history" + + " deletion"); }); }); } @@ -245,7 +244,8 @@ (exceptionInner) -> { Log.e( TAG, - "Failed to clear range of events for history deletion"); + "Failed to clear range of events for" + + " history deletion"); }); }); } @@ -266,7 +266,8 @@ (exceptionInner) -> { Log.e( TAG, - "Failed to clear domain events for history deletion"); + "Failed to clear domain events for history" + + " deletion"); }); }); }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/AccountBookmarkTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/AccountBookmarkTest.java deleted file mode 100644 index 39c0c8d..0000000 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/AccountBookmarkTest.java +++ /dev/null
@@ -1,127 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package org.chromium.chrome.browser.bookmarks; - -import static androidx.test.espresso.Espresso.onView; -import static androidx.test.espresso.assertion.ViewAssertions.matches; -import static androidx.test.espresso.matcher.ViewMatchers.hasDescendant; -import static androidx.test.espresso.matcher.ViewMatchers.isDescendantOfA; -import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; -import static androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility; -import static androidx.test.espresso.matcher.ViewMatchers.withId; -import static androidx.test.espresso.matcher.ViewMatchers.withText; - -import static org.hamcrest.Matchers.allOf; -import static org.mockito.ArgumentMatchers.matches; - -import static org.chromium.content_public.browser.test.util.TestThreadUtils.runOnUiThreadBlocking; - -import android.view.View; - -import androidx.recyclerview.widget.RecyclerView; -import androidx.test.espresso.ViewInteraction; -import androidx.test.espresso.matcher.ViewMatchers; -import androidx.test.filters.SmallTest; - -import org.hamcrest.Matcher; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TestRule; -import org.junit.runner.RunWith; - -import org.chromium.base.test.util.CommandLineFlags; -import org.chromium.base.test.util.CriteriaHelper; -import org.chromium.base.test.util.DoNotBatch; -import org.chromium.base.test.util.Features; -import org.chromium.base.test.util.Features.DisableFeatures; -import org.chromium.base.test.util.Features.EnableFeatures; -import org.chromium.chrome.browser.flags.ChromeFeatureList; -import org.chromium.chrome.browser.flags.ChromeSwitches; -import org.chromium.chrome.browser.profiles.Profile; -import org.chromium.chrome.browser.sync.SyncTestRule; -import org.chromium.chrome.test.ChromeJUnit4ClassRunner; -import org.chromium.chrome.test.R; -import org.chromium.chrome.test.util.BookmarkTestRule; -import org.chromium.components.browser_ui.widget.RecyclerViewTestUtils; - -@RunWith(ChromeJUnit4ClassRunner.class) -@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) -@EnableFeatures({ChromeFeatureList.ENABLE_BOOKMARK_FOLDERS_FOR_ACCOUNT_STORAGE}) -// TODO(crbug.com/1168590): Once SyncTestRule supports batching, investigate batching this suite. -@DoNotBatch(reason = "SyncTestRule doesn't support batching.") -public class AccountBookmarkTest { - private static final String BOOKMARKS_TYPE_STRING = "Bookmarks"; - - @Rule public SyncTestRule mSyncTestRule = new SyncTestRule(); - @Rule public BookmarkTestRule mBookmarkTestRule = new BookmarkTestRule(); - @Rule public TestRule mProcessor = new Features.JUnitProcessor(); - - private BookmarkManagerCoordinator mBookmarkManagerCoordinator; - private BookmarkModel mBookmarkModel; - private RecyclerView mRecyclerView; - - @Before - public void setUp() throws Exception { - mBookmarkModel = - runOnUiThreadBlocking( - () -> BookmarkModel.getForProfile(Profile.getLastUsedRegularProfile())); - mSyncTestRule.setUpAccountAndSignInForTesting(); - mBookmarkManagerCoordinator = - mBookmarkTestRule.showBookmarkManager(mSyncTestRule.getActivity()); - } - - @Test - @SmallTest - @EnableFeatures({ChromeFeatureList.REPLACE_SYNC_PROMOS_WITH_SIGN_IN_PROMOS}) - public void testReplaceSyncPromosWithSigninPromos() { - CriteriaHelper.pollUiThread(() -> mBookmarkModel.getAccountMobileFolderId() != null); - RecyclerViewTestUtils.waitForStableMvcRecyclerView( - mBookmarkManagerCoordinator.getRecyclerViewForTesting()); - checkTopLevelAccountFoldersDisplayed(); - } - - @Test - @SmallTest - @DisableFeatures({ChromeFeatureList.REPLACE_SYNC_PROMOS_WITH_SIGN_IN_PROMOS}) - public void testEnableDatatypesManually() { - mSyncTestRule.setSelectedTypes(true, null); - CriteriaHelper.pollUiThread(() -> mBookmarkModel.getAccountMobileFolderId() != null); - RecyclerViewTestUtils.waitForStableMvcRecyclerView( - mBookmarkManagerCoordinator.getRecyclerViewForTesting()); - checkTopLevelAccountFoldersDisplayed(); - } - - private void checkTopLevelAccountFoldersDisplayed() { - checkToolbarTitleMatches("Bookmarks"); - onView(withText("In your Google Account")).check(matches(isDisplayed())); - getRecyclerViewItem("Mobile bookmarks", true).check(matches(isDisplayed())); - onView(withText("Only on this device")).check(matches(isDisplayed())); - getRecyclerViewItem("Mobile bookmarks", false).check(matches(isDisplayed())); - getRecyclerViewItem("Reading list", false).check(matches(isDisplayed())); - } - - private ViewInteraction getRecyclerViewItem(String text, boolean isAccountBookmark) { - return onView(getRecyclerItemMatcher(text, isAccountBookmark)); - } - - private Matcher<View> getRecyclerItemMatcher(String text, boolean isAccountBookmark) { - ViewMatchers.Visibility visibility = - isAccountBookmark ? ViewMatchers.Visibility.GONE : ViewMatchers.Visibility.VISIBLE; - return allOf( - withId(R.id.container), - hasDescendant(withText(text)), - hasDescendant( - allOf( - withId(R.id.local_bookmark_image), - withEffectiveVisibility(visibility)))); - } - - // Checks the toolbar title against the given string. - private void checkToolbarTitleMatches(String text) { - onView(allOf(isDescendantOfA(withId(R.id.action_bar)), withText(text))) - .check(matches(isDisplayed())); - } -}
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java index 423f112..b1f27e9 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java
@@ -2548,7 +2548,7 @@ BrowsingHistoryBridge historyService = new BrowsingHistoryBridge(profile); historyService.setObserver(historyObserver); String historyQueryFilter = ""; - historyService.queryHistory(historyQueryFilter); + historyService.queryHistory(historyQueryFilter, null); }); historyObserver.getQueryCallback().waitForCallback(0); return historyObserver.getHistoryQueryResults();
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/incognito/IncognitoHistoryLeakageTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/incognito/IncognitoHistoryLeakageTest.java index d12b6917..4cbc9cf 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/incognito/IncognitoHistoryLeakageTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/incognito/IncognitoHistoryLeakageTest.java
@@ -99,7 +99,7 @@ BrowsingHistoryBridge historyService = new BrowsingHistoryBridge(profile); historyService.setObserver(historyObserver); String historyQueryFilter = ""; - historyService.queryHistory(historyQueryFilter); + historyService.queryHistory(historyQueryFilter, null); }); historyObserver.getQueryCallback().waitForCallback(0); return historyObserver.getHistoryQueryResults();
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestCanMakePaymentMetricsTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestCanMakePaymentMetricsTest.java index 53cc761d..9003784 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestCanMakePaymentMetricsTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestCanMakePaymentMetricsTest.java
@@ -23,6 +23,7 @@ import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.R; import org.chromium.components.payments.Event; +import org.chromium.components.payments.Event2; import org.chromium.components.prefs.PrefService; import org.chromium.components.user_prefs.UserPrefs; import org.chromium.content_public.browser.test.util.TestThreadUtils; @@ -171,18 +172,14 @@ // Make sure the canMakePayment events were logged correctly. int expectedSample = - Event.SHOWN - | Event.OTHER_ABORTED - | Event.HAD_INITIAL_FORM_OF_PAYMENT - | Event.HAD_NECESSARY_COMPLETE_SUGGESTIONS - | Event.CAN_MAKE_PAYMENT_TRUE - | Event.HAS_ENROLLED_INSTRUMENT_TRUE - | Event.REQUEST_METHOD_OTHER - | Event.AVAILABLE_METHOD_OTHER; + Event2.SHOWN + | Event2.OTHER_ABORTED + | Event2.HAD_INITIAL_FORM_OF_PAYMENT + | Event2.REQUEST_METHOD_OTHER; Assert.assertEquals( 1, RecordHistogram.getHistogramValueCountForTesting( - "PaymentRequest.Events", expectedSample)); + "PaymentRequest.Events2", expectedSample)); } /** @@ -207,21 +204,16 @@ // Make sure the canMakePayment events were logged correctly. int expectedSample = - Event.SHOWN - | Event.PAY_CLICKED - | Event.RECEIVED_INSTRUMENT_DETAILS - | Event.COMPLETED - | Event.HAD_INITIAL_FORM_OF_PAYMENT - | Event.HAD_NECESSARY_COMPLETE_SUGGESTIONS - | Event.CAN_MAKE_PAYMENT_TRUE - | Event.HAS_ENROLLED_INSTRUMENT_TRUE - | Event.REQUEST_METHOD_OTHER - | Event.SELECTED_OTHER - | Event.AVAILABLE_METHOD_OTHER; + Event2.SHOWN + | Event2.PAY_CLICKED + | Event2.COMPLETED + | Event2.HAD_INITIAL_FORM_OF_PAYMENT + | Event2.REQUEST_METHOD_OTHER + | Event2.SELECTED_OTHER; Assert.assertEquals( 1, RecordHistogram.getHistogramValueCountForTesting( - "PaymentRequest.Events", expectedSample)); + "PaymentRequest.Events2", expectedSample)); } /** @@ -258,21 +250,16 @@ // Make sure the canMakePayment events were logged correctly. int expectedSample = - Event.SHOWN - | Event.PAY_CLICKED - | Event.RECEIVED_INSTRUMENT_DETAILS - | Event.COMPLETED - | Event.HAD_INITIAL_FORM_OF_PAYMENT - | Event.HAD_NECESSARY_COMPLETE_SUGGESTIONS - | Event.CAN_MAKE_PAYMENT_FALSE - | Event.HAS_ENROLLED_INSTRUMENT_FALSE - | Event.REQUEST_METHOD_OTHER - | Event.SELECTED_OTHER - | Event.AVAILABLE_METHOD_OTHER; + Event2.SHOWN + | Event2.PAY_CLICKED + | Event2.COMPLETED + | Event2.HAD_INITIAL_FORM_OF_PAYMENT + | Event2.REQUEST_METHOD_OTHER + | Event2.SELECTED_OTHER; Assert.assertEquals( 1, RecordHistogram.getHistogramValueCountForTesting( - "PaymentRequest.Events", expectedSample)); + "PaymentRequest.Events2", expectedSample)); } /** @@ -307,16 +294,14 @@ // Make sure no canMakePayment events were logged. int expectedSample = - Event.SHOWN - | Event.USER_ABORTED - | Event.HAD_INITIAL_FORM_OF_PAYMENT - | Event.HAD_NECESSARY_COMPLETE_SUGGESTIONS - | Event.REQUEST_METHOD_OTHER - | Event.AVAILABLE_METHOD_OTHER; + Event2.SHOWN + | Event2.USER_ABORTED + | Event2.HAD_INITIAL_FORM_OF_PAYMENT + | Event2.REQUEST_METHOD_OTHER; Assert.assertEquals( 1, RecordHistogram.getHistogramValueCountForTesting( - "PaymentRequest.Events", expectedSample)); + "PaymentRequest.Events2", expectedSample)); } /** @@ -341,18 +326,15 @@ // Make sure no canMakePayment events were logged. int expectedSample = - Event.SHOWN - | Event.PAY_CLICKED - | Event.RECEIVED_INSTRUMENT_DETAILS - | Event.COMPLETED - | Event.HAD_INITIAL_FORM_OF_PAYMENT - | Event.HAD_NECESSARY_COMPLETE_SUGGESTIONS - | Event.REQUEST_METHOD_OTHER - | Event.SELECTED_OTHER - | Event.AVAILABLE_METHOD_OTHER; + Event2.SHOWN + | Event2.PAY_CLICKED + | Event2.COMPLETED + | Event2.HAD_INITIAL_FORM_OF_PAYMENT + | Event2.REQUEST_METHOD_OTHER + | Event2.SELECTED_OTHER; Assert.assertEquals( 1, RecordHistogram.getHistogramValueCountForTesting( - "PaymentRequest.Events", expectedSample)); + "PaymentRequest.Events2", expectedSample)); } }
diff --git a/chrome/android/static_initializers.gni b/chrome/android/static_initializers.gni index b6a5668..bc93a61 100644 --- a/chrome/android/static_initializers.gni +++ b/chrome/android/static_initializers.gni
@@ -14,12 +14,7 @@ # the code, or apply a local modification to remove them. # # Some helpful hints at //docs/static_initializers.md -# -# Define expectations only for GN args covered by trybots. -if ((target_cpu == "arm" || target_cpu == "arm64") && - (!using_sanitizer && proprietary_codecs && - # Optimizations can remove static initializers (https://crbug.com/1434325) - !is_debug && !is_high_end_android && !is_component_build)) { +if (proprietary_codecs && !is_debug && !is_component_build) { # Comments show static_initializers according to # tools/linux/dump-static-initializers.py. _chrome_common_count = 0 @@ -41,8 +36,12 @@ _chrome_common_count += 1 } - expected_static_initializer_32bit_count = _chrome_common_count - if (target_cpu == "arm64") { + # Define expectations only for GN args covered by android-binary-size trybot. + if ((target_cpu == "arm" && !is_high_end_android) || + (target_cpu == "arm64" && !is_high_end_android_secondary_toolchain)) { + expected_static_initializer_32bit_count = _chrome_common_count + } + if (target_cpu == "arm64" && is_high_end_android) { expected_static_initializer_64bit_count = _chrome_common_count + _chrome_64only_count }
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 7f7fccb7..b3b703ed 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -3956,9 +3956,6 @@ </message> <!-- User Bypass Bubble --> - <message name="IDS_COOKIE_CONTROLS_TOOLTIP" desc="Tooltip shown on a page action icon that is shown when cookie blocking is enabled."> - Third-party cookie blocking - </message> <message name="IDS_COOKIE_CONTROLS_BUBBLE_COOKIES_BLOCKED_TITLE" desc="Title shown on the cookie controls bubble when third-party cookies are blocked."> Third-party cookies blocked </message>
diff --git a/chrome/app/os_settings_strings.grdp b/chrome/app/os_settings_strings.grdp index 4ad2dc4c..879fe37 100644 --- a/chrome/app/os_settings_strings.grdp +++ b/chrome/app/os_settings_strings.grdp
@@ -5509,7 +5509,7 @@ Sunset to sunrise </message> <message name="IDS_SETTINGS_DISPLAY_NIGHT_LIGHT_GEOLOCATION_WARNING_TEXT" translateable="false" desc="In Device Settings > Displays, the warning text that tells users that system geolocation permission is needed for scheduled night light."> - Current schedule is set to 6am - 6pm. To automatically update the sunset and sunrise schedule <ph name="BEGIN_LINK"><a href="#"></ph>turn on Location access<ph name="END_LINK"></a></ph> + Current schedule won't be updated. To automatically update the sunset and sunrise schedule <ph name="BEGIN_LINK"><a href="#"></ph>turn on Location access<ph name="END_LINK"></a></ph> </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 @@ -6337,10 +6337,10 @@ Camera access </message> <message name="IDS_OS_SETTINGS_PRIVACY_HUB_CAMERA_TOGGLE_SUBTEXT" desc="Sub-label for the camera access toggle in the Privacy controls (aka Privacy Hub) os-settings page."> - Allow access for apps, websites, and system services with the camera permission + Allow access for apps and websites with the camera permission and system services </message> <message name="IDS_OS_SETTINGS_PRIVACY_HUB_FALLBACK_CAMERA_TOGGLE_SUBTEXT" desc="Sub-label for the camera access toggle in the Privacy controls (aka Privacy Hub) os-settings page."> - Allow access for apps, websites, and system services with the camera permission. To use the camera, you may need to restart the app or refresh the page. + Allow access for apps and websites with the camera permission and system services. To use the camera, you may need to restart the app or refresh the page. </message> <message name="IDS_OS_SETTINGS_PRIVACY_HUB_NO_CAMERA_CONNECTED_TEXT" desc="Text to display in the Privacy Hub subpage when no camera is connected to the device."> No camera @@ -6349,7 +6349,7 @@ Microphone access </message> <message name="IDS_OS_SETTINGS_PRIVACY_HUB_MICROPHONE_TOGGLE_SUBTEXT" desc="Sub-label for the microphone access toggle in the Privacy controls (aka Privacy Hub) os-settings page."> - Allow access for apps, websites, and system services with the microphone permission + Allow access for apps and websites with the microphone permission and system services </message> <message name="IDS_OS_SETTINGS_PRIVACY_HUB_NO_MICROPHONE_CONNECTED_TEXT" desc="Text to display in the Privacy Hub subpage when no microphone is connected to the device."> No microphone
diff --git a/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_PRIVACY_HUB_CAMERA_TOGGLE_SUBTEXT.png.sha1 b/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_PRIVACY_HUB_CAMERA_TOGGLE_SUBTEXT.png.sha1 index c7110d1c..e25224b0 100644 --- a/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_PRIVACY_HUB_CAMERA_TOGGLE_SUBTEXT.png.sha1 +++ b/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_PRIVACY_HUB_CAMERA_TOGGLE_SUBTEXT.png.sha1
@@ -1 +1 @@ -b73f32dc8f9496f7b5e4fd0c45890ca564d61663 \ No newline at end of file +d68f6869e72ed8f99800f1d0e09525596c3ca876 \ No newline at end of file
diff --git a/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_PRIVACY_HUB_FALLBACK_CAMERA_TOGGLE_SUBTEXT.png.sha1 b/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_PRIVACY_HUB_FALLBACK_CAMERA_TOGGLE_SUBTEXT.png.sha1 index 46cc362..53d9abed 100644 --- a/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_PRIVACY_HUB_FALLBACK_CAMERA_TOGGLE_SUBTEXT.png.sha1 +++ b/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_PRIVACY_HUB_FALLBACK_CAMERA_TOGGLE_SUBTEXT.png.sha1
@@ -1 +1 @@ -344328ff213ecac2e9100bfdc7e410b1b86ab188 \ No newline at end of file +322150403f7d7b16644eaaec3f5646104a6dd57c \ No newline at end of file
diff --git a/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_PRIVACY_HUB_MICROPHONE_TOGGLE_SUBTEXT.png.sha1 b/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_PRIVACY_HUB_MICROPHONE_TOGGLE_SUBTEXT.png.sha1 index 2e3ce410..43ce657 100644 --- a/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_PRIVACY_HUB_MICROPHONE_TOGGLE_SUBTEXT.png.sha1 +++ b/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_PRIVACY_HUB_MICROPHONE_TOGGLE_SUBTEXT.png.sha1
@@ -1 +1 @@ -23d64ee33db643a1ae413a85505164369f1dc09f \ No newline at end of file +6f0b84d0781defa2336e087dbc38659e4bb77b1c \ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_af.xtb b/chrome/app/resources/chromium_strings_af.xtb index a68f99f..a21125b 100644 --- a/chrome/app/resources/chromium_strings_af.xtb +++ b/chrome/app/resources/chromium_strings_af.xtb
@@ -246,7 +246,6 @@ <translation id="5623402015214259806">{0,plural, =0{'n Chromium-opdatering is beskikbaar}=1{'n Chromium-opdatering is beskikbaar}other{'n Chromium-opdatering is al # dae lank beskikbaar}}</translation> <translation id="5643865575100044307">Vee altyd werfdata op jou toestel uit wanneer jy Chromium toemaak</translation> <translation id="5653831366781983928">Herbegin Chromium asseblief nou</translation> -<translation id="5675598751761067447">Hierdie lêer kan gevaarlik wees<ph name="LINE_BREAK" />Chromium kan hierdie aflaai vir jou nagaan as jy die wagwoord verskaf – jou wagwoord bly op jou toestel</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Wys Chromium in hierdie taal</translation> <translation id="569897634095159764">Kon nie aan die internet koppel nie. Instaanbediener vereis stawing.</translation>
diff --git a/chrome/app/resources/chromium_strings_am.xtb b/chrome/app/resources/chromium_strings_am.xtb index 16c0e0d..59c9c87 100644 --- a/chrome/app/resources/chromium_strings_am.xtb +++ b/chrome/app/resources/chromium_strings_am.xtb
@@ -249,7 +249,6 @@ <translation id="5623402015214259806">{0,plural, =0{የChromium ዝማኔ ይገኛል}=1{የChromium ዝማኔ ይገኛል}one{አንድ የChromium ዝማኔ ለ# ቀኖች ነበር}other{አንድ የChromium ዝማኔ ለ# ቀኖች ነበር}}</translation> <translation id="5643865575100044307">Chromium በሚዘጉበት ጊዜ የጣቢያ ውሂብን ሁልጊዜ ከመሣሪያዎ ላይ ይሰርዙ</translation> <translation id="5653831366781983928">እባክዎ Chromium ን አህን ዳግም ያስጀምሩ</translation> -<translation id="5675598751761067447">ይህ ፋይል አደገኛ ሊሆን ይችላል<ph name="LINE_BREAK" />የይለፍ ቃሉን ካቀረቡ Chromium ይህንን ውርድ ሊፈትሽልዎ ይችላል — የይለፍ ቃልዎ በመሣሪያዎ ላይ ይቆያል</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Chromiumን በዚህ ቋንቋ አሳይ</translation> <translation id="569897634095159764">ከበይነመረብ ጋር መገናኘት አልተቻለም። ተኪ አገልጋይ ማረጋገጥ ያስፈልገዋል።</translation>
diff --git a/chrome/app/resources/chromium_strings_ar.xtb b/chrome/app/resources/chromium_strings_ar.xtb index 42bc766..38bf464 100644 --- a/chrome/app/resources/chromium_strings_ar.xtb +++ b/chrome/app/resources/chromium_strings_ar.xtb
@@ -86,6 +86,7 @@ <translation id="2583187216237139145">يمكن لمشرف الملف الشخصي للعمل إزالة أي بيانات مرتبطة بمتصفِّح Chromium والتي يتم إنشاؤها أثناء استخدام هذا الملف الشخصي (مثل إنشاء الإشارات المرجعية والسجلّ وكلمات المرور والإعدادات الأخرى).<ph name="LEARN_MORE" /></translation> <translation id="2592940277904433508">مواصلة استخدام Chromium</translation> <translation id="259935314519650377">تعذَّر إجراء تخزين مؤقت للمثبّت الذي تم تنزيله. الخطأ: <ph name="UNPACK_CACHING_ERROR_CODE" />.</translation> +<translation id="264613044588233783">سيعمل Chromium بشكل أسرع ومن المفترض أن تعمل الميزات التي تستخدِم JavaScript على النحو المطلوب (خيار يُنصَح به).</translation> <translation id="2648074677641340862">حدث خطأ في نظام التشغيل أثناء عملية التثبيت. يُرجى إعادة تنزيل Chromium.</translation> <translation id="2661879430930417727">في حال مشاركة جهاز مع الأصدقاء والعائلة، يمكنهم الحصول على تجربة تصفّح منفصلة وإعداد Chromium على النحو المفضّل لديهم.</translation> <translation id="268602741124540128">مرحبًا بك في Chromium، <ph name="ACCOUNT_FIRST_NAME" /></translation> @@ -121,6 +122,7 @@ <translation id="3258596308407688501">يتعذر على Chromium القراءة والكتابة في دليل البيانات الخاص به: <ph name="USER_DATA_DIRECTORY" /></translation> +<translation id="3268051428841342958">V8 هو محرك JavaScript وWebAssembly من Chromium يُستخدَم لتحسين أداء المواقع الإلكترونية.</translation> <translation id="3283186697780795848">الإصدار المُثبّت من Chromium: <ph name="PRODUCT_VERSION" /></translation> <translation id="3286538390144397061">إعادة التشغيل الآن</translation> <translation id="328888136576916638">مفاتيح واجهة برمجة تطبيقات Google مفقودة. وسيترتب على ذلك توقف بعض وظائف Chromium عن العمل.</translation> @@ -214,6 +216,7 @@ <translation id="4814736265800133385">استخدام Chromium بدون حساب</translation> <translation id="4888717733111232871">قاعدة الوارد إلى Chromium للسماح بحركة مرور mDNS.</translation> <translation id="4893347770495441059">إعادة تشغيل متصفِّح Chromium لتحديثه</translation> +<translation id="4942295735032723435">للحصول على تحديثات Chromium في المستقبل، يجب استخدام جهاز يعمل بنظام التشغيل macOS 11 أو إصدار أحدث. ويعمل هذا الكمبيوتر بنظام التشغيل macOS 10.15.</translation> <translation id="4943838377383847465">Chromium في وضع الخلفية.</translation> <translation id="4987820182225656817">يمكن للضيف استخدام Chromium بدون أن يترك أي أثر وراءه.</translation> <translation id="4994636714258228724">إضافة نفسك إلى Chromium</translation> @@ -242,7 +245,6 @@ <translation id="5623402015214259806">{0,plural, =0{يتوفر تحديث لمتصفح Chromium}=1{يتوفر تحديث لمتصفح Chromium}two{يتوفر تحديث لمتصفح Chromium منذ يومين}few{يتوفر تحديث لمتصفح Chromium منذ # أيام}many{يتوفر تحديث لمتصفح Chromium منذ # يومًا}other{يتوفر تحديث لمتصفح Chromium منذ # يوم}}</translation> <translation id="5643865575100044307">حذف بيانات الموقع الإلكتروني من جهازك دائمًا عند إغلاق Chromium</translation> <translation id="5653831366781983928">يُرجى إعادة تشغيل Chromium الآن</translation> -<translation id="5675598751761067447">قد يكون هذا الملف خطيرًا<ph name="LINE_BREAK" />بإمكان Chromium التحقّق من عملية التنزيل هذه في حال أدخلت كلمة المرور، علمًا بأنّه لن يتم مشاركة هذه الكلمة خارج نطاق جهازك.</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">عرض Chromium بهذه اللغة</translation> <translation id="569897634095159764">يتعذّر الاتصال بالإنترنت. يتطلب الخادم الوكيل المصادقة.</translation> @@ -403,6 +405,7 @@ <translation id="8105840573057009683">يحتاج Chromium إلى إذن تحديد الموقع الجغرافي من أجل هذا الموقع الإلكتروني.</translation> <translation id="8133124826068723441">تعذّر على نظام التشغيل Chromium مزامنة بياناتك لأن المزامنة غير متاحة لنطاقك.</translation> <translation id="813913629614996137">تجري التهيئة...</translation> +<translation id="8166782796394721554">يمكنك تفعيل ميزة "الحماية الإضافية" في محرك JavaScript وWebAssembly من Chromium.</translation> <translation id="81770708095080097">هذا الملف ضار، لذلك فقد حظره Chromium.</translation> <translation id="8213374284266571500">حَظَر Chromium هذا الملف لأنّه ملف خطير.</translation> <translation id="8248265253516264921">في حال لم تتضمن صورة ما وصفًا مفيدًا، سيحاول Chromium توفير وصف لك. لإنشاء الأوصاف، سيتم إرسال الصور إلى Google. ويمكنك إيقاف هذه الميزة في الإعدادات في أي وقت.</translation>
diff --git a/chrome/app/resources/chromium_strings_as.xtb b/chrome/app/resources/chromium_strings_as.xtb index 1eff075..7678ace 100644 --- a/chrome/app/resources/chromium_strings_as.xtb +++ b/chrome/app/resources/chromium_strings_as.xtb
@@ -249,7 +249,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromiumৰ এটা আপডে'ট আছে}=1{Chromiumৰ এটা আপডে'ট আছে}one{Chromiumৰ এটা আপডে’ট # দিনৰ বাবে উপলব্ধ}other{Chromiumৰ এটা আপডে’ট # দিনৰ বাবে উপলব্ধ}}</translation> <translation id="5643865575100044307">আপুনি Chromium বন্ধ কৰিলে সদায়েই আপোনাৰ ডিভাইচৰ পৰা ছাইটৰ ডেটা মচক</translation> <translation id="5653831366781983928">অনুগ্ৰহ কৰি এতিয়া Chromium ৰিষ্টাৰ্ট কৰক</translation> -<translation id="5675598751761067447">এই ফাইলটো ক্ষতিকাৰক হ’ব পাৰে<ph name="LINE_BREAK" />যদি আপুনি পাছৱৰ্ডটো প্ৰদান কৰে Chromiumএ এই ডাউনল’ডটো আপোনাৰ বাবে পৰীক্ষা কৰিব পাৰে — আপোনাৰ পাছৱৰ্ডটো আপোনাৰ ডিভাইচত থাকে</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">এই ভাষাত Chromium প্ৰদর্শন কৰক</translation> <translation id="569897634095159764">ইণ্টাৰনেটৰ লগত সংযোগ কৰিব পৰা নাই। প্ৰ’ক্সি ছাৰ্ভাৰৰ বাবে বিশ্বাসযোগ্যতা প্ৰমাণীকৰণৰ আৱশ্যক।</translation>
diff --git a/chrome/app/resources/chromium_strings_az.xtb b/chrome/app/resources/chromium_strings_az.xtb index 7f4e651..f5c3aab 100644 --- a/chrome/app/resources/chromium_strings_az.xtb +++ b/chrome/app/resources/chromium_strings_az.xtb
@@ -247,7 +247,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromium güncəlləməsi əlçatandır}=1{Chromium güncəlləməsi əlçatandır}other{Chromium güncəlləməsi # gün ərzində əlçatan olub}}</translation> <translation id="5643865575100044307">Chromium-u bağladıqda sayt datasını cihazdan silin</translation> <translation id="5653831366781983928">Chromium'u indi başladın</translation> -<translation id="5675598751761067447">Bu fayl təhlükəli ola bilər<ph name="LINE_BREAK" />Parol təmin etsəniz, Chromium bu endirməni yoxlaya bilər (parol cihazda qalır)</translation> <translation id="5690427481109656848">Google MMC</translation> <translation id="5698481217667032250">Chromium'u bu dildə görüntüləyin</translation> <translation id="569897634095159764">İnternetə qoşulmaq olmur. Proksi serveri identifikasiya tələb edir.</translation>
diff --git a/chrome/app/resources/chromium_strings_be.xtb b/chrome/app/resources/chromium_strings_be.xtb index 774fe69..5ae730d2 100644 --- a/chrome/app/resources/chromium_strings_be.xtb +++ b/chrome/app/resources/chromium_strings_be.xtb
@@ -249,7 +249,6 @@ <translation id="5623402015214259806">{0,plural, =0{Ёсць абнаўленне Chromium}=1{Ёсць абнаўленне Chromium}one{Абнаўленне Chromium выйшла # дзень таму}few{Абнаўленне Chromium выйшла # дні таму}many{Абнаўленне Chromium выйшла # дзён таму}other{Абнаўленне Chromium выйшла # дня таму}}</translation> <translation id="5643865575100044307">Заўсёды выдаляць даныя сайтаў з прылады пры закрыцці Chromium</translation> <translation id="5653831366781983928">Перазапусціце Chromium</translation> -<translation id="5675598751761067447">Гэты файл можа быць небяспечным<ph name="LINE_BREAK" />Chromium можа праверыць спампоўку, калі вы ўведзяце пароль (ён застанецца на прыладзе)</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Паказваць інтэрфейс браўзера Chromium на гэтай мове</translation> <translation id="569897634095159764">Не ўдалося падключыцца да інтэрнэту. Проксі-сервер патрабуе прайсці аўтэнтыфікацыю.</translation>
diff --git a/chrome/app/resources/chromium_strings_bg.xtb b/chrome/app/resources/chromium_strings_bg.xtb index 3c2c9ff..de0b60e 100644 --- a/chrome/app/resources/chromium_strings_bg.xtb +++ b/chrome/app/resources/chromium_strings_bg.xtb
@@ -242,7 +242,6 @@ <translation id="5623402015214259806">{0,plural, =0{Налице е актуализация за Chromium}=1{Налице е актуализация за Chromium}other{Налице е актуализация за Chromium от # дни}}</translation> <translation id="5643865575100044307">Изтриване на данните за сайтовете от устройството ви при всяко затваряне на Chromium</translation> <translation id="5653831366781983928">Моля, рестартирайте Chromium сега</translation> -<translation id="5675598751761067447">Възможно е този файл да е опасен<ph name="LINE_BREAK" />Chromium може да провери това изтегляне, ако предоставите паролата – тя не напуска устройството ви</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Показване на Chromium на този език</translation> <translation id="569897634095159764">Не може да се установи връзка с интернет. Прокси сървърът изисква удостоверяване.</translation>
diff --git a/chrome/app/resources/chromium_strings_bn.xtb b/chrome/app/resources/chromium_strings_bn.xtb index 81205840..01e98da3 100644 --- a/chrome/app/resources/chromium_strings_bn.xtb +++ b/chrome/app/resources/chromium_strings_bn.xtb
@@ -244,7 +244,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromium-এর একটি আপডেট উপলভ্য আছে}=1{Chromium-এর একটি আপডেট উপলভ্য আছে}one{Chromium-এর একটি আপডেট # দিন ধরে উপলভ্য আছে}other{Chromium-এর একটি আপডেট # দিন ধরে উপলভ্য আছে}}</translation> <translation id="5643865575100044307">Chromium বন্ধ করার সময় আপনার ডিভাইস থেকে সবসময় সাইট ডেটা মুছুন</translation> <translation id="5653831366781983928">এখনই Chromium রিস্টার্ট করুন</translation> -<translation id="5675598751761067447">এই ফাইল বিপজ্জনক হতে পারে<ph name="LINE_BREAK" />আপনি নিজের পাসওয়ার্ড দিলে Chromium আপনার জন্য এই ডাউনলোড চেক করতে পারবে — আপনার পাসওয়ার্ড ডিভাইসে রয়েছে</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">এই ভাষায় Chromium প্রদর্শন করুন</translation> <translation id="569897634095159764">ইন্টারনেটের সাথে কানেক্ট করা যায়নি। প্রক্সি সার্ভার যাচাই করতে হবে।</translation>
diff --git a/chrome/app/resources/chromium_strings_bs.xtb b/chrome/app/resources/chromium_strings_bs.xtb index bef590a..cf440ea 100644 --- a/chrome/app/resources/chromium_strings_bs.xtb +++ b/chrome/app/resources/chromium_strings_bs.xtb
@@ -249,7 +249,6 @@ <translation id="5623402015214259806">{0,plural, =0{Ažuriranje za Chromium je dostupno}=1{Ažuriranje za Chromium je dostupno}one{Ažuriranje za Chromium je dostupno # dan}few{Ažuriranje za Chromium je dostupno # dana}other{Ažuriranje za Chromium je dostupno # dana}}</translation> <translation id="5643865575100044307">Uvijek izbrišite podatke web lokacije s uređaja kada zatvorite Chromium</translation> <translation id="5653831366781983928">Ponovo pokrenite Chromium sada</translation> -<translation id="5675598751761067447">Fajl je možda opasan<ph name="LINE_BREAK" />Chromium može za vas provjeriti ovo preuzimanje ako navedete lozinku — ona ostaje na uređaju</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Prikaži Chromium na ovom jeziku.</translation> <translation id="569897634095159764">Nije moguće povezati se s internetom. Proksi server zahtijeva autentifikaciju.</translation>
diff --git a/chrome/app/resources/chromium_strings_ca.xtb b/chrome/app/resources/chromium_strings_ca.xtb index 7ad3a62..eb0d70e5 100644 --- a/chrome/app/resources/chromium_strings_ca.xtb +++ b/chrome/app/resources/chromium_strings_ca.xtb
@@ -247,7 +247,6 @@ <translation id="5623402015214259806">{0,plural, =0{Hi ha una actualització de Chromium disponible}=1{Hi ha una actualització de Chromium disponible}other{Fa # dies que hi ha una actualització de Chromium disponible}}</translation> <translation id="5643865575100044307">Suprimeix sempre les dades dels llocs web del dispositiu quan tanquis Chromium</translation> <translation id="5653831366781983928">Reinicia Chromium ara</translation> -<translation id="5675598751761067447">Aquest fitxer pot ser perillós<ph name="LINE_BREAK" />Chromium pot comprovar aquesta baixada per tu si proporciones la contrasenya (la contrasenya no sortirà del dispositiu)</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Mostra Chromium en aquest idioma</translation> <translation id="569897634095159764">No es pot connectar a Internet. El servidor intermediari necessita autenticació.</translation>
diff --git a/chrome/app/resources/chromium_strings_cs.xtb b/chrome/app/resources/chromium_strings_cs.xtb index e0f7a29..f87cc66e 100644 --- a/chrome/app/resources/chromium_strings_cs.xtb +++ b/chrome/app/resources/chromium_strings_cs.xtb
@@ -90,6 +90,7 @@ <translation id="2583187216237139145">Veškerá data prohlížeče Chromium 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="2592940277904433508">Pokračovat v používání prohlížeče Chromium</translation> <translation id="259935314519650377">Stažený instalační program se nepodařilo uložit do mezipaměti. Chyba: <ph name="UNPACK_CACHING_ERROR_CODE" />.</translation> +<translation id="264613044588233783">Chromium běží rychleji a funkce využívající JavaScript by měly fungovat tak, jak byly navrženy (doporučeno)</translation> <translation id="2648074677641340862">Během instalace došlo k chybě operačního systému. Stáhněte prosím Chromium znovu.</translation> <translation id="2661879430930417727">Pokud zařízení sdílíte s přáteli a členy rodiny, každý může procházet internet samostatně a nastavit si Chromium tak, jak potřebuje</translation> <translation id="268602741124540128">Vítejte v prohlížeči Chromium, <ph name="ACCOUNT_FIRST_NAME" /></translation> @@ -125,6 +126,7 @@ <translation id="3258596308407688501">Chromium nemůže číst ani zapisovat do svého datového adresáře: <ph name="USER_DATA_DIRECTORY" /></translation> +<translation id="3268051428841342958">V8 je modul prohlížeče Chromium pro JavaScript a WebAssembly používaný ke zlepšení výkonu webů</translation> <translation id="3283186697780795848">Je nainstalována tato verze prohlížeče Chromium: <ph name="PRODUCT_VERSION" /></translation> <translation id="3286538390144397061">Restartovat</translation> <translation id="328888136576916638">Chybí klíče rozhraní Google API. Některé funkce Chromium nebudou k dispozici.</translation> @@ -218,6 +220,7 @@ <translation id="4814736265800133385">Použít Chromium bez účtu</translation> <translation id="4888717733111232871">Pravidlo příchozího provozu pro prohlížeč Chromium, které povolí provoz mDNS.</translation> <translation id="4893347770495441059">Znovu spustit a aktualizovat &Chromium</translation> +<translation id="4942295735032723435">Pokud chcete v budoucnu dostávat aktualizace prohlížeče Chromium, budete potřebovat systém macOS 11 nebo novější. Tento počítač používá systém macOS 10.15.</translation> <translation id="4943838377383847465">Chromium je v režimu na pozadí.</translation> <translation id="4987820182225656817">Hosté mohou Chromium používat, aniž by po nich zůstaly jakékoliv stopy.</translation> <translation id="4994636714258228724">Přidejte do prohlížeče Chromium svůj účet</translation> @@ -246,7 +249,6 @@ <translation id="5623402015214259806">{0,plural, =0{Je k dispozici aktualizace prohlížeče Chromium}=1{Je k dispozici aktualizace prohlížeče Chromium}few{Již # dny je k dispozici aktualizace prohlížeče Chromium}many{Již # dne je k dispozici aktualizace prohlížeče Chromium}other{Již # dní je k dispozici aktualizace prohlížeče Chromium}}</translation> <translation id="5643865575100044307">Při zavření prohlížeče Chromium ze zařízení vždy vymazat data webů</translation> <translation id="5653831366781983928">Restartujte Chromium</translation> -<translation id="5675598751761067447">Tento soubor může být nebezpečný.<ph name="LINE_BREAK" />Pokud zadáte heslo, může Chromium toto stažení zkontrolovat za vás – heslo zůstane ve vašem zařízení.</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Zobrazit Chromium v tomto jazyce</translation> <translation id="569897634095159764">Nelze se připojit k internetu. Proxy server vyžaduje ověření.</translation> @@ -407,6 +409,7 @@ <translation id="8105840573057009683">Chromium pro tento web potřebuje přístup k poloze</translation> <translation id="8133124826068723441">ChromiumOS nemůže synchronizovat data, protože Synchronizace ve vaší doméně není k dispozici.</translation> <translation id="813913629614996137">Probíhá inicializace...</translation> +<translation id="8166782796394721554">Zapnout další ochranu v modulu prohlížeče Chromium pro JavaScript a WebAssembly</translation> <translation id="81770708095080097">Tento soubor je nebezpečný, proto jej prohlížeč Chromium zablokoval.</translation> <translation id="8213374284266571500">Prohlížeč Chromium tento soubor zablokoval, protože tento typ souboru je nebezpečný</translation> <translation id="8248265253516264921">Pokud obrázek nemá užitečný popis, Chromium se vám jej pokusí poskytnout. Za účelem vytváření popisů jsou obrázky odesílány do Googlu. Tuto funkci můžete kdykoliv vypnout v nastavení.</translation>
diff --git a/chrome/app/resources/chromium_strings_cy.xtb b/chrome/app/resources/chromium_strings_cy.xtb index 7a9cedda..76d3f74 100644 --- a/chrome/app/resources/chromium_strings_cy.xtb +++ b/chrome/app/resources/chromium_strings_cy.xtb
@@ -246,7 +246,6 @@ <translation id="5623402015214259806">{0,plural, =0{Mae diweddariad Cromiwm ar gael}=1{Mae diweddariad Cromiwm ar gael}two{Mae diweddariad Chromium wedi bod ar gael ers # ddiwrnod}few{Mae diweddariad Chromium wedi bod ar gael ers # diwrnod}many{Mae diweddariad Chromium wedi bod ar gael ers # diwrnod}other{Mae diweddariad Chromium wedi bod ar gael ers # diwrnod}}</translation> <translation id="5643865575100044307">Dileu data gwefan o'ch dyfais bob amser pan fyddwch yn cau Chromium</translation> <translation id="5653831366781983928">Ailgychwynnwch Chromium nawr</translation> -<translation id="5675598751761067447">Mae'n bosib bod y ffeil hon yn beryglus<ph name="LINE_BREAK" />Gall Chromium wirio'r lawrlwythiad hwn i chi os ydych yn darparu'r cyfrinair - mae eich cyfrinair yn aros ar eich dyfais</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Dangos Chromium yn yr iaith hon</translation> <translation id="569897634095159764">Methu â chysylltu â'r Rhyngrwyd. Mae angen dilysu'r dirprwy weinydd.</translation>
diff --git a/chrome/app/resources/chromium_strings_da.xtb b/chrome/app/resources/chromium_strings_da.xtb index 8b509ed..3fd1fda 100644 --- a/chrome/app/resources/chromium_strings_da.xtb +++ b/chrome/app/resources/chromium_strings_da.xtb
@@ -244,7 +244,6 @@ <translation id="5623402015214259806">{0,plural, =0{Der er en tilgængelig Chromium-opdatering}=1{Der er en tilgængelig Chromium-opdatering}one{En Chromium-opdatering har været tilgængelig i # dag}other{En Chromium-opdatering har været tilgængelig i # dage}}</translation> <translation id="5643865575100044307">Slet altid websitedata fra din enhed, når du lukker Chromium</translation> <translation id="5653831366781983928">Genstart Chromium nu</translation> -<translation id="5675598751761067447">Denne fil kan være skadelig<ph name="LINE_BREAK" />Chromium kan tjekke denne download for dig, hvis du angiver adgangskoden – din adgangskode forbliver på enheden</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Vis Chromium på dette sprog</translation> <translation id="569897634095159764">Der kan ikke oprettes forbindelse til internettet. Proxyserveren kræver godkendelse.</translation>
diff --git a/chrome/app/resources/chromium_strings_de.xtb b/chrome/app/resources/chromium_strings_de.xtb index 9a3a8ea..87da315 100644 --- a/chrome/app/resources/chromium_strings_de.xtb +++ b/chrome/app/resources/chromium_strings_de.xtb
@@ -247,7 +247,6 @@ <translation id="5623402015214259806">{0,plural, =0{Ein Chromium-Update ist verfügbar}=1{Ein Chromium-Update ist verfügbar}other{Ein Chromium-Update ist seit # Tagen verfügbar}}</translation> <translation id="5643865575100044307">Beim Schließen von Chromium immer die Websitedaten von deinem Gerät löschen</translation> <translation id="5653831366781983928">Starte Chromium jetzt neu</translation> -<translation id="5675598751761067447">Diese Datei könnte gefährlich sein<ph name="LINE_BREAK" />Chromium kann diesen Download für dich überprüfen, wenn du das Passwort eingibst – das Passwort bleibt auf deinem Gerät</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Chromium in dieser Sprache anzeigen</translation> <translation id="569897634095159764">Internetverbindung kann nicht hergestellt werden. Für den Proxyserver ist eine Authentifizierung erforderlich.</translation>
diff --git a/chrome/app/resources/chromium_strings_el.xtb b/chrome/app/resources/chromium_strings_el.xtb index 14950bd..d0ec5ed4 100644 --- a/chrome/app/resources/chromium_strings_el.xtb +++ b/chrome/app/resources/chromium_strings_el.xtb
@@ -244,7 +244,6 @@ <translation id="5623402015214259806">{0,plural, =0{Υπάρχει μια διαθέσιμη ενημέρωση του Chromium}=1{Υπάρχει μια διαθέσιμη ενημέρωση του Chromium}other{Υπάρχει μια διαθέσιμη ενημέρωση του Chromium για # ημέρες}}</translation> <translation id="5643865575100044307">Να διαγράφονται πάντα τα δεδομένα ιστοτόπων από τη συσκευή σας όταν κλείνετε το Chromium</translation> <translation id="5653831366781983928">Επανεκκινήστε το Chromium τώρα</translation> -<translation id="5675598751761067447">Αυτό το αρχείο ενδέχεται να είναι επικίνδυνο<ph name="LINE_BREAK" />Το Chromium μπορεί να ελέγξει αυτή τη λήψη για εσάς εάν καταχωρίσετε τον κωδικό πρόσβασης. Ο κωδικός πρόσβασης θα παραμείνει στη συσκευή σας</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Να εμφανίζεται το Chromium σε αυτήν τη γλώσσα</translation> <translation id="569897634095159764">Δεν είναι δυνατή η σύνδεση στο διαδίκτυο. Ο διακομιστής μεσολάβησης απαιτεί έλεγχο ταυτότητας.</translation>
diff --git a/chrome/app/resources/chromium_strings_en-GB.xtb b/chrome/app/resources/chromium_strings_en-GB.xtb index fc092d2..2127d977 100644 --- a/chrome/app/resources/chromium_strings_en-GB.xtb +++ b/chrome/app/resources/chromium_strings_en-GB.xtb
@@ -90,6 +90,7 @@ <translation id="2583187216237139145">Any Chromium 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="2592940277904433508">Continue using Chromium</translation> <translation id="259935314519650377">Failed to cache the downloaded installer. Error: <ph name="UNPACK_CACHING_ERROR_CODE" />.</translation> +<translation id="264613044588233783">Chromium runs faster and features that use JavaScript should work as designed (recommended)</translation> <translation id="2648074677641340862">An operating system error occurred during installation. Please download Chromium again.</translation> <translation id="2661879430930417727">If you share a device, friends and family can browse separately and set up Chromium just the way they want</translation> <translation id="268602741124540128">Welcome to Chromium, <ph name="ACCOUNT_FIRST_NAME" /></translation> @@ -125,6 +126,7 @@ <translation id="3258596308407688501">Chromium cannot read and write to its data directory: <ph name="USER_DATA_DIRECTORY" /></translation> +<translation id="3268051428841342958">V8 is Chromium’s JavaScript and WebAssembly engine used to improve site performance</translation> <translation id="3283186697780795848">Chromium version <ph name="PRODUCT_VERSION" /> is installed</translation> <translation id="3286538390144397061">Restart Now</translation> <translation id="328888136576916638">Google API keys are missing. Some functionality of Chromium will be disabled.</translation> @@ -218,6 +220,7 @@ <translation id="4814736265800133385">Use Chromium without an account</translation> <translation id="4888717733111232871">Inbound rule for Chromium to allow mDNS traffic.</translation> <translation id="4893347770495441059">Relaunch to Update &Chromium</translation> +<translation id="4942295735032723435">To get future Chromium updates, you'll need macOS 11 or later. This computer is using macOS 10.15.</translation> <translation id="4943838377383847465">Chromium is in background mode.</translation> <translation id="4987820182225656817">Guests can use Chromium without leaving anything behind.</translation> <translation id="4994636714258228724">Add yourself to Chromium</translation> @@ -246,7 +249,6 @@ <translation id="5623402015214259806">{0,plural, =0{A Chromium update is available}=1{A Chromium update is available}other{A Chromium update has been available for # days}}</translation> <translation id="5643865575100044307">Always delete site data from your device when you close Chromium</translation> <translation id="5653831366781983928">Please restart Chromium now</translation> -<translation id="5675598751761067447">This file may be dangerous<ph name="LINE_BREAK" />Chromium can check this download for you if you provide the password – your password stays on your device</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Display Chromium in this language</translation> <translation id="569897634095159764">Unable to connect to the Internet. Proxy server requires authentication.</translation> @@ -406,6 +408,7 @@ <translation id="8105840573057009683">Chromium needs location permission for this site</translation> <translation id="8133124826068723441">Chromium OS could not sync your data because sync is not available for your domain.</translation> <translation id="813913629614996137">Initialising...</translation> +<translation id="8166782796394721554">Turn on additional protection in Chromium’s JavaScript and WebAssembly engine</translation> <translation id="81770708095080097">This file is dangerous, so Chromium has blocked it.</translation> <translation id="8213374284266571500">Chromium blocked this file because this type of file is dangerous</translation> <translation id="8248265253516264921">If an image doesn’t have a useful description, Chromium will try to provide one for you. To create descriptions, images are sent to Google. You can turn this off in settings at any time.</translation>
diff --git a/chrome/app/resources/chromium_strings_es-419.xtb b/chrome/app/resources/chromium_strings_es-419.xtb index 28b1140..7d82892 100644 --- a/chrome/app/resources/chromium_strings_es-419.xtb +++ b/chrome/app/resources/chromium_strings_es-419.xtb
@@ -242,7 +242,6 @@ <translation id="5623402015214259806">{0,plural, =0{Hay una actualización de Chromium disponible}=1{Hay una actualización de Chromium disponible}other{Hay una actualización de Chromium disponible hace # días}}</translation> <translation id="5643865575100044307">Siempre borrar los datos de sitios de tu dispositivo cuando cierras Chromium</translation> <translation id="5653831366781983928">Reinicia Chromium ahora</translation> -<translation id="5675598751761067447">Este archivo puede ser peligroso<ph name="LINE_BREAK" />Chromium puede revisar esta descarga por ti si proporcionas la contraseña; la contraseña permanecerá en el dispositivo</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Mostrar Chromium en este idioma</translation> <translation id="569897634095159764">No se puede conectar a Internet. El servidor proxy requiere autenticación.</translation>
diff --git a/chrome/app/resources/chromium_strings_es.xtb b/chrome/app/resources/chromium_strings_es.xtb index 0095a83..67f9413 100644 --- a/chrome/app/resources/chromium_strings_es.xtb +++ b/chrome/app/resources/chromium_strings_es.xtb
@@ -246,7 +246,6 @@ <translation id="5623402015214259806">{0,plural, =0{Hay una actualización de Chromium disponible}=1{Hay una actualización de Chromium disponible}other{Hay una actualización de Chromium disponible desde hace # días}}</translation> <translation id="5643865575100044307">Eliminar siempre los datos de sitios de tu dispositivo al cerrar Chromium</translation> <translation id="5653831366781983928">Reinicia Chromium ahora</translation> -<translation id="5675598751761067447">Este archivo podría ser peligroso<ph name="LINE_BREAK" />Chromium puede comprobar esta descarga si proporcionas la contraseña (tu contraseña se guardará en tu dispositivo y no se compartirá externamente)</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Mostrar Chromium en este idioma</translation> <translation id="569897634095159764">No se puede conectar a Internet. El servidor proxy requiere autenticación.</translation>
diff --git a/chrome/app/resources/chromium_strings_et.xtb b/chrome/app/resources/chromium_strings_et.xtb index dc36f8c..62cf0c5 100644 --- a/chrome/app/resources/chromium_strings_et.xtb +++ b/chrome/app/resources/chromium_strings_et.xtb
@@ -244,7 +244,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromiumi värskendus on saadaval}=1{Chromiumi värskendus on saadaval}other{Chromiumi värskendus on # päeva saadaval olnud}}</translation> <translation id="5643865575100044307">Saidiandmed kustutatakse alati seadmest, kui Chromiumi sulgete</translation> <translation id="5653831366781983928">Käivitage Chromium kohe uuesti</translation> -<translation id="5675598751761067447">See fail võib olla ohtlik<ph name="LINE_BREAK" />Chromium saab seda allalaadimist teie eest kontrollida, kui sisestate parooli — parool jääb teie seadmesse</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Kuva Chromium selles keeles</translation> <translation id="569897634095159764">Internetiga ei õnnestu ühendust luua. Puhverserver nõuab autentimist.</translation>
diff --git a/chrome/app/resources/chromium_strings_eu.xtb b/chrome/app/resources/chromium_strings_eu.xtb index ccaf896..9801102 100644 --- a/chrome/app/resources/chromium_strings_eu.xtb +++ b/chrome/app/resources/chromium_strings_eu.xtb
@@ -246,7 +246,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromium arakatzailearen eguneratze bat dago erabilgarri}=1{Chromium arakatzailearen eguneratze bat dago erabilgarri}other{Chromium arakatzailearen eguneratze batek # egun daramatza erabilgarri}}</translation> <translation id="5643865575100044307">Chromium ixten duzunean, ezabatu beti webguneetako datuak gailutik</translation> <translation id="5653831366781983928">Berrabiarazi Chromium</translation> -<translation id="5675598751761067447">Baliteke fitxategi hau arriskutsua izatea<ph name="LINE_BREAK" />Chromium-ek deskarga hau egiazta dezake pasahitza idazten baduzu (pasahitza zure gailuan geratuko da)</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Bistaratu Chromium hizkuntza honetan</translation> <translation id="569897634095159764">Ezin da konektatu Internetera. Proxy-zerbitzariak autentifikazioa behar du.</translation>
diff --git a/chrome/app/resources/chromium_strings_fa.xtb b/chrome/app/resources/chromium_strings_fa.xtb index cee4e343..e698367d 100644 --- a/chrome/app/resources/chromium_strings_fa.xtb +++ b/chrome/app/resources/chromium_strings_fa.xtb
@@ -246,7 +246,6 @@ <translation id="5623402015214259806">{0,plural, =0{بهروزرسانی Chromium دردسترس است}=1{بهروزرسانی Chromium دردسترس است}one{بهروزرسانی Chromium از # روز پیش دردسترس است}other{بهروزرسانی Chromium از # روز پیش دردسترس است}}</translation> <translation id="5643865575100044307">دادههای سایت همواره بعداز بستن Chromium از دستگاه حذف شود</translation> <translation id="5653831366781983928">لطفاً اکنون Chromium را بازراهاندازی کنید</translation> -<translation id="5675598751761067447">این فایل ممکن است خطرناک باشد<ph name="LINE_BREAK" />اگر گذرواژه را ارائه دهید، Chromium میتواند این بارگیری را برایتان بررسی کند. گذرواژه شما در دستگاهتان میماند.</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">نمایش Chromium به این زبان</translation> <translation id="569897634095159764">اتصال به اینترنت برقرار نشد. سرور پروکسی به اصالتسنجی نیاز دارد.</translation>
diff --git a/chrome/app/resources/chromium_strings_fi.xtb b/chrome/app/resources/chromium_strings_fi.xtb index e5037b1a..fd99e31 100644 --- a/chrome/app/resources/chromium_strings_fi.xtb +++ b/chrome/app/resources/chromium_strings_fi.xtb
@@ -88,6 +88,7 @@ <translation id="2583187216237139145">Työprofiilin järjestelmänvalvoja voi poistaa tämän profiilin käytön aikana luotua Chromium-dataa (esim. kirjanmerkit, historia, salasanat ja muut asetukset). <ph name="LEARN_MORE" /></translation> <translation id="2592940277904433508">Jatka Chromiumin käyttöä</translation> <translation id="259935314519650377">Ladatun asennusohjelman siirtäminen välimuistiin epäonnistui. Virhe: <ph name="UNPACK_CACHING_ERROR_CODE" />.</translation> +<translation id="264613044588233783">Chromium toimii nopeammin ja JavaScriptiä käyttävien ominaisuuksien pitäisi toimia suunnitellusti (suositus)</translation> <translation id="2648074677641340862">Asennuksessa ilmeni käyttöjärjestelmävirhe. Lataa Chromium uudelleen.</translation> <translation id="2661879430930417727">Jos käytät jaettua laitetta, kaverisi ja perheenjäsenesi voivat selata verkkoa erillään ja räätälöidä Chromiumista juuri itselleen sopivan</translation> <translation id="268602741124540128">Tervetuloa Chromiumiin, <ph name="ACCOUNT_FIRST_NAME" /></translation> @@ -123,6 +124,7 @@ <translation id="3258596308407688501">Chromium ei voi lukea tietohakemistoaan ja kirjoittaa siihen: <ph name="USER_DATA_DIRECTORY" /></translation> +<translation id="3268051428841342958">V8 on Chromiumin JavaScript- ja WebAssembly-moottori, jota käytetään sivuston suorituskyvyn parantamiseen</translation> <translation id="3283186697780795848">Chromiumin versio <ph name="PRODUCT_VERSION" /> asennettu</translation> <translation id="3286538390144397061">Käynnistä uudelleen</translation> <translation id="328888136576916638">Googlen sovellusliittymän avaimet puuttuvat. Jotkin Chromiumin toiminnoista poistetaan käytöstä.</translation> @@ -216,6 +218,7 @@ <translation id="4814736265800133385">Käytä Chromiumia ilman tiliä</translation> <translation id="4888717733111232871">Chromiumin saapuvien yhteyksien sääntö, joka sallii mDNS-liikenteen.</translation> <translation id="4893347770495441059">Päivitä &Chromium käynnistämällä se uudelleen</translation> +<translation id="4942295735032723435">Sinulla on oltava macOS 11 tai uudempi, jotta saat tulevia Chromiumin päivityksiä. Tällä tietokoneella on macOS 10.15.</translation> <translation id="4943838377383847465">Chromium on käynnissä taustalla</translation> <translation id="4987820182225656817">Vierailijat voivat käyttää Chromiumia jälkiä jättämättä.</translation> <translation id="4994636714258228724">Lisää itsesi Chromiumiin</translation> @@ -244,7 +247,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromium-päivitys on saatavilla}=1{Chromium-päivitys on saatavilla}other{Chromium-päivitys on ollut saatavilla # vuorokauden ajan}}</translation> <translation id="5643865575100044307">Poista laitteen sivustodata aina, kun suljet Chromiumin</translation> <translation id="5653831366781983928">Käynnistä Chromium uudelleen nyt</translation> -<translation id="5675598751761067447">Tämä tiedosto voi olla vaarallinen<ph name="LINE_BREAK" />Chromium voi tarkistaa latauksen puolestasi, jos annat salasanan – salasana pysyy laitteellasi</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Näytä Chromium tällä kielellä</translation> <translation id="569897634095159764">Internetyhteyden muodostaminen ei onnistu. Välityspalvelin edellyttää todennusta.</translation> @@ -405,6 +407,7 @@ <translation id="8105840573057009683">Chromium tarvitsee sijaintiluvan tällä sivustolla</translation> <translation id="8133124826068723441">Chromium-käyttöjärjestelmä ei voi synkronoida dataa, koska synkronointi ei ole käytettävissä verkkotunnuksessasi.</translation> <translation id="813913629614996137">Käynnistetään…</translation> +<translation id="8166782796394721554">Laita lisäsuojaus päälle Chromiumin JavaScript- ja WebAssembly-moottorissa</translation> <translation id="81770708095080097">Tämä tiedosto on vaarallinen, joten Chromium on estänyt sen.</translation> <translation id="8213374284266571500">Chromium on estänyt tiedoston, koska tämäntyyppiset tiedostot ovat vaarallisia</translation> <translation id="8248265253516264921">Jos kuvalla ei ole hyödyllistä kuvausta, Chromium yrittää luoda sellaisen. Kuvat lähetetään Googlelle kuvausten luomista varten. Voit milloin tahansa poistaa tämän käytöstä asetuksissa.</translation>
diff --git a/chrome/app/resources/chromium_strings_fil.xtb b/chrome/app/resources/chromium_strings_fil.xtb index 35ad848..827d81c 100644 --- a/chrome/app/resources/chromium_strings_fil.xtb +++ b/chrome/app/resources/chromium_strings_fil.xtb
@@ -249,7 +249,6 @@ <translation id="5623402015214259806">{0,plural, =0{May available na update sa Chromium}=1{May available na update sa Chromium}one{# araw nang may available na update sa Chromium}other{# na araw nang may available na update sa Chromium}}</translation> <translation id="5643865575100044307">Palaging i-delete ang data ng site mula sa iyong device kapag isinasara mo ang Chromium</translation> <translation id="5653831366781983928">Paki-restart ang Chromium ngayon</translation> -<translation id="5675598751761067447">Posibleng mapanganib ang file na ito<ph name="LINE_BREAK" />Masusuri ng Chromium ang download na ito para sa iyo kung ibibigay mo ang password — mananatili sa iyong device ang password mo</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Ipakita ang Chromium sa wikang ito</translation> <translation id="569897634095159764">Hindi makakonekta sa Internet. Nagre-require ng pag-authenticate ang proxy server.</translation>
diff --git a/chrome/app/resources/chromium_strings_fr-CA.xtb b/chrome/app/resources/chromium_strings_fr-CA.xtb index 5e2f3c9..2345740d 100644 --- a/chrome/app/resources/chromium_strings_fr-CA.xtb +++ b/chrome/app/resources/chromium_strings_fr-CA.xtb
@@ -246,7 +246,6 @@ <translation id="5623402015214259806">{0,plural, =0{Une mise à jour de Chromium est proposée}=1{Une mise à jour de Chromium est proposée}one{Une mise à jour de Chromium est proposée depuis # jour}other{Une mise à jour de Chromium est proposée depuis # jours}}</translation> <translation id="5643865575100044307">Supprimez toujours les données relatives aux sites sur votre appareil lorsque vous fermez Chromium</translation> <translation id="5653831366781983928">Veuillez redémarrer Chromium maintenant</translation> -<translation id="5675598751761067447">Ce fichier peut être dangereux<ph name="LINE_BREAK" />Chromium peut vérifier ce téléchargement pour vous si vous fournissez le mot de passe (votre mot de passe reste sur votre appareil)</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Afficher Chromium dans cette langue</translation> <translation id="569897634095159764">Impossible de se connecter à Internet. Le serveur mandataire nécessite une authentification.</translation>
diff --git a/chrome/app/resources/chromium_strings_fr.xtb b/chrome/app/resources/chromium_strings_fr.xtb index 01413d15..ab10a727 100644 --- a/chrome/app/resources/chromium_strings_fr.xtb +++ b/chrome/app/resources/chromium_strings_fr.xtb
@@ -245,7 +245,6 @@ <translation id="5623402015214259806">{0,plural, =0{Une mise à jour de Chromium est disponible}=1{Une mise à jour de Chromium est disponible}one{Une mise à jour de Chromium est disponible depuis # jour}other{Une mise à jour de Chromium est disponible depuis # jours}}</translation> <translation id="5643865575100044307">Toujours supprimer les données des sites de votre appareil lorsque vous fermez Chromium</translation> <translation id="5653831366781983928">Veuillez redémarrer Chromium maintenant</translation> -<translation id="5675598751761067447">Ce fichier peut être dangereux<ph name="LINE_BREAK" />Si vous fournissez le mot de passe, Chromium peut vérifier ce téléchargement pour vous. Votre mot de passe ne quittera pas votre appareil.</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Afficher Chromium dans cette langue</translation> <translation id="569897634095159764">Impossible de se connecter à Internet. Le serveur proxy exige que vous vous authentifiiez.</translation>
diff --git a/chrome/app/resources/chromium_strings_gl.xtb b/chrome/app/resources/chromium_strings_gl.xtb index 32c1e5a..e7ea3bf2 100644 --- a/chrome/app/resources/chromium_strings_gl.xtb +++ b/chrome/app/resources/chromium_strings_gl.xtb
@@ -246,7 +246,6 @@ <translation id="5623402015214259806">{0,plural, =0{Hai unha actualización de Chromium dispoñible}=1{Hai unha actualización de Chromium dispoñible}other{Hai unha actualización de Chromium que leva dispoñible # días}}</translation> <translation id="5643865575100044307">Eliminar sempre do dispositivo os datos dos sitios cando peches Chromium</translation> <translation id="5653831366781983928">Reinicia Chromium agora</translation> -<translation id="5675598751761067447">Este ficheiro pode ser perigoso<ph name="LINE_BREAK" />Chromium pode comprobar esta descarga por ti se lle proporcionas o contrasinal, o cal permanecerá no teu dispositivo</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Mostrar Chromium neste idioma</translation> <translation id="569897634095159764">Non se puido establecer conexión con Internet. O servidor proxy require autenticación.</translation>
diff --git a/chrome/app/resources/chromium_strings_gu.xtb b/chrome/app/resources/chromium_strings_gu.xtb index 9cf5b538..c1f0e59 100644 --- a/chrome/app/resources/chromium_strings_gu.xtb +++ b/chrome/app/resources/chromium_strings_gu.xtb
@@ -249,7 +249,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromium અપડેટ ઉપલબ્ધ છે}=1{Chromium અપડેટ ઉપલબ્ધ છે}one{Chromium અપડેટ # દિવસ માટે ઉપલબ્ધ છે}other{Chromium અપડેટ # દિવસ માટે ઉપલબ્ધ છે}}</translation> <translation id="5643865575100044307">જ્યારે તમે Chromium બંધ કરો, ત્યારે હંમેશાં તમારા ડિવાઇસમાંથી સાઇટનો ડેટા ડિલીટ કરો</translation> <translation id="5653831366781983928">કૃપા કરીને હવે Chromium ફરી શરૂ કરો</translation> -<translation id="5675598751761067447">આ ફાઇલ જોખમી હોઈ શકે છે<ph name="LINE_BREAK" />જો તમે પાસવર્ડ પ્રદાન કરો તો ડાઉનલોડ કરેલી આ ફાઇલ જોખમી છે કે નહીં તે Chromium તમારા વતી ચેક કરી શકે છે — તમારો પાસવર્ડ તમારા ડિવાઇસમાં જ રહે છે</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">આ ભાષામાં Chromium બતાવો</translation> <translation id="569897634095159764">ઇન્ટરનેટ સાથે કનેક્ટ કરી શકતા નથી. પ્રૉક્સી સર્વરને પ્રમાણીકરણની જરૂર છે.</translation>
diff --git a/chrome/app/resources/chromium_strings_hi.xtb b/chrome/app/resources/chromium_strings_hi.xtb index db7bb6c..a5eb1cf 100644 --- a/chrome/app/resources/chromium_strings_hi.xtb +++ b/chrome/app/resources/chromium_strings_hi.xtb
@@ -244,7 +244,6 @@ <translation id="5623402015214259806">{0,plural, =0{क्रोमियम का एक अपडेट उपलब्ध है}=1{क्रोमियम का एक अपडेट उपलब्ध है}one{क्रोमियम का एक अपडेट # दिनों से उपलब्ध है}other{क्रोमियम का एक अपडेट # दिनों से उपलब्ध है}}</translation> <translation id="5643865575100044307">Chromium बंद करने के बाद, अपने डिवाइस से साइट डेटा मिटाना कभी न भूलें</translation> <translation id="5653831366781983928">कृपया 'क्रोमियम' को अभी रीस्टार्ट करें</translation> -<translation id="5675598751761067447">यह फ़ाइल खतरनाक हो सकती है<ph name="LINE_BREAK" />आपके पासवर्ड दिए जाने पर, Chromium आपके लिए इस डाउनलोड की जांच कर सकता है — आपका पासवर्ड आपके डिवाइस पर रहता है</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">क्रोमियम को इस भाषा में दिखाएं</translation> <translation id="569897634095159764">इंटरनेट से कनेक्ट नहीं किया जा सका. प्रॉक्सी सर्वर की पुष्टि करना ज़रूरी है.</translation>
diff --git a/chrome/app/resources/chromium_strings_hr.xtb b/chrome/app/resources/chromium_strings_hr.xtb index 0518475a..246ed63 100644 --- a/chrome/app/resources/chromium_strings_hr.xtb +++ b/chrome/app/resources/chromium_strings_hr.xtb
@@ -247,7 +247,6 @@ <translation id="5623402015214259806">{0,plural, =0{Dostupno je ažuriranje Chromiuma}=1{Dostupno je ažuriranje Chromiuma}one{Ažuriranje Chromiuma dostupno je već # dan}few{Ažuriranje Chromiuma dostupno je već # dana}other{Ažuriranje Chromiuma dostupno je već # dana}}</translation> <translation id="5643865575100044307">Podaci web-lokacije uvijek se brišu s uređaja kada zatvorite Chromium</translation> <translation id="5653831366781983928">Sada ponovo pokrenite Chromium</translation> -<translation id="5675598751761067447">Datoteka može biti opasna<ph name="LINE_BREAK" />Chromium može provjeriti to preuzimanje za vas ako unesete zaporku — vaša zaporka ostaje na uređaju</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Prikaži Chromium na tom jeziku</translation> <translation id="569897634095159764">Povezivanje s internetom nije moguće. Proxy poslužitelj zahtijeva autentifikaciju.</translation>
diff --git a/chrome/app/resources/chromium_strings_hu.xtb b/chrome/app/resources/chromium_strings_hu.xtb index 2cb0e2e..f448045 100644 --- a/chrome/app/resources/chromium_strings_hu.xtb +++ b/chrome/app/resources/chromium_strings_hu.xtb
@@ -244,7 +244,6 @@ <translation id="5623402015214259806">{0,plural, =0{Rendelkezésre áll egy Chromium-frissítés}=1{Rendelkezésre áll egy Chromium-frissítés}other{# napja rendelkezésre áll egy Chromium-frissítés}}</translation> <translation id="5643865575100044307">Mindig törölje a webhelyadatokat az eszközről a Chromium bezárásakor</translation> <translation id="5653831366781983928">Indítsa újra a Chromiumot most</translation> -<translation id="5675598751761067447">Ez a fájl veszélyes lehet<ph name="LINE_BREAK" />A Chromium ellenőrizni tudja ezt a letöltést Ön helyett, ha megadja a jelszót – a jelszó az eszközön marad</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">A Chromium megjelenítése ezen a nyelven</translation> <translation id="569897634095159764">Nem lehet csatlakozni az internethez. A proxyszerver hitelesítést igényel.</translation>
diff --git a/chrome/app/resources/chromium_strings_hy.xtb b/chrome/app/resources/chromium_strings_hy.xtb index 729c36e..1a6221d 100644 --- a/chrome/app/resources/chromium_strings_hy.xtb +++ b/chrome/app/resources/chromium_strings_hy.xtb
@@ -246,7 +246,6 @@ <translation id="5623402015214259806">{0,plural, =0{Հասանելի է Chromium-ի նոր տարբերակը}=1{Հասանելի է Chromium-ի նոր տարբերակը}one{Chromium-ի նոր տարբերակը # օր է հասանելի է}other{Chromium-ի նոր տարբերակը # օր է հասանելի է}}</translation> <translation id="5643865575100044307">Միշտ ջնջել կայքերի տվյալները սարքից՝ Chromium-ը փակելու դեպքում</translation> <translation id="5653831366781983928">Վերագործարկեք Chromium-ը</translation> -<translation id="5675598751761067447">Այս ֆայլը կարող է վտանգավոր լինել<ph name="LINE_BREAK" />Chromium-ը կարող է ստուգել այն, եթե մուտքագրեք ձեր գաղտնաբառը (գաղտնաբառը կմնա ձեր սարքում)</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Chromium-ը ցուցադրել այս լեզվով</translation> <translation id="569897634095159764">Հնարավոր չէ միանալ ինտերնետին։ Պրոքսի սերվերն իսկորոշում է պահանջում։</translation>
diff --git a/chrome/app/resources/chromium_strings_id.xtb b/chrome/app/resources/chromium_strings_id.xtb index 3f104d9..55074bd 100644 --- a/chrome/app/resources/chromium_strings_id.xtb +++ b/chrome/app/resources/chromium_strings_id.xtb
@@ -244,7 +244,6 @@ <translation id="5623402015214259806">{0,plural, =0{Update Chromium tersedia}=1{Update Chromium tersedia}other{Update Chromium telah tersedia selama # hari}}</translation> <translation id="5643865575100044307">Selalu menghapus data situs dari perangkat saat Anda menutup Chromium</translation> <translation id="5653831366781983928">Mulai ulang Chromium sekarang</translation> -<translation id="5675598751761067447">File ini mungkin berbahaya<ph name="LINE_BREAK" />Chromium dapat memeriksa download ini untuk Anda jika Anda memberikan sandi — sandi Anda disimpan di perangkat</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Tampilkan Chromium dalam bahasa ini</translation> <translation id="569897634095159764">Tidak dapat terhubung ke internet. Server proxy memerlukan autentikasi.</translation>
diff --git a/chrome/app/resources/chromium_strings_is.xtb b/chrome/app/resources/chromium_strings_is.xtb index fd885c3..fde11f3c 100644 --- a/chrome/app/resources/chromium_strings_is.xtb +++ b/chrome/app/resources/chromium_strings_is.xtb
@@ -246,7 +246,6 @@ <translation id="5623402015214259806">{0,plural, =0{Uppfærsla er í boði fyrir Chromium}=1{Uppfærsla er í boði fyrir Chromium}one{Uppfærsla hefur verið í boði fyrir Chromium í # dag}other{Uppfærsla hefur verið í boði fyrir Chromium í # daga}}</translation> <translation id="5643865575100044307">Ávallt eyða vefsvæðagögnum úr tækinu þegar þú lokar Chromium</translation> <translation id="5653831366781983928">Endurræstu Chromium núna</translation> -<translation id="5675598751761067447">Þessi skrá kann að vera hættuleg<ph name="LINE_BREAK" />Chromium getur athugað þetta niðurhal fyrir þig ef þú gefur upp aðgangsorðið — aðgangsorðið þitt helst í tækinu þínu</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Birta Chromium á þessu tungumáli</translation> <translation id="569897634095159764">Ekki er hægt að tengjast internetinu. Staðgengilsþjónninn krefst auðkenningar.</translation>
diff --git a/chrome/app/resources/chromium_strings_it.xtb b/chrome/app/resources/chromium_strings_it.xtb index 8f3f757..e2e2eb2 100644 --- a/chrome/app/resources/chromium_strings_it.xtb +++ b/chrome/app/resources/chromium_strings_it.xtb
@@ -244,7 +244,6 @@ <translation id="5623402015214259806">{0,plural, =0{È disponibile un aggiornamento di Chromium}=1{È disponibile un aggiornamento di Chromium}other{È disponibile un aggiornamento di Chromium da # giorni}}</translation> <translation id="5643865575100044307">Elimina sempre i dati dei siti dal dispositivo alla chiusura di Chromium</translation> <translation id="5653831366781983928">Riavvia subito Chromium</translation> -<translation id="5675598751761067447">Questo file potrebbe essere pericoloso<ph name="LINE_BREAK" />Chromium può controllare il download per te se fornisci la password (non viene inoltrata dal dispositivo)</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Visualizza Chromium in questa lingua</translation> <translation id="569897634095159764">Impossibile connettersi a internet. Il server proxy richiede l'autenticazione.</translation>
diff --git a/chrome/app/resources/chromium_strings_iw.xtb b/chrome/app/resources/chromium_strings_iw.xtb index 120603a..189a6e0 100644 --- a/chrome/app/resources/chromium_strings_iw.xtb +++ b/chrome/app/resources/chromium_strings_iw.xtb
@@ -242,7 +242,6 @@ <translation id="5623402015214259806">{0,plural, =0{יש עדכון ל-Chromium}=1{יש עדכון ל-Chromium}one{עדכון של Chromium זמין כבר # ימים}two{עדכון של Chromium זמין כבר # ימים}other{עדכון של Chromium זמין כבר # ימים}}</translation> <translation id="5643865575100044307">מחיקת נתונים מאתרים מהמכשיר בכל פעם שסוגרים את Chromium</translation> <translation id="5653831366781983928">יש להפעיל מחדש את Chromium</translation> -<translation id="5675598751761067447">הקובץ הזה עלול להיות מסוכן<ph name="LINE_BREAK" />Chromium יכול לבדוק את ההורדה הזו אם מזינים את הסיסמה (הסיסמה תישאר במכשיר)</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">הצגת Chromium בשפה זו</translation> <translation id="569897634095159764">לא ניתן להתחבר לאינטרנט. נדרש אימות של שרת ה-proxy.</translation>
diff --git a/chrome/app/resources/chromium_strings_ja.xtb b/chrome/app/resources/chromium_strings_ja.xtb index f1b2faf7..c1a3b2be 100644 --- a/chrome/app/resources/chromium_strings_ja.xtb +++ b/chrome/app/resources/chromium_strings_ja.xtb
@@ -88,6 +88,7 @@ <translation id="2583187216237139145">このプロファイルの使用中に生成された Chromium データ(ブックマーク、履歴、パスワード、他の設定など)は、仕事用プロファイルの管理者によって削除される場合があります。<ph name="LEARN_MORE" /></translation> <translation id="2592940277904433508">Chromium を引き続き使用</translation> <translation id="259935314519650377">ダウンロードしたインストーラのキャッシュに失敗しました。エラー: <ph name="UNPACK_CACHING_ERROR_CODE" />。</translation> +<translation id="264613044588233783">Chromium の動作が速くなり、JavaScript を使用する機能が設計どおりに動作します(推奨)</translation> <translation id="2648074677641340862">インストール中にオペレーティング システム エラーが発生しました。Chromium をダウンロードし直してください。</translation> <translation id="2661879430930417727">デバイスを共有している場合でも、友だちや家族はそれぞれ Chromium を自分専用のブラウザとして自分用の設定をして使うことができます</translation> <translation id="268602741124540128"><ph name="ACCOUNT_FIRST_NAME" /> さん、Chromium へようこそ</translation> @@ -123,6 +124,7 @@ <translation id="3258596308407688501">Chromium はこのデータ ディレクトリへの読み書きを実行できません: <ph name="USER_DATA_DIRECTORY" /></translation> +<translation id="3268051428841342958">V8 は、サイトのパフォーマンスを向上させるために使用される Chromium の JavaScript エンジンおよび WebAssembly エンジンです</translation> <translation id="3283186697780795848">Chromium のバージョン <ph name="PRODUCT_VERSION" /> がインストールされています</translation> <translation id="3286538390144397061">今すぐ再起動</translation> <translation id="328888136576916638">Google API キーが欠落しています。Chromium の一部の機能は無効になります。</translation> @@ -216,6 +218,7 @@ <translation id="4814736265800133385">アカウントなしで Chromium を使用する</translation> <translation id="4888717733111232871">mDNS トラフィックを許可する Chromium のインバウンド ルールです。</translation> <translation id="4893347770495441059">再起動して Chromium を更新(&C)</translation> +<translation id="4942295735032723435">今後、Chromium のアップデートを受信するには、macOS 11 以降が必要となります。このコンピュータでは macOS 10.15 が実行されています。</translation> <translation id="4943838377383847465">Chromium はバックグラウンド モードです。</translation> <translation id="4987820182225656817">ゲスト ユーザーは、記録を残さずに Chromium を使用できます。</translation> <translation id="4994636714258228724">Chromium に自分を追加</translation> @@ -244,7 +247,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromium のアップデートが利用可能です}=1{Chromium のアップデートが利用可能です}other{Chromium のアップデートが利用可能になってから # 日経過しています}}</translation> <translation id="5643865575100044307">Chromium を閉じるとき、常にデバイスからサイトデータを削除する</translation> <translation id="5653831366781983928">今すぐ Chromium を再起動してください</translation> -<translation id="5675598751761067447">このファイルは危険な可能性があります<ph name="LINE_BREAK" />パスワードを入力すると、Chromium でダウンロードを確認します。パスワードは第三者とは共有されません</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Chromium をこの言語で表示</translation> <translation id="569897634095159764">インターネットに接続できません。プロキシ サーバーにより認証を求められています。</translation> @@ -404,6 +406,7 @@ <translation id="8105840573057009683">このサイトを利用するには、Chromium で位置情報の使用を許可する必要があります</translation> <translation id="8133124826068723441">ご使用のドメインでは同期を利用できないため、Chromium OS はデータを同期できませんでした。</translation> <translation id="813913629614996137">初期化しています...</translation> +<translation id="8166782796394721554">Chromium の JavaScript エンジンと WebAssembly エンジンで追加の保護機能を有効にする</translation> <translation id="81770708095080097">このファイルは危険なファイルであるため、Chromium でブロックしました。</translation> <translation id="8213374284266571500">危険なファイル形式のため Chromium でブロックされました</translation> <translation id="8248265253516264921">画像に有効な説明が設定されていない場合に、Chromium で説明を自動的に生成できるよう Google に画像が送信されます。この機能は設定でいつでも無効にできます。</translation>
diff --git a/chrome/app/resources/chromium_strings_ka.xtb b/chrome/app/resources/chromium_strings_ka.xtb index 1b55c4dd..bb2322d 100644 --- a/chrome/app/resources/chromium_strings_ka.xtb +++ b/chrome/app/resources/chromium_strings_ka.xtb
@@ -249,7 +249,6 @@ <translation id="5623402015214259806">{0,plural, =0{ხელმისაწვდომია Chromium-ის განახლება}=1{ხელმისაწვდომია Chromium-ის განახლება}other{უკვე # დღეა, რაც ხელმისაწვდომია Chromium-ის განახლება}}</translation> <translation id="5643865575100044307">Chromium-ის დახურვისას თქვენი მოწყობილობიდან საიტების მონაცემების ყოველთვის წაშლა</translation> <translation id="5653831366781983928">გთხოვთ, ახლავე გადატვირთოთ Chromium</translation> -<translation id="5675598751761067447">ეს ფაილი, შესაძლოა, სახიფათო იყოს<ph name="LINE_BREAK" />Chromium-ს შეუძლია, თქვენ ნაცვლად შეამოწმოს ეს ჩამოტვირთვა, თუ პაროლს მიუთითებთ (პაროლი თქვენს მოწყობილობაზე დარჩება)</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Chromium-ის ამ ენაზე ჩვენება</translation> <translation id="569897634095159764">ინტერნეტთან დაკავშირება ვერ ხერხდება. პროქსი-სერვერი საჭიროებს ავტორიზაციას.</translation>
diff --git a/chrome/app/resources/chromium_strings_kk.xtb b/chrome/app/resources/chromium_strings_kk.xtb index 850d2f0..4df5e225 100644 --- a/chrome/app/resources/chromium_strings_kk.xtb +++ b/chrome/app/resources/chromium_strings_kk.xtb
@@ -246,7 +246,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromium браузерінің жаңартылған нұсқасы қолжетімді}=1{Chromium браузерінің жаңартылған нұсқасы қолжетімді}other{Chromium браузерінің жаңартылған нұсқасы # күннен бері қолжетімді}}</translation> <translation id="5643865575100044307">Chromium браузерін жапқан кезде құрылғыңыздан сайт деректерін үнемі жою</translation> <translation id="5653831366781983928">Chromium браузерін қайта іске қосыңыз</translation> -<translation id="5675598751761067447">Бұл файл қауіпті болуы мүмкін.<ph name="LINE_BREAK" />Құпия сөзді көрсетсеңіз, Chromium бұл жүктеп алу әрекетін тексере алады. Құпия сөзіңіз құрылғыда қалады.</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Chromium жүйесін осы тілде көрсету</translation> <translation id="569897634095159764">Интернетке қосылу мүмкін емес. Прокси-сервер үшін аутентификация қажет.</translation>
diff --git a/chrome/app/resources/chromium_strings_km.xtb b/chrome/app/resources/chromium_strings_km.xtb index 0f80ff7..0cab869 100644 --- a/chrome/app/resources/chromium_strings_km.xtb +++ b/chrome/app/resources/chromium_strings_km.xtb
@@ -250,7 +250,6 @@ <translation id="5623402015214259806">{0,plural, =0{មានកំណែថ្មីរបស់ Chromium ហើយ}=1{មានកំណែថ្មីរបស់ Chromium ហើយ}other{មានកំណែថ្មីរបស់ Chromium រយៈពេល # ថ្ងៃហើយ}}</translation> <translation id="5643865575100044307">លុបទិន្នន័យគេហទំព័រពីឧបករណ៍របស់អ្នកជានិច្ច នៅពេលដែលអ្នកបិទ Chromium</translation> <translation id="5653831366781983928">សូមចាប់ផ្ដើម Chromium ឡើងវិញឥឡូវនេះ</translation> -<translation id="5675598751761067447">ឯកសារនេះប្រហែលជាអាចបង្កគ្រោះថ្នាក់<ph name="LINE_BREAK" />Chromium អាចពិនិត្យមើលការទាញយកនេះសម្រាប់អ្នកបាន ប្រសិនបើអ្នកផ្ដល់ពាក្យសម្ងាត់ — ពាក្យសម្ងាត់របស់អ្នកបន្តស្ថិតនៅលើឧបករណ៍របស់អ្នក</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">បង្ហាញ Chromium ជាភាសានេះ</translation> <translation id="569897634095159764">មិនអាចភ្ជាប់ទៅអ៊ីនធឺណិតបានទេ។ ម៉ាស៊ីនមេប្រូកស៊ីតម្រូវឱ្យមានការផ្ទៀងផ្ទាត់។</translation>
diff --git a/chrome/app/resources/chromium_strings_kn.xtb b/chrome/app/resources/chromium_strings_kn.xtb index 327333a8..ba72e87 100644 --- a/chrome/app/resources/chromium_strings_kn.xtb +++ b/chrome/app/resources/chromium_strings_kn.xtb
@@ -88,6 +88,7 @@ <translation id="2583187216237139145">ಈ ಪ್ರೊಫೈಲ್ನ ಬಳಕೆಯ ಸಮಯದಲ್ಲಿ ಉತ್ಪತ್ತಿಯಾಗುವ ಯಾವುದೇ Chromium ಡೇಟಾವನ್ನು (ಬುಕ್ಮಾರ್ಕ್ಗಳು, ಇತಿಹಾಸ, ಪಾಸ್ವರ್ಡ್ಗಳು ಮತ್ತು ಇತರ ಸೆಟ್ಟಿಂಗ್ಗಳ ರಚನೆಯಂತಹ) ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ನಿರ್ವಾಹಕರು ತೆಗೆದುಹಾಕಬಹುದು. <ph name="LEARN_MORE" /></translation> <translation id="2592940277904433508">Chromium ಬಳಸಿಕೊಂಡು ಮುಂದುವರಿಯಿರಿ</translation> <translation id="259935314519650377">ಡೌನ್ಲೋಡ್ ಮಾಡಿದ ಇನ್ಸ್ಟಾಲರ್ ಅನ್ನು ಕ್ಯಾಷ್ ಮಾಡಲು ವಿಫಲವಾಗಿದೆ. ದೋಷ: <ph name="UNPACK_CACHING_ERROR_CODE" />.</translation> +<translation id="264613044588233783">Chromium ವೇಗವಾಗಿ ರನ್ ಆಗುತ್ತದೆ ಮತ್ತು JavaScript ಅನ್ನು ಬಳಸುವ ಫೀಚರ್ಗಳು, ವಿನ್ಯಾಸಗೊಳಿಸಿದಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸಬೇಕು (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation> <translation id="2648074677641340862">ಸ್ಥಾಪಿಸುತ್ತಿರುವಾಗ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಂ ದೋಷ ಸಂಭವಿಸಿದೆ. ದಯವಿಟ್ಟು Chromium ಅನ್ನು ಪುನಃ ಡೌನ್ಲೋಡ್ ಮಾಡಿ.</translation> <translation id="2661879430930417727">ನೀವು ಸಾಧನವನ್ನು ಹಂಚಿಕೊಂಡರೆ, ಸ್ನೇಹಿತರು ಮತ್ತು ಕುಟುಂಬದವರು ಪ್ರತ್ಯೇಕವಾಗಿ ಬ್ರೌಸ್ ಮಾಡಬಹುದು ಮತ್ತು Chromium ಅನ್ನು ಅವರಿಗೆ ಬೇಕಾದಂತೆ ಸೆಟಪ್ ಮಾಡಬಹುದು</translation> <translation id="268602741124540128">Chromium ಗೆ ಸುಸ್ವಾಗತ <ph name="ACCOUNT_FIRST_NAME" /> ಅವರೇ</translation> @@ -121,6 +122,7 @@ <translation id="3185330573522821672">ನಿಮ್ಮ ಹೊಸ Chromium ಪ್ರೊಫೈಲ್ ಅನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ</translation> <translation id="3190315855212034486">ಓಹ್! Chromium ಕ್ರ್ಯಾಶ್ ಆಗಿದೆ. ಮತ್ತೊಮ್ಮೆ ಪ್ರಾರಂಭಿಸುವುದೇ?</translation> <translation id="3258596308407688501">Chromium ಗೆ ಇದರ ಡೇಟಾ ಡೈರೆಕ್ಟರಿಯನ್ನು ಓದಲಾಗುವುದಿಲ್ಲ ಮತ್ತು ಬರೆಯಲಾಗುವುದಿಲ್ಲ: <ph name="USER_DATA_DIRECTORY" /></translation> +<translation id="3268051428841342958">V8 ಎಂಬುದು Chromium ನ JavaScript ಮತ್ತು WebAssembly ಎಂಜಿನ್ ಆಗಿದ್ದು, ಸೈಟ್ನ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ</translation> <translation id="3283186697780795848">Chromium ಆವೃತ್ತಿ <ph name="PRODUCT_VERSION" /> ಅನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲಾಗಿದೆ</translation> <translation id="3286538390144397061">ಈಗ ಮರುಪ್ರಾರಂಭಿಸಿ</translation> <translation id="328888136576916638">Google API ಕೀಗಳು ಕಾಣೆಯಾಗಿವೆ. Chromium ನ ಕೆಲವು ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ.</translation> @@ -214,6 +216,7 @@ <translation id="4814736265800133385">Chromium ಅನ್ನು ಖಾತೆಯಿಲ್ಲದೆಯೇ ಬಳಸಿ</translation> <translation id="4888717733111232871">mDNS ಟ್ರಾಫಿಕ್ಗೆ ಅನುಮತಿಸುವ ನಿಟ್ಟಿನಲ್ಲಿ Chromium ಗೆ ಒಳಬರುವ ನಿಯಮ.</translation> <translation id="4893347770495441059">&Chromium ಅಪ್ಡೇಟ್ ಮಾಡಲು ಮರುಪ್ರಾರಂಭಿಸಿ</translation> +<translation id="4942295735032723435">ಭವಿಷ್ಯದ Chromium ಅಪ್ಡೇಟ್ಗಳನ್ನು ಪಡೆಯಲು, ನಿಮಗೆ macOS 11 ಅಥವಾ ಅದರ ನಂತರದ ಆವೃತ್ತಿಗಳ ಅಗತ್ಯವಿದೆ. ಈ ಕಂಪ್ಯೂಟರ್ macOS 10.15 ಅನ್ನು ಬಳಸುತ್ತಿದೆ.</translation> <translation id="4943838377383847465">Chromium ಹಿನ್ನೆಲೆ ಮೋಡ್ನಲ್ಲಿದೆ.</translation> <translation id="4987820182225656817">ಅತಿಥಿಗಳು ಏನನ್ನೂ ಉಳಿಸದೆಯೇ Chromium ಬಳಸಬಹುದು.</translation> <translation id="4994636714258228724">ನೀವಾಗಿಯೇ Chromium ಗೆ ಸೇರಿಕೊಳ್ಳಿ</translation> @@ -242,7 +245,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromium ಅಪ್ಡೇಟ್ ಲಭ್ಯವಿದೆ}=1{Chromium ಅಪ್ಡೇಟ್ ಲಭ್ಯವಿದೆ}one{# ದಿನಗಳ ಮಟ್ಟಿಗೆ Chromium ಅಪ್ಡೇಟ್ ಲಭ್ಯವಿದೆ}other{# ದಿನಗಳ ಮಟ್ಟಿಗೆ Chromium ಅಪ್ಡೇಟ್ ಲಭ್ಯವಿದೆ}}</translation> <translation id="5643865575100044307">ನೀವು Chromium ಅನ್ನು ಮುಚ್ಚಿದಾಗ ನಿಮ್ಮ ಸಾಧನದಿಂದ ಸೈಟ್ ಡೇಟಾವನ್ನು ಯಾವಾಗಲೂ ಅಳಿಸಿ</translation> <translation id="5653831366781983928">ಇದೀಗ Chromium ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ</translation> -<translation id="5675598751761067447">ಈ ಫೈಲ್ ಅಪಾಯಕಾರಿಯಾಗಬಹುದು<ph name="LINE_BREAK" />ನೀವು ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಒದಗಿಸಿದರೆ Chromium ನಿಮಗಾಗಿ ಈ ಡೌನ್ಲೋಡ್ ಅನ್ನು ಪರಿಶೀಲಿಸಬಹುದು - ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿಯೇ ಉಳಿಯುತ್ತದೆ</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">ಈ ಭಾಷೆಯಲ್ಲಿ Chromium ಪ್ರದರ್ಶಿಸು</translation> <translation id="569897634095159764">ಇಂಟರ್ನೆಟ್ಗೆ ಕನೆಕ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಪ್ರಾಕ್ಸಿ ಸರ್ವರ್ಗೆ ದೃಢೀಕರಣದ ಅಗತ್ಯವಿದೆ.</translation> @@ -398,6 +400,7 @@ <translation id="8105840573057009683">ಈ ಸೈಟ್ಗೆ ಸಂಬಂಧಿಸಿದಂತೆ Chromium ಗೆ ಸ್ಥಳ ಅನುಮತಿಯ ಅಗತ್ಯವಿದೆ</translation> <translation id="8133124826068723441">ನಿಮ್ಮ ಡೊಮೇನ್ನಲ್ಲಿ ಸಿಂಕ್ ಮಾಡುವ ಸೌಲಭ್ಯವಿಲ್ಲದ ಕಾರಣ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಿಂಕ್ ಮಾಡಲು ChromiumOS ಗೆ ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ.</translation> <translation id="813913629614996137">ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತಿದೆ...</translation> +<translation id="8166782796394721554">Chromium ನ JavaScript ಮತ್ತು WebAssembly ಎಂಜಿನ್ನಲ್ಲಿ ಹೆಚ್ಚುವರಿ ರಕ್ಷಣೆಯನ್ನು ಆನ್ ಮಾಡಿ</translation> <translation id="81770708095080097">ಈ ಫೈಲ್ ಅಪಾಯಕಾರಿಯಾಗಿದೆ, ಹೀಗಾಗಿ Chromium ಇದನ್ನು ನಿರ್ಬಂಧಿಸಿದೆ.</translation> <translation id="8213374284266571500">ಈ ರೀತಿಯ ಫೈಲ್ ಅಪಾಯಕಾರಿಯಾದ ಕಾರಣ Chromium ಈ ಫೈಲ್ ಅನ್ನು ನಿರ್ಬಂಧಿಸಿದೆ</translation> <translation id="8248265253516264921">ಚಿತ್ರದಲ್ಲಿ ಉಪಯುಕ್ತ ವಿವರಣೆಯು ಇಲ್ಲದಿದ್ದರೆ, Chromium ನಿಮಗಾಗಿ ಒಂದು ವಿವರಣೆಯನ್ನು ಒದಗಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತದೆ. ವಿವರಣೆಗಳನ್ನು ರಚಿಸಲು, ಚಿತ್ರಗಳನ್ನು Google ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ. ಇದನ್ನು ನೀವು ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ಯಾವಾಗ ಬೇಕಾದರೂ ಆಫ್ ಮಾಡಬಹುದು.</translation>
diff --git a/chrome/app/resources/chromium_strings_ko.xtb b/chrome/app/resources/chromium_strings_ko.xtb index 3273e977..daa33aa7 100644 --- a/chrome/app/resources/chromium_strings_ko.xtb +++ b/chrome/app/resources/chromium_strings_ko.xtb
@@ -90,6 +90,7 @@ <translation id="2583187216237139145">북마크, 방문 기록, 비밀번호, 기타 설정 생성 등 이 프로필을 사용하는 동안 생성된 모든 Chromium 데이터는 직장 프로필 관리자가 삭제할 수 있습니다. <ph name="LEARN_MORE" /></translation> <translation id="2592940277904433508">Chromium 계속 사용</translation> <translation id="259935314519650377">다운로드한 설치 프로그램을 캐시할 수 없습니다. 오류(<ph name="UNPACK_CACHING_ERROR_CODE" />)가 발생했습니다.</translation> +<translation id="264613044588233783">Chromium이 더 빠르게 실행되며 JavaScript를 사용하는 기능이 의도한 대로 작동함(권장)</translation> <translation id="2648074677641340862">설치 중 운영체제 오류가 발생했습니다. Chromium을 다시 다운로드하세요.</translation> <translation id="2661879430930417727">기기를 공유하는 경우 친구와 가족이 개별적으로 탐색하고 원하는 대로 Chromium을 설정할 수 있습니다.</translation> <translation id="268602741124540128"><ph name="ACCOUNT_FIRST_NAME" />님, Chromium에 오신 것을 환영합니다</translation> @@ -125,6 +126,7 @@ <translation id="3258596308407688501">Chromium에서 데이터 디렉터리를 읽고 쓸 수 없습니다. <ph name="USER_DATA_DIRECTORY" /></translation> +<translation id="3268051428841342958">V8은 사이트 속도를 개선하는 데 사용되는 Chromium의 JavaScript 및 WebAssembly 엔진입니다.</translation> <translation id="3283186697780795848">Chromium 버전 <ph name="PRODUCT_VERSION" />이(가)가 설치됩니다.</translation> <translation id="3286538390144397061">지금 다시 시작</translation> <translation id="328888136576916638">Google API 키가 누락되었습니다. Chromium의 일부 기능이 사용 중지됩니다.</translation> @@ -218,6 +220,7 @@ <translation id="4814736265800133385">계정 없이 Chromium 사용</translation> <translation id="4888717733111232871">Chromium이 mDNS 트래픽을 허용하는 인바운드 규칙입니다.</translation> <translation id="4893347770495441059">다시 실행하여 Chromium 업데이트</translation> +<translation id="4942295735032723435">향후 Chromium 업데이트를 받으려면 macOS 11 이상이 필요합니다. 이 컴퓨터에서는 macOS 10.15를 사용 중입니다.</translation> <translation id="4943838377383847465">Chromium이 백그라운드 모드로 실행 중입니다.</translation> <translation id="4987820182225656817">게스트로 사용 기록을 남기지 않고 Chromium을 사용할 수 있습니다.</translation> <translation id="4994636714258228724">Chromium에 본인 추가</translation> @@ -246,7 +249,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromium 업데이트 출시}=1{Chromium 업데이트 출시}other{Chromium 업데이트가 출시된 지 #일 지남}}</translation> <translation id="5643865575100044307">Chromium 종료 시 기기에 있는 사이트 데이터를 항상 삭제</translation> <translation id="5653831366781983928">지금 Chromium을 다시 시작하세요</translation> -<translation id="5675598751761067447">위험한 파일일 수도 있습니다.<ph name="LINE_BREAK" />비밀번호를 제공하면 Chromium에서 이 다운로드 항목을 확인할 수 있습니다. 비밀번호는 기기에 보관됩니다.</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">이 언어로 Chromium 표시</translation> <translation id="569897634095159764">인터넷에 연결할 수 없습니다. 프록시 서버를 인증해야 합니다.</translation> @@ -407,6 +409,7 @@ <translation id="8105840573057009683">Chromium에서 사이트에 대한 위치 정보 액세스 권한이 필요합니다.</translation> <translation id="8133124826068723441">내 도메인에서 동기화를 사용할 수 없으므로 ChromiumOS에서 데이터를 동기화할 수 없습니다.</translation> <translation id="813913629614996137">초기화 중...</translation> +<translation id="8166782796394721554">Chromium의 JavaScript 및 WebAssembly 엔진에서 추가 보호 기능 사용 설정</translation> <translation id="81770708095080097">이 파일은 위험하므로 Chromium에서 차단했습니다.</translation> <translation id="8213374284266571500">위험한 유형의 파일이기 때문에 Chromium에서 파일을 차단했습니다.</translation> <translation id="8248265253516264921">이미지에 유용한 설명이 없으면 Chromium에서 자동으로 설명을 제공하려고 시도합니다. 설명을 생성하기 위해 이미지가 Google로 전송됩니다. 이 기능은 언제든지 설정에서 사용 중지할 수 있습니다.</translation>
diff --git a/chrome/app/resources/chromium_strings_ky.xtb b/chrome/app/resources/chromium_strings_ky.xtb index de1c062..ea69f5ea 100644 --- a/chrome/app/resources/chromium_strings_ky.xtb +++ b/chrome/app/resources/chromium_strings_ky.xtb
@@ -246,7 +246,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromium'дун жаңы версиясы жеткиликтүү}=1{Chromium'дун жаңы версиясы жеткиликтүү}other{Chromium'дун жаңы версиясы # күндөн бери жеткиликтүү}}</translation> <translation id="5643865575100044307">Chromium'ду жапкан сайын түзмөгүңүздөгү сайттардын маалыматын өчүрүү</translation> <translation id="5653831366781983928">Chromium'ду азыр өчүрүп күйгүзүңүз</translation> -<translation id="5675598751761067447">Бул файл кооптуу болушу мүмкүн<ph name="LINE_BREAK" />Эгер сырсөздү көрсөтсөңүз, Chromium бул жүктөлүп алынган файды текшере алат. Сырсөзүңүз түзмөгүңүздө кала берет</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Chromium ушул тилде көрүнсүн</translation> <translation id="569897634095159764">Интернетке туташуу мүмкүн болбой жатат. Прокси сервери үчүн аутентификациядан өтүү талап кылынат.</translation>
diff --git a/chrome/app/resources/chromium_strings_lo.xtb b/chrome/app/resources/chromium_strings_lo.xtb index f2d420e..21473297 100644 --- a/chrome/app/resources/chromium_strings_lo.xtb +++ b/chrome/app/resources/chromium_strings_lo.xtb
@@ -249,7 +249,6 @@ <translation id="5623402015214259806">{0,plural, =0{ມີການອັບເດດ Chromium}=1{ມີການອັບເດດ Chromium}other{ມີການອັບເດດ Chromium ເປັນເວລາ # ມື້ແລ້ວ}}</translation> <translation id="5643865575100044307">ລຶບຂໍ້ມູນເວັບໄຊຈາກອຸປະກອນຂອງທ່ານທຸກເທື່ອທີ່ທ່ານປິດ Chromium</translation> <translation id="5653831366781983928">ກະລຸນາປິດເປີດ Chromium ຄືນໃໝ່ຕອນນີ້</translation> -<translation id="5675598751761067447">ໄຟລ໌ນີ້ອາດເປັນອັນຕະລາຍ<ph name="LINE_BREAK" />Chromium ສາມາດກວດສອບການດາວໂຫຼດນີ້ໃຫ້ທ່ານໄດ້ຫາກທ່ານລະບຸລະຫັດຜ່ານ — ລະຫັດຜ່ານຂອງທ່ານຈະຢູ່ໃນອຸປະກອນຂອງທ່ານເທົ່ານັ້ນ</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">ສະແດງ Chromium ເປັນພາສານີ້</translation> <translation id="569897634095159764">ບໍ່ສາມາດເຊື່ອມຕໍ່ກັບອິນເຕີເນັດໄດ້. ພຣັອກຊີເຊີບເວີຕ້ອງມີການພິສູດຢືນຢັນ.</translation>
diff --git a/chrome/app/resources/chromium_strings_lt.xtb b/chrome/app/resources/chromium_strings_lt.xtb index 52508144..daab990 100644 --- a/chrome/app/resources/chromium_strings_lt.xtb +++ b/chrome/app/resources/chromium_strings_lt.xtb
@@ -249,7 +249,6 @@ <translation id="5623402015214259806">{0,plural, =0{Pasiekiamas „Chromium“ naujinys}=1{Pasiekiamas „Chromium“ naujinys}one{„Chromium“ naujinys pasiekiamas # dieną}few{„Chromium“ naujinys pasiekiamas # dienas}many{„Chromium“ naujinys pasiekiamas # dienos}other{„Chromium“ naujinys pasiekiamas # dienų}}</translation> <translation id="5643865575100044307">Visada ištrinti svetainių duomenis iš įrenginio uždarius „Chromium“</translation> <translation id="5653831366781983928">Dabar iš naujo paleiskite „Chromium“</translation> -<translation id="5675598751761067447">Šis failas gali būti pavojingas<ph name="LINE_BREAK" />„Chromium“ gali patikrinti šį atsisiuntimą už jus, jei pateiksite slaptažodį. Slaptažodis liks jūsų įrenginyje</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Pateikti „Chromium“ šia kalba</translation> <translation id="569897634095159764">Nepavyko prisijungti prie interneto. Reikalingas tarpinio serverio autentifikavimas.</translation>
diff --git a/chrome/app/resources/chromium_strings_lv.xtb b/chrome/app/resources/chromium_strings_lv.xtb index 90b0ad4..d2070a2 100644 --- a/chrome/app/resources/chromium_strings_lv.xtb +++ b/chrome/app/resources/chromium_strings_lv.xtb
@@ -244,7 +244,6 @@ <translation id="5623402015214259806">{0,plural, =0{Ir pieejams Chromium atjauninājums}=1{Ir pieejams Chromium atjauninājums}zero{Chromium atjauninājums ir pieejams jau # dienu}one{Chromium atjauninājums ir pieejams jau # dienu}other{Chromium atjauninājums ir pieejams jau # dienas}}</translation> <translation id="5643865575100044307">Vienmēr notīrīt vietnes datus no ierīces, kad tiek aizvērts pārlūks Chromium</translation> <translation id="5653831366781983928">Lūdzu, nekavējoties restartējiet pārlūku Chromium</translation> -<translation id="5675598751761067447">Šis fails var būt bīstams.<ph name="LINE_BREAK" />Chromium var pārbaudīt šo lejupielādi, ja norādīsiet paroli, — parole paliks jūsu ierīcē.</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Rādīt Chromium šajā valodā</translation> <translation id="569897634095159764">Nevar izveidot savienojumu ar internetu. Starpniekserverī ir nepieciešama autentifikācija.</translation>
diff --git a/chrome/app/resources/chromium_strings_mk.xtb b/chrome/app/resources/chromium_strings_mk.xtb index da3c00e..0284f8448 100644 --- a/chrome/app/resources/chromium_strings_mk.xtb +++ b/chrome/app/resources/chromium_strings_mk.xtb
@@ -246,7 +246,6 @@ <translation id="5623402015214259806">{0,plural, =0{Достапно е ажурирање за Chromium}=1{Достапно е ажурирање за Chromium}one{Достапно е ажурирање за Chromium веќе # ден}other{Достапно е ажурирање за Chromium веќе # дена}}</translation> <translation id="5643865575100044307">Секогаш бришете ги податоците од сајт од вашиот уред кога го затворате Chromium</translation> <translation id="5653831366781983928">Рестартирајте го Chromium сега</translation> -<translation id="5675598751761067447">Датотекава можеби е опасна<ph name="LINE_BREAK" />Chromium може да го провери преземањево за вас ако ја внесете лозинката. Лозинката ќе остане на уредот.</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Прикажи го Chromium на овој јазик</translation> <translation id="569897634095159764">Не може да се поврзе на интернет. Потребна е автентикација на прокси серверот.</translation>
diff --git a/chrome/app/resources/chromium_strings_ml.xtb b/chrome/app/resources/chromium_strings_ml.xtb index 5fba8c12..ef17256 100644 --- a/chrome/app/resources/chromium_strings_ml.xtb +++ b/chrome/app/resources/chromium_strings_ml.xtb
@@ -249,7 +249,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromium-ത്തിനൊരു അപ്ഡേറ്റ് ലഭ്യമാണ്}=1{Chromium-ത്തിനൊരു അപ്ഡേറ്റ് ലഭ്യമാണ്}other{# ദിവസമായി Chromium-ത്തിനൊരു അപ്ഡേറ്റ് ലഭ്യമാണ്}}</translation> <translation id="5643865575100044307">Chromium അടയ്ക്കുമ്പോഴെല്ലാം നിങ്ങളുടെ ഉപകരണത്തിൽ നിന്ന് സൈറ്റ് ഡാറ്റ ഇല്ലാതാക്കുക</translation> <translation id="5653831366781983928">Chromium ഇപ്പോൾ റീസ്റ്റാർട്ട് ചെയ്യുക</translation> -<translation id="5675598751761067447">ഈ ഫയൽ അപകടകരമായേക്കാം<ph name="LINE_BREAK" />നിങ്ങൾ പാസ്വേഡ് നൽകിയാൽ Chromium-ന് നിങ്ങൾക്കായി ഈ ഡൗൺലോഡ് പരിശോധിക്കാൻ കഴിയും — നിങ്ങളുടെ പാസ്വേഡ് ഉപകരണത്തിൽ തന്നെ നിലനിൽക്കും</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">ഈ ഭാഷയിൽ Chromium പ്രദർശിപ്പിക്കുക</translation> <translation id="569897634095159764">ഇന്റർനെറ്റിലേക്ക് കണക്റ്റ് ചെയ്യാനാകുന്നില്ല. പ്രോക്സി സെർവറിന് പരിശോധിച്ചുറപ്പിക്കൽ ആവശ്യമാണ്.</translation>
diff --git a/chrome/app/resources/chromium_strings_mn.xtb b/chrome/app/resources/chromium_strings_mn.xtb index 52d1ab0..2234ca2 100644 --- a/chrome/app/resources/chromium_strings_mn.xtb +++ b/chrome/app/resources/chromium_strings_mn.xtb
@@ -247,7 +247,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromium-н шинэчлэлт боломжтой байна}=1{Chromium-н шинэчлэлт боломжтой байна}other{Chromium-н шинэчлэлт # хоногийн турш боломжтой байсаар байна}}</translation> <translation id="5643865575100044307">Таныг Chromium-г хаах үед төхөөрөмжөөс тань сайтын өгөгдлийг үргэлж устгана</translation> <translation id="5653831366781983928">Chromium-г одоо дахин эхлүүлнэ үү</translation> -<translation id="5675598751761067447">Энэ файл аюултай байж магадгүй<ph name="LINE_BREAK" />Хэрэв та нууц үгээр хангавал Chromium энэ татаж авсан файлыг шалгах боломжтой бөгөөд нууц үг таны төхөөрөмжид үлдэнэ</translation> <translation id="5690427481109656848">Google ХХК</translation> <translation id="5698481217667032250">Chromium-г энэ хэлээр харуулах</translation> <translation id="569897634095159764">Интернэтэд холбогдох боломжгүй байна. Прокси сервер баталгаажуулалт шаарддаг.</translation>
diff --git a/chrome/app/resources/chromium_strings_mr.xtb b/chrome/app/resources/chromium_strings_mr.xtb index 6c23a43..a6a63b2 100644 --- a/chrome/app/resources/chromium_strings_mr.xtb +++ b/chrome/app/resources/chromium_strings_mr.xtb
@@ -89,6 +89,7 @@ <translation id="2583187216237139145">या प्रोफाइलच्या वापरादरम्यान जनरेट केला गेलेला कोणताही Chromium डेटा (जसे की बुकमार्क, इतिहास, पासवर्ड आणि इतर सेटिंग्जची निर्मिती) कार्य प्रोफाइल अॅडमिनिस्ट्रेटरला हटवता येतो. <ph name="LEARN_MORE" /></translation> <translation id="2592940277904433508">Chromium वापरणे पुढे सुरू ठेवा</translation> <translation id="259935314519650377">डाउनलोड केलेला इंस्टॉलर कॅशे करता आला नाही. एरर: <ph name="UNPACK_CACHING_ERROR_CODE" />.</translation> +<translation id="264613044588233783">Chromium जलद रन होतो आणि JavaScript वापरणारी वैशिष्ट्ये डिझाइन केल्यानुसार काम करतात (शिफारस केलेले)</translation> <translation id="2648074677641340862">स्थापनेदरम्यान ऑपरेटिंग सिस्टीम एरर आली. कृपया Chromium पुन्हा डाउनलोड करा.</translation> <translation id="2661879430930417727">तुम्ही डिव्हाइस शेअर केल्यास, मित्रमैत्रिणी आणि कुटुंब स्वतंत्रपणे ब्राउझ करू शकतात आणि त्यांना हवे तसे Chromium सेट करू शकतात</translation> <translation id="268602741124540128">Chromium वर स्वागत आहे, <ph name="ACCOUNT_FIRST_NAME" /></translation> @@ -124,6 +125,7 @@ <translation id="3258596308407688501">Chromium त्याची डेटा डिरेक्टरी वाचू किंवा लिहू शकत नाही: <ph name="USER_DATA_DIRECTORY" /></translation> +<translation id="3268051428841342958">V8 हे Chromium चे JavaScript आणि WebAssembly इंजीन आहे, जे साइटच्या परफॉर्मन्समध्ये सुधारणा करण्यासाठी वापरले जाते</translation> <translation id="3283186697780795848">Chromium आवृत्ती <ph name="PRODUCT_VERSION" /> इंस्टॉल केली आहे</translation> <translation id="3286538390144397061">त्वरित रीस्टार्ट करा</translation> <translation id="328888136576916638">Google API की गहाळ आहेत. Chromium ची काही कार्यक्षमता अक्षम केली जाईल.</translation> @@ -217,6 +219,7 @@ <translation id="4814736265800133385">खात्याशिवाय Chromium वापरा</translation> <translation id="4888717733111232871">mDNS रहदारीस अनुमती देण्यासाठी Chromium साठी अंतर्गामी नियम.</translation> <translation id="4893347770495441059">&Chromium अपडेट करण्यासाठी पुन्हा लाँच करा</translation> +<translation id="4942295735032723435">भविष्यातील Chromium अपडेट मिळवण्यासाठी, तुमच्याकडे macOS 11 किंवा त्यावरील आवृत्ती असणे आवश्यक आहे. हा कॉंप्युटर macOS 10.15 वापरत आहे.</translation> <translation id="4943838377383847465">Chromium पार्श्वभूमी मोड मध्ये आहे.</translation> <translation id="4987820182225656817">अतिथी कोणतीही गोष्ट मागे न सोडता Chromium वापरू शकतात.</translation> <translation id="4994636714258228724">आपल्या स्वतःस Chromium वर जोडा</translation> @@ -245,7 +248,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromium अपडेट उपलब्ध आहे}=1{Chromium अपडेट उपलब्ध आहे}other{Chromium अपडेट # दिवसांसाठी उपलब्ध आहे}}</translation> <translation id="5643865575100044307">तुम्ही Chromium बंद करता, तेव्हा नेहमी तुमच्या डिव्हाइसवरून साइट डेटा हटवा</translation> <translation id="5653831366781983928">कृपया आता Chromium रीस्टार्ट करा</translation> -<translation id="5675598751761067447">ही फाइल धोकादायक असू शकते<ph name="LINE_BREAK" />तुम्ही पासवर्ड पुरवल्यास, Chromium तुमच्या वतीने हा डाउनलोड तपासू शकते — तुमचा पासवर्ड तुमच्या डिव्हाइसवर राहतो</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Chromium या भाषेत डिस्प्ले करा</translation> <translation id="569897634095159764">इंटरनेटशी कनेक्ट करता आले नाही. प्रॉक्सी सर्व्हरसाठी ऑथेंटिकेशन आवश्यक आहे.</translation> @@ -406,6 +408,7 @@ <translation id="8105840573057009683">Chromium ला या साइटसाठी स्थानाशी संबंधित परवानगी आवश्यक आहे</translation> <translation id="8133124826068723441">तुमच्या डोमेनसाठी सिंक करणे उपलब्ध नसल्यामुळे, ChromiumOS ला तुमचा डेटा सिंक करता आला नाही.</translation> <translation id="813913629614996137">सुरू करत आहे…</translation> +<translation id="8166782796394721554">Chromium च्या JavaScript आणि WebAssembly इंजीनमध्ये अतिरिक्त संरक्षण सुरू करणे</translation> <translation id="81770708095080097">ही फाइल धोकादायक आहे, त्यामुळे Chromium ने ब्लॉक केली आहे.</translation> <translation id="8213374284266571500">या प्रकारची फाइल धोकादायक असल्यामुळे Chromium ने ती ब्लॉक केली आहे</translation> <translation id="8248265253516264921">इमेजचे उपयोगी वर्णन नसल्यास, Chromium तुमच्यासाठी ते देण्याचा प्रयत्न करेल. वर्णने तयार करण्यासाठी, इमेज Google ला पाठवल्या जातात. तुम्ही हे सेटिंग्जमध्ये कधीही बंद करू शकता.</translation>
diff --git a/chrome/app/resources/chromium_strings_ms.xtb b/chrome/app/resources/chromium_strings_ms.xtb index 1f19606..e7ddff3 100644 --- a/chrome/app/resources/chromium_strings_ms.xtb +++ b/chrome/app/resources/chromium_strings_ms.xtb
@@ -247,7 +247,6 @@ <translation id="5623402015214259806">{0,plural, =0{Kemas kini Chromium tersedia}=1{Kemas kini Chromium tersedia}other{Kemas kini Chromium telah tersedia selama # hari}}</translation> <translation id="5643865575100044307">Sentiasa padamkan data laman daripada peranti anda apabila anda menutup Chromium</translation> <translation id="5653831366781983928">Sila mulakan semula Chromium sekarang</translation> -<translation id="5675598751761067447">Fail ini mungkin berbahaya<ph name="LINE_BREAK" />Chromium boleh memeriksa muat turun ini untuk anda jika anda memberikan kata laluan — kata laluan anda kekal pada peranti anda</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Paparkan Chromium dalam bahasa ini</translation> <translation id="569897634095159764">Tidak dapat disambungkan kepada Internet. Pelayan proksi memerlukan pengesahan.</translation>
diff --git a/chrome/app/resources/chromium_strings_my.xtb b/chrome/app/resources/chromium_strings_my.xtb index 2b14f40..bcf3eb1 100644 --- a/chrome/app/resources/chromium_strings_my.xtb +++ b/chrome/app/resources/chromium_strings_my.xtb
@@ -248,7 +248,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromium အပ်ဒိတ်တစ်ခု ရနိုင်ပါသည်}=1{Chromium အပ်ဒိတ်တစ်ခု ရနိုင်ပါသည်}other{Chromium အပ်ဒိတ်တစ်ခု ရနိုင်သည်မှာ # ရက် ရှိပါပြီ}}</translation> <translation id="5643865575100044307">Chromium ကို ပိတ်သည့်အခါ သင့်စက်မှ ဝဘ်ဆိုက်ဒေတာကို အမြဲဖျက်ရန်</translation> <translation id="5653831366781983928">Chromium ကို ယခု ပြန်စပါ</translation> -<translation id="5675598751761067447">ဤဖိုင်သည် အန္တရာယ်ရှိနိုင်သည်<ph name="LINE_BREAK" />သင်စကားဝှက်ပေးပါက Chromium သည် သင့်အတွက် ဤဒေါင်းလုဒ်ကို စစ်ပေးနိုင်သည် — သင့်စကားဝှက်သည် ဤစက်၌သာ ရှိပါမည်</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Chromium ကို ဤဘာသာစကားဖြင့် ပြသပါ</translation> <translation id="569897634095159764">အင်တာနက် ချိတ်ဆက်၍ မရပါ။ ပရောက်စီဆာဗာအတွက် အထောက်အထားစိစစ်ရန် လိုအပ်သည်။</translation>
diff --git a/chrome/app/resources/chromium_strings_ne.xtb b/chrome/app/resources/chromium_strings_ne.xtb index 7305fb9..0d9bbbf 100644 --- a/chrome/app/resources/chromium_strings_ne.xtb +++ b/chrome/app/resources/chromium_strings_ne.xtb
@@ -247,7 +247,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromium को अद्यावधिक उपलब्ध छ}=1{Chromium को अद्यावधिक उपलब्ध छ}other{Chromium को अद्यावधिक # दिनदेखि उपलब्ध भएको छ}}</translation> <translation id="5643865575100044307">Chromium बन्द गरेपछि आफ्नो डिभाइसबाट सधैँ साइट डेटा मेटाउनुहोस्</translation> <translation id="5653831366781983928">अहिले नै Chromium पुनः सुरु गर्नुहोस्</translation> -<translation id="5675598751761067447">यो फाइल खतरनाक हुन सक्छ<ph name="LINE_BREAK" />तपाईंले पासवर्ड प्रदान गर्नुभयो भने Chromium ले तपाईंका तर्फबाट यो फाइलको जाँच गरिदिन सक्छ। तपाईंको पासवर्ड तपाईंकै डिभाइसमा रहन्छ</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">यो भाषामा Chromium प्रदर्शित गर्नुहोस्</translation> <translation id="569897634095159764">इन्टरनेटमा कनेक्ट गर्न सकिएन। प्रोक्सी सर्भर पुष्टि गर्नु पर्ने हुन्छ।</translation>
diff --git a/chrome/app/resources/chromium_strings_nl.xtb b/chrome/app/resources/chromium_strings_nl.xtb index a82d4ae..25efc7f 100644 --- a/chrome/app/resources/chromium_strings_nl.xtb +++ b/chrome/app/resources/chromium_strings_nl.xtb
@@ -249,7 +249,6 @@ <translation id="5623402015214259806">{0,plural, =0{Er is een Chromium-update beschikbaar}=1{Er is een Chromium-update beschikbaar}other{Er is al # dagen een Chromium-update beschikbaar}}</translation> <translation id="5643865575100044307">Sitegegevens altijd verwijderen van je apparaat als je Chromium sluit</translation> <translation id="5653831366781983928">Chromium nu opnieuw opstarten</translation> -<translation id="5675598751761067447">Dit bestand kan gevaarlijk zijn<ph name="LINE_BREAK" />Chromium kan deze download voor je checken als je het wachtwoord verstrekt. Je wachtwoord blijft op je apparaat staan.</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Chromium bekijken in deze taal</translation> <translation id="569897634095159764">Kan geen verbinding maken met internet. Proxyserver vereist verificatie.</translation>
diff --git a/chrome/app/resources/chromium_strings_no.xtb b/chrome/app/resources/chromium_strings_no.xtb index 244abb1..3b5bf396 100644 --- a/chrome/app/resources/chromium_strings_no.xtb +++ b/chrome/app/resources/chromium_strings_no.xtb
@@ -247,7 +247,6 @@ <translation id="5623402015214259806">{0,plural, =0{En Chromium-oppdatering er tilgjengelig}=1{En Chromium-oppdatering er tilgjengelig}other{En Chromium-oppdatering har vært tilgjengelig i # dager}}</translation> <translation id="5643865575100044307">Slett alltid nettstedsdata fra enheten når du lukker Chromium</translation> <translation id="5653831366781983928">Start Chromium på nytt nå</translation> -<translation id="5675598751761067447">Denne filen kan være farlig<ph name="LINE_BREAK" />Chromium kan sjekke denne nedlastingen for deg hvis du oppgir passordet. Passordet blir værende på denne enheten.</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Vis Chromium på dette språket</translation> <translation id="569897634095159764">Kan ikke koble til internett. Proxy-tjeneren krever autentisering.</translation>
diff --git a/chrome/app/resources/chromium_strings_or.xtb b/chrome/app/resources/chromium_strings_or.xtb index 9145409..f78cbf364 100644 --- a/chrome/app/resources/chromium_strings_or.xtb +++ b/chrome/app/resources/chromium_strings_or.xtb
@@ -246,7 +246,6 @@ <translation id="5623402015214259806">{0,plural, =0{ଏକ Chromium ଅପ୍ଡେଟ୍ ଉପଲବ୍ଧ ଅଛି}=1{ଏକ Chromium ଅପ୍ଡେଟ୍ ଉପଲବ୍ଧ ଅଛି}other{# ଦିନ ପାଇଁ ଏକ Chromium ଅପ୍ଡେଟ୍ ଉପଲବ୍ଧ ଅଛି}}</translation> <translation id="5643865575100044307">ଆପଣ Chromiumକୁ ବନ୍ଦ କରିବା ସମୟରେ ସର୍ବଦା ଆପଣଙ୍କ ଡିଭାଇସରୁ ସାଇଟ ଡାଟାକୁ ଡିଲିଟ କରନ୍ତୁ</translation> <translation id="5653831366781983928">ଦୟାକରି ବର୍ତ୍ତମାନ Chromium ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ</translation> -<translation id="5675598751761067447">ଏହି ଫାଇଲ ବିପଦଜନକ ହୋଇପାରେ<ph name="LINE_BREAK" />ଯଦି ଆପଣ ପାସୱାର୍ଡ ପ୍ରଦାନ କରନ୍ତି ତେବେ Chromium ଆପଣଙ୍କ ପାଇଁ ଏହି ଡାଉନଲୋଡକୁ ଯାଞ୍ଚ କରିପାରିବ — ଆପଣଙ୍କ ପାସୱାର୍ଡ ଆପଣଙ୍କର ଡିଭାଇସରେ ରହିଥାଏ</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Chromiumକୁ ଏହି ଭାଷାରେ ପ୍ରଦର୍ଶନ କରନ୍ତୁ</translation> <translation id="569897634095159764">ଇଣ୍ଟରନେଟ ସହ କନେକ୍ଟ କରିବାରେ ଅସମର୍ଥ। ପ୍ରକ୍ସି ସର୍ଭର ପ୍ରମାଣୀକରଣ ଆବଶ୍ୟକ।</translation>
diff --git a/chrome/app/resources/chromium_strings_pa.xtb b/chrome/app/resources/chromium_strings_pa.xtb index c095f4bf..e859158 100644 --- a/chrome/app/resources/chromium_strings_pa.xtb +++ b/chrome/app/resources/chromium_strings_pa.xtb
@@ -246,7 +246,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromium ਅੱਪਡੇਟ ਉਪਲਬਧ ਹੈ}=1{Chromium ਅੱਪਡੇਟ ਉਪਲਬਧ ਹੈ}other{Chromium ਅੱਪਡੇਟ # ਦਿਨਾਂ ਤੋਂ ਉਪਲਬਧ ਹੈ}}</translation> <translation id="5643865575100044307">Chromium ਨੂੰ ਬੰਦ ਕਰਨ ਵੇਲੇ ਆਪਣੇ ਡੀਵਾਈਸ ਤੋਂ ਸਾਈਟ ਡਾਟੇ ਨੂੰ ਹਮੇਸ਼ਾਂ ਮਿਟਾਓ</translation> <translation id="5653831366781983928">ਕਿਰਪਾ ਕਰਕੇ ਹੁਣੇ Chromium ਨੂੰ ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ</translation> -<translation id="5675598751761067447">ਇਹ ਫ਼ਾਈਲ ਖਤਰਨਾਕ ਹੋ ਸਕਦੀ ਹੈ<ph name="LINE_BREAK" />ਜੇ ਤੁਸੀਂ ਪਾਸਵਰਡ ਮੁਹੱਈਆ ਕਰਵਾਉਂਦੇ ਹੋ, ਤਾਂ Chromium ਤੁਹਾਡੇ ਲਈ ਇਸ ਡਾਊਨਲੋਡ ਦੀ ਜਾਂਚ ਕਰ ਸਕਦਾ ਹੈ — ਤੁਹਾਡਾ ਪਾਸਵਰਡ ਤੁਹਾਡੇ ਡੀਵਾਈਸ 'ਤੇ ਹੀ ਰਹਿੰਦਾ ਹੈ</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Chromium ਨੂੰ ਇਸ ਭਾਸ਼ਾ ਵਿੱਚ ਦਿਖਾਓ ।</translation> <translation id="569897634095159764">ਇੰਟਰਨੈੱਟ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ। ਪ੍ਰੌਕਸੀ ਸਰਵਰ ਨੂੰ ਪ੍ਰਮਾਣੀਕਰਨ ਦੀ ਲੋੜ ਹੈ।</translation>
diff --git a/chrome/app/resources/chromium_strings_pl.xtb b/chrome/app/resources/chromium_strings_pl.xtb index 15ed847..d2e7c402 100644 --- a/chrome/app/resources/chromium_strings_pl.xtb +++ b/chrome/app/resources/chromium_strings_pl.xtb
@@ -245,7 +245,6 @@ <translation id="5623402015214259806">{0,plural, =0{Dostępna jest aktualizacja Chromium}=1{Dostępna jest aktualizacja Chromium}few{Aktualizacja Chromium jest dostępna od # dni}many{Aktualizacja Chromium jest dostępna od # dni}other{Aktualizacja Chromium jest dostępna od # dnia}}</translation> <translation id="5643865575100044307">Zawsze usuwaj dane witryn z urządzenia po zamknięciu Chromium</translation> <translation id="5653831366781983928">Uruchom Chromium ponownie</translation> -<translation id="5675598751761067447">Ten plik może być niebezpieczny<ph name="LINE_BREAK" />Chromium może go sprawdzić, jeśli podasz hasło – pozostanie ono na urządzeniu</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Wyświetlaj Chromium w tym języku</translation> <translation id="569897634095159764">Nie można połączyć się z internetem. Serwer proxy wymaga uwierzytelnienia.</translation>
diff --git a/chrome/app/resources/chromium_strings_pt-BR.xtb b/chrome/app/resources/chromium_strings_pt-BR.xtb index ec7b9f3..0a96f902 100644 --- a/chrome/app/resources/chromium_strings_pt-BR.xtb +++ b/chrome/app/resources/chromium_strings_pt-BR.xtb
@@ -245,7 +245,6 @@ <translation id="5623402015214259806">{0,plural, =0{Uma atualização do Chromium está disponível}=1{Uma atualização do Chromium está disponível}one{Uma atualização do Chromium está disponível há # dia}other{Uma atualização do Chromium está disponível há # dias}}</translation> <translation id="5643865575100044307">Sempre excluir dados do site do seu dispositivo ao fechar o Chromium</translation> <translation id="5653831366781983928">Reinicie o Chromium agora</translation> -<translation id="5675598751761067447">Esse arquivo pode ser perigoso<ph name="LINE_BREAK" />O Chromium poderá verificar esse download, se você fornecer a senha, que não sairá do seu dispositivo</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Exibir Chromium neste idioma</translation> <translation id="569897634095159764">Não foi possível se conectar à Internet. O servidor proxy requer autenticação.</translation>
diff --git a/chrome/app/resources/chromium_strings_pt-PT.xtb b/chrome/app/resources/chromium_strings_pt-PT.xtb index 542d1d7..c4713e2 100644 --- a/chrome/app/resources/chromium_strings_pt-PT.xtb +++ b/chrome/app/resources/chromium_strings_pt-PT.xtb
@@ -247,7 +247,6 @@ <translation id="5623402015214259806">{0,plural, =0{Está disponível uma atualização do Chromium}=1{Está disponível uma atualização do Chromium}other{Está disponível uma atualização do Chromium há # dias}}</translation> <translation id="5643865575100044307">Eliminar sempre os dados de sites do seu dispositivo ao fechar o Chromium</translation> <translation id="5653831366781983928">Reinicie o Chromium agora</translation> -<translation id="5675598751761067447">Este ficheiro pode ser perigoso<ph name="LINE_BREAK" />O Chromium pode verificar esta transferência se facultar a palavra-passe. A palavra-passe permanece no seu dispositivo</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Apresentar o Chromium neste idioma</translation> <translation id="569897634095159764">Não é possível ligar à Internet. O servidor proxy necessita de autenticação.</translation>
diff --git a/chrome/app/resources/chromium_strings_ro.xtb b/chrome/app/resources/chromium_strings_ro.xtb index 25d9b0d4..0ee545e 100644 --- a/chrome/app/resources/chromium_strings_ro.xtb +++ b/chrome/app/resources/chromium_strings_ro.xtb
@@ -88,6 +88,7 @@ <translation id="2583187216237139145">Toate datele Chromium 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="2592940277904433508">Continuă să folosești Chromium</translation> <translation id="259935314519650377">Programul de instalare descărcat nu a putut fi stocat în memoria cache. Eroare: <ph name="UNPACK_CACHING_ERROR_CODE" />.</translation> +<translation id="264613044588233783">Chromium rulează mai rapid și funcțiile care folosesc JavaScript ar trebui să ruleze conform destinației lor (recomandat)</translation> <translation id="2648074677641340862">S-a produs o eroare de sistem de operare în timpul instalării. Descărcați din nou Chromium.</translation> <translation id="2661879430930417727">Dacă permiți accesul la un dispozitiv, familia și prietenii pot să navigheze separat și să configureze Chromium cum doresc</translation> <translation id="268602741124540128">Bun venit la Chromium, <ph name="ACCOUNT_FIRST_NAME" /></translation> @@ -123,6 +124,7 @@ <translation id="3258596308407688501">Chromium nu poate citi și scrie în directorul propriu de date: <ph name="USER_DATA_DIRECTORY" /></translation> +<translation id="3268051428841342958">V8 este motorul JavaScript și WebAssembly din Chromium, folosit pentru a îmbunătăți performanța site-ului</translation> <translation id="3283186697780795848">Versiunea Chromium <ph name="PRODUCT_VERSION" /> este instalată</translation> <translation id="3286538390144397061">Repornește acum</translation> <translation id="328888136576916638">Lipsesc chei pentru API-ul Google. Unele funcționalități Chromium vor fi dezactivate.</translation> @@ -216,6 +218,7 @@ <translation id="4814736265800133385">Folosește Chromium fără un cont</translation> <translation id="4888717733111232871">Regula de intrare pentru Chromium pentru a permite traficul mDNS.</translation> <translation id="4893347770495441059">Relansează pentru a actualiza &Chromium</translation> +<translation id="4942295735032723435">Pentru a primi actualizările Chromium viitoare, vei avea nevoie de macOS 11 sau o versiune ulterioară. Acest computer folosește macOS 10.15.</translation> <translation id="4943838377383847465">Chromium este în modul fundal.</translation> <translation id="4987820182225656817">Invitații pot folosi Chromium fără a lăsa nicio urmă.</translation> <translation id="4994636714258228724">Adăugați-vă la Chromium</translation> @@ -244,7 +247,6 @@ <translation id="5623402015214259806">{0,plural, =0{Este disponibilă o actualizare Chromium}=1{Este disponibilă o actualizare Chromium}few{O actualizare Chromium este disponibilă de # zile}other{O actualizare Chromium este disponibilă de # de zile}}</translation> <translation id="5643865575100044307">Șterge întotdeauna datele privind site-urile de pe dispozitiv când închizi Chromium</translation> <translation id="5653831366781983928">Repornește Chromium acum</translation> -<translation id="5675598751761067447">Acest fișier poate fi periculos<ph name="LINE_BREAK" />Chromium poate verifica descărcarea dacă introduci parola. Aceasta rămâne pe dispozitivul tău</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Afișează Chromium în această limbă</translation> <translation id="569897634095159764">Nu se poate realiza conexiunea la internet. Pentru serverul proxy este necesară autentificarea.</translation> @@ -404,6 +406,7 @@ <translation id="8105840573057009683">Chromium necesită permisiuni pentru locație pentru acest site</translation> <translation id="8133124826068723441">Sistemul de operare Chromium nu a putut sincroniza datele, deoarece sincronizarea nu este disponibilă pentru domeniu.</translation> <translation id="813913629614996137">Se inițializează...</translation> +<translation id="8166782796394721554">Activează protecția suplimentară în motorul JavaScript și WebAssembly din Chromium</translation> <translation id="81770708095080097">Fișierul este periculos, așadar Chromium l-a blocat.</translation> <translation id="8213374284266571500">Chromium a blocat fișierul deoarece acest tip de fișier este periculos</translation> <translation id="8248265253516264921">Dacă o imagine nu are o descriere utilă, Chromium va încerca să o completeze. Pentru a crea descrieri, imaginile sunt trimise la Google. Poți dezactiva această opțiune oricând din setări.</translation>
diff --git a/chrome/app/resources/chromium_strings_ru.xtb b/chrome/app/resources/chromium_strings_ru.xtb index d5a4fde..f1bf602 100644 --- a/chrome/app/resources/chromium_strings_ru.xtb +++ b/chrome/app/resources/chromium_strings_ru.xtb
@@ -245,7 +245,6 @@ <translation id="5623402015214259806">{0,plural, =0{Доступно обновление Chromium}=1{Доступно обновление Chromium}one{Обновление Chromium доступно # день}few{Обновление Chromium доступно # дня}many{Обновление Chromium доступно # дней}other{Обновление Chromium доступно # дня}}</translation> <translation id="5643865575100044307">Всегда удалять с устройства данные сайтов при закрытии Chromium</translation> <translation id="5653831366781983928">Перезапустите Chromium</translation> -<translation id="5675598751761067447">Этот файл может быть опасен.<ph name="LINE_BREAK" />Chromium проверит его, если вы введете пароль. Ваш пароль останется на устройстве.</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Отображать Chromium на этом языке</translation> <translation id="569897634095159764">Не удалось подключиться к интернету. Прокси-сервер требует пройти аутентификацию.</translation>
diff --git a/chrome/app/resources/chromium_strings_si.xtb b/chrome/app/resources/chromium_strings_si.xtb index bc790e6..e2d4f4b 100644 --- a/chrome/app/resources/chromium_strings_si.xtb +++ b/chrome/app/resources/chromium_strings_si.xtb
@@ -249,7 +249,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromium යාවත්කාලීනයක් තිබේ}=1{Chromium යාවත්කාලීනයක් තිබේ}one{දින # ක් තුළ Chromium යාවත්කාලීනයක් ලැබී ඇත}other{දින # ක් තුළ Chromium යාවත්කාලීනයක් ලැබී ඇත}}</translation> <translation id="5643865575100044307">ඔබ Chromium වසා දැමූ විට සැම විටම ඔබේ උපාංගයෙන් අඩවි දත්ත මකන්න</translation> <translation id="5653831366781983928">දැන් Chromium යළි අරඹන්න</translation> -<translation id="5675598751761067447">මෙම ගොනුව අනතුරුදායක විය හැක<ph name="LINE_BREAK" />ඔබ මුරපදය ලබා දෙන්නේ නම් Chromium හට ඔබට මෙම බාගැනීම පරීක්ෂා කළ හැක — ඔබේ මුරපදය ඔබේ උපාංගයෙහි පවතී</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">මෙම භාෂාවෙන් Chromium දර්ශනය කරන්න</translation> <translation id="569897634095159764">අන්තර්ජාලය වෙත සම්බන්ධ වීමට නොහැකි වේ. ප්රොක්සි සේවාදායකයට සත්යාපනය අවශ්යයි.</translation>
diff --git a/chrome/app/resources/chromium_strings_sk.xtb b/chrome/app/resources/chromium_strings_sk.xtb index 1cef8ef..e99d2f4 100644 --- a/chrome/app/resources/chromium_strings_sk.xtb +++ b/chrome/app/resources/chromium_strings_sk.xtb
@@ -246,7 +246,6 @@ <translation id="5623402015214259806">{0,plural, =0{Je k dispozícii aktualizácia prehliadača Chromium}=1{Je k dispozícii aktualizácia prehliadača Chromium}few{Aktualizácia prehliadača Chromium je k dispozícii už # dni}many{Aktualizácia prehliadača Chromium je k dispozícii už # dňa}other{Aktualizácia prehliadača Chromium je k dispozícii už # dní}}</translation> <translation id="5643865575100044307">Pred zavretím prehliadača Chromium vždy odstraňujte dáta webov zo zariadenia</translation> <translation id="5653831366781983928">Reštartujte Chromium</translation> -<translation id="5675598751761067447">Tento súbor môže byť nebezpečný<ph name="LINE_BREAK" />Ak zadáte heslo, Chromium môže tento stiahnutý súbor skontrolovať (vaše heslo zostane v zariadení)</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Zobraziť Chromium v tomto jazyku</translation> <translation id="569897634095159764">Nepodarilo sa pripojiť k internetu. Proxy server vyžaduje overenie.</translation>
diff --git a/chrome/app/resources/chromium_strings_sl.xtb b/chrome/app/resources/chromium_strings_sl.xtb index fdb76753..309312f 100644 --- a/chrome/app/resources/chromium_strings_sl.xtb +++ b/chrome/app/resources/chromium_strings_sl.xtb
@@ -90,6 +90,7 @@ <translation id="2583187216237139145">Podatke v Chromiumu, 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="2592940277904433508">Še naprej uporabljaj Chromium</translation> <translation id="259935314519650377">Prenesenega namestitvenega programa ni bilo mogoče predpomniti. Napaka: <ph name="UNPACK_CACHING_ERROR_CODE" />.</translation> +<translation id="264613044588233783">Chromium se izvaja hitreje, funkcije, ki uporabljajo JavaScript, pa bi morale delovati, kot je predvideno (priporočeno)</translation> <translation id="2648074677641340862">Napaka v operacijskem sistemu med namestitvijo. Znova prenesite Chromium.</translation> <translation id="2661879430930417727">Če napravo souporabljate z drugimi, lahko prijatelji in sorodniki ločeno brskajo ter nastavijo Chromium tako, kot ga želijo.</translation> <translation id="268602741124540128">Pozdravljeni v Chromiumu, <ph name="ACCOUNT_FIRST_NAME" /></translation> @@ -125,6 +126,7 @@ <translation id="3258596308407688501">Chromium ne more brati svojega imenika s podatki ali pisati vanj: <ph name="USER_DATA_DIRECTORY" /></translation> +<translation id="3268051428841342958">V8 je mehanizem za JavaScript in WebAssembly za Chromium, ki se uporablja za izboljšanje učinkovitosti delovanja spletnih mest</translation> <translation id="3283186697780795848">Nameščen je Chromium različice <ph name="PRODUCT_VERSION" /></translation> <translation id="3286538390144397061">Znova zaženi</translation> <translation id="328888136576916638">Manjkajo ključi za Google API. Nekatere funkcije Chromiuma bodo onemogočene.</translation> @@ -218,6 +220,7 @@ <translation id="4814736265800133385">Uporaba Chromiuma brez računa</translation> <translation id="4888717733111232871">Pravilo za dohodni promet za Chromium, ki omogoča promet mDNS.</translation> <translation id="4893347770495441059">Znova zaženite, če želite posodobiti &Chromium</translation> +<translation id="4942295735032723435">Če želite prejemati prihodnje posodobitve Chromiuma, potrebujete macOS 11 ali novejšo različico. V tem računalniku je nameščen macOS 10.15.</translation> <translation id="4943838377383847465">Chromium se izvaja v ozadju.</translation> <translation id="4987820182225656817">Gostje lahko uporabljajo Chromium, ne da bi za seboj pustili kar koli.</translation> <translation id="4994636714258228724">Dodajte se v Chromium</translation> @@ -246,7 +249,6 @@ <translation id="5623402015214259806">{0,plural, =0{Posodobitev za Chromium je na voljo}=1{Posodobitev za Chromium je na voljo}one{Posodobitev za Chromium je na voljo že # dan}two{Posodobitev za Chromium je na voljo že # dneva}few{Posodobitev za Chromium je na voljo že # dni}other{Posodobitev za Chromium je na voljo že # dni}}</translation> <translation id="5643865575100044307">Podatki spletnih mest se vedno izbrišejo iz naprave, ko zaprete Chromium</translation> <translation id="5653831366781983928">Znova zaženite Chromium</translation> -<translation id="5675598751761067447">Ta datoteka je morda nevarna<ph name="LINE_BREAK" />Chromium lahko preveri ta prenos, če navedete geslo – geslo ostane v napravi</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Prikaži Chromium v tem jeziku</translation> <translation id="569897634095159764">Internetne povezave ni mogoče vzpostaviti. Strežnik proxy zahteva preverjanje pristnosti.</translation> @@ -407,6 +409,7 @@ <translation id="8105840573057009683">Chromium potrebuje dovoljenje za lokacijo za to spletno mesto.</translation> <translation id="8133124826068723441">Chromium OS ni mogel sinhronizirati podatkov, ker sinhronizacija ni na voljo za vašo domeno.</translation> <translation id="813913629614996137">Inicializiranje ...</translation> +<translation id="8166782796394721554">Vklopite dodatno zaščito v mehanizmih za JavaScript in WebAssembly za Chromium</translation> <translation id="81770708095080097">Ta datoteka je nevarna, zato jo je Chromium blokiral.</translation> <translation id="8213374284266571500">Chromium je blokiral to datoteko, ker gre za nevarno vrsto datoteke.</translation> <translation id="8248265253516264921">Če slika nima koristnega opisa, ga bo Chromium poskušal zagotoviti. Opisi se ustvarijo tako, da se slike pošljejo Googlu. To lahko kadar koli izklopite v nastavitvah.</translation>
diff --git a/chrome/app/resources/chromium_strings_sq.xtb b/chrome/app/resources/chromium_strings_sq.xtb index ac29972..7f420d9f 100644 --- a/chrome/app/resources/chromium_strings_sq.xtb +++ b/chrome/app/resources/chromium_strings_sq.xtb
@@ -246,7 +246,6 @@ <translation id="5623402015214259806">{0,plural, =0{Ofrohet një përditësim i Chromium}=1{Ofrohet një përditësim i Chromium}other{Një përditësim i Chromium ofrohet prej # ditësh}}</translation> <translation id="5643865575100044307">Fshi gjithmonë të dhënat e sajteve nga pajisja jote kur të mbyllësh Chromium</translation> <translation id="5653831366781983928">Rinise Chromium tani</translation> -<translation id="5675598751761067447">Ky skedar mund të jetë i rrezikshëm<ph name="LINE_BREAK" />Chromium mund ta kontrollojë këtë shkarkim për ty nëse ti jep fjalëkalimin - fjalëkalimi yt qëndron në pajisjen tënde</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Shfaqe Chromium në këtë gjuhë</translation> <translation id="569897634095159764">Lidhja me internetin nuk mund të kryhej. Serveri proxy kërkon vërtetim.</translation>
diff --git a/chrome/app/resources/chromium_strings_sr-Latn.xtb b/chrome/app/resources/chromium_strings_sr-Latn.xtb index db0d7056c..0ef62053 100644 --- a/chrome/app/resources/chromium_strings_sr-Latn.xtb +++ b/chrome/app/resources/chromium_strings_sr-Latn.xtb
@@ -249,7 +249,6 @@ <translation id="5623402015214259806">{0,plural, =0{Ažuriranje za Chromium je dostupno}=1{Ažuriranje za Chromium je dostupno}one{Ažuriranje za Chromium je dostupno već # dan}few{Ažuriranje za Chromium je dostupno već # dana}other{Ažuriranje za Chromium je dostupno već # dana}}</translation> <translation id="5643865575100044307">Uvek izbrišite podatke o sajtovima sa uređaja kada zatvorite Chromium</translation> <translation id="5653831366781983928">Restartujte Chromium</translation> -<translation id="5675598751761067447">Ovaj fajl može da bude opasan<ph name="LINE_BREAK" />Chromium može da proveri ovo preuzimanje umesto vas ako navedete lozinku – lozinka ostaje na uređaju</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Prikazuj Chromium na ovom jeziku</translation> <translation id="569897634095159764">Povezivanje sa internetom nije uspelo. Proksi server zahteva potvrdu identiteta.</translation>
diff --git a/chrome/app/resources/chromium_strings_sr.xtb b/chrome/app/resources/chromium_strings_sr.xtb index 4a68508..eae9fd62 100644 --- a/chrome/app/resources/chromium_strings_sr.xtb +++ b/chrome/app/resources/chromium_strings_sr.xtb
@@ -249,7 +249,6 @@ <translation id="5623402015214259806">{0,plural, =0{Ажурирање за Chromium је доступно}=1{Ажурирање за Chromium је доступно}one{Ажурирање за Chromium је доступно већ # дан}few{Ажурирање за Chromium је доступно већ # дана}other{Ажурирање за Chromium је доступно већ # дана}}</translation> <translation id="5643865575100044307">Увек избришите податке о сајтовима са уређаја када затворите Chromium</translation> <translation id="5653831366781983928">Рестартујте Chromium</translation> -<translation id="5675598751761067447">Овај фајл може да буде опасан<ph name="LINE_BREAK" />Chromium може да провери ово преузимање уместо вас ако наведете лозинку – лозинка остаје на уређају</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Приказуј Chromium на овом језику</translation> <translation id="569897634095159764">Повезивање са интернетом није успело. Прокси сервер захтева потврду идентитета.</translation>
diff --git a/chrome/app/resources/chromium_strings_sv.xtb b/chrome/app/resources/chromium_strings_sv.xtb index df25a51..79b94d9 100644 --- a/chrome/app/resources/chromium_strings_sv.xtb +++ b/chrome/app/resources/chromium_strings_sv.xtb
@@ -246,7 +246,6 @@ <translation id="5623402015214259806">{0,plural, =0{Det finns en uppdatering för Chromium}=1{Det finns en uppdatering för Chromium}other{Det finns en uppdatering för Chromium sedan # dagar}}</translation> <translation id="5643865575100044307">Radera alltid webbplatsdata från enheten när du stänger Chromium</translation> <translation id="5653831366781983928">Starta om Chromium nu</translation> -<translation id="5675598751761067447">Den här filen kan vara farlig<ph name="LINE_BREAK" />Chromium kan kontrollera den här nedladdningen åt dig om du anger lösenordet (lösenordet lämnar inte enheten)</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Visa Chromium på det här språket</translation> <translation id="569897634095159764">Det går inte att ansluta till internet. Proxyservern kräver autentisering.</translation>
diff --git a/chrome/app/resources/chromium_strings_sw.xtb b/chrome/app/resources/chromium_strings_sw.xtb index 6cda0a9..df7bf58 100644 --- a/chrome/app/resources/chromium_strings_sw.xtb +++ b/chrome/app/resources/chromium_strings_sw.xtb
@@ -246,7 +246,6 @@ <translation id="5623402015214259806">{0,plural, =0{Sasisho la Chromium linapatikana}=1{Sasisho la Chromium linapatikana}other{Sasisho la Chromium limekuwepo kwa siku #}}</translation> <translation id="5643865575100044307">Futa data ya tovuti kila wakati kwenye kifaa chako unapofunga Chromium</translation> <translation id="5653831366781983928">Tafadhali zima kisha uwashe Chromium sasa</translation> -<translation id="5675598751761067447">Huenda faili hii ni hatari<ph name="LINE_BREAK" />Chromium inaweza kukukagulia kipakuliwa hiki ikiwa utaweka nenosiri — nenosiri lako hubaki kwenye kifaa chako</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Onyesha Chromium katika lugha hii</translation> <translation id="569897634095159764">Imeshindwa kuunganisha kwenye Intaneti. Seva mbadala inahitaji uthibitishaji.</translation>
diff --git a/chrome/app/resources/chromium_strings_ta.xtb b/chrome/app/resources/chromium_strings_ta.xtb index 1b86b2e..d4f47569 100644 --- a/chrome/app/resources/chromium_strings_ta.xtb +++ b/chrome/app/resources/chromium_strings_ta.xtb
@@ -247,7 +247,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromiumமிற்கான புதுப்பிப்பு உள்ளது}=1{Chromiumமிற்கான புதுப்பிப்பு உள்ளது}other{Chromiumமிற்கான புதுப்பிப்பு வந்து # நாட்களாகிறது}}</translation> <translation id="5643865575100044307">Chromium உலாவியை மூடும்போது எனது சாதனத்தில் உள்ள தளத் தரவை எப்போதும் நீக்கு</translation> <translation id="5653831366781983928">Chromiumமை இப்போது மீண்டும் தொடங்கவும்</translation> -<translation id="5675598751761067447">இந்த ஃபைல் ஆபத்தானதாக இருக்கலாம்<ph name="LINE_BREAK" />நீங்கள் கடவுச்சொல்லை வழங்கினால் Chromium உங்களுக்காக இந்தப் பதிவிறக்கத்தைச் சரிபார்க்கும், அத்துடன் உங்கள் கடவுச்சொல் பகிரப்படாமல் உங்கள் சாதனத்திலேயே இருக்கும்</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Chromiumமை இந்த மொழியில் காட்டு</translation> <translation id="569897634095159764">இணையத்துடன் இணைக்க முடியவில்லை. ப்ராக்ஸி சர்வருக்கு அங்கீகரிப்பு தேவை.</translation>
diff --git a/chrome/app/resources/chromium_strings_te.xtb b/chrome/app/resources/chromium_strings_te.xtb index a38ea52..4e2cbc5 100644 --- a/chrome/app/resources/chromium_strings_te.xtb +++ b/chrome/app/resources/chromium_strings_te.xtb
@@ -245,7 +245,6 @@ <translation id="5623402015214259806">{0,plural, =0{ఒక Chromium అప్డేట్ అందుబాటులో ఉంది}=1{ఒక Chromium అప్డేట్ అందుబాటులో ఉంది}other{ఒక Chromium అప్డేట్ # రోజులుగా అందుబాటులో ఉంది}}</translation> <translation id="5643865575100044307">మీరు Chromiumను మూసివేసినప్పుడల్లా మీ పరికరంలోని సైట్ డేటాను తొలగించండి</translation> <translation id="5653831366781983928">దయచేసి ఇప్పుడు Chromiumను మళ్ళీ ప్రారంభించండి</translation> -<translation id="5675598751761067447">ఈ ఫైల్ ప్రమాదకరమైనది కావచ్చు<ph name="LINE_BREAK" />మీరు పాస్వర్డ్ను అందించినట్లయితే Chromium మీ కోసం ఈ డౌన్లోడ్ను చెక్ చేస్తుంది — మీ పాస్వర్డ్ మీ పరికరంలో అలాగే ఉంటుంది</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Chromiumను ఈ భాషలో ప్రదర్శించు</translation> <translation id="569897634095159764">ఇంటర్నెట్కు కనెక్ట్ చేయడం సాధ్యపడలేదు. ప్రాక్సీ సర్వర్ ప్రామాణీకరణ కోరుతోంది.</translation>
diff --git a/chrome/app/resources/chromium_strings_th.xtb b/chrome/app/resources/chromium_strings_th.xtb index 516e558..ad2db09 100644 --- a/chrome/app/resources/chromium_strings_th.xtb +++ b/chrome/app/resources/chromium_strings_th.xtb
@@ -247,7 +247,6 @@ <translation id="5623402015214259806">{0,plural, =0{มีอัปเดต Chromium พร้อมให้ใช้งาน}=1{มีอัปเดต Chromium พร้อมให้ใช้งาน}other{อัปเดต Chromium พร้อมให้ใช้งานมาแล้ว # วัน}}</translation> <translation id="5643865575100044307">ลบข้อมูลเว็บไซต์จากอุปกรณ์เสมอเมื่อปิด Chromium</translation> <translation id="5653831366781983928">โปรดรีสตาร์ท Chromium ตอนนี้เลย</translation> -<translation id="5675598751761067447">ไฟล์นี้อาจเป็นอันตราย<ph name="LINE_BREAK" />Chromium ตรวจสอบการดาวน์โหลดนี้ให้คุณได้หากคุณให้รหัสผ่าน โดยรหัสผ่านจะอยู่แค่ในอุปกรณ์ของคุณเท่านั้น</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">แสดง Chromium ในภาษานี้</translation> <translation id="569897634095159764">เชื่อมต่อกับอินเทอร์เน็ตไม่ได้ พร็อกซีเซิร์ฟเวอร์ต้องมีการตรวจสอบสิทธิ์</translation>
diff --git a/chrome/app/resources/chromium_strings_tr.xtb b/chrome/app/resources/chromium_strings_tr.xtb index 6627236..d812a3d9 100644 --- a/chrome/app/resources/chromium_strings_tr.xtb +++ b/chrome/app/resources/chromium_strings_tr.xtb
@@ -242,7 +242,6 @@ <translation id="5623402015214259806">{0,plural, =0{Bir Chromium güncellemesi var}=1{Bir Chromium güncellemesi var}other{# gün önce kullanıma sunulmuş bir Chromium güncellemesi var}}</translation> <translation id="5643865575100044307">Chromium'u kapattığımda site verileri her zaman cihazımdan silinsin</translation> <translation id="5653831366781983928">Lütfen Chromium'u şimdi yeniden başlatın</translation> -<translation id="5675598751761067447">Bu dosya tehlikeli olabilir<ph name="LINE_BREAK" />Şifreyi sağlarsanız Chromium, indirme işlemini sizin için kontrol edebilir. Şifreniz cihazınızda kalır</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Chromium'u bu dilde görüntüle</translation> <translation id="569897634095159764">İnternet'e bağlanılamıyor. Proxy sunucu kimlik doğrulama gerektiriyor.</translation>
diff --git a/chrome/app/resources/chromium_strings_uk.xtb b/chrome/app/resources/chromium_strings_uk.xtb index 28646ff7..13bf7f1 100644 --- a/chrome/app/resources/chromium_strings_uk.xtb +++ b/chrome/app/resources/chromium_strings_uk.xtb
@@ -88,6 +88,7 @@ <translation id="2583187216237139145">Будь-які дані Chromium, створені під час використання цього робочого профілю (наприклад, закладки, історію, паролі й інші налаштування), може видалити його адміністратор. <ph name="LEARN_MORE" /></translation> <translation id="2592940277904433508">Продовжити використовувати Chromium</translation> <translation id="259935314519650377">Не вдалося кешувати завантажену програму встановлення. Помилка: <ph name="UNPACK_CACHING_ERROR_CODE" />.</translation> +<translation id="264613044588233783">Chromium виконує завдання швидше, а функції, які використовують JavaScript, мають працювати належним чином (рекомендовано)</translation> <translation id="2648074677641340862">Під час встановлення сталася помилка операційної системи. Завантажте Chromium ще раз.</translation> <translation id="2661879430930417727">Якщо ви користуєтеся пристроєм спільно з друзями та рідними, вони зможуть переглядати веб-сторінки окремо та налаштовувати Chromium на свій смак</translation> <translation id="268602741124540128">Вітаємо в Chromium, <ph name="ACCOUNT_FIRST_NAME" /></translation> @@ -123,6 +124,7 @@ <translation id="3258596308407688501">Chromium не може читати та писати дані у свій каталог даних: <ph name="USER_DATA_DIRECTORY" /></translation> +<translation id="3268051428841342958">V8 – це система JavaScript і WebAssembly для Chromium, яка використовується, щоб покращувати ефективність сайтів.</translation> <translation id="3283186697780795848">Chromium версії <ph name="PRODUCT_VERSION" /> встановлено</translation> <translation id="3286538390144397061">Перезапустити зараз</translation> <translation id="328888136576916638">Ключі API Google відсутні. Деякі функції Chromium буде вимкнено.</translation> @@ -216,6 +218,7 @@ <translation id="4814736265800133385">Використовувати Chromium, не входячи в обліковий запис</translation> <translation id="4888717733111232871">Вхідне правило для Chromium дозволяє трафік mDNS.</translation> <translation id="4893347770495441059">Перезапустити, щоб оновити &Chromium</translation> +<translation id="4942295735032723435">Щоб отримувати майбутні оновлення Chromium, потрібна операційна система macOS 11 або новішої версії. На цьому комп’ютері встановлено macOS 10.15.</translation> <translation id="4943838377383847465">Chromium у фоновому режимі.</translation> <translation id="4987820182225656817">Гості можуть анонімно користуватися Chromium.</translation> <translation id="4994636714258228724">Додати себе в Chromium</translation> @@ -244,7 +247,6 @@ <translation id="5623402015214259806">{0,plural, =0{Доступне оновлення Chromium}=1{Доступне оновлення Chromium}one{Оновлення Chromium доступне вже # день}few{Оновлення Chromium доступне вже # дні}many{Оновлення Chromium доступне вже # днів}other{Оновлення Chromium доступне вже # дня}}</translation> <translation id="5643865575100044307">Завжди видаляти дані сайтів із пристрою, коли ви закриваєте Chromium</translation> <translation id="5653831366781983928">Перезапустіть Chromium</translation> -<translation id="5675598751761067447">Цей файл може бути небезпечним.<ph name="LINE_BREAK" />Chromium перевірить його, якщо ви введете пароль. Інформація про пароль залишиться на вашому пристрої.</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Вибрати цю мову для Chromium</translation> <translation id="569897634095159764">Не вдалося підключитися до Інтернету. Потрібна автентифікація на проксі-сервері.</translation> @@ -405,6 +407,7 @@ <translation id="8105840573057009683">Веб-переглядачу Chromium потрібен дозвіл на доступ до геоданих для цього сайту</translation> <translation id="8133124826068723441">Chromium OS не вдалося синхронізувати ваші дані, оскільки синхронізація для вашого домену недоступна.</translation> <translation id="813913629614996137">Ініціалізація...</translation> +<translation id="8166782796394721554">Увімкніть додатковий захист у системі JavaScript і WebAssembly для Chromium</translation> <translation id="81770708095080097">Цей файл небезпечний, тому Chromium заблокував його.</translation> <translation id="8213374284266571500">Веб-переглядач Chromium заблокував цей файл, оскільки такий тип файлів небезпечний.</translation> <translation id="8248265253516264921">Якщо зображення не має корисного опису, Chromium спробує додати його. Для цього зображення надсилаються в Google. Ви можете будь-коли вимкнути це в налаштуваннях.</translation>
diff --git a/chrome/app/resources/chromium_strings_ur.xtb b/chrome/app/resources/chromium_strings_ur.xtb index 7148207e..63fc832 100644 --- a/chrome/app/resources/chromium_strings_ur.xtb +++ b/chrome/app/resources/chromium_strings_ur.xtb
@@ -249,7 +249,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromium کا اپ ڈیٹ دستیاب ہے}=1{Chromium کا اپ ڈیٹ دستیاب ہے}other{Chromium کا اپ ڈیٹ # دن سے دستیاب ہے}}</translation> <translation id="5643865575100044307">جب آپ Chromium کو بند کرتے ہیں تو ہمیشہ اپنے آلے سے سائٹ کا ڈیٹا حذف کریں</translation> <translation id="5653831366781983928">براہ کرم ابھی Chromium کو ری اسٹارٹ کریں</translation> -<translation id="5675598751761067447">یہ فائل خطرناک ہو سکتی ہے<ph name="LINE_BREAK" />اگر آپ پاس ورڈ فراہم کرتے ہیں تو Chromium آپ کے لیے اس ڈاؤن لوڈ کو چیک کر سکتا ہے — آپ کا پاس ورڈ آپ کے آلے پر رہتا ہے</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Chromium کو اس زبان میں ڈسپلے کریں</translation> <translation id="569897634095159764">انٹرنیٹ سے منسلک ہونے سے قاصر۔ پراکسی سرور کیلئے تصدیق درکار ہے۔</translation>
diff --git a/chrome/app/resources/chromium_strings_uz.xtb b/chrome/app/resources/chromium_strings_uz.xtb index 29cd54e..1890bf2 100644 --- a/chrome/app/resources/chromium_strings_uz.xtb +++ b/chrome/app/resources/chromium_strings_uz.xtb
@@ -245,7 +245,6 @@ <translation id="5623402015214259806">{0,plural, =0{Chromium uchun yangilanish mavjud}=1{Chromium uchun yangilanish mavjud}other{Chromium uchun yangilanish mavjud (# kun)}}</translation> <translation id="5643865575100044307">Chromium yopilganda har doim qurilmadan sayt maʼlumotlarini oʻchirib tashlash</translation> <translation id="5653831366781983928">Chromiumni hozir qayta ishga tushiring</translation> -<translation id="5675598751761067447">Bu fayl xavfli boʻlishi mumkin<ph name="LINE_BREAK" />Parol bilan tasdiqlasangiz, Chromium bu yuklanmani tekshirishi mumkin — parolingiz qurilmada saqlanadi</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Chromium shu tilda ko‘rsatilsin</translation> <translation id="569897634095159764">Internetga ulanmadi. Proksi server autentifikatsiyani talab qiladi.</translation>
diff --git a/chrome/app/resources/chromium_strings_vi.xtb b/chrome/app/resources/chromium_strings_vi.xtb index 58680577..992cdd0 100644 --- a/chrome/app/resources/chromium_strings_vi.xtb +++ b/chrome/app/resources/chromium_strings_vi.xtb
@@ -161,7 +161,7 @@ <translation id="388648406173476553">Tùy chỉnh và kiểm soát Chromium. Bạn cần lưu ý - nhấp để xem thông tin chi tiết.</translation> <translation id="3889543394854987837">Nhấp vào tên của bạn để mở Chromium và bắt đầu duyệt web.</translation> <translation id="390528597099634151"><ph name="EXISTING_USER" /> đã đăng nhập vào hồ sơ này trên Chromium. Để tách biệt hoạt động duyệt web của bạn, Chromium có thể tạo hồ sơ riêng cho bạn.</translation> -<translation id="3909353120217047026">Tiện ích này vi phạm chính sách của Cửa hàng Chrome trực tuyến và có thể không an toàn. Hãy xoá khỏi Chromium để tiện ích này không thể xem và thay đổi dữ liệu của bạn (bao gồm cả thông tin cá nhân) trên các trang web bạn truy cập nữa.</translation> +<translation id="3909353120217047026">Tiện ích này vi phạm chính sách của Chrome Web Store và có thể không an toàn. Hãy xoá khỏi Chromium để tiện ích này không thể xem và thay đổi dữ liệu của bạn (bao gồm cả thông tin cá nhân) trên các trang web bạn truy cập nữa.</translation> <translation id="391789666908693569">Tài khoản của bạn do <ph name="MANAGER_NAME" /> quản lý. Quản trị viên của bạn có thể xem và chỉnh sửa hồ sơ trình duyệt Chromium này cũng như dữ liệu trong đó, chẳng hạn như dấu trang, lịch sử và mật khẩu.</translation> <translation id="3922825997980843979">Khi bạn nhập, Chromium sẽ gửi nội dung trong thanh địa chỉ hoặc hộp tìm kiếm đến công cụ tìm kiếm mặc định</translation> <translation id="3941890832296813527">Lỗi cài đặt: Tên tệp của trình cài đặt không hợp lệ hoặc không được hỗ trợ.</translation> @@ -247,7 +247,6 @@ <translation id="5623402015214259806">{0,plural, =0{Đã có bản cập nhật Chromium}=1{Đã có bản cập nhật Chromium}other{Đã có bản cập nhật Chromium từ # ngày trước}}</translation> <translation id="5643865575100044307">Luôn xoá dữ liệu trang web khỏi thiết bị của bạn khi bạn đóng Chromium</translation> <translation id="5653831366781983928">Vui lòng khởi động lại Chromium ngay bây giờ</translation> -<translation id="5675598751761067447">Tệp này có thể nguy hiểm<ph name="LINE_BREAK" />Chromium có thể giúp bạn kiểm tra tệp đã tải xuống này nếu bạn cung cấp mật khẩu. Mật khẩu của bạn vẫn được lưu trên thiết bị</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">Hiển thị Chromium bằng ngôn ngữ này</translation> <translation id="569897634095159764">Không thể kết nối với Internet. Máy chủ proxy yêu cầu xác thực.</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-CN.xtb b/chrome/app/resources/chromium_strings_zh-CN.xtb index 8212695..aad6467d 100644 --- a/chrome/app/resources/chromium_strings_zh-CN.xtb +++ b/chrome/app/resources/chromium_strings_zh-CN.xtb
@@ -88,6 +88,7 @@ <translation id="2583187216237139145">在使用此工作资料(例如创建书签、历史记录、密码和其他设置)时生成的任何 Chromium 数据都可由工作资料管理员移除。<ph name="LEARN_MORE" /></translation> <translation id="2592940277904433508">继续使用 Chromium</translation> <translation id="259935314519650377">未能缓存所下载的安装程序。错误:<ph name="UNPACK_CACHING_ERROR_CODE" />。</translation> +<translation id="264613044588233783">提高 Chromium 运行速度,让使用 JavaScript 的功能按预期运行(建议)</translation> <translation id="2648074677641340862">安装过程中出现操作系统错误。请重新下载 Chromium。</translation> <translation id="2661879430930417727">如果您是与亲朋好友共用一部设备,他们将能够使用单独的账号进行浏览,并可随心所欲地设置 Chromium</translation> <translation id="268602741124540128">欢迎使用 Chromium,<ph name="ACCOUNT_FIRST_NAME" /></translation> @@ -123,6 +124,7 @@ <translation id="3258596308407688501">Chromium 无法读写其数据目录: <ph name="USER_DATA_DIRECTORY" /></translation> +<translation id="3268051428841342958">V8 是 Chromium 的 JavaScript 和 WebAssembly 引擎,用于提升网站性能</translation> <translation id="3283186697780795848">已安装 Chromium 版本 <ph name="PRODUCT_VERSION" /></translation> <translation id="3286538390144397061">立即重新启动</translation> <translation id="328888136576916638">缺少 Google API 密钥,因此 Chromium 的部分功能将无法使用。</translation> @@ -216,6 +218,7 @@ <translation id="4814736265800133385">在不登录账号的情况下使用 Chromium</translation> <translation id="4888717733111232871">Chromium的入站规则,允许mDNS流量。</translation> <translation id="4893347770495441059">重新启动以更新 Chromium(&C)</translation> +<translation id="4942295735032723435">若要接收后续 Chromium 更新,您需使用 macOS 11 或更高版本。该计算机目前使用的是 macOS 10.15。</translation> <translation id="4943838377383847465">Chromium处于后台运行模式。</translation> <translation id="4987820182225656817">访客使用Chromium不会留下任何痕迹。</translation> <translation id="4994636714258228724">将您自己添加到Chromium</translation> @@ -244,7 +247,6 @@ <translation id="5623402015214259806">{0,plural, =0{有一项可用的 Chromium 更新}=1{有一项可用的 Chromium 更新}other{有一项可用的 Chromium 更新(已发布 # 天)}}</translation> <translation id="5643865575100044307">始终在关闭 Chromium 时删除设备上的网站数据</translation> <translation id="5653831366781983928">请立即重启 Chromium</translation> -<translation id="5675598751761067447">这可能是个危险文件<ph name="LINE_BREAK" />如果您提供了密码(密码会保存在您的设备上),Chromium 可为您检查此下载内容</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">以这种语言显示 Chromium</translation> <translation id="569897634095159764">无法连接到互联网。代理服务器要求进行身份验证。</translation> @@ -404,6 +406,7 @@ <translation id="8105840573057009683">Chromium 需要为此网站授予位置信息权限</translation> <translation id="8133124826068723441">由于您的网域不支持同步,Chromium 操作系统无法同步您的数据。</translation> <translation id="813913629614996137">正在初始化…</translation> +<translation id="8166782796394721554">开启 Chromium 的 JavaScript 和 WebAssembly 引擎额外保护功能</translation> <translation id="81770708095080097">此文件存在危险,因此 Chromium 已将其拦截。</translation> <translation id="8213374284266571500">Chromium 屏蔽了此文件,因为这类文件包含危险内容</translation> <translation id="8248265253516264921">如果图片缺少有用的说明,则 Chromium 会尝试为您提供一条说明。为便于创建说明,系统会将图片发送给 Google。您可以随时在“设置”中关闭此功能。</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-HK.xtb b/chrome/app/resources/chromium_strings_zh-HK.xtb index ad58ad68e..9add738 100644 --- a/chrome/app/resources/chromium_strings_zh-HK.xtb +++ b/chrome/app/resources/chromium_strings_zh-HK.xtb
@@ -90,6 +90,7 @@ <translation id="2583187216237139145">工作設定檔管理員可移除任何在使用此設定檔時產生的 Chromium 資料 (例如建立的書籤、記錄、密碼和其他設定)。<ph name="LEARN_MORE" /></translation> <translation id="2592940277904433508">繼續使用 Chromium</translation> <translation id="259935314519650377">無法快取已下載的安裝程式。錯誤代碼:<ph name="UNPACK_CACHING_ERROR_CODE" />。</translation> +<translation id="264613044588233783">提高 Chromium 執行速度,讓使用 JavaScript 的功能正常運作 (建議)</translation> <translation id="2648074677641340862">安裝期間發生作業系統錯誤,請再次下載 Chromium。</translation> <translation id="2661879430930417727">如果您與親朋好友共用裝置,每人都能各自瀏覽網頁,並按需求設定 Chromium</translation> <translation id="268602741124540128"><ph name="ACCOUNT_FIRST_NAME" />,歡迎使用 Chromium</translation> @@ -125,6 +126,7 @@ <translation id="3258596308407688501">Chromium 無法讀取及寫入數據目錄: <ph name="USER_DATA_DIRECTORY" /></translation> +<translation id="3268051428841342958">V8 是 Chromium 的 JavaScript 和 WebAssembly 引擎,可提升網站效能</translation> <translation id="3283186697780795848">已安裝 Chromium 版本 <ph name="PRODUCT_VERSION" /></translation> <translation id="3286538390144397061">立即重新啟動</translation> <translation id="328888136576916638">缺少 Google API 金鑰,系統將停用 Chromium 的部分功能。</translation> @@ -218,6 +220,7 @@ <translation id="4814736265800133385">在不登入帳戶的情況下使用 Chromium</translation> <translation id="4888717733111232871">允許 mDNS 流量的 Chromium 輸入規則。</translation> <translation id="4893347770495441059">重新啟動以更新 &Chromium</translation> +<translation id="4942295735032723435">如要取得日後的 Chromium 更新,你將需要 macOS 11 或以上版本。此電腦正在使用 macOS 10.15。</translation> <translation id="4943838377383847465">Chromium 正在背景模式中執行。</translation> <translation id="4987820182225656817">以訪客身分使用 Chromium 不會留下任何記錄。</translation> <translation id="4994636714258228724">新增為 Chromium 使用者</translation> @@ -246,7 +249,6 @@ <translation id="5623402015214259806">{0,plural, =0{有可用的 Chromium 更新}=1{有可用的 Chromium 更新}other{Chromium 更新已發佈 # 天}}</translation> <translation id="5643865575100044307">在 Chromium 關閉後一律刪除裝置上的網站資料</translation> <translation id="5653831366781983928">請立即重新啟動 Chromium</translation> -<translation id="5675598751761067447">此檔案可能不安全<ph name="LINE_BREAK" />如果你提供密碼,Chromium 可為你檢查此下載項目,並將密碼保存在裝置上</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">以此語言顯示 Chromium</translation> <translation id="569897634095159764">無法連線至互聯網。Proxy 伺服器需要驗證。</translation> @@ -406,6 +408,7 @@ <translation id="8105840573057009683">Chromium 需要位置存取權,才能執行此網站要求的功能</translation> <translation id="8133124826068723441">您的網域無法使用「同步功能」,因此 Chromium 作業系統無法同步處理您的資料。</translation> <translation id="813913629614996137">正在初始化…</translation> +<translation id="8166782796394721554">開啟 Chromium 的 JavaScript 和 WebAssembly 引擎額外防護</translation> <translation id="81770708095080097">此檔案不安全,因此 Chromium 已封鎖此檔案。</translation> <translation id="8213374284266571500">由於此檔案類型不安全,因此 Chromium 已封鎖此檔案</translation> <translation id="8248265253516264921">如果圖片並無有用的說明,Chromium 會嘗試為您提供說明。因此,圖片將傳送至 Google 以建立說明。您可以隨時在設定中關閉此功能。</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-TW.xtb b/chrome/app/resources/chromium_strings_zh-TW.xtb index a76e446..3bbe103 100644 --- a/chrome/app/resources/chromium_strings_zh-TW.xtb +++ b/chrome/app/resources/chromium_strings_zh-TW.xtb
@@ -88,6 +88,7 @@ <translation id="2583187216237139145">凡是在使用這個資料夾期間產生的 Chromium 資料 (例如建立的書籤、歷史記錄、密碼和其他設定),工作資料夾管理員皆可予以移除。<ph name="LEARN_MORE" /></translation> <translation id="2592940277904433508">繼續使用 Chromium</translation> <translation id="259935314519650377">無法快取下載的安裝程式,錯誤碼:<ph name="UNPACK_CACHING_ERROR_CODE" />。</translation> +<translation id="264613044588233783">提高 Chromium 執行速度,讓使用 JavaScript 的功能正常運作 (建議)</translation> <translation id="2648074677641340862">安裝期間發生作業系統錯誤,請重新下載 Chromium。</translation> <translation id="2661879430930417727">如果你與親朋好友共用裝置,人人皆可享有獨立的瀏覽空間,依照自己的偏好設定 Chromium</translation> <translation id="268602741124540128"><ph name="ACCOUNT_FIRST_NAME" />,歡迎使用 Chromium</translation> @@ -123,6 +124,7 @@ <translation id="3258596308407688501">Chromium 無法讀取及寫入資料目錄: <ph name="USER_DATA_DIRECTORY" /></translation> +<translation id="3268051428841342958">V8 是 Chromium 的 JavaScript 和 WebAssembly 引擎,可提升網站效能</translation> <translation id="3283186697780795848">已安裝 Chromium <ph name="PRODUCT_VERSION" /> 版</translation> <translation id="3286538390144397061">立即重新啟動</translation> <translation id="328888136576916638">缺少 Google API 金鑰,系統將停用 Chromium 的部分功能。</translation> @@ -216,6 +218,7 @@ <translation id="4814736265800133385">不登入帳戶使用 Chromium</translation> <translation id="4888717733111232871">允許 mDNS 流量的 Chromium 輸入規則。</translation> <translation id="4893347770495441059">重新啟動以更新 &Chromium</translation> +<translation id="4942295735032723435">如果之後要更新 Chromium,請使用 macOS 11 以上版本。這部電腦目前的版本為 macOS 10.15。</translation> <translation id="4943838377383847465">Chromium 正在背景模式中執行。</translation> <translation id="4987820182225656817">以訪客身分使用 Chromium 不會留下任何記錄。</translation> <translation id="4994636714258228724">新增為 Chromium 使用者</translation> @@ -244,7 +247,6 @@ <translation id="5623402015214259806">{0,plural, =0{有可用的 Chromium 更新}=1{有可用的 Chromium 更新}other{Chromium 更新已發布 # 天}}</translation> <translation id="5643865575100044307">在 Chromium 關閉後一律刪除裝置上的網站資料</translation> <translation id="5653831366781983928">請立即重新啟動 Chromium</translation> -<translation id="5675598751761067447">這個檔案可能含有危險內容<ph name="LINE_BREAK" />如果你提供密碼,Chromium 可以替你檢查這個下載項目,並將密碼保存在裝置上</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5698481217667032250">將 Chromium 的介面文字設為這種語言</translation> <translation id="569897634095159764">無法連線至網際網路。Proxy 伺服器需要驗證。</translation> @@ -405,6 +407,7 @@ <translation id="8105840573057009683">Chromium 需要位置存取權,才能執行這個網站要求的功能</translation> <translation id="8133124826068723441">你的網域無法使用同步功能,因此 Chromium OS 無法同步處理你的資料。</translation> <translation id="813913629614996137">正在初始化...</translation> +<translation id="8166782796394721554">開啟 Chromium 的 JavaScript 和 WebAssembly 引擎額外防護</translation> <translation id="81770708095080097">這個檔案並不安全,因此遭到 Chromium 封鎖。</translation> <translation id="8213374284266571500">這個類型的檔案有安全疑慮,因此 Chromium 已封鎖這個檔案</translation> <translation id="8248265253516264921">如果圖片缺少有用的說明,Chromium 會嘗試為你提供說明。系統會將圖片傳送給 Google,以便產生說明。你隨時可以在設定中關閉這項功能。</translation>
diff --git a/chrome/app/resources/chromium_strings_zu.xtb b/chrome/app/resources/chromium_strings_zu.xtb index 71a2be1..32118a6 100644 --- a/chrome/app/resources/chromium_strings_zu.xtb +++ b/chrome/app/resources/chromium_strings_zu.xtb
@@ -249,7 +249,6 @@ <translation id="5623402015214259806">{0,plural, =0{Isibuyekezo se-Chromium siyatholakala}=1{Isibuyekezo se-Chromium siyatholakala}one{Isibuyekezo se-Chromium sitholakala ngezinsuku ezingu-#}other{Isibuyekezo se-Chromium sitholakala ngezinsuku ezingu-#}}</translation> <translation id="5643865575100044307">Yisule njalo idatha yesayithi kudivayisi yakho lapho uvala i-Chromium</translation> <translation id="5653831366781983928">Sicela uqalise kabusha i-Chromium manje</translation> -<translation id="5675598751761067447">Leli fayela lingase libe yingozi<ph name="LINE_BREAK" />I-Chromium ingakuhlolela lokhu okudawunilodwayo uma unikeza iphasiwedi — iphasiwedi yakho ihlala kudivayisi yakho</translation> <translation id="5690427481109656848">I-Google LLC</translation> <translation id="5698481217667032250">Veza i-Chromium ngalolu limi</translation> <translation id="569897634095159764">Ayikwazi ukuxhuma ku-inthanethi Iseva elibamba idinga ukufakazela ubuqiniso.</translation>
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb index 952aa4a..eb2d3fa 100644 --- a/chrome/app/resources/generated_resources_af.xtb +++ b/chrome/app/resources/generated_resources_af.xtb
@@ -1130,7 +1130,6 @@ <translation id="1832848789136765277">Verifieer dis jy om seker te maak dat jy altyd toegang tot jou gesinkroniseerde data het</translation> <translation id="1834503245783133039">Aflaai onsuksesvol: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Gradeer Linux op</translation> -<translation id="1835612721186505600">Laat toegang toe vir apps en webwerwe met die kameratoestemming</translation> <translation id="1838374766361614909">Vee soektog uit</translation> <translation id="1839021455997460752">Jou e-posadres</translation> <translation id="1839540115464516994">Wys in <ph name="LOCATION" /></translation> @@ -4584,7 +4583,6 @@ <translation id="4507128560633489176">Data is uitgevee.</translation> <translation id="4507373251891673233">Jy het alle uitbreidings van <ph name="HOST" /> af geblokkeer</translation> <translation id="4507401683427517298">Klik “Voeg kortpad by”</translation> -<translation id="4508150454272293946">Laat apps en webbladsye toe om die kamera(s) te gebruik wat aan hierdie toestel gekoppel is. As jy steeds ’n probleem met jou kamera het, kan jy probeer om die app te herbegin of die webbladsy te herlaai.</translation> <translation id="450867954911715010">Toeganklikheidsinstellings</translation> <translation id="4508765956121923607">Bekyk bron</translation> <translation id="4509277363725254222">Wanneer jy ’n kopie van jou <ph name="BEGIN_BOLD_USERNAME" />gebruikernaam<ph name="END_BOLD_USERNAME" /> en <ph name="BEGIN_BOLD_PASSWORD" />wagwoord<ph name="END_BOLD_PASSWORD" /> deel, kan jou gesinslid dit met Google Wagwoordbestuurder invul.</translation> @@ -8477,7 +8475,6 @@ <translation id="7610337976012700501">Om <ph name="FEATURE_NAME" /> met jou kontakte te gebruik, moet jy die e-posadres wat aan hul Google-rekening gekoppel is, by jou kontakte voeg.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Alle uitbreidings</translation> -<translation id="7612401678989660900">Laat toegang toe vir apps en webwerwe met die mikrofoontoestemming</translation> <translation id="7612497353238585898">Aktiewe werf</translation> <translation id="7612655942094160088">Aktiveer gekoppelde foonkenmerke.</translation> <translation id="7612989789287281429">Meld jou tans aan …</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb index 341d79a..20c5d37 100644 --- a/chrome/app/resources/generated_resources_am.xtb +++ b/chrome/app/resources/generated_resources_am.xtb
@@ -378,6 +378,7 @@ <translation id="1281746473742296584">{NUM_OF_FILES,plural, =1{ፋይልን መክፈት አልተቻለም}one{ፋይልን መክፈት አልተቻለም}other{ፋይሎችን መክፈት አልተቻለም}}</translation> <translation id="1282311502488501110">በመለያ አይግቡ</translation> <translation id="1282465000333679776">የስርዓት ኦዲዮን ያጋሩ</translation> +<translation id="1283126956823499975">መሣሪያውን በማዘጋጀት ላይ የሆነ ስህተት ተከስቷል</translation> <translation id="1284277788676816155">ውሂብ ለማስቀመጥ አይፍቀዱ</translation> <translation id="1285320974508926690">ይህን ጣቢያ በጭራሽ አትተርጉም</translation> <translation id="1285484354230578868">ውሂብ በእርስዎ Google Drive መለያ ላይ ያከማቹ</translation> @@ -1128,7 +1129,6 @@ <translation id="1832848789136765277">የስምረት ውሂብዎን ሁልጊዜ መድረስ መቻልዎን ለማረጋገጥ እርስዎ መሆንዎን ያረጋግጡ</translation> <translation id="1834503245783133039">ማውረድ አልተሳካም፦ <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linuxን ደረጃ አሻሽል</translation> -<translation id="1835612721186505600">በካሜራ ፈቃድ ለመተግበሪያዎች እና ድር ጣቢያዎች መዳረሻን ይፍቀዱ</translation> <translation id="1838374766361614909">ፍለጋን ያፅዱ</translation> <translation id="1839021455997460752">የእርስዎ ኢሜል አድራሻ</translation> <translation id="1839540115464516994"><ph name="LOCATION" /> ውስጥ አሳይ</translation> @@ -4585,7 +4585,6 @@ <translation id="4507128560633489176">ውሂብ ጸድቷል።</translation> <translation id="4507373251891673233">ከ<ph name="HOST" /> ሁሉንም ቅጥያዎች አግደዋል</translation> <translation id="4507401683427517298">«አቋራጭ አክል» ላይ ጠቅ ያድርጉ</translation> -<translation id="4508150454272293946">መተግበሪያዎች እና ድረ-ገጾች ከዚህ መሣሪያ ጋር የተገናኘ(ኙ) ካሜራ(ዎች)ን እንዲጠቀሙ ይፍቀዱ። አሁንም በካሜራዎ ላይ ችግር ካለዎት መተግበሪያውን እንደገና ማስጀመር ወይም ድረ-ገጹን ማደስ ይሞክሩ።</translation> <translation id="450867954911715010">የተደራሽነት ቅንብሮች</translation> <translation id="4508765956121923607">ም&ንጭ አሳይ</translation> <translation id="4509277363725254222">የእርስዎን <ph name="BEGIN_BOLD_USERNAME" />የተጠቃሚ ስም<ph name="END_BOLD_USERNAME" /> እና <ph name="BEGIN_BOLD_PASSWORD" />የይለፍ ቃል<ph name="END_BOLD_PASSWORD" /> ቅጂ ሲያጋሩ የቤተሰብዎ አባል የGoogle የይለፍ ቃል አስተዳዳሪን በመጠቀም መሙላት ይችላሉ።</translation> @@ -5034,6 +5033,7 @@ <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" /> ይመስላል (ነባሪ)</translation> <translation id="4864369630010738180">በመግባት ላይ...</translation> <translation id="4864805589453749318">የትምህርት ቤት መለያ ለማከል ፈቃድ እየሰጠ ያለውን ወላጅ ይምረጡ።</translation> +<translation id="4864905533117889071"><ph name="SENSOR_NAME" /> (ታግዷል)</translation> <translation id="486505726797718946">ማህደረ ትውስታ ተቀምጧል</translation> <translation id="486635084936119914">ካወረዱ በኋላ የተወሰኑ የፋይል አይነቶችን ክፈት</translation> <translation id="4867272607148176509">ወላጆች መተግበሪያዎችን ማጽደቅ ወይም ማገድ፣ የጊዜ ገደቦችን ማቀናበር እና የድር አሰሳን መቆጣጠር ይችላሉ። አብዛኛዎቹን የትምህርት ግብዓቶች ለመድረስ የትምህርት ቤት መለያ በኋላ ላይ መታከል ይችላል።</translation> @@ -5527,6 +5527,7 @@ <translation id="5261619498868361045">የመያዣ ስም ባዶ መሆን አይችልም።</translation> <translation id="5261683757250193089">በድር መደብር ውስጥ ክፈት</translation> <translation id="5261799091118902550">ይህ ፋይል ቫይረስ ወይም ተንኮል አዘል ዌር ሊሆን ይችላል። ደህንነቱ ያልተጠበቀ ከሆነ ለመፈተሽ ለGoogle ሊልኩት ይችላሉ።</translation> +<translation id="5262334727506665688">የይለፍ ቃሎችን በGoogle መለያዎ ውስጥ ማስቀመጥዎን ይቀጥሉ</translation> <translation id="5262784498883614021">ከአውታረ መረብ ጋር በራስ-ሰር ተገናኝ</translation> <translation id="5263656105659419083">በቀላሉ ወደ የጎን ፓነል ለመመለስ፣ ከላይ በቀኝ በኩል ያለውን ፒን ይንኩ።</translation> <translation id="5264148714798105376">ይሄ አንድ ደቂቃ አካባቢ ሊወስድ ይችላል።</translation> @@ -7068,6 +7069,7 @@ <translation id="649396225532207613">ይህ ፋይል የእርስዎን ግላዊ እና ማህበራዊ አውታረ መረብ መለያዎች ሊጎዳ ይችላል</translation> <translation id="6494327278868541139">የበለጸጉ የጥበቃ ዝርዝሮችን አሳይ</translation> <translation id="6494445798847293442">የእውቅና ማረጋገጫ ባለሥልጣን አይደለም</translation> +<translation id="6494483173119160146">መሣሪያው ሊመለስ የማይችል ስህተት አጋጥሞታል። እባክዎ መሣሪያዎን ዳግም ያስጀምሩት (ሁሉንም የተጠቃሚ ውሂብ ይሰርዛል) እና እንደገና ይሞክሩ።</translation> <translation id="6497784818439587832">በማያ ገጽዎ ላይ ያሉ ንጥሎችን ለማሳነስ ወይም ለማተለቅ የማሳያ መጠንን ይቀንሱ</translation> <translation id="6497789971060331894">የመዳፊት ኋሊዮሽ በሽብለላ ላይ</translation> <translation id="6498249116389603658">&ሁሉም የእርስዎ ቋንቋዎች</translation> @@ -8485,7 +8487,6 @@ <translation id="7610337976012700501">ከእነዚህ ዕውቂያዎች ጋር <ph name="FEATURE_NAME" /> ለመጠቀም ከእነሱ Google መለያ ጋር የተገናኘውን የኢሜይል አድራሻ ወደ ዕውቂያዎችዎ ያክሉ።</translation> <translation id="7611713099524036757">Meta</translation> <translation id="7612050744024016345">ሁሉም ቅጥያዎች</translation> -<translation id="7612401678989660900">በማይክሮፎን ፈቃድ ለመተግበሪያዎች እና ድር ጣቢያዎች መዳረሻን ይፍቀዱ</translation> <translation id="7612497353238585898">ገቢር ጣቢያ</translation> <translation id="7612655942094160088">የተገናኙ የስልክ ባህሪዎች ያንቁ።</translation> <translation id="7612989789287281429">እርስዎን በመለያ በማስገባት ላይ…</translation> @@ -9556,6 +9557,7 @@ <translation id="8397825320644530257">የተገናኘ ስልክ ያላቅቁ</translation> <translation id="8398877366907290961">ለማንኛውም ቀጥል</translation> <translation id="8399282673057829204">የይለፍ ቃልን አሳይ</translation> +<translation id="839949601275221554">መሣሪያው ስህተት አጋጥሞታል። እባክዎ መሣሪያዎን ዳግም ያስጀምሩት እና እንደገና ይሞክሩ።</translation> <translation id="8401432541486058167">ከእርስዎ ዘመናዊ ካርድ ጋር የተቆራኘውን ፒን ይስጡ።</translation> <translation id="8401772916834964810">{COUNT,plural, =0{Chrome ዛሬ እንደገና ኩኪዎችን ያግዳል}=1{Chrome ነገ እንደገና ኩኪዎችን ያግዳል}one{Chrome እንደገና ኩኪዎችን እስከሚያግድ ድረስ # ቀን}other{Chrome እንደገና ኩኪዎችን እስከሚያግድ ድረስ # ቀናት}}</translation> <translation id="8403618281196981152">በChrome ውስጥ ያለው የእርስዎ ውሂብ</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb index a16f924..a9ff7cab 100644 --- a/chrome/app/resources/generated_resources_ar.xtb +++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -1103,6 +1103,7 @@ <translation id="1823768272150895732">الخطّ</translation> <translation id="1823781806707127806">إضافة بيانات التصفُّح الحالية إلى الملف الشخصي المُدار</translation> <translation id="18245044880483936">لن يتم احتساب البيانات التي تتضمنها النسخة الاحتياطية ضمنَ حصة التخزين في Drive داخل حسابك الفرعي.</translation> +<translation id="1825073796163165618">تفعيل الروابط</translation> <translation id="1825565032302550710">يجب أن يكون رقم المنفذ بين 1024 و65535.</translation> <translation id="182577151972096764">وصفات الطعام التي تم الاطّلاع عليها مؤخرًا</translation> <translation id="18260074040409954">يمكنك استخدام كلمات المرور المحفوظة على أي جهاز، حيث تُحفظ كلمات المرور هذه في <ph name="GOOGLE_PASSWORD_MANAGER" /> لعنوان البريد الإلكتروني <ph name="EMAIL" />.</translation> @@ -1122,7 +1123,6 @@ <translation id="1832848789136765277">لضمان إمكانية الوصول دائمًا إلى البيانات التي تتم مزامنتها، عليك إثبات هويتك.</translation> <translation id="1834503245783133039">تعذّر التنزيل: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">جارٍ ترقية نظام التشغيل Linux</translation> -<translation id="1835612721186505600">السماح بوصول التطبيقات والمواقع الإلكترونية إلى الكاميرا من خلال منحها إذن استخدام الكاميرا</translation> <translation id="1838374766361614909">محو البحث</translation> <translation id="1839021455997460752">عنوان بريدك الإلكتروني</translation> <translation id="1839540115464516994">العرض في <ph name="LOCATION" /></translation> @@ -1342,6 +1342,7 @@ <translation id="1997616988432401742">شهاداتك</translation> <translation id="1999115740519098545">عند بدء التشغيل</translation> <translation id="2002109485265116295">الوقت الفعلي</translation> +<translation id="2002160221914907025">الذكاء الاصطناعي التجريبي</translation> <translation id="2003130567827682533">لتفعيل بيانات "<ph name="NAME" />"، يمكنك أولاً الاتصال بشبكة Wi-Fi.</translation> <translation id="2004413981947727241">استخدام كلمات المرور على أي جهاز</translation> <translation id="2004697686368036666">قد لا تعمل ميزات بعض المواقع الإلكترونية</translation> @@ -1998,6 +1999,7 @@ <translation id="2482878487686419369">الإشعارات</translation> <translation id="2482895651873876648">تم نقل علامة التبويب إلى المجموعة <ph name="GROUP_NAME" /> والتي تحتوي على <ph name="GROUP_CONTENTS" />.</translation> <translation id="2483627560139625913">ضبط محرك البحث في إعدادات متصفّح Chrome</translation> +<translation id="2483698983806594329">تم تنزيل ملف لم يتم التحقّق منه.</translation> <translation id="2484743711056182585">إزالة إذن الوصول</translation> <translation id="2484909293434545162">سيظهر هنا أي موقع إلكتروني يستخدم ملفات تعريف الارتباط.</translation> <translation id="2484959914739448251">لمحو بيانات التصفُّح من جميع أجهزتك التي تمت مزامنتها ومن حسابك على Google، يُرجى <ph name="BEGIN_LINK" />إدخال عبارة المرور<ph name="END_LINK" />.</translation> @@ -2137,6 +2139,7 @@ <translation id="2589658397149952302">عدم عرض ملفات Drive مطلقًا</translation> <translation id="25899519884572181">الخروج من وضع القارئ</translation> <translation id="2593499352046705383">احرص قبل البدء على الاحتفاظ بنسخة احتياطية من بياناتك. سيؤدي تثبيت نظام التشغيل <ph name="DEVICE_OS" /> إلى استبدال جميع البيانات على محرّك الأقراص الثابتة. تعرّف على مزيد من المعلومات على الرابط g.co/flex/InstallGuide.</translation> +<translation id="2594832159966169099">إدارة أمان V8</translation> <translation id="2594999711683503743">البحث في Google أو كتابة عنوان URL</translation> <translation id="2597073208962000830">تستخدم ميزة "المشاركة عن قرب" تقنية البلوتوث للعثور على الأجهزة القريبة.</translation> <translation id="2598710988533271874">يتوفّر تحديث جديد لمتصفِّح Chrome</translation> @@ -2316,6 +2319,7 @@ <translation id="2730647855013151888">تضمين جميع المعلومات الشخصية</translation> <translation id="2730901670247399077">اقتراحات الرموز التعبيرية</translation> <translation id="273093730430620027">هذه الصفحة تحاول الدخول إلى الكاميرا.</translation> +<translation id="2730956943403103181">المواقع الإلكترونية التي لا يُسمح لها باستخدام مُحسِّن V8</translation> <translation id="2731392572903530958">إعادة ف&تح النافذة المغلقة</translation> <translation id="2731700343119398978">يرجى الانتظار...</translation> <translation id="2731971182069536520">في المرة القادمة التي يتم فيها إعادة تشغيل الجهاز، سيُجري مشرفك تحديثًا لمرة واحدة، ما سيؤدي إلى حذف البيانات المحلية.</translation> @@ -2719,6 +2723,7 @@ <translation id="3025174326431589540">{COUNT,plural, =0{ما مِن كلمات مرور محفوظة.}=1{تم التحقّق من كلمات المرور على موقع إلكتروني واحد ({COUNT}).}two{تم التحقّق من كلمات المرور على تطبيقَين وموقعَين إلكترونيَّين ({COUNT}).}few{تم التحقّق من كلمات المرور على {COUNT} تطبيقات ومواقع إلكترونية.}many{تم التحقّق من كلمات المرور على {COUNT} تطبيقًا وموقعًا إلكترونيًا.}other{تم التحقّق من كلمات المرور على {COUNT} تطبيق وموقع إلكتروني.}}</translation> <translation id="3027296729579831126">تفعيل ميزة "المشاركة عن قرب"</translation> <translation id="3027644380269727216">تستند هذه الاقتراحات إلى نشاطك على المواقع الإلكترونية. هذا الإعداد مفعَّل.</translation> +<translation id="3028445648481691885">تم إلغاء التنزيل.</translation> <translation id="3029276696788198026">إيقاف التحميل المُسبق</translation> <translation id="3029466929721441205">عرض أدوات قلم الشاشة في الرفّ</translation> <translation id="3029808567601324798">الوقت الذي يتم خلاله قفل الشاشة</translation> @@ -2824,6 +2829,7 @@ <translation id="3119948370277171654">ما هو المحتوى/عنوان URL الذي كنت ترسله؟</translation> <translation id="3122464029669770682">وحدة المعالجة المركزية</translation> <translation id="3122496702278727796">إخفاق محاولة إنشاء دليل البيانات</translation> +<translation id="3122810280993140148">تُنشئ الميزة مظاهر مخصّصة بناءً على الموضوع والحالة المزاجية والنمط المرئي واللون الذي تختاره. ولاستخدام هذه الميزة، افتح علامة تبويب جديدة وانقر على الزر "تخصيص Chrome".</translation> <translation id="3122883569442693641">المزيد من التفاصيل</translation> <translation id="3124111068741548686">معالجات المستخدم</translation> <translation id="3124332159330678621">يمكنك تخصيص Chrome لإضفاء مظهر جديد على المتصفِّح.</translation> @@ -2863,6 +2869,7 @@ <translation id="3159978855457658359">تعديل اسم الجهاز</translation> <translation id="3160928651883997588">الإعدادات المفضّلة للشبكة الافتراضية الخاصة (VPN)</translation> <translation id="3161522574479303604">كل اللغات</translation> +<translation id="3162766632262775911">يُسمح دائمًا للمواقع الإلكترونية باستخدام مُحسِّن V8</translation> <translation id="3162853326462195145">حساب المؤسسة التعليمية</translation> <translation id="3162899666601560689">يسمح هذا الإجراء للمواقع الإلكترونية باستخدام ملفات تعريف الارتباط لتحسين تجربة التصفُّح، مثل إبقائك مُسجِّلاً الدخول أو تذكُّر عناصر في سلة التسوق.</translation> <translation id="3163201441334626963">المنتج غير معروف <ph name="PRODUCT_ID" /> من المورّد <ph name="VENDOR_ID" /></translation> @@ -3332,6 +3339,7 @@ <translation id="3547954654003013442">إعدادات الخادم الوكيل</translation> <translation id="3548162552723420559">ضبط لون الشاشة ليتناسب مع البيئة المحيطة</translation> <translation id="354949590254473526">إدخال عنوان URL لطلب بحث مخصص لنظام أسماء النطاقات</translation> +<translation id="3549827561154008969">تم استئناف التنزيل.</translation> <translation id="3550593477037018652">إلغاء الاتصال بشبكة الجوّال</translation> <translation id="3550915441744863158">يتم تحديث Chrome تلقائيًا، وبالتالي يتوفر لديك دومًا أحدث إصدار منه.</translation> <translation id="3551320343578183772">إغلاق علامة التبويب</translation> @@ -3481,6 +3489,7 @@ <translation id="3666196264870170605">ملف الذاكرة الذي يضم بيانات تصحيح الأخطاء لوحدات تحكُّم واجهة الشبكة (NIC) الخاصة بـ Intel WiFi</translation> <translation id="3670113805793654926">أجهزة من أي مورّد</translation> <translation id="3670229581627177274">تفعيل البلوتوث</translation> +<translation id="3670480940339182416">يمكن للمواقع الإلكترونية استخدام مُحسِّن V8</translation> <translation id="3672681487849735243">تم اكتشاف خطأ من المصنع</translation> <translation id="3673097791729989571">يستضيف النطاق <ph name="SAML_DOMAIN" /> عملية تسجيل الدخول.</translation> <translation id="3673622964532248901">ليس مسموحًا لك بالبث على هذا الجهاز.</translation> @@ -4570,7 +4579,6 @@ <translation id="4507128560633489176">تم محو البيانات.</translation> <translation id="4507373251891673233">لقد حظرت جميع الإضافات من الوصول إلى الموقع الإلكتروني <ph name="HOST" />.</translation> <translation id="4507401683427517298">انقر على "إضافة اختصار".</translation> -<translation id="4508150454272293946">يجب السماح للتطبيقات وصفحات الويب باستخدام الكاميرات المتصلة بهذا الجهاز. إذا ظلّت لديك مشكلة في الكاميرا، يُرجى إعادة تشغيل التطبيق أو إعادة تحميل صفحة الويب.</translation> <translation id="450867954911715010">إعدادات إمكانية الدخول</translation> <translation id="4508765956121923607">عرض الم&صدر</translation> <translation id="4509277363725254222">عند مشاركة نسخة من <ph name="BEGIN_BOLD_USERNAME" />اسم المستخدم<ph name="END_BOLD_USERNAME" /> و<ph name="BEGIN_BOLD_PASSWORD" />كلمة المرور<ph name="END_BOLD_PASSWORD" />، يمكن لأحد أفراد عائلتك ملء هذه البيانات باستخدام "مدير كلمات المرور في Google".</translation> @@ -4934,6 +4942,7 @@ <translation id="4800839971935185386">مراجعة التعديلات التي تم إجراؤها على الأسماء والرموز</translation> <translation id="4801448226354548035">إخفاء الحسابات</translation> <translation id="4801512016965057443">السماح بتجوال بيانات الجوال</translation> +<translation id="4803599447809045620">تعطيل الروابط</translation> <translation id="4804311503028830356">انقر على سهم الرجوع للاطّلاع على الخيارات الأخرى.</translation> <translation id="4804818685124855865">إلغاء الربط</translation> <translation id="4804827417948292437">أفوكادو</translation> @@ -5725,6 +5734,7 @@ <translation id="5432223177001837288">لمشاركة الصوت، عليك مشاركة علامة تبويب بدلاً من ذلك.</translation> <translation id="5432872710261597882">يمكنك النقر على رمز الإعجاب إذا أعجبتك هذه الميزة.</translation> <translation id="543338862236136125">تعديل كلمة المرور</translation> +<translation id="5433865420958136693">استخدام ميزة "تسريع الرسومات" عند توفُّرها</translation> <translation id="5434065355175441495">ترميز PKCS #1 RSA</translation> <translation id="5435274640623994081">تفعيل ميزة تسجيل الرمز الصوتي</translation> <translation id="5435779377906857208">السماح دائمًا للنطاق <ph name="HOST" /> بالوصول إلى موقعك الجغرافي</translation> @@ -6462,6 +6472,7 @@ <translation id="6020431688553761150">لا يسمح لك الخادم بالوصول إلى هذا المورد.</translation> <translation id="6021293122504240352">تم إيقاف <ph name="APPS" /> تطبيق نهائيًا</translation> <translation id="6021969570711251331">المضمَّن</translation> +<translation id="602212068530399867">محرك البحث المُستخدَم في شريط العناوين ومشغّل التطبيقات</translation> <translation id="6022526133015258832">فتح في وضع ملء الشاشة</translation> <translation id="6022659036123304283">اجعل Chrome متصفِّحك الدائم.</translation> <translation id="6023643151125006053">تم إقفال هذا الجهاز (الرقم التسلسلي: <ph name="SERIAL_NUMBER" />) من خلال مشرف <ph name="SAML_DOMAIN" />.</translation> @@ -7875,6 +7886,7 @@ <translation id="7131431455372521159">انقطع اتصال كل عِصيّ التأشير.</translation> <translation id="7131896909366247105">جارٍ انتظار تثبيت "<ph name="APP_NAME" />"</translation> <translation id="7134098520442464001">لتصغير النص</translation> +<translation id="7134951043985383439">تم تنزيل ملف خطير.</translation> <translation id="7135729336746831607">هل تريد تفعيل البلوتوث؟</translation> <translation id="7136694880210472378">الضبط كمحرك البحث التلقائي </translation> @@ -8043,6 +8055,7 @@ <translation id="727441411541283857"><ph name="PERCENTAGE" />% - <ph name="TIME" /> حتى الاكتمال</translation> <translation id="727595954130325265">التسوّق الآن</translation> <translation id="7276100255011548441">يحذف Chrome تلقائيًا المواضيع التي يمرّ أكثر من 4 أسابيع على إضافتها إلى قائمة "مواضيع الإعلانات". ومع استمرارك في التصفّح، قد يُضاف موضوع إلى القائمة مجددًا. يمكنك أيضًا حظر المواضيع التي لا تريد أن يشاركها Chrome مع المواقع الإلكترونية. مزيد من المعلومات حول <ph name="BEGIN_LINK" />إدارة الخصوصية في عرض الإعلانات في Chrome<ph name="END_LINK" /></translation> +<translation id="7278164481614262110">إنشاء مظاهر باستخدام الذكاء الاصطناعي (AI)</translation> <translation id="727952162645687754">خطأ في التنزيل</translation> <translation id="7280649757394340890">إعدادات الصوت في ميزة تحويل النص إلى كلام</translation> <translation id="7280877790564589615">تمّ طلب إذن</translation> @@ -8471,7 +8484,6 @@ <translation id="7610337976012700501">لاستخدام ميزة "<ph name="FEATURE_NAME" />" مع جهات الاتصال هذه، أضِف إلى تلك الجهات عنوان البريد الإلكتروني المرتبط بحساب كل منها على Google.</translation> <translation id="7611713099524036757">مفتاح Meta</translation> <translation id="7612050744024016345">جميع الإضافات</translation> -<translation id="7612401678989660900">السماح بوصول التطبيقات والمواقع الإلكترونية إلى الميكروفون من خلال منحها إذن استخدام الميكروفون</translation> <translation id="7612497353238585898">موقع إلكتروني نشط</translation> <translation id="7612655942094160088">تفعيل ميزات الهاتف المرتبطة</translation> <translation id="7612989789287281429">جارٍ تسجيل الدخول…</translation> @@ -8738,6 +8750,7 @@ <ph name="EXTENSION_NAME" /></translation> <translation id="7789963078219276159">تم تغيير خلفية الصفحة الرئيسية إلى <ph name="CATEGORY" />.</translation> +<translation id="7791429245559955092">سيتم تثبيت هذا التطبيق على ملفك الشخصي المستخدَم حاليًا على Chrome.</translation> <translation id="7791436592012979144">التمرير العكسي مفعَّل</translation> <translation id="7791543448312431591">إضافة</translation> <translation id="7792012425874949788">حدث خطأ ما عند تسجيل الدخول</translation> @@ -9133,6 +9146,7 @@ <translation id="8089547136368562137">كلمة المرور محميّة بأفضل التقنيات من Google.</translation> <translation id="8090234456044969073">قراءة قائمة بمواقع الويب التي تتردد عليها بكثرة</translation> <translation id="8090513782447872344">يمكنك الرجوع في أي وقت للاطّلاع مرة أخرى على دليل الخصوصية.</translation> +<translation id="8090579562279016251">يقلِّل هذا الخيار من مستوى الأداء ويعزِّز من مقاومة مُحسِّن V8 للهجمات.</translation> <translation id="8090686009202681725">إنشاء مظهر باستخدام الذكاء الاصطناعي</translation> <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> لا يستجيب.</translation> <translation id="8094536695728193970">مِشمشي</translation> @@ -9179,6 +9193,7 @@ <translation id="8124313775439841391">ONC مُدار</translation> <translation id="8125651784723647184">يدير المشرف ميزة مشاركة كلمات المرور.</translation> <translation id="8129265306888404830">لاستخدام عنوان البريد الإلكتروني التابع لمؤسستك (<ph name="EMAIL_DOMAIN" />)، عليك استخدام ميزة تسجيل المؤسسة. إذا كان هذا الجهاز للاستخدام الشخصي، سجِّل الدخول باستخدام حسابك الشخصي على Google.</translation> +<translation id="8130476996317833777">عدم السماح للمواقع الإلكترونية باستخدام مُحسِّن V8</translation> <translation id="813082847718468539">عرض معلومات الموقع</translation> <translation id="8131740175452115882">التأكيد</translation> <translation id="8133297578569873332">مقبولة - FM</translation> @@ -9563,6 +9578,7 @@ <translation id="8422748173858722634">IMEI</translation> <translation id="8422787418163030046">دُرج الورق غير متوفّر</translation> <translation id="8424250197845498070">حظرت ميزة "الحماية المتقدّمة" هذا الملف.</translation> +<translation id="842501938276307467">تجربة الميزات التي تستخدم الذكاء الاصطناعي التجريبي</translation> <translation id="8425213833346101688">تغيير</translation> <translation id="8425492902634685834">التثبيت على شريط المهام</translation> <translation id="8425768983279799676">يمكنك استخدام رقم تعريفك الشخصي لفتح قفل جهازك.</translation> @@ -9717,6 +9733,7 @@ <ph name="BEGIN_PARAGRAPH2" />لاستخدام <ph name="USER_EMAIL" />، سجِّل الخروج من جهاز <ph name="DEVICE_TYPE" /> أولاً. واختَر "إضافة شخص" في أسفل شاشة تسجيل الدخول.<ph name="END_PARAGRAPH2" /></translation> <translation id="85486688517848470">اضغط على مفتاح البحث باستمرار لتبديل سلوك مفاتيح الصف العلوي</translation> <translation id="8549316893834449916">يجب أن تستخدم حسابك على Google لتسجيل الدخول إلى جهاز Chromebook، وهو الحساب نفسه الذي تستخدمه على Gmail وDrive وYouTube وغيرها من المنتجات.</translation> +<translation id="8550239873869577759">تم تنزيل ملف مُريب.</translation> <translation id="8551388862522347954">التراخيص</translation> <translation id="8551588720239073785">إعدادات التاريخ والوقت</translation> <translation id="8551647092888540776">لا يمكن فتح "<ph name="FILE_NAMES" />" بلا اتصال بالإنترنت</translation> @@ -9772,6 +9789,7 @@ <translation id="8601206103050338563">مصادقة TLS (بروتوكول أمان طبقة النقل) لشبكة الإنترنت العالمية (WWW)</translation> <translation id="8602674530529411098">التطبيقات (إصدار تجريبي)</translation> <translation id="8602851771975208551">أضاف برنامج آخر بجهاز الكمبيوتر تطبيقًا قد يؤدي إلى تغيير طريقة عمل Chrome.</translation> +<translation id="8604513817270995005">تساعدك الميزة في كتابة المحتوى القصير على الويب، مثل المراجعات. ويستند المحتوى المقترَح إلى طلباتك وما تتضمنه صفحة الويب. ولاستخدام هذه الميزة، انقر بزر الماوس الأيمن على مربّع نص.</translation> <translation id="8605428685123651449">ذاكرة SQLite</translation> <translation id="8607171490667464784">عندما يكون الجهاز غير نشط أثناء التشغيل على البطارية</translation> <translation id="8607828412110648570">يُرجى التأكّد من أنّ جهازك الذي يتضمّن بلوتوث في وضع الإقران وأنّه في مكان مجاور. ولا تقرِنه إلا بأجهزة تثق بها. تظهر الأجهزة المقترنة لجميع الحسابات على جهاز Chromebook هذا. <ph name="BEGIN_LINK_LEARN_MORE" />مزيد من المعلومات<ph name="END_LINK_LEARN_MORE" /></translation> @@ -10287,6 +10305,7 @@ <translation id="8985191021574400965">مرحبًا بك في Steam على جهاز Chromebook</translation> <translation id="8985264973231822211">نشط قبل <ph name="DEVICE_LAST_ACTIVATED_TIME" /> يوم</translation> <translation id="8985661493893822002">يُرجى الاتصال بالإنترنت لتسجيل الدخول إلى <ph name="DEVICE_TYPE" />.</translation> +<translation id="8985661571449404298">تم تنزيل ملف غير آمن.</translation> <translation id="8986362086234534611">حذف</translation> <translation id="8986494364107987395">إرسال إحصاءات الاستخدام وتقارير الأعطال إلى Google تلقائيًا</translation> <translation id="8987305927843254629">يمكن لكل مستخدم تخصيص تجربته والحفاظ على خصوصية بياناته.</translation> @@ -10485,6 +10504,7 @@ <translation id="9116366756388192417">يمكنك اختيار موضوع.</translation> <translation id="9116799625073598554">تطبيق تدوين الملاحظات</translation> <translation id="9117030152748022724">إدارة تطبيقاتك</translation> +<translation id="9119587891086680311">تستخدِم هذه الميزات الذكاء الاصطناعي (AI) ولا تزال في مرحلة التطوير المبكر، لذا قد تظهر بعض الأخطاء أحيانًا.</translation> <translation id="9120362425083889527">تعذَّر إكمال التثبيت. يُرجى إعادة المحاولة أو إغلاق هذه النافذة.</translation> <translation id="9120693811286642342"><ph name="BEGIN_PARAGRAPH1" />للحصول على أفضل تجربة، ثبِّت نظام التشغيل <ph name="DEVICE_OS" /> على القرص الداخلي لجهازك. ويمكنك أيضًا تثبيت نظام التشغيل لاحقًا من خلال شاشة تسجيل الدخول.<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />في حال لم تكن مستعدًا لإجراء التثبيت، يمكنك تجربته من خلال تشغيله على محرّك أقراص USB. وسيؤدي هذا الإجراء إلى الإبقاء على نظام التشغيل الحالي وبياناته، ولكن قد تواجهك بعض القيود المتعلقة بمساحة التخزين والأداء.<ph name="END_PARAGRAPH2" /></translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb index 0de60b7..8006400 100644 --- a/chrome/app/resources/generated_resources_as.xtb +++ b/chrome/app/resources/generated_resources_as.xtb
@@ -380,6 +380,7 @@ <translation id="1281746473742296584">{NUM_OF_FILES,plural, =1{ফাইল খুলিব নোৱাৰি}one{ফাইলসমূহ খুলিব নোৱাৰি}other{ফাইলসমূহ খুলিব নোৱাৰি}}</translation> <translation id="1282311502488501110">ছাইন ইন নকৰিব</translation> <translation id="1282465000333679776">ছিষ্টেমৰ অডিঅ’ শ্বেয়াৰ কৰক</translation> +<translation id="1283126956823499975">ডিভাইচটো ছেট আপ কৰোঁতে কিবা ভুল হৈছে</translation> <translation id="1284277788676816155">ডেটা ছেভ কৰিবলৈ অনুমতি নিদিব</translation> <translation id="1285320974508926690">এই ছাইটটো কেতিয়াও অনুবাদ নকৰিব</translation> <translation id="1285484354230578868">আপোনাৰ Google Drive একাউণ্টত ডেটা ষ্ট’ৰ কৰক</translation> @@ -1129,7 +1130,6 @@ <translation id="1832848789136765277">আপোনাৰ ছিংক ডেটা সদায়ে এক্সেছ কৰিব পৰাটো নিশ্চিত কৰিবলৈ, এইগৰাকী আপুনিয়েই বুলি সত্যাপন কৰক</translation> <translation id="1834503245783133039">ডাউনল’ড কৰিবপৰা নগ’ল: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux আপগ্ৰে’ড কৰি থকা হৈছে</translation> -<translation id="1835612721186505600">কেমেৰাৰ অনুমতি থকা এপ্ আৰু ৱেবছাইটৰ বাবে এক্সেছ কৰাৰ অনুমতি দিয়ে</translation> <translation id="1838374766361614909">সন্ধান কৰা বস্তুবোৰ মচক</translation> <translation id="1839021455997460752">আপোনাৰ ইমেইল ঠিকনা</translation> <translation id="1839540115464516994"><ph name="LOCATION" />ত দেখুৱাওক</translation> @@ -4591,7 +4591,6 @@ <translation id="4507128560633489176">ডেটা মচা হ’ল।</translation> <translation id="4507373251891673233">আপুনি <ph name="HOST" />ৰ পৰা আটাইবোৰ এক্সটেনশ্বন অৱৰোধ কৰিছে</translation> <translation id="4507401683427517298">“শ্বৰ্টকাট যোগ দিয়ক”ত ক্লিক কৰক</translation> -<translation id="4508150454272293946">এই ডিভাইচৰ সৈতে সংযোজিত কেমেৰা(বোৰ) ব্যৱহাৰ কৰিবলৈ এপ্ আৰু ৱেবপৃষ্ঠাসমূহক অনুমতি দিয়ক। যদি আপোনাৰ কেমেৰাত এতিয়াও সমস্যাটো পাই আছে, এপ্টো পুনৰাৰম্ভ কৰি বা ৱেবপৃষ্ঠাখন ৰিফ্ৰেশ্ব কৰি চাওক।</translation> <translation id="450867954911715010">সাধ্য সুবিধাৰ ছেটিং</translation> <translation id="4508765956121923607">উ&ৎস চাওক</translation> <translation id="4509277363725254222">যেতিয়া আপুনি আপোনাৰ <ph name="BEGIN_BOLD_USERNAME" />ব্যৱহাৰকাৰীৰ নাম<ph name="END_BOLD_USERNAME" /> আৰু <ph name="BEGIN_BOLD_PASSWORD" />পাছৱৰ্ড<ph name="END_BOLD_PASSWORD" />ৰ এটা প্ৰতিলিপি শ্বেয়াৰ কৰে, আপোনাৰ পৰিয়ালৰ সদস্যই Google Password Manager ব্যৱহাৰ কৰি সেইবোৰ পূৰ কৰিব পাৰে</translation> @@ -5040,6 +5039,7 @@ <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" />ৰ দৰে লাগিছে (ডি’ফল্ট হিচাপে থকা)</translation> <translation id="4864369630010738180">ছাইন ইন কৰি থকা হৈছে…</translation> <translation id="4864805589453749318">এটা বিদ্যালয়ৰ একাউণ্ট যোগ দিয়াৰ অনুমতি দি থকা অভিভাৱকগৰাকীক বাছনি কৰক।</translation> +<translation id="4864905533117889071"><ph name="SENSOR_NAME" /> (অৱৰোধ কৰা হৈছে)</translation> <translation id="486505726797718946">মেম’ৰী ছেভ কৰা হৈছে</translation> <translation id="486635084936119914">ডাউনল’ড কৰাৰ পাছত নিৰ্দিষ্ট ফাইলৰ প্ৰকাৰসমূহ স্বয়ংক্ৰিয়ভাৱে খোলক</translation> <translation id="4867272607148176509">অভিভাৱকসকলে এপ্সমূহৰ অনুমোদন জনাব অথবা অৱৰোধ কৰিব পাৰে, সময়ৰ সীমা ছেট কৰিব পাৰে আৰু ৱেব ব্ৰাউজিং নিয়ন্ত্ৰণ কৰিব পাৰে। বিদ্যালয়ৰ বেছিভাগ সম্পদ এক্সেছ কৰিবলৈ পাছত এটা বিদ্যালয়ৰ একাউণ্ট যোগ দিব পৰা যায়।</translation> @@ -5533,6 +5533,7 @@ <translation id="5261619498868361045">কণ্টেইনাৰৰ নাম খালী থাকিব নোৱাৰে।</translation> <translation id="5261683757250193089">Web Storeত খোলক</translation> <translation id="5261799091118902550">এই ফাইলটো এটা ভাইৰাছ অথবা মালৱেৰ হ’ব পাৰে। ই অসুৰক্ষিত নেকি পৰীক্ষা কৰিবলৈ আপুনি এইটো Googleলৈ পঠিয়াব পাৰে।</translation> +<translation id="5262334727506665688">আপোনাৰ Google একাউণ্টত পাছৱৰ্ড ছেভ কৰি থাকক</translation> <translation id="5262784498883614021">স্বয়ংক্ৰিয়ভাৱে নেটৱৰ্কৰ সৈতে সংযোগ কৰক</translation> <translation id="5263656105659419083">সহজে ছাইডৰ পেনেললৈ উভতি যাবলৈ, সোঁফালে একেবাৰে ওপৰৰ থকা পিন কৰকত ক্লিক কৰক</translation> <translation id="5264148714798105376">এই কাম সম্পূৰ্ণ হ’বলৈ একমিনিটমান লাগিব পাৰে।</translation> @@ -7074,6 +7075,7 @@ <translation id="649396225532207613">এই ফাইলটোৱে আপোনাৰ ব্যক্তিগত আৰু সামাজিক নেটৱৰ্কৰ একাউণ্টসমূহৰ ক্ষতি সাধন কৰিব পাৰে</translation> <translation id="6494327278868541139">বৰ্ধিত সুৰক্ষাৰ সবিশেষ দেখুৱাওক</translation> <translation id="6494445798847293442">কোনো প্ৰমাণপত্ৰ প্ৰদানকাৰী কৰ্তৃপক্ষ নহয়</translation> +<translation id="6494483173119160146">এই ডিভাইচটোত পুনৰুদ্ধাৰ কৰিব নোৱৰা এটা আসোঁৱাহ হৈছে। অনুগ্ৰহ কৰি আপোনাৰ ডিভাইচটো ৰিছেট কৰক (এনে কৰিলে ব্যৱহাৰকাৰীৰ আটাইবোৰ ডেটা মচা যাব) আৰু পুনৰ চেষ্টা কৰক।</translation> <translation id="6497784818439587832">আপোনাৰ স্ক্ৰীনত থকা বস্তুবোৰ সৰু অথবা ডাঙৰ কৰিবলৈ ডিছপ্লে’ৰ আকাৰ সলনি কৰক</translation> <translation id="6497789971060331894">মাউছ ওলোটাকৈ স্ক্র’ল কৰাৰ সুবিধা</translation> <translation id="6498249116389603658">&আপোনাৰ সকলো ভাষা</translation> @@ -8490,7 +8492,6 @@ <translation id="7610337976012700501">এই সম্পৰ্কসমূহৰ সৈতে <ph name="FEATURE_NAME" /> ব্যৱহাৰ কৰিবলৈ, আপোনাৰ সম্পৰ্কসূচীত তেওঁলোকৰ Google একাউণ্টৰ সৈতে লিংক হৈ থকা ইমেইল ঠিকনাটো যোগ দিয়ক।</translation> <translation id="7611713099524036757">মেটা</translation> <translation id="7612050744024016345">আটাইবোৰ এক্সটেনশ্বন</translation> -<translation id="7612401678989660900">মাইক্ৰ’ফ’নৰ অনুমতি থকা এপ্ আৰু ৱেবছাইটৰ বাবে এক্সেছ কৰাৰ অনুমতি দিয়ে</translation> <translation id="7612497353238585898">সক্ৰিয় ছাইট</translation> <translation id="7612655942094160088">সংযুক্ত হৈ থকা ফ’নৰ সুবিধাসমূহ সক্ষম কৰক।</translation> <translation id="7612989789287281429">আপোনাক ছাইন ইন কৰাই থকা হৈছে…</translation> @@ -9555,6 +9556,7 @@ <translation id="8397825320644530257">সংযুক্ত হৈ থকা ফ’নৰ সংযোগ বিচ্ছিন্ন কৰক</translation> <translation id="8398877366907290961">যিকোনো প্ৰকাৰে অব্যাহত ৰাখক</translation> <translation id="8399282673057829204">পাছৱৰ্ড চাওক</translation> +<translation id="839949601275221554">ডিভাইচটোত কিবা আসোঁৱাহ হৈছে। অনুগ্ৰহ কৰি আপোনাৰ ডিভাইচটো ৰিষ্টাৰ্ট কৰক আৰু পুনৰ চেষ্টা কৰক।</translation> <translation id="8401432541486058167">আপোনাৰ স্মাৰ্ট কাৰ্ডখনৰ সৈতে জড়িত পিনটো দিয়ক।</translation> <translation id="8401772916834964810">{COUNT,plural, =0{Chromeএ আজি পুনৰ কুকি অৱৰোধ কৰিব}=1{Chromeএ কাইলৈ পুনৰ কুকি অৱৰোধ কৰিব}one{# দিনত Chromeএ পুনৰ কুকি অৱৰোধ কৰিব}other{# দিনত Chromeএ পুনৰ কুকি অৱৰোধ কৰিব}}</translation> <translation id="8403618281196981152">Chromeত থকা আপোনাৰ ডেটা</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb index 0662708..24264a3 100644 --- a/chrome/app/resources/generated_resources_az.xtb +++ b/chrome/app/resources/generated_resources_az.xtb
@@ -1116,7 +1116,6 @@ <translation id="1832848789136765277">Həmişə sinxronlaşdırılmış datanıza girişinizin olduğuna əmin olmaq üçün kimliyinizi doğrulayın</translation> <translation id="1834503245783133039">Endirmə tamamlandı: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux güncəllənir</translation> -<translation id="1835612721186505600">Kamera icazəsi ilə tətbiqlərə və vebsaytlara girişə icazə verin</translation> <translation id="1838374766361614909">Axtarışı təmizləyin</translation> <translation id="1839021455997460752">E-poçt ünvanınız</translation> <translation id="1839540115464516994">Burada göstərin: <ph name="LOCATION" /></translation> @@ -4575,7 +4574,6 @@ <translation id="4507128560633489176">Data silindi.</translation> <translation id="4507373251891673233"><ph name="HOST" /> domenindən bütün artırmaları bloklamısınız</translation> <translation id="4507401683427517298">"Qısayol əlavə edin" üzərinə klikləyin</translation> -<translation id="4508150454272293946">Tətbiq və veb-səhifələrə bu cihaza qoşulmuş kameradan istifadə icazəsi verin. Kamera problemi davam edərsə, tətbiqi yenidən başladın və ya veb-səhifəni təzələyin.</translation> <translation id="450867954911715010">Əlçatımlılıq ayarları</translation> <translation id="4508765956121923607">Mənbəyə baxın</translation> <translation id="4509277363725254222"><ph name="BEGIN_BOLD_USERNAME" />İstifadəçi adı<ph name="END_BOLD_USERNAME" /> və <ph name="BEGIN_BOLD_PASSWORD" />parolun<ph name="END_BOLD_PASSWORD" /> kopyasını paylaşdıqda ailə meneceri Google Parol Meneceri vasitəsilə onları daxil edə bilər</translation> @@ -8470,7 +8468,6 @@ <translation id="7610337976012700501">Bu kontaktlar ilə <ph name="FEATURE_NAME" /> istifadəsi üçün onların Google Hesabı ilə əlaqəli e-poçt ünvanını kontaktlara əlavə edin.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Bütün artırmalar</translation> -<translation id="7612401678989660900">Mikrofon icazəsi olan tətbiq və vebsaytlar üçün giriş icazəsi verin</translation> <translation id="7612497353238585898">Aktiv sayt</translation> <translation id="7612655942094160088">Qoşulmuş telefon funksiyalarının aktivləşdirilməsi.</translation> <translation id="7612989789287281429">Daxil olursunuz…</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb index abfaf42..d1284917 100644 --- a/chrome/app/resources/generated_resources_be.xtb +++ b/chrome/app/resources/generated_resources_be.xtb
@@ -1123,7 +1123,6 @@ <translation id="1832848789136765277">Каб не страціць доступ да сваіх сінхранізаваных даных, пацвердзіце сваю асобу</translation> <translation id="1834503245783133039">Не ўдалося спампаваць файл "<ph name="FILE_NAME" />"</translation> <translation id="1835261175655098052">Ідзе абнаўленне Linux</translation> -<translation id="1835612721186505600">Даць доступ праграмам і сайтам, якія маюць дазвол выкарыстоўваць камеру</translation> <translation id="1838374766361614909">Ачысціць поле пошуку</translation> <translation id="1839021455997460752">Ваш адрас электроннай пошты</translation> <translation id="1839540115464516994">Паказаць тут: <ph name="LOCATION" /></translation> @@ -4577,7 +4576,6 @@ <translation id="4507128560633489176">Даныя выдалены.</translation> <translation id="4507373251891673233">Вы заблакіравалі ўсім пашырэнням доступ да сайта <ph name="HOST" /></translation> <translation id="4507401683427517298">Націсніце "Дадаць ярлык"</translation> -<translation id="4508150454272293946">Дазвольце праграмам і вэб-старонкам выкарыстоўваць камеру (або камеры), падключаную да гэтай прылады. Калі праблема з камерай не знікла, паспрабуйце перазапусціць праграму або абнавіць вэб-старонку.</translation> <translation id="450867954911715010">Налады спецыяльных магчымасцей</translation> <translation id="4508765956121923607">Паказаць к&рыніцу</translation> <translation id="4509277363725254222">Калі вы абагуліце копію свайго <ph name="BEGIN_BOLD_USERNAME" />імені карыстальніка<ph name="END_BOLD_USERNAME" /> і <ph name="BEGIN_BOLD_PASSWORD" />пароля<ph name="END_BOLD_PASSWORD" />, удзельнікі вашай сямейнай групы змогуць выкарыстоўваць іх з дапамогай Менеджара пароляў Google</translation> @@ -8478,7 +8476,6 @@ <translation id="7610337976012700501">Каб выкарыстоўваць функцыю "<ph name="FEATURE_NAME" />" сумесна з гэтымі карыстальнікамі, дадайце ў кантакты адрасы электроннай пошты, звязаныя з Уліковымі запісамі Google патрэбных карыстальнікаў.</translation> <translation id="7611713099524036757">клавіша Meta</translation> <translation id="7612050744024016345">Усе пашырэнні</translation> -<translation id="7612401678989660900">Даць доступ праграмам і сайтам, якія маюць дазвол выкарыстоўваць мікрафон</translation> <translation id="7612497353238585898">Актыўны сайт</translation> <translation id="7612655942094160088">Уключэнне функцый падключанага тэлефона.</translation> <translation id="7612989789287281429">Выконваецца ўваход…</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb index bf3a8f2b..f458aa7 100644 --- a/chrome/app/resources/generated_resources_bg.xtb +++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -1126,7 +1126,6 @@ <translation id="1832848789136765277">Потвърдете, че сте вие, за да имате постоянен достъп до синхронизираните си данни</translation> <translation id="1834503245783133039">Неуспешно изтегляне: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux се надстройва</translation> -<translation id="1835612721186505600">Разрешаване на достъп за приложенията и уебсайтовете, които имат разрешение за камерата</translation> <translation id="1838374766361614909">Изчистване на търсенето</translation> <translation id="1839021455997460752">Вашият имейл адрес</translation> <translation id="1839540115464516994">Показване в(ъв) <ph name="LOCATION" /></translation> @@ -4581,7 +4580,6 @@ <translation id="4507128560633489176">Данните са изчистени.</translation> <translation id="4507373251891673233">Блокирахте всички разширения от <ph name="HOST" /></translation> <translation id="4507401683427517298">Кликнете върху „Добавяне на пряк път“</translation> -<translation id="4508150454272293946">Разрешете на приложенията и уеб страниците да използват камерите, свързани с това устройство. Ако продължавате да имате проблем с камерата, рестартирайте приложението или опреснете уеб страницата.</translation> <translation id="450867954911715010">Настройки за достъпност</translation> <translation id="4508765956121923607">Преглед на изходн&ия код</translation> <translation id="4509277363725254222">Когато споделите копие на <ph name="BEGIN_BOLD_USERNAME" />потребителското име<ph name="END_BOLD_USERNAME" /> и <ph name="BEGIN_BOLD_PASSWORD" />паролата<ph name="END_BOLD_PASSWORD" /> си, съответният член на семейството ви може да ги използва посредством Google Мениджър на пароли</translation> @@ -8475,7 +8473,6 @@ <translation id="7610337976012700501">За да използвате „<ph name="FEATURE_NAME" />“ с тези контакти, добавете имейл адресите, свързани с профилите им в Google, към контактите си.</translation> <translation id="7611713099524036757">мета</translation> <translation id="7612050744024016345">Всички разширения</translation> -<translation id="7612401678989660900">Разрешаване на достъп за приложенията и уебсайтовете, които имат разрешение за микрофона</translation> <translation id="7612497353238585898">Активен сайт</translation> <translation id="7612655942094160088">Активиране на функциите за свързания телефон.</translation> <translation id="7612989789287281429">Влизате в профила си…</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb index cd3fb55..8892ed65 100644 --- a/chrome/app/resources/generated_resources_bn.xtb +++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -1131,7 +1131,6 @@ <translation id="1832848789136765277">আপনার সিঙ্ক করা ডেটা সবসময় যাতে অ্যাক্সেস করতে পারেন তা নিশ্চিত করতে, নিজের পরিচয় যাচাই করুন</translation> <translation id="1834503245783133039">ডাউনলোড হয়নি: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux আপগ্রেড করা হচ্ছে</translation> -<translation id="1835612721186505600">ক্যামেরা ব্যবহারের অনুমতি রয়েছে এমন অ্যাপ এবং ওয়েবসাইটকে অ্যাক্সেস দিন</translation> <translation id="1838374766361614909">সার্চ সাফ করুন</translation> <translation id="1839021455997460752">আপনার ইমেল আইডি</translation> <translation id="1839540115464516994"><ph name="LOCATION" />-এ দেখুন</translation> @@ -4585,7 +4584,6 @@ <translation id="4507128560633489176">ডেটা মোছা হয়েছে।</translation> <translation id="4507373251891673233"><ph name="HOST" />-এর সব এক্সটেনশন আপনি ব্লক করেছেন</translation> <translation id="4507401683427517298">“শর্টকাট যোগ করুন” বিকল্পে ক্লিক করুন</translation> -<translation id="4508150454272293946">এই ক্যামেরার সাথে কানেক্ট থাকা ক্যামেরা ব্যবহার করার জন্য অ্যাপ ও ওয়েবপেজকে অনুমতি দিন। আপনার এখনও নিজের ক্যামেরা সম্পর্কে সমস্যা থাকলে, অ্যাপটি রিস্টার্ট বা ওয়েবপেজটি রিফ্রেশ করে দেখুন।</translation> <translation id="450867954911715010">অ্যাক্সেসযোগ্যতার সেটিংস</translation> <translation id="4508765956121923607">উ&ৎস দেখুন</translation> <translation id="4509277363725254222">আপনি নিজের <ph name="BEGIN_BOLD_USERNAME" />ইউজারনেম<ph name="END_BOLD_USERNAME" /> ও <ph name="BEGIN_BOLD_PASSWORD" />পাসওয়ার্ড<ph name="END_BOLD_PASSWORD" /> শেয়ার করলে, আপনার পরিবারের সদস্যরা, সেগুলি Google Password Manager ব্যবহার করে পূরণ করতে পারবেন</translation> @@ -8483,7 +8481,6 @@ <translation id="7610337976012700501">এইসব পরিচিতির সাথে <ph name="FEATURE_NAME" /> ফিচারের সুবিধা ব্যবহার করার জন্য, তাদের Google অ্যাকাউন্টের সাথে যুক্ত ইমেল আইডি আপনার পরিচিতিতে যোগ করুন।</translation> <translation id="7611713099524036757">মেটা 'কী'</translation> <translation id="7612050744024016345">সব এক্সটেনশন</translation> -<translation id="7612401678989660900">মাইক্রোফোন ব্যবহারের অনুমতি রয়েছে এমন অ্যাপ ও ওয়েবসাইটকে অ্যাক্সেস দিন</translation> <translation id="7612497353238585898">সাইট চালু আছে</translation> <translation id="7612655942094160088">কানেক্টেড ফোন ফিচার চালু করার বোতাম।</translation> <translation id="7612989789287281429">আপনাকে সাইন-ইন করানো হচ্ছে…</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb index 28ee8e8..4035bbe7 100644 --- a/chrome/app/resources/generated_resources_bs.xtb +++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -1130,7 +1130,6 @@ <translation id="1832848789136765277">Potvrdite svoj identitet da uvijek možete pristupati sinhroniziranim podacima</translation> <translation id="1834503245783133039">Preuzimanje nije uspjelo: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Nadogradnja Linuxa</translation> -<translation id="1835612721186505600">Omogućite pristup za aplikacije i web lokacije koje imaju odobrenje za kameru</translation> <translation id="1838374766361614909">Obriši pretraživanje</translation> <translation id="1839021455997460752">Vaša adresa e-pošte</translation> <translation id="1839540115464516994">Prikaži na lokaciji: <ph name="LOCATION" /></translation> @@ -4593,7 +4592,6 @@ <translation id="4507128560633489176">Podaci su obrisani.</translation> <translation id="4507373251891673233">Blokirali ste sve ekstenzije web lokacije <ph name="HOST" /></translation> <translation id="4507401683427517298">Kliknite na "Dodajte prečicu"</translation> -<translation id="4508150454272293946">Dozvolite aplikacijama i web stranicama da koriste kamere povezane s ovim uređajem. Ako i dalje imate problem s kamerom, pokušajte ponovo pokrenuti aplikaciju ili osvježiti web stranicu.</translation> <translation id="450867954911715010">Postavke pristupačnosti</translation> <translation id="4508765956121923607">Prikaži &izvor</translation> <translation id="4509277363725254222">Kada podijelite kopiju svog <ph name="BEGIN_BOLD_USERNAME" />korisničkog imena<ph name="END_BOLD_USERNAME" /> i <ph name="BEGIN_BOLD_PASSWORD" />lozinke<ph name="END_BOLD_PASSWORD" />, član vaše porodice ih može popuniti pomoću Google upravitelja lozinki</translation> @@ -8495,7 +8493,6 @@ <translation id="7610337976012700501">Da koristite funkciju <ph name="FEATURE_NAME" /> s ovim kontaktima, u svoje kontakte dodajte adrese e-pošte povezane s njihovim Google računima.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Sve ekstenzije</translation> -<translation id="7612401678989660900">Omogućite pristup za aplikacije i web lokacije koje imaju odobrenje za mikrofon</translation> <translation id="7612497353238585898">Aktivna web lokacija</translation> <translation id="7612655942094160088">Omogućavanje funkcija povezanog telefona.</translation> <translation id="7612989789287281429">Prijavljivanje…</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb index 6c68013..97ff23e4 100644 --- a/chrome/app/resources/generated_resources_ca.xtb +++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -377,6 +377,7 @@ <translation id="1281746473742296584">{NUM_OF_FILES,plural, =1{No es pot obrir el fitxer}other{No es poden obrir els fitxers}}</translation> <translation id="1282311502488501110">No iniciïs la sessió</translation> <translation id="1282465000333679776">Comparteix l'àudio del sistema</translation> +<translation id="1283126956823499975">S'ha produït un error en configurar el dispositiu</translation> <translation id="1284277788676816155">No permetis que es desin dades</translation> <translation id="1285320974508926690">No tradueixis mai aquest lloc</translation> <translation id="1285484354230578868">Emmagatzemar les dades al compte de Google Drive</translation> @@ -1120,7 +1121,6 @@ <translation id="1832848789136765277">Per assegurar-te de poder accedir a les dades sincronitzades en qualsevol moment, verifica la teva identitat</translation> <translation id="1834503245783133039">Error en la baixada: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">S'està actualitzant Linux</translation> -<translation id="1835612721186505600">Permet l'accés a aplicacions i llocs web amb el permís d'accés a la càmera</translation> <translation id="1838374766361614909">Esborra la cerca</translation> <translation id="1839021455997460752">La teva adreça electrònica</translation> <translation id="1839540115464516994">Mostra a <ph name="LOCATION" /></translation> @@ -4577,7 +4577,6 @@ <translation id="4507128560633489176">Les dades s'han esborrat.</translation> <translation id="4507373251891673233">Has bloquejat totes les extensions de <ph name="HOST" /></translation> <translation id="4507401683427517298">Fes clic a Afegeix una drecera</translation> -<translation id="4508150454272293946">Permet que les aplicacions i les pàgines web utilitzin les càmeres connectades a aquest dispositiu. Si continues tenint un problema amb la càmera, prova de reiniciar l'aplicació o d'actualitzar la pàgina web.</translation> <translation id="450867954911715010">Configuració d'accessibilitat</translation> <translation id="4508765956121923607">Visualitza l'&origen</translation> <translation id="4509277363725254222">Si comparteixes una còpia del teu <ph name="BEGIN_BOLD_USERNAME" />nom d'usuari<ph name="END_BOLD_USERNAME" /> i de la teva <ph name="BEGIN_BOLD_PASSWORD" />contrasenya<ph name="END_BOLD_PASSWORD" />, el membre de la teva família podrà utilitzar-los per a l'emplenament amb el gestor de contrasenyes de Google.</translation> @@ -5026,6 +5025,7 @@ <translation id="4863769717153320198">Resolució: <ph name="WIDTH" /> x <ph name="HEIGHT" /> (predeterminada)</translation> <translation id="4864369630010738180">S'està iniciant la sessió...</translation> <translation id="4864805589453749318">Selecciona quin dels teus pares concedeix el permís per afegir un compte de centre educatiu.</translation> +<translation id="4864905533117889071"><ph name="SENSOR_NAME" /> (s'ha bloquejat)</translation> <translation id="486505726797718946">Memòria estalviada</translation> <translation id="486635084936119914">Obre alguns tipus de fitxer automàticament després de baixar-los</translation> <translation id="4867272607148176509">Els pares poden aprovar o bloquejar aplicacions, establir límits de temps i controlar la navegació web. Més endavant, es pot afegir un compte de centre educatiu per accedir a la majoria de recursos educatius.</translation> @@ -5520,6 +5520,7 @@ <translation id="5261619498868361045">El nom del contenidor no pot estar buit.</translation> <translation id="5261683757250193089">Obre a Web Store</translation> <translation id="5261799091118902550">Aquest fitxer pot ser un virus o programari maliciós. Pots enviar-lo a Google per comprovar si no és segur.</translation> +<translation id="5262334727506665688">Continua desant les contrasenyes al teu Compte de Google</translation> <translation id="5262784498883614021">Connecta a la xarxa automàticament</translation> <translation id="5263656105659419083">Per tornar fàcilment al tauler lateral, a la part superior dreta, fes clic a Fixa</translation> <translation id="5264148714798105376">Aquesta acció pot tardar més o menys un minut.</translation> @@ -7059,6 +7060,7 @@ <translation id="649396225532207613">Aquest fitxer pot malmetre els teus comptes personals i de xarxes socials</translation> <translation id="6494327278868541139">Mostra els detalls de la protecció millorada</translation> <translation id="6494445798847293442">No és una entitat emissora de certificats</translation> +<translation id="6494483173119160146">El dispositiu ha detectat un error irrecuperable. Restableix el dispositiu (s'esborraran totes les dades d'usuari) i torna-ho a provar.</translation> <translation id="6497784818439587832">Canvia la mida de visualització per ampliar o reduir els elements de la pantalla</translation> <translation id="6497789971060331894">Desplaçament invers del ratolí</translation> <translation id="6498249116389603658">&Tots els vostres idiomes</translation> @@ -8474,7 +8476,6 @@ <translation id="7610337976012700501">Per fer servir <ph name="FEATURE_NAME" /> amb aquests contactes, afegeix les adreces electròniques enllaçades als seus Comptes de Google als teus contactes.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Totes les extensions</translation> -<translation id="7612401678989660900">Permet l'accés a aplicacions i llocs web amb el permís d'accés al micròfon</translation> <translation id="7612497353238585898">Lloc web actiu</translation> <translation id="7612655942094160088">Activa la funció de telèfon connectat.</translation> <translation id="7612989789287281429">S'està iniciant la sessió…</translation> @@ -9541,6 +9542,7 @@ <translation id="8397825320644530257">Desconnecta el telèfon connectat</translation> <translation id="8398877366907290961">Continua igualment</translation> <translation id="8399282673057829204">Mostra la contrasenya</translation> +<translation id="839949601275221554">El dispositiu ha detectat un error. Reinicia'l i torna-ho a provar.</translation> <translation id="8401432541486058167">Proporciona el PIN que està associat a la teva targeta intel·ligent.</translation> <translation id="8401772916834964810">{COUNT,plural, =0{Chrome tornarà a bloquejar les galetes avui}=1{Chrome tornarà a bloquejar les galetes demà}other{# dies perquè Chrome torni a bloquejar les galetes}}</translation> <translation id="8403618281196981152">Les teves dades a Chrome</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb index 6303fd6..8d8af2c 100644 --- a/chrome/app/resources/generated_resources_cs.xtb +++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -379,6 +379,7 @@ <translation id="1281746473742296584">{NUM_OF_FILES,plural, =1{Soubor nelze otevřít}few{Soubory nelze otevřít}many{Soubory nelze otevřít}other{Soubory nelze otevřít}}</translation> <translation id="1282311502488501110">Nepřihlašovat se</translation> <translation id="1282465000333679776">Sdílet systémový zvuk</translation> +<translation id="1283126956823499975">Při nastavování zařízení se něco pokazilo</translation> <translation id="1284277788676816155">Nepovolovat ukládání dat</translation> <translation id="1285320974508926690">Tento web nikdy nepřekládat</translation> <translation id="1285484354230578868">Ukládat údaje v účtu na Disku Google</translation> @@ -1102,6 +1103,7 @@ <translation id="1823768272150895732">Písmo</translation> <translation id="1823781806707127806">Přidat stávající údaje o prohlížení do spravovaného profilu</translation> <translation id="18245044880483936">Zálohovaná data se nezapočítávají do kvóty úložiště na Disku dítěte.</translation> +<translation id="1825073796163165618">Povolit odkazy</translation> <translation id="1825565032302550710">Číslo portu musí být mezi 1024 a 65535</translation> <translation id="182577151972096764">nedávno zobrazené recepty</translation> <translation id="18260074040409954">Uložená hesla můžete používat v libovolném zařízení. Jsou uložená do služby <ph name="GOOGLE_PASSWORD_MANAGER" /> pro účet <ph name="EMAIL" />.</translation> @@ -1121,7 +1123,6 @@ <translation id="1832848789136765277">Aby bylo zajištěno, že budete mít vždy přístup k synchronizovaným datům, ověřte svoji totožnost</translation> <translation id="1834503245783133039">Stažení se nezdařilo: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Upgradování Linuxu</translation> -<translation id="1835612721186505600">Povolit přístup pro aplikace a weby s oprávněním k fotoaparátu</translation> <translation id="1838374766361614909">Vymazat vyhledávání</translation> <translation id="1839021455997460752">E‑mailová adresa</translation> <translation id="1839540115464516994">Zobrazit ve službě <ph name="LOCATION" /></translation> @@ -1340,6 +1341,7 @@ <translation id="1997616988432401742">Vaše certifikáty</translation> <translation id="1999115740519098545">Při spuštění</translation> <translation id="2002109485265116295">V reálném čase</translation> +<translation id="2002160221914907025">Experimentální umělá inteligence</translation> <translation id="2003130567827682533">Chcete-li aktivovat data v síti <ph name="NAME" />, nejprve se připojte k síti Wi-Fi</translation> <translation id="2004413981947727241">Používejte svá hesla na libovolném zařízení</translation> <translation id="2004697686368036666">Některé weby mohou přestat fungovat</translation> @@ -1996,6 +1998,7 @@ <translation id="2482878487686419369">Oznámení</translation> <translation id="2482895651873876648">Karta byla přesunuta do skupiny <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /></translation> <translation id="2483627560139625913">Vyhledávač nastavte v nastavení prohlížeče Chrome</translation> +<translation id="2483698983806594329">Byl stažen neověřený soubor</translation> <translation id="2484743711056182585">Odebrat přístup</translation> <translation id="2484909293434545162">Pokud web využívá soubory cookie, zobrazí se zde</translation> <translation id="2484959914739448251">Chcete-li vymazat údaje o prohlížení ze všech synchronizovaných zařízení i z účtu Google, <ph name="BEGIN_LINK" />zadejte heslovou frázi<ph name="END_LINK" />.</translation> @@ -2135,6 +2138,7 @@ <translation id="2589658397149952302">Soubory na Disku nikdy nezobrazovat</translation> <translation id="25899519884572181">Ukončit režim čtečky</translation> <translation id="2593499352046705383">Před zahájením se ujistěte, zda máte zálohu dat. Při instalaci systému <ph name="DEVICE_OS" /> se pevný disk přepíše. Další informace najdete na stránce g.co/flex/InstallGuide.</translation> +<translation id="2594832159966169099">Spravovat zabezpečení modulu V8</translation> <translation id="2594999711683503743">Vyhledávejte na Googlu nebo zadejte adresu URL</translation> <translation id="2597073208962000830">Sdílení nablízko vyhledává zařízení v okolí přes Bluetooth.</translation> <translation id="2598710988533271874">K dispozici je nový Chrome</translation> @@ -2314,6 +2318,7 @@ <translation id="2730647855013151888">Zahrnout všechny osobní údaje</translation> <translation id="2730901670247399077">Návrhy emodži</translation> <translation id="273093730430620027">Tato stránka používá vaši kameru.</translation> +<translation id="2730956943403103181">Zákaz používat optimalizátor V8</translation> <translation id="2731392572903530958">Znovu ot&evřít zavřené okno</translation> <translation id="2731700343119398978">Čekejte prosím...</translation> <translation id="2731971182069536520">Až příště zařízení restartujete, administrátor provede jednorázovou aktualizaci, která vymaže vaše místní data.</translation> @@ -2717,6 +2722,7 @@ <translation id="3025174326431589540">{COUNT,plural, =0{Nemáte žádná uložená hesla}=1{Byla zkontrolována hesla pro {COUNT} web}few{Byla zkontrolována hesla pro {COUNT} weby nebo aplikace}many{Byla zkontrolována hesla pro {COUNT} webu nebo aplikace}other{Byla zkontrolována hesla pro {COUNT} webů nebo aplikací}}</translation> <translation id="3027296729579831126">Zapnout sdílení nablízko</translation> <translation id="3027644380269727216">Na základě vaší aktivity na webu. Toto nastavení je zapnuté.</translation> +<translation id="3028445648481691885">Stahování bylo zrušeno</translation> <translation id="3029276696788198026">Žádné předběžné načítání</translation> <translation id="3029466929721441205">Zobrazit v poličce nástroje pro dotykové pero</translation> <translation id="3029808567601324798">Doba do uzamknutí</translation> @@ -2822,6 +2828,7 @@ <translation id="3119948370277171654">Jaký obsah / adresu URL jste odesílali?</translation> <translation id="3122464029669770682">CPU</translation> <translation id="3122496702278727796">Nepodařilo se vytvořit datový adresář</translation> +<translation id="3122810280993140148">Vytváří vlastní motivy na základě zvoleného tématu, nálady, vizuálního stylu a barvy. Pokud tuto funkci chcete použít, otevřete novou kartu a klikněte na Přizpůsobit Chrome.</translation> <translation id="3122883569442693641">Další podrobnosti</translation> <translation id="3124111068741548686">Popisovače – UŽIVATEL</translation> <translation id="3124332159330678621">Přizpůsobte si Chrome a dodejte svému prohlížeči nový vzhled</translation> @@ -2861,6 +2868,7 @@ <translation id="3159978855457658359">Úprava názvu zařízení</translation> <translation id="3160928651883997588">Předvolby VPN</translation> <translation id="3161522574479303604">Všechny jazyky</translation> +<translation id="3162766632262775911">Vždy povoleno používat optimalizátor V8</translation> <translation id="3162853326462195145">Školní účet</translation> <translation id="3162899666601560689">Weby mohou používat soubory cookie ke zlepšování prostředí při prohlížení, například si pomocí nich mohou pamatovat vaše přihlášení a položky v nákupním košíku</translation> <translation id="3163201441334626963">Neznámý produkt <ph name="PRODUCT_ID" /> od dodavatele <ph name="VENDOR_ID" /></translation> @@ -3330,6 +3338,7 @@ <translation id="3547954654003013442">Nastavení proxy serveru</translation> <translation id="3548162552723420559">Upravit barvu obrazovky, aby odpovídala prostředí</translation> <translation id="354949590254473526">Zadejte vlastní adresu URL pro dotazy na DNS</translation> +<translation id="3549827561154008969">Bylo obnoveno stahování souboru</translation> <translation id="3550593477037018652">Odpojit mobilní síť</translation> <translation id="3550915441744863158">Chrome se automaticky aktualizuje, abyste měli vždy nejnovější verzi</translation> <translation id="3551320343578183772">Zavřít kartu</translation> @@ -3479,6 +3488,7 @@ <translation id="3666196264870170605">Výpis ladění pro Intel Wi‑Fi NICs</translation> <translation id="3670113805793654926">Zařízení od libovolného dodavatele</translation> <translation id="3670229581627177274">zapněte Bluetooth</translation> +<translation id="3670480940339182416">Weby mohou používat optimalizátor V8</translation> <translation id="3672681487849735243">Byla zjištěna chyba z výroby</translation> <translation id="3673097791729989571">Přihlášení hostuje doména <ph name="SAML_DOMAIN" /></translation> <translation id="3673622964532248901">Do tohoto zařízení nemůžete odesílat.</translation> @@ -4569,7 +4579,6 @@ <translation id="4507128560633489176">Data byla vymazána.</translation> <translation id="4507373251891673233">Zablokovali jste všechna rozšíření ze zdroje <ph name="HOST" /></translation> <translation id="4507401683427517298">Klikněte na Přidat zástupce</translation> -<translation id="4508150454272293946">Povolit aplikacím a webovým stránkám používat kamery připojené k tomuto zařízení. Pokud s kamerou máte stále problém, zkuste aplikaci restartovat nebo obnovit webovou stránku.</translation> <translation id="450867954911715010">Nastavení usnadnění přístupu</translation> <translation id="4508765956121923607">Z&obrazit zdrojový kód</translation> <translation id="4509277363725254222">Když sdílíte kopii svého <ph name="BEGIN_BOLD_USERNAME" />uživatelského jména<ph name="END_BOLD_USERNAME" /> a <ph name="BEGIN_BOLD_PASSWORD" />hesla<ph name="END_BOLD_PASSWORD" />, člen vaší rodiny je může vyplnit pomocí Správce hesel Google</translation> @@ -4933,6 +4942,7 @@ <translation id="4800839971935185386">Zkontrolujte změny ikon a názvů</translation> <translation id="4801448226354548035">Skrýt účty</translation> <translation id="4801512016965057443">Povolit roaming pro mobilní data</translation> +<translation id="4803599447809045620">Zakázat odkazy</translation> <translation id="4804311503028830356">Pokud chcete prozkoumat další možnosti, klikněte na šipku zpět</translation> <translation id="4804818685124855865">Odpojit</translation> <translation id="4804827417948292437">Avokádo</translation> @@ -5017,6 +5027,7 @@ <translation id="4863769717153320198">Vypadá jako <ph name="WIDTH" /> × <ph name="HEIGHT" /> (výchozí)</translation> <translation id="4864369630010738180">Přihlašování...</translation> <translation id="4864805589453749318">Vyberte, který rodič uděluje oprávnění k přidání školního účtu.</translation> +<translation id="4864905533117889071"><ph name="SENSOR_NAME" /> (blokováno)</translation> <translation id="486505726797718946">Úspora paměti</translation> <translation id="486635084936119914">Určité typy souborů po stažení automaticky otevírat</translation> <translation id="4867272607148176509">Rodiče mohou schvalovat nebo blokovat aplikace, nastavovat časové limity a ovládat procházení webu. Později lze přidat školní účet a získat tak přístup k většině školních zdrojů.</translation> @@ -5510,6 +5521,7 @@ <translation id="5261619498868361045">Název kontejneru nesmí být prázdný.</translation> <translation id="5261683757250193089">Otevřít v Internetovém obchodu</translation> <translation id="5261799091118902550">Tento soubor může být vir nebo malware. Můžete ho odeslat do Googlu ke kontrole, zda je bezpečný.</translation> +<translation id="5262334727506665688">Ukládejte hesla do svého účtu Google</translation> <translation id="5262784498883614021">Automatické připojení k síti</translation> <translation id="5263656105659419083">Pokud se chcete snadno vrátit na boční panel, klikněte vpravo nahoře na Připnout</translation> <translation id="5264148714798105376">Tato akce může chvíli trvat.</translation> @@ -5724,6 +5736,7 @@ <translation id="5432223177001837288">Pokud chcete sdílet zvuk, sdílejte místo toho kartu</translation> <translation id="5432872710261597882">Palec nahoru odešle zpětnou vazbu, že se vám toto líbí.</translation> <translation id="543338862236136125">Upravit heslo</translation> +<translation id="5433865420958136693">Používat akceleraci grafiky, pokud je k dispozici</translation> <translation id="5434065355175441495">Šifrování PKCS #1 RSA</translation> <translation id="5435274640623994081">Zapnout protokolování</translation> <translation id="5435779377906857208">Webu <ph name="HOST" /> vždy povolit přístup k poloze</translation> @@ -6458,6 +6471,7 @@ <translation id="6020431688553761150">Server vám neudělil oprávnění k používání tohoto zdroje.</translation> <translation id="6021293122504240352">Následující počet aplikací už není podporován: <ph name="APPS" /></translation> <translation id="6021969570711251331">Prokládání</translation> +<translation id="602212068530399867">Vyhledávač používaný v adresním řádku a spouštěči.</translation> <translation id="6022526133015258832">Otevřít v režimu celé obrazovky</translation> <translation id="6022659036123304283">Přizpůsobte si Chrome</translation> <translation id="6023643151125006053">Toto zařízení (sériové číslo: <ph name="SERIAL_NUMBER" />) uzamkl administrátor domény <ph name="SAML_DOMAIN" />.</translation> @@ -7046,6 +7060,7 @@ <translation id="649396225532207613">Tento soubor může poškodit vaše osobní účty a účty na sociálních sítích</translation> <translation id="6494327278868541139">Zobrazit podrobnosti vylepšené ochrany</translation> <translation id="6494445798847293442">Není certifikační autorita</translation> +<translation id="6494483173119160146">V zařízení došlo k neopravitelné chybě. Resetujte zařízení (vymaže všechna uživatelská data) a zkuste to znovu.</translation> <translation id="6497784818439587832">Změnit velikost zobrazení, aby položky na obrazovce byly menší nebo větší</translation> <translation id="6497789971060331894">Opačné posouvání myší</translation> <translation id="6498249116389603658">&Všechny vaše jazyky</translation> @@ -7867,6 +7882,7 @@ <translation id="7131431455372521159">Všechny trackpointy byly odpojeny</translation> <translation id="7131896909366247105"><ph name="APP_NAME" />, čeká</translation> <translation id="7134098520442464001">Zmenšit text</translation> +<translation id="7134951043985383439">Byl stažen nebezpečný soubor</translation> <translation id="7135729336746831607">Zapnout Bluetooth?</translation> <translation id="7136694880210472378">Nastavit jako výchozí</translation> <translation id="7137771508221868414">Tímto vymažete <ph name="TOTAL_USAGE" /> dat, která uložily weby a nainstalované aplikace</translation> @@ -8034,6 +8050,7 @@ <translation id="727441411541283857"><ph name="PERCENTAGE" /> %, plné nabití za <ph name="TIME" /></translation> <translation id="727595954130325265">Koupit</translation> <translation id="7276100255011548441">Témata, která jsou starší než 4 týdny, Chrome automaticky maže. S dalším procházením se téma v seznamu může opět objevit. Můžete také zablokovat témata, která Chrome s weby nemá sdílet. <ph name="BEGIN_LINK" />Další informace o správě ochrany soukromí v reklamách v Chromu<ph name="END_LINK" /></translation> +<translation id="7278164481614262110">Vytváření motivů pomocí umělé inteligence</translation> <translation id="727952162645687754">Chyba při stahování</translation> <translation id="7280649757394340890">Nastavení hlasu převodu textu na řeč</translation> <translation id="7280877790564589615">Jsou požadována oprávnění</translation> @@ -8462,7 +8479,6 @@ <translation id="7610337976012700501">Pokud s těmito kontakty chcete používat funkci <ph name="FEATURE_NAME" />, přidejte si do kontaktů e‑mailové adresy přidružené k jejich účtům Google.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Všechna rozšíření</translation> -<translation id="7612401678989660900">Povolit přístup pro aplikace a weby s oprávněním k mikrofonu</translation> <translation id="7612497353238585898">Aktivní web</translation> <translation id="7612655942094160088">Aktivace funkcí připojeného telefonu.</translation> <translation id="7612989789287281429">Přihlašování…</translation> @@ -8729,6 +8745,7 @@ <ph name="EXTENSION_NAME" /></translation> <translation id="7789963078219276159">Pozadí úvodní stránky bylo změněno na: <ph name="CATEGORY" />.</translation> +<translation id="7791429245559955092">Tato aplikace bude nainstalována do vašeho aktuálně používaného profilu Chrome</translation> <translation id="7791436592012979144">Opačné posouvání je zapnuté</translation> <translation id="7791543448312431591">Přidat</translation> <translation id="7792012425874949788">Při přihlašování se něco pokazilo</translation> @@ -9124,6 +9141,7 @@ <translation id="8089547136368562137">Je chráněno tím nejlepším od Googlu</translation> <translation id="8090234456044969073">Může číst seznam nejčastěji navštěvovaných webů</translation> <translation id="8090513782447872344">Kdykoli se můžete vrátit zpět a projít si průvodce znovu</translation> +<translation id="8090579562279016251">Snižuje výkon, ale zvyšuje odolnost modulu V8 proti útokům</translation> <translation id="8090686009202681725">Vytvoření motivu pomocí umělé inteligence</translation> <translation id="8093359998839330381">Plugin <ph name="PLUGIN_NAME" /> neodpovídá</translation> <translation id="8094536695728193970">Meruňka</translation> @@ -9170,6 +9188,7 @@ <translation id="8124313775439841391">Spravovaná ONC</translation> <translation id="8125651784723647184">Sdílení hesel spravuje váš administrátor</translation> <translation id="8129265306888404830">Použití e-mailové adresy organizace (<ph name="EMAIL_DOMAIN" />) je podmíněno podnikovou registrací. Pokud je toto zařízení pro osobní použití, přihlaste se pomocí osobního účtu Google.</translation> +<translation id="8130476996317833777">Nepovolovat webům používat optimalizátor V8</translation> <translation id="813082847718468539">Zobrazit informace o stránkách</translation> <translation id="8131740175452115882">Potvrdit</translation> <translation id="8133297578569873332">Přijatelná – FM</translation> @@ -9525,6 +9544,7 @@ <translation id="8397825320644530257">Odpojit připojený telefon</translation> <translation id="8398877366907290961">Přesto pokračovat</translation> <translation id="8399282673057829204">Zobrazit heslo</translation> +<translation id="839949601275221554">V zařízení došlo k chybě. Restartujte zařízení a zkuste to znovu.</translation> <translation id="8401432541486058167">Zadejte kód PIN přidružený k vaší chytré kartě.</translation> <translation id="8401772916834964810">{COUNT,plural, =0{Chrome dnes soubory cookie znovu zablokuje}=1{Zítra začne Chrome soubory cookie opět blokovat}few{Za # dny začne Chrome soubory cookie opět blokovat}many{Za # dne začne Chrome soubory cookie opět blokovat}other{Za # dní začne Chrome soubory cookie opět blokovat}}</translation> <translation id="8403618281196981152">Vaše data v Chromu</translation> @@ -9553,6 +9573,7 @@ <translation id="8422748173858722634">IMEI</translation> <translation id="8422787418163030046">Chybí zásobník</translation> <translation id="8424250197845498070">Zablokováno pokročilou ochranou</translation> +<translation id="842501938276307467">Vyzkoušejte experimentální funkce založené na umělé inteligenci</translation> <translation id="8425213833346101688">Změnit</translation> <translation id="8425492902634685834">Připnout na hlavní panel</translation> <translation id="8425768983279799676">Pomocí kódu PIN můžete odemknout zařízení.</translation> @@ -9707,6 +9728,7 @@ <ph name="BEGIN_PARAGRAPH2" />Pokud chcete použít účet <ph name="USER_EMAIL" />, nejdříve se ze zařízení <ph name="DEVICE_TYPE" />odhlaste. Poté v dolní části přihlašovací obrazovky vyberte Přidat osobu.<ph name="END_PARAGRAPH2" /></translation> <translation id="85486688517848470">Podržením vyhledávacího tlačítka přepnete chování tlačítek v horním řádku</translation> <translation id="8549316893834449916">K přihlašování do Chromebooku budete používat účet Google – ten samý, který používáte pro Gmail, Disk, YouTube a další služby.</translation> +<translation id="8550239873869577759">Byl stažen podezřelý soubor</translation> <translation id="8551388862522347954">Licence</translation> <translation id="8551588720239073785">Nastavení data a času</translation> <translation id="8551647092888540776">Soubory <ph name="FILE_NAMES" /> nelze otevřít offline</translation> @@ -9762,6 +9784,7 @@ <translation id="8601206103050338563">Ověření TLS webového klienta</translation> <translation id="8602674530529411098">Aplikace (beta)</translation> <translation id="8602851771975208551">Jiný program ve vašem počítači nainstaloval aplikaci, která může měnit funkce Chromu.</translation> +<translation id="8604513817270995005">Pomůže vám napsat krátký obsah pro různé věci na webu, jako jsou recenze. Navrhovaný obsah vychází z vašich pokynů a z obsahu webové stránky. Pokud tuto funkci chcete použít, klikněte pravým tlačítkem na textové pole.</translation> <translation id="8605428685123651449">Paměť SQLite</translation> <translation id="8607171490667464784">Při nečinnosti a napájení z baterie</translation> <translation id="8607828412110648570">Zařízení Bluetooth musí být v režimu párování a poblíž. Zařízení párujte pouze se zařízeními, kterým důvěřujete. Spárovaná zařízení jsou viditelná pro všechny účty v tomto Chromebooku. <ph name="BEGIN_LINK_LEARN_MORE" />Další informace<ph name="END_LINK_LEARN_MORE" /></translation> @@ -10274,6 +10297,7 @@ <translation id="8985191021574400965">Vítá vás Steam pro Chromebooky</translation> <translation id="8985264973231822211">Aktivní před <ph name="DEVICE_LAST_ACTIVATED_TIME" /> dny</translation> <translation id="8985661493893822002">Pokud se do zařízení <ph name="DEVICE_TYPE" /> chcete přihlásit, připojte se k internetu.</translation> +<translation id="8985661571449404298">Byl stažen nezabezpečený soubor</translation> <translation id="8986362086234534611">Odstranit</translation> <translation id="8986494364107987395">Automaticky posílat společnosti Google statistiky používání a zprávy o selhání</translation> <translation id="8987305927843254629">Každý uživatel si může své prostředí přizpůsobit a chránit soukromí svých dat.</translation> @@ -10472,6 +10496,7 @@ <translation id="9116366756388192417">Vybrat předmět</translation> <translation id="9116799625073598554">Aplikace na psaní poznámek</translation> <translation id="9117030152748022724">Správa aplikací</translation> +<translation id="9119587891086680311">Tyto funkce využívají umělou inteligenci, jsou v rané fázi vývoje a nebudou vždy fungovat správně.</translation> <translation id="9120362425083889527">Instalaci se nepodařilo dokončit. Zkuste to znovu nebo toto okno zavřete</translation> <translation id="9120693811286642342"><ph name="BEGIN_PARAGRAPH1" />Nejlepších výsledků dosáhnete, když systém <ph name="DEVICE_OS" /> nainstalujete na interní disk. Můžete ho také nainstalovat později z přihlašovací obrazovky.<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />Pokud na instalaci nejste připraveni, můžete ho za účelem vyzkoušení spustit z USB. Váš existující operační systém a data zůstanou zachovány, ale úložiště a výkon mohou být omezeny.<ph name="END_PARAGRAPH2" /></translation>
diff --git a/chrome/app/resources/generated_resources_cy.xtb b/chrome/app/resources/generated_resources_cy.xtb index aa87ca5..d2c70206 100644 --- a/chrome/app/resources/generated_resources_cy.xtb +++ b/chrome/app/resources/generated_resources_cy.xtb
@@ -1133,7 +1133,6 @@ <translation id="1832848789136765277">I wneud yn siŵr eich bod bob amser yn gallu cael mynediad at eich data cysoni, cadarnhewch mai chi sydd yno</translation> <translation id="1834503245783133039">Heb lwyddo i lawrlwytho: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Wrthi'n uwchraddio Linux</translation> -<translation id="1835612721186505600">Caniatáu mynediad ar gyfer apiau a gwefannau gyda'r caniatâd camera</translation> <translation id="1838374766361614909">Clirio'r blwch chwilio</translation> <translation id="1839021455997460752">Eich cyfeiriad e-bost</translation> <translation id="1839540115464516994">Dangos yn <ph name="LOCATION" /></translation> @@ -4587,7 +4586,6 @@ <translation id="4507128560633489176">Cliriwyd data.</translation> <translation id="4507373251891673233">Rydych wedi rhwystro pob estyniad rhag <ph name="HOST" /></translation> <translation id="4507401683427517298">Cliciwch 'Ychwanegu llwybr byr'</translation> -<translation id="4508150454272293946">Caniatáu i apiau a gwefannau ddefnyddio'r camera/camerâu sy'n gysylltiedig i'r ddyfais hon. Os ydych yn dal i gael problem gyda'ch camera, rhowch gynnig ar ailddechrau'r ap neu ail-lwytho'r dudalen gwe.</translation> <translation id="450867954911715010">Gosodiadau hygyrchedd</translation> <translation id="4508765956121923607">Gweld y Ff&ynhonnell</translation> <translation id="4509277363725254222">Pan fyddwch yn rhannu copi o'ch <ph name="BEGIN_BOLD_USERNAME" />enw defnyddiwr<ph name="END_BOLD_USERNAME" /> a'ch <ph name="BEGIN_BOLD_PASSWORD" />cyfrinair<ph name="END_BOLD_PASSWORD" />, gall aelod o'ch teulu eu llenwi gan ddefnyddio'r Rheolwr Cyfrineiriau Google</translation> @@ -8487,7 +8485,6 @@ <translation id="7610337976012700501">I ddefnyddio <ph name="FEATURE_NAME" /> gyda'r cysylltiadau hyn, ychwanegwch y cyfeiriad e-bost sy'n gysylltiedig â'u Cyfrif Google at eich cysylltiadau.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Pob Estyniad</translation> -<translation id="7612401678989660900">Caniatáu mynediad ar gyfer apiau a gwefannau gyda'r caniatâd meicroffon</translation> <translation id="7612497353238585898">Gwefan weithredol</translation> <translation id="7612655942094160088">Galluogi nodweddion ffôn cysylltiedig.</translation> <translation id="7612989789287281429">Wrthi'n mewngofnodi…</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb index 8bf797b..b2dd570 100644 --- a/chrome/app/resources/generated_resources_da.xtb +++ b/chrome/app/resources/generated_resources_da.xtb
@@ -1131,7 +1131,6 @@ <translation id="1832848789136765277">Verificer din identitet for at sikre, at du altid har adgang til dine synkroniserede data</translation> <translation id="1834503245783133039">Downloaden blev ikke fuldført: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Opgraderer Linux</translation> -<translation id="1835612721186505600">Brug kameratilladelsen til at give apps og websites adgang</translation> <translation id="1838374766361614909">Ryd søgning</translation> <translation id="1839021455997460752">Din mailadresse</translation> <translation id="1839540115464516994">Vis i <ph name="LOCATION" /></translation> @@ -4585,7 +4584,6 @@ <translation id="4507128560633489176">Dataene er ryddet.</translation> <translation id="4507373251891673233">Du har blokeret alle udvidelser fra <ph name="HOST" /></translation> <translation id="4507401683427517298">Klik på "Tilføj genvej"</translation> -<translation id="4508150454272293946">Tillad, at apps og websider anvender de kameraer, der er knyttet til denne enhed. Hvis du stadig har problemer med dit kamera, kan du prøve at genstarte appen eller opdatere websiden.</translation> <translation id="450867954911715010">Indstillinger for hjælpefunktioner</translation> <translation id="4508765956121923607">Vis k&ilde</translation> <translation id="4509277363725254222">Når du deler en kopi af dit <ph name="BEGIN_BOLD_USERNAME" />brugernavn<ph name="END_BOLD_USERNAME" /> og din <ph name="BEGIN_BOLD_PASSWORD" />adgangskode<ph name="END_BOLD_PASSWORD" />, kan dine familiemedlemmer udfylde dem ved hjælp af Google Adgangskodeadministrator</translation> @@ -8480,7 +8478,6 @@ <translation id="7610337976012700501">Hvis du vil bruge <ph name="FEATURE_NAME" /> med disse kontakter, skal du føje de mailadresser, der er tilknyttet de pågældende Google-konti, til dine kontakter.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Alle udvidelser</translation> -<translation id="7612401678989660900">Brug mikrofontilladelsen til at give apps og websites adgang</translation> <translation id="7612497353238585898">Aktivt website</translation> <translation id="7612655942094160088">Aktivering af tilknyttede telefonfunktioner.</translation> <translation id="7612989789287281429">Logger dig ind…</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb index 9d71fda7..4e7f768 100644 --- a/chrome/app/resources/generated_resources_de.xtb +++ b/chrome/app/resources/generated_resources_de.xtb
@@ -1118,7 +1118,6 @@ <translation id="1832848789136765277">Bestätige deine Identität, damit du jederzeit auf deine synchronisierten Daten zugreifen kannst</translation> <translation id="1834503245783133039">Download fehlgeschlagen: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux wird aktualisiert</translation> -<translation id="1835612721186505600">Zugriff für Apps und Websites mit der Kameraberechtigung erlauben</translation> <translation id="1838374766361614909">Suche löschen</translation> <translation id="1839021455997460752">Deine E-Mail-Adresse</translation> <translation id="1839540115464516994">In <ph name="LOCATION" /> anzeigen</translation> @@ -4576,7 +4575,6 @@ <translation id="4507128560633489176">Daten gelöscht.</translation> <translation id="4507373251891673233">Du hast alle Erweiterungen von <ph name="HOST" /> blockiert</translation> <translation id="4507401683427517298">Klicke auf „Verknüpfung hinzufügen“</translation> -<translation id="4508150454272293946">Apps und Webseiten dürfen die mit diesem Gerät verbundenen Kameras verwenden. Wenn weiterhin Probleme mit der Kamera auftreten, starte die App neu oder aktualisiere die Webseite.</translation> <translation id="450867954911715010">Einstellungen für Bedienungshilfen</translation> <translation id="4508765956121923607">Q&uelle anzeigen</translation> <translation id="4509277363725254222">Wenn du eine Kopie deines <ph name="BEGIN_BOLD_USERNAME" />Nutzernamens<ph name="END_BOLD_USERNAME" /> und deines <ph name="BEGIN_BOLD_PASSWORD" />Passworts<ph name="END_BOLD_PASSWORD" /> teilst, kann dein Familienmitglied diese Angaben mit dem Google Passwortmanager eintragen</translation> @@ -8474,7 +8472,6 @@ <translation id="7610337976012700501">Wenn du <ph name="FEATURE_NAME" /> mit diesen Kontakten verwenden möchtest, musst du deinen Kontakten die mit ihren Google-Konten verknüpften E‑Mail-Adressen hinzufügen.</translation> <translation id="7611713099524036757">Meta</translation> <translation id="7612050744024016345">Alle Erweiterungen</translation> -<translation id="7612401678989660900">Zugriff für Apps und Websites mit der Mikrofonberechtigung erlauben</translation> <translation id="7612497353238585898">Aktive Website</translation> <translation id="7612655942094160088">Funktionen für verbundenes Smartphone aktivieren.</translation> <translation id="7612989789287281429">Du wirst angemeldet…</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb index ab74f439..77aa71d 100644 --- a/chrome/app/resources/generated_resources_el.xtb +++ b/chrome/app/resources/generated_resources_el.xtb
@@ -1130,7 +1130,6 @@ <translation id="1832848789136765277">Για να βεβαιωθείτε ότι έχετε πάντα πρόσβαση στα δεδομένα συγχρονισμού σας, επαληθεύστε την ταυτότητά σας.</translation> <translation id="1834503245783133039">Ανεπιτυχής λήψη: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Αναβάθμιση Linux</translation> -<translation id="1835612721186505600">Να επιτρέπεται η πρόσβαση για εφαρμογές και ιστοτόπους με άδεια κάμερας</translation> <translation id="1838374766361614909">Διαγραφή αναζητήσεων</translation> <translation id="1839021455997460752">Η διεύθυνση ηλεκτρονικού ταχυδρομείου σας</translation> <translation id="1839540115464516994">Εμφάνιση σε <ph name="LOCATION" /></translation> @@ -4584,7 +4583,6 @@ <translation id="4507128560633489176">Τα δεδομένα διαγράφηκαν.</translation> <translation id="4507373251891673233">Αποκλείσατε όλες τις επεκτάσεις από τον ιστότοπο <ph name="HOST" /></translation> <translation id="4507401683427517298">Κάντε κλικ στην Προσθήκη συντόμευσης</translation> -<translation id="4508150454272293946">Να επιτρέπεται στις εφαρμογές και στις ιστοσελίδες να χρησιμοποιούν τις κάμερες που είναι συνδεδεμένες σε αυτήν τη συσκευή. Εάν εξακολουθείτε να αντιμετωπίζετε πρόβλημα με την κάμερά σας, δοκιμάστε να επανεκκινήσετε την εφαρμογή ή ανανεώστε την ιστοσελίδα.</translation> <translation id="450867954911715010">Ρυθμίσεις προσβασιμότητας</translation> <translation id="4508765956121923607">Προβολή Πηγαίου Κώ&δικα</translation> <translation id="4509277363725254222">Όταν κοινοποιείτε ένα αντίγραφο του <ph name="BEGIN_BOLD_USERNAME" />ονόματος χρήστη<ph name="END_BOLD_USERNAME" /> και του <ph name="BEGIN_BOLD_PASSWORD" />κωδικού πρόσβασης<ph name="END_BOLD_PASSWORD" />, το μέλος της οικογένειάς σας μπορεί να τα συμπληρώσει χρησιμοποιώντας τον Διαχειριστή κωδικών πρόσβασης Google.</translation> @@ -8478,7 +8476,6 @@ <translation id="7610337976012700501">Για χρήση της λειτουργίας <ph name="FEATURE_NAME" /> με αυτές τις επαφές, προσθέστε στις επαφές σας τη διεύθυνση ηλεκτρονικού ταχυδρομείου που είναι συνδεδεμένη με τον Λογαριασμό Google αυτών των ατόμων.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Όλες οι επεκτάσεις</translation> -<translation id="7612401678989660900">Να επιτρέπεται η πρόσβαση για εφαρμογές και ιστοτόπους με άδεια μικροφώνου</translation> <translation id="7612497353238585898">Ενεργός ιστότοπος</translation> <translation id="7612655942094160088">Ενεργοποίηση λειτουργιών συνδεδεμένου τηλεφώνου.</translation> <translation id="7612989789287281429">Γίνεται σύνδεση…</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb index adf4b64..6b6267b9 100644 --- a/chrome/app/resources/generated_resources_en-GB.xtb +++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -379,6 +379,7 @@ <translation id="1281746473742296584">{NUM_OF_FILES,plural, =1{Can't open file}other{Can't open files}}</translation> <translation id="1282311502488501110">Don't sign in</translation> <translation id="1282465000333679776">Share system audio</translation> +<translation id="1283126956823499975">Something went wrong with setting up the device</translation> <translation id="1284277788676816155">Don’t allow to save data</translation> <translation id="1285320974508926690">Never translate this site</translation> <translation id="1285484354230578868">Store data in your Google Drive account</translation> @@ -1111,6 +1112,7 @@ <translation id="1823768272150895732">Font</translation> <translation id="1823781806707127806">Add existing browsing data to managed profile</translation> <translation id="18245044880483936">Backup data will not count toward your child's Drive storage quota.</translation> +<translation id="1825073796163165618">Enable links</translation> <translation id="1825565032302550710">Port must be between 1024 and 65535</translation> <translation id="182577151972096764">recently viewed recipes</translation> <translation id="18260074040409954">You can use saved passwords on any device. They're saved to <ph name="GOOGLE_PASSWORD_MANAGER" /> for <ph name="EMAIL" />.</translation> @@ -1130,7 +1132,6 @@ <translation id="1832848789136765277">To make sure that you can always access your sync data, verify that it's you</translation> <translation id="1834503245783133039">Download unsuccessful: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Upgrading Linux</translation> -<translation id="1835612721186505600">Allow access for apps and websites with the camera permission</translation> <translation id="1838374766361614909">Clear search</translation> <translation id="1839021455997460752">Your email address</translation> <translation id="1839540115464516994">Show in <ph name="LOCATION" /></translation> @@ -1350,6 +1351,7 @@ <translation id="1997616988432401742">Your certificates</translation> <translation id="1999115740519098545">On start-up</translation> <translation id="2002109485265116295">Real-time</translation> +<translation id="2002160221914907025">Experimental AI</translation> <translation id="2003130567827682533">To activate '<ph name="NAME" />' data, first connect to a Wi-Fi network</translation> <translation id="2004413981947727241">Use your passwords on any device</translation> <translation id="2004697686368036666">Features on some sites may not work</translation> @@ -2009,6 +2011,7 @@ <translation id="2482878487686419369">Notifications</translation> <translation id="2482895651873876648">Tab moved into group <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /></translation> <translation id="2483627560139625913">Set search engine in Chrome browser settings</translation> +<translation id="2483698983806594329">Downloaded unverified file</translation> <translation id="2484743711056182585">Remove grant</translation> <translation id="2484909293434545162">If a site uses cookies, it will appear here</translation> <translation id="2484959914739448251">To clear browsing data from all of your synced devices and your Google Account, <ph name="BEGIN_LINK" />enter your passphrase<ph name="END_LINK" />.</translation> @@ -2148,6 +2151,7 @@ <translation id="2589658397149952302">Never show Drive files</translation> <translation id="25899519884572181">Exit reader mode</translation> <translation id="2593499352046705383">Before starting, make sure that you have a backup of your data. Installing <ph name="DEVICE_OS" /> will overwrite your hard drive. Learn more at g.co/flex/InstallGuide.</translation> +<translation id="2594832159966169099">Manage V8 security</translation> <translation id="2594999711683503743">Search Google or type URL</translation> <translation id="2597073208962000830">Nearby Share uses Bluetooth scanning to find nearby devices.</translation> <translation id="2598710988533271874">New Chrome available</translation> @@ -2327,6 +2331,7 @@ <translation id="2730647855013151888">Include all personal information</translation> <translation id="2730901670247399077">Emoji suggestions</translation> <translation id="273093730430620027">This page is accessing your camera.</translation> +<translation id="2730956943403103181">Not allowed to use V8 optimiser</translation> <translation id="2731392572903530958">R&eopen Closed Window</translation> <translation id="2731700343119398978">Please wait…</translation> <translation id="2731971182069536520">The next time that you restart your device, your administrator will perform a one-off update that will delete your local data.</translation> @@ -2730,6 +2735,7 @@ <translation id="3025174326431589540">{COUNT,plural, =0{No saved passwords}=1{Checked passwords for {COUNT} site}other{Checked passwords for {COUNT} sites and apps}}</translation> <translation id="3027296729579831126">Turn on Nearby Share</translation> <translation id="3027644380269727216">Based on your activity on a site. This setting is on.</translation> +<translation id="3028445648481691885">Download cancelled</translation> <translation id="3029276696788198026">No preloading</translation> <translation id="3029466929721441205">Show stylus tools in shelf</translation> <translation id="3029808567601324798">Time to lock</translation> @@ -2835,6 +2841,7 @@ <translation id="3119948370277171654">What content/URL were you casting?</translation> <translation id="3122464029669770682">CPU</translation> <translation id="3122496702278727796">Failed to create data directory</translation> +<translation id="3122810280993140148">Creates custom themes based on the subject, mood, visual style and colour that you choose. To use this feature, open a new tab and click Customise Chrome.</translation> <translation id="3122883569442693641">More details</translation> <translation id="3124111068741548686">USER handles</translation> <translation id="3124332159330678621">Customise Chrome to give your browser a new look</translation> @@ -2874,6 +2881,7 @@ <translation id="3159978855457658359">Edit device name</translation> <translation id="3160928651883997588">VPN preferences</translation> <translation id="3161522574479303604">All languages</translation> +<translation id="3162766632262775911">Always allowed to use the V8 optimiser</translation> <translation id="3162853326462195145">School account</translation> <translation id="3162899666601560689">Sites can use cookies to improve your browsing experience, for example to keep you signed in or to remember items in your shopping basket</translation> <translation id="3163201441334626963">Unknown product <ph name="PRODUCT_ID" /> from vendor <ph name="VENDOR_ID" /></translation> @@ -3343,6 +3351,7 @@ <translation id="3547954654003013442">Proxy settings</translation> <translation id="3548162552723420559">Adjusts the screen colour to match the environment</translation> <translation id="354949590254473526">Enter custom DNS query URL</translation> +<translation id="3549827561154008969">Download resumed</translation> <translation id="3550593477037018652">Disconnect mobile network</translation> <translation id="3550915441744863158">Chrome updates automatically so you always have the freshest version</translation> <translation id="3551320343578183772">Close Tab</translation> @@ -3492,6 +3501,7 @@ <translation id="3666196264870170605">Intel WiFi NICs Debug Dump</translation> <translation id="3670113805793654926">Devices from any vendor</translation> <translation id="3670229581627177274">Turn on Bluetooth</translation> +<translation id="3670480940339182416">Sites can use the V8 optimiser</translation> <translation id="3672681487849735243">A factory error has been detected</translation> <translation id="3673097791729989571">Sign-in hosted by <ph name="SAML_DOMAIN" /></translation> <translation id="3673622964532248901">You aren't allowed to cast to this device.</translation> @@ -3862,7 +3872,7 @@ <translation id="3928570707778085600">Save changes to <ph name="FILE_OR_FOLDER_NAME" />?</translation> <translation id="3928659086758780856">Low on ink</translation> <translation id="3929426037718431833">These extensions can see and change information on this site.</translation> -<translation id="3930155420525972941">Move Group to New Window</translation> +<translation id="3930155420525972941">Move group to new window</translation> <translation id="3930602610362250897">To play content protected by copyright, sites may need to use a content protection service</translation> <translation id="3930737994424905957">Looking for devices</translation> <translation id="3930968231047618417">Background colour</translation> @@ -4584,7 +4594,6 @@ <translation id="4507128560633489176">Data cleared.</translation> <translation id="4507373251891673233">You blocked all extensions from <ph name="HOST" /></translation> <translation id="4507401683427517298">Click 'Add Shortcut'</translation> -<translation id="4508150454272293946">Allow apps and webpages to use the camera(s) connected to this device. If you still have a problem with your camera, try restarting the app or refreshing the webpage.</translation> <translation id="450867954911715010">Accessibility settings</translation> <translation id="4508765956121923607">View S&ource</translation> <translation id="4509277363725254222">When you share a copy of your <ph name="BEGIN_BOLD_USERNAME" />username<ph name="END_BOLD_USERNAME" /> and <ph name="BEGIN_BOLD_PASSWORD" />password<ph name="END_BOLD_PASSWORD" />, your family member can fill them using Google Password Manager</translation> @@ -4948,6 +4957,7 @@ <translation id="4800839971935185386">Review name and icon updates</translation> <translation id="4801448226354548035">Hide accounts</translation> <translation id="4801512016965057443">Allow mobile data roaming</translation> +<translation id="4803599447809045620">Disable links</translation> <translation id="4804311503028830356">Click the back arrow to explore other options</translation> <translation id="4804818685124855865">Disconnect</translation> <translation id="4804827417948292437">Avocado</translation> @@ -5032,6 +5042,7 @@ <translation id="4863769717153320198">Looks like <ph name="WIDTH" /> x <ph name="HEIGHT" /> (Default)</translation> <translation id="4864369630010738180">Signing in...</translation> <translation id="4864805589453749318">Select the parent who is granting permission to add a school account.</translation> +<translation id="4864905533117889071"><ph name="SENSOR_NAME" /> (blocked)</translation> <translation id="486505726797718946">Memory saved</translation> <translation id="486635084936119914">Open certain file types automatically after downloading</translation> <translation id="4867272607148176509">Parents can approve or block apps, set time limits and control web browsing. A school account can be added later to access most school resources.</translation> @@ -5525,6 +5536,7 @@ <translation id="5261619498868361045">Container name cannot be empty.</translation> <translation id="5261683757250193089">Open in Web Store</translation> <translation id="5261799091118902550">This file might be a virus or malware. You can send it to Google to check if it's unsafe.</translation> +<translation id="5262334727506665688">Keep saving passwords in your Google Account</translation> <translation id="5262784498883614021">Automatically connect to network</translation> <translation id="5263656105659419083">To easily get back to the side panel, click Pin at the top right</translation> <translation id="5264148714798105376">This may take a minute or so.</translation> @@ -5739,6 +5751,7 @@ <translation id="5432223177001837288">To share audio, share a tab instead</translation> <translation id="5432872710261597882">Thumbs up submits feedback that you like this.</translation> <translation id="543338862236136125">Edit password</translation> +<translation id="5433865420958136693">Use graphics acceleration when available</translation> <translation id="5434065355175441495">PKCS #1 RSA Encryption</translation> <translation id="5435274640623994081">Enable earcon logging</translation> <translation id="5435779377906857208">Always allow <ph name="HOST" /> to access your location</translation> @@ -6476,6 +6489,7 @@ <translation id="6020431688553761150">Server did not authorise you to access this resource.</translation> <translation id="6021293122504240352"><ph name="APPS" /> apps are no longer supported</translation> <translation id="6021969570711251331">Interleave</translation> +<translation id="602212068530399867">Search engine used in the address bar and the launcher.</translation> <translation id="6022526133015258832">Open Full Screen</translation> <translation id="6022659036123304283">Make Chrome your own</translation> <translation id="6023643151125006053">This device (SN: <ph name="SERIAL_NUMBER" />) was locked by the <ph name="SAML_DOMAIN" /> administrator.</translation> @@ -7064,6 +7078,7 @@ <translation id="649396225532207613">This file can harm your personal and social network accounts</translation> <translation id="6494327278868541139">Show enhanced protection details</translation> <translation id="6494445798847293442">Not a Certification Authority</translation> +<translation id="6494483173119160146">The device encountered an unrecoverable error. Please reset your device (it will erase all user data) and try again.</translation> <translation id="6497784818439587832">Change display size to make items on your screen smaller or larger</translation> <translation id="6497789971060331894">Mouse reverse scrolling</translation> <translation id="6498249116389603658">&All your languages</translation> @@ -7881,6 +7896,7 @@ <translation id="7131431455372521159">All TrackPoints have been disconnected</translation> <translation id="7131896909366247105"><ph name="APP_NAME" />, waiting</translation> <translation id="7134098520442464001">Make Text Smaller</translation> +<translation id="7134951043985383439">Downloaded dangerous file</translation> <translation id="7135729336746831607">Turn on Bluetooth?</translation> <translation id="7136694880210472378">Make default</translation> <translation id="7137771508221868414">This will delete <ph name="TOTAL_USAGE" /> of data stored by sites and installed apps</translation> @@ -8048,6 +8064,7 @@ <translation id="727441411541283857"><ph name="PERCENTAGE" />% - <ph name="TIME" /> until full</translation> <translation id="727595954130325265">Shop now</translation> <translation id="7276100255011548441">Chrome auto-deletes topics that are older than four weeks. As you keep browsing, a topic might reappear on the list. Or you can block topics that you don't want Chrome to share with sites. Learn more about <ph name="BEGIN_LINK" />managing your ad privacy in Chrome.<ph name="END_LINK" /></translation> +<translation id="7278164481614262110">Create themes with AI</translation> <translation id="727952162645687754">Download error</translation> <translation id="7280649757394340890">Text-to-speech voice settings</translation> <translation id="7280877790564589615">Permission requested</translation> @@ -8477,7 +8494,6 @@ <translation id="7610337976012700501">To use <ph name="FEATURE_NAME" /> with these contacts, add the email address linked with their Google Account to your contacts.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">All extensions</translation> -<translation id="7612401678989660900">Allow access for apps and websites with the microphone permission</translation> <translation id="7612497353238585898">Active site</translation> <translation id="7612655942094160088">Connected phone features enable.</translation> <translation id="7612989789287281429">Signing you in…</translation> @@ -8744,6 +8760,7 @@ <ph name="EXTENSION_NAME" /></translation> <translation id="7789963078219276159">Start page background has been changed to <ph name="CATEGORY" />.</translation> +<translation id="7791429245559955092">This application will be installed on your currently-used Chrome profile</translation> <translation id="7791436592012979144">Reverse scrolling enabled</translation> <translation id="7791543448312431591">Add</translation> <translation id="7792012425874949788">Something went wrong with signing in</translation> @@ -9139,6 +9156,7 @@ <translation id="8089547136368562137">It's protected by the best of Google</translation> <translation id="8090234456044969073">Read a list of your most frequently visited websites</translation> <translation id="8090513782447872344">You can come back anytime to take another look</translation> +<translation id="8090579562279016251">Reduces performance but makes V8 more resistant to attacks</translation> <translation id="8090686009202681725">Create theme with AI</translation> <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> isn't responding</translation> <translation id="8094536695728193970">Apricot</translation> @@ -9185,6 +9203,7 @@ <translation id="8124313775439841391">Managed ONC</translation> <translation id="8125651784723647184">Password sharing is managed by your administrator</translation> <translation id="8129265306888404830">To use your email address from your organisation (<ph name="EMAIL_DOMAIN" />), you need to use enterprise enrolment. If this device is for your personal use, sign in with your personal Google Account.</translation> +<translation id="8130476996317833777">Don’t allow sites to use the V8 optimiser</translation> <translation id="813082847718468539">View site information</translation> <translation id="8131740175452115882">Confirm</translation> <translation id="8133297578569873332">Acceptable – FM</translation> @@ -9540,6 +9559,7 @@ <translation id="8397825320644530257">Disconnect connected phone</translation> <translation id="8398877366907290961">Proceed anyway</translation> <translation id="8399282673057829204">View password</translation> +<translation id="839949601275221554">The device encountered an error. Please restart your device and try again.</translation> <translation id="8401432541486058167">Provide the PIN that’s associated with your smart card.</translation> <translation id="8401772916834964810">{COUNT,plural, =0{Chrome will block cookies again today}=1{Chrome will block cookies again tomorrow}other{# days until Chrome blocks cookies again}}</translation> <translation id="8403618281196981152">Your data in Chrome</translation> @@ -9568,6 +9588,7 @@ <translation id="8422748173858722634">IMEI</translation> <translation id="8422787418163030046">Tray is missing</translation> <translation id="8424250197845498070">Blocked by Advanced Protection</translation> +<translation id="842501938276307467">Try out experimental AI features</translation> <translation id="8425213833346101688">Change</translation> <translation id="8425492902634685834">Pin to task bar</translation> <translation id="8425768983279799676">You can use your PIN to unlock your device.</translation> @@ -9722,6 +9743,7 @@ <ph name="BEGIN_PARAGRAPH2" />To use <ph name="USER_EMAIL" />, first sign out of your <ph name="DEVICE_TYPE" />. Then at the bottom of the login screen, select 'Add person'.<ph name="END_PARAGRAPH2" /></translation> <translation id="85486688517848470">Hold the Search key to switch the behaviour of the top-row keys</translation> <translation id="8549316893834449916">You’ll use your Google Account to sign in to your Chromebook – the same account that you use for Gmail, Drive, YouTube and more.</translation> +<translation id="8550239873869577759">Downloaded suspicious file</translation> <translation id="8551388862522347954">Licences</translation> <translation id="8551588720239073785">Date and time settings</translation> <translation id="8551647092888540776">Can't open <ph name="FILE_NAMES" /> when offline</translation> @@ -9777,6 +9799,7 @@ <translation id="8601206103050338563">TLS WWW Client Authentication</translation> <translation id="8602674530529411098">Apps (Beta)</translation> <translation id="8602851771975208551">Another program on your computer added an app that may change the way Chrome works.</translation> +<translation id="8604513817270995005">Helps you write short-form content for things on the web, like reviews. Suggested content is based on your prompts and the content of the web page. To use this feature, right-click on a text box.</translation> <translation id="8605428685123651449">SQLite memory</translation> <translation id="8607171490667464784">While inactive and on battery</translation> <translation id="8607828412110648570">Make sure that your Bluetooth device is in pairing mode and nearby. Only pair with devices that you trust. Paired devices are visible to all accounts on this Chromebook. <ph name="BEGIN_LINK_LEARN_MORE" />Learn more<ph name="END_LINK_LEARN_MORE" /></translation> @@ -10025,7 +10048,7 @@ <translation id="8779944680596936487">Sites can only use cookies to see your browsing activity on their own site</translation> <translation id="8780123805589053431">Get image descriptions from Google</translation> <translation id="8780443667474968681">Voice search has been turned off.</translation> -<translation id="8781834595282316166">New Tab in Group</translation> +<translation id="8781834595282316166">New tab in group</translation> <translation id="8781980678064919987">Shut down when lid is closed</translation> <translation id="8782565991310229362">Kiosk application launch cancelled.</translation> <translation id="8783834180813871000">Type the pairing code then press Return or Enter</translation> @@ -10288,6 +10311,7 @@ <translation id="8985191021574400965">Welcome to Steam for Chromebook</translation> <translation id="8985264973231822211">Active <ph name="DEVICE_LAST_ACTIVATED_TIME" /> day ago</translation> <translation id="8985661493893822002">Please connect to the Internet to sign in to your <ph name="DEVICE_TYPE" />.</translation> +<translation id="8985661571449404298">Downloaded insecure file</translation> <translation id="8986362086234534611">Forget</translation> <translation id="8986494364107987395">Automatically send usage statistics and crash reports to Google</translation> <translation id="8987305927843254629">Each person can personalise their experience and keep data private.</translation> @@ -10486,6 +10510,7 @@ <translation id="9116366756388192417">Choose a subject</translation> <translation id="9116799625073598554">Note-taking app</translation> <translation id="9117030152748022724">Manage your apps</translation> +<translation id="9119587891086680311">These features use AI, are in early development, and won’t always get it right.</translation> <translation id="9120362425083889527">The installation could not be completed. Please try again or close this window</translation> <translation id="9120693811286642342"><ph name="BEGIN_PARAGRAPH1" />For the best experience, install <ph name="DEVICE_OS" /> to your internal disk. You can also install it later from the login screen.<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />If you're not ready to install, you can run from USB to try it out. This will keep your existing OS and data, but you may see storage and performance limits.<ph name="END_PARAGRAPH2" /></translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb index e1cde301..9bb8015 100644 --- a/chrome/app/resources/generated_resources_es-419.xtb +++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -1116,7 +1116,6 @@ <translation id="1832848789136765277">Para asegurarte de que siempre puedas acceder a tus datos sincronizados, verifica tu identidad.</translation> <translation id="1834503245783133039">No se pudo realizar la descarga: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Actualizando Linux</translation> -<translation id="1835612721186505600">Permite el acceso a la cámara para las apps y sitios web con el permiso</translation> <translation id="1838374766361614909">Borrar la búsqueda</translation> <translation id="1839021455997460752">Tu dirección de correo electrónico</translation> <translation id="1839540115464516994">Mostrar en <ph name="LOCATION" /></translation> @@ -4565,7 +4564,6 @@ <translation id="4507128560633489176">Se borraron los datos.</translation> <translation id="4507373251891673233">Bloqueaste todas las extensiones de <ph name="HOST" /></translation> <translation id="4507401683427517298">Haz clic en "Agregar acceso directo"</translation> -<translation id="4508150454272293946">Permite que las apps y las páginas web usen las cámaras conectadas a este dispositivo. Si aún tienes problemas con la cámara, intenta reiniciar la app o actualizar la página web.</translation> <translation id="450867954911715010">Configuración de accesibilidad</translation> <translation id="4508765956121923607">Ver códig&o fuente</translation> <translation id="4509277363725254222">Si compartes una copia de tu <ph name="BEGIN_BOLD_USERNAME" />nombre de usuario<ph name="END_BOLD_USERNAME" /> y <ph name="BEGIN_BOLD_PASSWORD" />contraseña<ph name="END_BOLD_PASSWORD" />, el miembro de tu familia podrá completarlos con el Administrador de contraseñas de Google.</translation> @@ -8458,7 +8456,6 @@ <translation id="7610337976012700501">Para usar <ph name="FEATURE_NAME" /> con estos contactos, agrega a tus contactos las direcciones de correo electrónico vinculadas a sus Cuentas de Google.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Todas las extensiones</translation> -<translation id="7612401678989660900">Permitir el acceso al micrófono para apps y sitios web con el permiso</translation> <translation id="7612497353238585898">Sitio activo</translation> <translation id="7612655942094160088">Habilita las funciones del teléfono conectado.</translation> <translation id="7612989789287281429">Accediendo…</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb index b8f8786c..fbbef63 100644 --- a/chrome/app/resources/generated_resources_es.xtb +++ b/chrome/app/resources/generated_resources_es.xtb
@@ -1119,7 +1119,6 @@ <translation id="1832848789136765277">Verifica tu identidad para asegurarte de que siempre puedas acceder a tus datos sincronizados</translation> <translation id="1834503245783133039">No se ha podido completar la descarga: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux se ha actualizado</translation> -<translation id="1835612721186505600">Permite que accedan los sitios web y aplicaciones con el permiso de cámara</translation> <translation id="1838374766361614909">Borrar búsqueda</translation> <translation id="1839021455997460752">Tu dirección de correo</translation> <translation id="1839540115464516994">Mostrar en <ph name="LOCATION" /></translation> @@ -4568,7 +4567,6 @@ <translation id="4507128560633489176">Datos borrados.</translation> <translation id="4507373251891673233">Has bloqueado todas las extensiones de <ph name="HOST" /></translation> <translation id="4507401683427517298">Haz clic en Añadir acceso directo</translation> -<translation id="4508150454272293946">Permite que las aplicaciones y las páginas web usen las cámaras conectadas a este dispositivo. Si sigues teniendo problemas con la cámara, prueba a reiniciar la aplicación o a actualizar la página web.</translation> <translation id="450867954911715010">Ajustes de accesibilidad</translation> <translation id="4508765956121923607">Ver código f&uente</translation> <translation id="4509277363725254222">Si compartes una copia de tu <ph name="BEGIN_BOLD_USERNAME" />nombre de usuario<ph name="END_BOLD_USERNAME" /> y de tu <ph name="BEGIN_BOLD_PASSWORD" />contraseña<ph name="END_BOLD_PASSWORD" />, el miembro de tu familia podrá introducirlos usando el Gestor de contraseñas de Google.</translation> @@ -8461,7 +8459,6 @@ <translation id="7610337976012700501">Para usar <ph name="FEATURE_NAME" /> con estos contactos, añade a tus contactos las direcciones de correo electrónico vinculadas a sus cuentas de Google.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Todas las extensiones</translation> -<translation id="7612401678989660900">Permite que accedan los sitios web y aplicaciones con el permiso de micrófono</translation> <translation id="7612497353238585898">Sitio activo</translation> <translation id="7612655942094160088">Habilitar funciones de teléfono conectado.</translation> <translation id="7612989789287281429">Iniciando sesión…</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb index 4029d26..70d5e32 100644 --- a/chrome/app/resources/generated_resources_et.xtb +++ b/chrome/app/resources/generated_resources_et.xtb
@@ -1122,7 +1122,6 @@ <translation id="1832848789136765277">Selleks, et pääseksite alati oma sünkroonitud andmetele juurde, kinnitage oma isik</translation> <translation id="1834503245783133039">Allalaadimine nurjus: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux versiooni uuendamine</translation> -<translation id="1835612721186505600">Luba juurdepääs kaamerale rakenduste ja veebisaitide puhul, millel on kaamerale juurdepääsemise luba</translation> <translation id="1838374766361614909">Otsingu kustutamine</translation> <translation id="1839021455997460752">Teie e-posti aadress</translation> <translation id="1839540115464516994">Kuva asukohas <ph name="LOCATION" /></translation> @@ -4574,7 +4573,6 @@ <translation id="4507128560633489176">Andmed kustutati.</translation> <translation id="4507373251891673233">Blokeerisite kõik laiendused saidil <ph name="HOST" /></translation> <translation id="4507401683427517298">Klõpsake valikul „Lisa otsetee”</translation> -<translation id="4508150454272293946">Lubage rakendustel ja veebilehtedel kasutada selle seadmega ühendatud kaamerat/kaameraid. Kui teil on endiselt probleeme kaameraga, taaskäivitage rakendus või värskendage veebilehte.</translation> <translation id="450867954911715010">Juurdepääsetavuse seaded</translation> <translation id="4508765956121923607">Vaata a&llikat</translation> <translation id="4509277363725254222">Kui jagate oma <ph name="BEGIN_BOLD_USERNAME" />kasutajanime<ph name="END_BOLD_USERNAME" /> ja <ph name="BEGIN_BOLD_PASSWORD" />parooli<ph name="END_BOLD_PASSWORD" />, saab teie pereliige need väljad täita Google’i paroolihalduri abil.</translation> @@ -8467,7 +8465,6 @@ <translation id="7610337976012700501">Funktsiooni <ph name="FEATURE_NAME" /> kasutamiseks koos nende kontaktidega lisage nende Google'i kontodega lingitud e-posti aadressid oma kontaktide hulka.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Kõik laiendid</translation> -<translation id="7612401678989660900">Luba juurdepääs mikrofonile rakenduste ja veebisaitide puhul, millel on mikrofonile juurdepääsemise luba</translation> <translation id="7612497353238585898">Aktiivne sait</translation> <translation id="7612655942094160088">Ühendatud telefoni funktsioonide lubamine.</translation> <translation id="7612989789287281429">Sisselogimine …</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb index f352bb4..2778307 100644 --- a/chrome/app/resources/generated_resources_eu.xtb +++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -1119,7 +1119,6 @@ <translation id="1832848789136765277">Sinkronizatutako datuak edonoiz atzitu ahal izango dituzula ziurtatzeko, egiaztatu zeu zarela</translation> <translation id="1834503245783133039">Ezin izan da deskargatu <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux bertsio-berritzen</translation> -<translation id="1835612721186505600">Aktibatu kamera erabiltzeko baimena halakorik baduten aplikazio eta webguneetan</translation> <translation id="1838374766361614909">Garbitu bilaketa</translation> <translation id="1839021455997460752">Zure helbide elektronikoa</translation> <translation id="1839540115464516994">Erakutsi hemen: <ph name="LOCATION" /></translation> @@ -4568,7 +4567,6 @@ <translation id="4507128560633489176">Garbitu dira datuak.</translation> <translation id="4507373251891673233"><ph name="HOST" /> ostalariaren luzapen guztiak blokeatu dituzu</translation> <translation id="4507401683427517298">Sakatu Gehitu lasterbide bat</translation> -<translation id="4508150454272293946">Eman gailura konektatutako kamerak erabiltzeko baimena aplikazio eta webguneei. Kamerarekin arazoren bat badaukazu oraindik ere, berrabiarazi aplikazioa edo freskatu webgunea.</translation> <translation id="450867954911715010">Erabilerraztasun-ezarpenak</translation> <translation id="4508765956121923607">Ikusi I&turburua</translation> <translation id="4509277363725254222"><ph name="BEGIN_BOLD_USERNAME" />Erabiltzaile-izenaren<ph name="END_BOLD_USERNAME" /> eta <ph name="BEGIN_BOLD_PASSWORD" />pasahitzaren<ph name="END_BOLD_PASSWORD" /> kopia bat partekatzen baduzu, familiako kideak Google-ren Pasahitz-kudeatzailea erabilita bete ditzake</translation> @@ -8456,7 +8454,6 @@ <translation id="7610337976012700501">Kontaktu hauekin <ph name="FEATURE_NAME" /> erabiltzeko, gehitu haien Google-ko kontuekin lotuta dauden helbide elektronikoak zure kontaktuetan.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Luzapen guztiak</translation> -<translation id="7612401678989660900">Aktibatu mikrofonoa erabiltzeko baimena halakorik baduten aplikazio eta webguneetan</translation> <translation id="7612497353238585898">Webgune aktiboa</translation> <translation id="7612655942094160088">Gaitu konektatutako telefonoaren eginbideak.</translation> <translation id="7612989789287281429">Saioa hasten…</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb index ba85aa1..c8691fb5 100644 --- a/chrome/app/resources/generated_resources_fa.xtb +++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -1129,7 +1129,6 @@ <translation id="1832848789136765277">برای اینکه مطمئن شوید همیشه میتوانید به دادههای همگامسازی دسترسی داشته باشید، هویتتان را بهتأیید برسانید</translation> <translation id="1834503245783133039">بارگیری ناموفق بود: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">درحال ارتقای Linux</translation> -<translation id="1835612721186505600">مجاز کردن دسترسی برای برنامهها و وبسایتهای دارای اجازه دوربین</translation> <translation id="1838374766361614909">پاک کردن جستجو</translation> <translation id="1839021455997460752">نشانی ایمیل شما</translation> <translation id="1839540115464516994">نشان دادن در <ph name="LOCATION" /></translation> @@ -4591,7 +4590,6 @@ <translation id="4507128560633489176">دادهها پاک شد.</translation> <translation id="4507373251891673233">همه افزونههای <ph name="HOST" /> را مسدود کردهاید</translation> <translation id="4507401683427517298">روی «افزودن میانبر» کلیک کنید</translation> -<translation id="4508150454272293946">به برنامهها و صفحههای وب اجازه داده میشود از دوربین(های) متصل به این دستگاه استفاده کنند. اگر همچنان مشکلی با دوربین دارید، برنامه را بازراهاندازی کنید یا صفحه وب را بازآوری کنید.</translation> <translation id="450867954911715010">تنظیمات دسترسپذیری</translation> <translation id="4508765956121923607">مشاهده م&نبع</translation> <translation id="4509277363725254222">وقتی نسخهای از <ph name="BEGIN_BOLD_USERNAME" />نام کاربری<ph name="END_BOLD_USERNAME" /> و <ph name="BEGIN_BOLD_PASSWORD" />گذرواژه<ph name="END_BOLD_PASSWORD" /> خود را همرسانی کنید، عضو خانوادهتان میتواند بااستفاده از «مدیر گذرواژه Google» این اطلاعات را وارد کند</translation> @@ -8491,7 +8489,6 @@ <translation id="7610337976012700501">برای استفاده از <ph name="FEATURE_NAME" /> با این مخاطبین، نشانی ایمیل پیوندشده با «حساب Google» آنها را به مخاطبین خود اضافه کنید.</translation> <translation id="7611713099524036757">Meta</translation> <translation id="7612050744024016345">همه افزونهها</translation> -<translation id="7612401678989660900">مجاز کردن دسترسی برای برنامهها و وبسایتهای دارای اجازه میکروفون</translation> <translation id="7612497353238585898">سایت فعال</translation> <translation id="7612655942094160088">فعال کردن ویژگیهای تلفن مرتبط.</translation> <translation id="7612989789287281429">درحال وارد کردن شما به سیستم…</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb index c3596f0..2a53f29 100644 --- a/chrome/app/resources/generated_resources_fi.xtb +++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -1111,6 +1111,7 @@ <translation id="1823768272150895732">Fontti</translation> <translation id="1823781806707127806">Lisää nykyistä selausdataa hallinnoituun profiiliin</translation> <translation id="18245044880483936">Varmuuskopioitu data ei kuluta lapsen Drive-tallennuskiintiötä.</translation> +<translation id="1825073796163165618">Ota linkit käyttöön</translation> <translation id="1825565032302550710">Portin on oltava välillä 1024–65535</translation> <translation id="182577151972096764">äskettäin katsotut reseptit</translation> <translation id="18260074040409954">Voit käyttää tallennettuja salasanoja kaikilla laitteilla. Sähköpostin <ph name="EMAIL" /> salasanat tallennetaan tänne: <ph name="GOOGLE_PASSWORD_MANAGER" />.</translation> @@ -1130,7 +1131,6 @@ <translation id="1832848789136765277">Todenna henkilöllisyytesi varmistaaksesi, että sinulla on aina pääsy synkronoituun dataasi</translation> <translation id="1834503245783133039">Lataus epäonnistui: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Päivitetään Linuxia</translation> -<translation id="1835612721186505600">Salli pääsy sovelluksiin ja sivustoille, joilla on kameran käyttölupa</translation> <translation id="1838374766361614909">Tyhjennä haku</translation> <translation id="1839021455997460752">Sähköpostiosoite</translation> <translation id="1839540115464516994">Näyttöpaikka: <ph name="LOCATION" /></translation> @@ -1350,6 +1350,7 @@ <translation id="1997616988432401742">Omat varmenteet</translation> <translation id="1999115740519098545">Käynnistyksessä</translation> <translation id="2002109485265116295">Reaaliaikainen</translation> +<translation id="2002160221914907025">Kokeellinen tekoäly</translation> <translation id="2003130567827682533">Jos haluat aktivoida dataa (<ph name="NAME" />), muodosta yhteys Wi-Fi-verkkoon.</translation> <translation id="2004413981947727241">Käytä salasanojasi kaikilla laitteilla</translation> <translation id="2004697686368036666">Joidenkin sivustojen ominaisuudet eivät välttämättä toimi</translation> @@ -2009,6 +2010,7 @@ <translation id="2482878487686419369">Ilmoitukset</translation> <translation id="2482895651873876648">Välilehti siirretty ryhmään nimeltä <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /></translation> <translation id="2483627560139625913">Valitse hakukone Chrome-selaimen asetuksista</translation> +<translation id="2483698983806594329">Vahvistamaton tiedosto ladattu</translation> <translation id="2484743711056182585">Poista lupa</translation> <translation id="2484909293434545162">Jos sivusto käyttää evästeitä, se näkyy täällä</translation> <translation id="2484959914739448251">Jos haluat poistaa selailutiedot kaikilta synkronoiduilta laitteiltasi ja Google-tililtäsi, <ph name="BEGIN_LINK" />kirjoita tunnuslauseesi<ph name="END_LINK" />.</translation> @@ -2148,6 +2150,7 @@ <translation id="2589658397149952302">Älä koskaan näytä Drive-tiedostoja</translation> <translation id="25899519884572181">Poistu lukijatilasta</translation> <translation id="2593499352046705383">Varmista ennen aloittamista, että sinulla on varmuuskopio datastasi. Asentaminen (<ph name="DEVICE_OS" />) korvaa kiintolevysi sisällön. Lue lisää osoitteesta g.co/flex/InstallGuide.</translation> +<translation id="2594832159966169099">Ylläpidä V8-suojausta</translation> <translation id="2594999711683503743">Hae Googlesta tai kirjoita URL-osoite</translation> <translation id="2597073208962000830">Lähijakaminen etsii lähellä olevia laitteita Bluetooth-haun avulla.</translation> <translation id="2598710988533271874">Uusi Chrome saatavilla</translation> @@ -2327,6 +2330,7 @@ <translation id="2730647855013151888">Sisällytä kaikki henkilökohtaiset tiedot</translation> <translation id="2730901670247399077">Emojiehdotukset</translation> <translation id="273093730430620027">Tämä sivu käyttää kameraasi.</translation> +<translation id="2730956943403103181">V8-optimoijan käyttö kielletty</translation> <translation id="2731392572903530958">Avaa suljettu ikkuna uud&elleen</translation> <translation id="2731700343119398978">Odota...</translation> <translation id="2731971182069536520">Seuraavan kerran kun käynnistät laitteen uudelleen, järjestelmänvalvoja tekee kertaluontoisen päivityksen, joka poistaa paikallisen datasi.</translation> @@ -2730,6 +2734,7 @@ <translation id="3025174326431589540">{COUNT,plural, =0{Ei tallennettuja salasanoja}=1{{COUNT} sivuston salasanat on tarkistettu}other{{COUNT} sivuston ja sovelluksen salasanat on tarkistettu}}</translation> <translation id="3027296729579831126">Laita lähijakaminen päälle</translation> <translation id="3027644380269727216">Perustuu toimintaasi sivustolla. Tämä asetus on päällä.</translation> +<translation id="3028445648481691885">Lataus peruttu</translation> <translation id="3029276696788198026">Ei esilatausta</translation> <translation id="3029466929721441205">Näytä näyttökynätyökalut hyllyssä</translation> <translation id="3029808567601324798">Lukitusaika</translation> @@ -2835,6 +2840,7 @@ <translation id="3119948370277171654">Mitä sisältöä tai URL-osoitetta olit striimaamassa?</translation> <translation id="3122464029669770682">Keskusyksikkö</translation> <translation id="3122496702278727796">Tietohakemiston luonti epäonnistui</translation> +<translation id="3122810280993140148">Luo omia teemoja valitsemasi aiheen, mielialan, visuaalisen tyylin ja värin perusteella. Jos haluat käyttää tätä ominaisuutta, avaa uusi välilehti ja valitse Yksilöi Chromea.</translation> <translation id="3122883569442693641">Lisätietoja</translation> <translation id="3124111068741548686">KÄYTTÄJÄ-kahvat</translation> <translation id="3124332159330678621">Tee Chromesta näköisesi muokkaamalla selaimen tyyliä</translation> @@ -2874,6 +2880,7 @@ <translation id="3159978855457658359">Muokkaa laitteen nimeä</translation> <translation id="3160928651883997588">VPN-asetukset</translation> <translation id="3161522574479303604">Kaikki kielet</translation> +<translation id="3162766632262775911">V8-optimoijan käyttö on aina sallittu</translation> <translation id="3162853326462195145">Koulutili</translation> <translation id="3162899666601560689">Sivustot voivat käyttää evästeitä selauskokemuksesi parantamiseen, esimerkiksi pitää sinut kirjautuneena tai muistaa ostoskorisi sisällön</translation> <translation id="3163201441334626963">Tuntematon tuote <ph name="PRODUCT_ID" /> toimittajalta <ph name="VENDOR_ID" /></translation> @@ -3343,6 +3350,7 @@ <translation id="3547954654003013442">Välityspalvelimen asetukset</translation> <translation id="3548162552723420559">Mukauttaa näytön värit ympäristöön</translation> <translation id="354949590254473526">Lisää oman DNS-kyselyn URL-osoite</translation> +<translation id="3549827561154008969">Latausta jatkettu</translation> <translation id="3550593477037018652">Katkaise mobiiliverkkoyhteys</translation> <translation id="3550915441744863158">Chrome päivitetään automaattisesti, joten käytössäsi on aina uusin versio</translation> <translation id="3551320343578183772">Sulje välilehti</translation> @@ -3492,6 +3500,7 @@ <translation id="3666196264870170605">Intelin Wi-Fi-verkon NIC-virheenkorjausvedos</translation> <translation id="3670113805793654926">Kaikkien toimittajien laitteet</translation> <translation id="3670229581627177274">Ota Bluetooth käyttöön</translation> +<translation id="3670480940339182416">Sivustot voivat käyttää V8-optimoijaa</translation> <translation id="3672681487849735243">Tehdasvirhe on havaittu</translation> <translation id="3673097791729989571">Sisäänkirjautuminen tapahtuu täällä: <ph name="SAML_DOMAIN" /></translation> <translation id="3673622964532248901">Sinulla ei ole lupaa striimata tälle laitteelle.</translation> @@ -4581,7 +4590,6 @@ <translation id="4507128560633489176">Data tyhjennettiin.</translation> <translation id="4507373251891673233">Olet estänyt kaikki laajennukset, joiden lähteenä on <ph name="HOST" /></translation> <translation id="4507401683427517298">Valitse "Lisää pikakuvake"</translation> -<translation id="4508150454272293946">Salli sovellusten ja verkkosivujen käyttää tähän laitteeseen liitettyjä kameroita. Jos kameran kanssa on edelleen ongelma, kokeile käynnistää sovellus uudelleen tai päivittää verkkosivu.</translation> <translation id="450867954911715010">Saavutettavuusasetukset</translation> <translation id="4508765956121923607">Näytä lähdek&oodi</translation> <translation id="4509277363725254222">Kun jaat <ph name="BEGIN_BOLD_USERNAME" />käyttäjätunnuksesi<ph name="END_BOLD_USERNAME" /> ja <ph name="BEGIN_BOLD_PASSWORD" />salasanasi<ph name="END_BOLD_PASSWORD" />, perheenjäsenesi voi täyttää ne Googlen Salasanojen avulla</translation> @@ -4945,6 +4953,7 @@ <translation id="4800839971935185386">Katso nimen ja kuvakkeen muutokset</translation> <translation id="4801448226354548035">Piilota tilit</translation> <translation id="4801512016965057443">Salli mobiilitiedonsiirto roaming-tilassa</translation> +<translation id="4803599447809045620">Poista linkit käytöstä</translation> <translation id="4804311503028830356">Tutustu muihin vaihtoehtoihin klikkaamalla takaisin-nuolta</translation> <translation id="4804818685124855865">Katkaise yhteys</translation> <translation id="4804827417948292437">Avokado</translation> @@ -5738,6 +5747,7 @@ <translation id="5432223177001837288">Jos haluat jakaa audiota, jaa välilehti</translation> <translation id="5432872710261597882">Tykkään-painike lähettää palautetta tykkäämisestä.</translation> <translation id="543338862236136125">Muokkaa salasanaa</translation> +<translation id="5433865420958136693">Käytä grafiikkakiihdytystä, jos se on käytettävissä</translation> <translation id="5434065355175441495">PKCS #1 RSA-salaus</translation> <translation id="5435274640623994081">Ota earcon-äänimerkkien kirjaaminen käyttöön</translation> <translation id="5435779377906857208"><ph name="HOST" /> saa käyttää aina sijaintiasi</translation> @@ -6475,6 +6485,7 @@ <translation id="6020431688553761150">Palvelin ei antanut sinulle resurssin käyttöoikeutta.</translation> <translation id="6021293122504240352"><ph name="APPS" /> sovellusta ei enää tueta</translation> <translation id="6021969570711251331">Lomittain</translation> +<translation id="602212068530399867">Hakukone, jota käytetään osoitepalkissa ja käynnistysohjelmassa.</translation> <translation id="6022526133015258832">Avaa koko ruudulla</translation> <translation id="6022659036123304283">Tee Chromesta näköisesi</translation> <translation id="6023643151125006053">Verkkotunnuksen <ph name="SAML_DOMAIN" /> järjestelmänvalvoja on lukinnut laitteen (sarjanumero <ph name="SERIAL_NUMBER" />)</translation> @@ -7881,6 +7892,7 @@ <translation id="7131431455372521159">Kaikkien tappiohjainten yhteys on katkaistu</translation> <translation id="7131896909366247105"><ph name="APP_NAME" />, odottaa</translation> <translation id="7134098520442464001">Pienennä tekstiä</translation> +<translation id="7134951043985383439">Vaarallinen tiedosto ladattu</translation> <translation id="7135729336746831607">Otetaanko Bluetooth käyttöön?</translation> <translation id="7136694880210472378">Aseta oletukseksi</translation> <translation id="7137771508221868414">Tämä poistaa <ph name="TOTAL_USAGE" /> dataa, jonka sivustot ja asennetut sovellukset ovat tallentaneet</translation> @@ -8048,6 +8060,7 @@ <translation id="727441411541283857"><ph name="PERCENTAGE" /> % – täyteen lataukseen <ph name="TIME" /></translation> <translation id="727595954130325265">Osta nyt</translation> <translation id="7276100255011548441">Chrome poistaa automaattisesti yli neljä viikkoa vanhat aiheet. Kun jatkat selaamista, aihe voi näkyä listalla uudelleen. Voit myös estää aiheet, joita et halua Chromen jakavan sivustoille. Lue lisää <ph name="BEGIN_LINK" />mainosyksityisyyden ylläpidosta Chromessa<ph name="END_LINK" />.</translation> +<translation id="7278164481614262110">Luo teemoja tekoälyn avulla</translation> <translation id="727952162645687754">Latausvirhe</translation> <translation id="7280649757394340890">Tekstistä puheeksi ‑ääniasetukset</translation> <translation id="7280877790564589615">Käyttölupapyyntö</translation> @@ -8477,7 +8490,6 @@ <translation id="7610337976012700501">Jos haluat, että <ph name="FEATURE_NAME" /> toimii näiden yhteystietojen kanssa, lisää henkilön Google-tiliin linkitetty sähköpostiosoite yhteystietoihisi.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Kaikki laajennukset</translation> -<translation id="7612401678989660900">Salli pääsy sovelluksiin ja verkkosivustoille, joilla on mikrofonin käyttölupa</translation> <translation id="7612497353238585898">Aktiivinen sivusto</translation> <translation id="7612655942094160088">Liitettyjen puhelimien ominaisuuksien käyttöönotto.</translation> <translation id="7612989789287281429">Kirjaudutaan sisään…</translation> @@ -8743,6 +8755,7 @@ <ph name="EXTENSION_NAME" /></translation> <translation id="7789963078219276159">Aloitussivun taustakuvaksi on vaihdettu <ph name="CATEGORY" />.</translation> +<translation id="7791429245559955092">Sovellus asennetaan tällä hetkellä käyttämääsi Chrome-profiiliin</translation> <translation id="7791436592012979144">Käänteinen vieritys käytössä</translation> <translation id="7791543448312431591">Lisää</translation> <translation id="7792012425874949788">Jotain meni pieleen. kirjautumisessa</translation> @@ -9138,6 +9151,7 @@ <translation id="8089547136368562137">Suojattu Googlen parhailla ominaisuuksilla</translation> <translation id="8090234456044969073">Lukea useimmin käyttämiesi verkkosivustojen luettelo</translation> <translation id="8090513782447872344">Voit palata tänne milloin tahansa</translation> +<translation id="8090579562279016251">Rajoittaa suorituskykyä, mutta tekee V8:sta suojatumman hyökkäyksiä vastaan</translation> <translation id="8090686009202681725">Luo teema tekoälyn avulla</translation> <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> ei vastaa.</translation> <translation id="8094536695728193970">Aprikoosi</translation> @@ -9184,6 +9198,7 @@ <translation id="8124313775439841391">Hallinnoitu ONC</translation> <translation id="8125651784723647184">Järjestelmänvalvoja ylläpitää salasanojen jakamista</translation> <translation id="8129265306888404830">Jos haluat käyttää organisaatiosi (<ph name="EMAIL_DOMAIN" />) sähköpostiosoitetta, sinun on rekisteröidyttävä yritysversion kautta. Jos laite on tarkoitettu henkilökohtaiseen käyttöön, kirjaudu sisään henkilökohtaisella Google-tililläsi.</translation> +<translation id="8130476996317833777">Älä salli sivustojen käyttää V8-optimoijaa</translation> <translation id="813082847718468539">Näytä sivuston tiedot</translation> <translation id="8131740175452115882">Vahvista</translation> <translation id="8133297578569873332">Hyväksyttävä – FM</translation> @@ -9568,6 +9583,7 @@ <translation id="8422748173858722634">IMEI-koodi</translation> <translation id="8422787418163030046">Lokero puuttuu</translation> <translation id="8424250197845498070">Lisäsuojauksen estämä</translation> +<translation id="842501938276307467">Kokeellisten tekoälyominaisuuksien kokeilu</translation> <translation id="8425213833346101688">Vaihda</translation> <translation id="8425492902634685834">Kiinnitä tehtäväpalkkiin</translation> <translation id="8425768983279799676">Voit avata laitteen lukituksen PIN-koodilla.</translation> @@ -9722,6 +9738,7 @@ <ph name="BEGIN_PARAGRAPH2" />Kirjaudu ulos laitteelta (<ph name="DEVICE_TYPE" />), jotta <ph name="USER_EMAIL" /> on käytettävissä. Valitse sitten kirjautumisnäkymän alareunasta Lisää henkilö.<ph name="END_PARAGRAPH2" /></translation> <translation id="85486688517848470">Pidä hakunäppäintä pohjassa, jos haluat vaihtaa ylärivin näppäinten toimintaa.</translation> <translation id="8549316893834449916">Google-tiliä käytetään Chromebookille kirjautumiseen. Käytät samaa tiliä myös esim. Gmailissa, Drivessa ja YouTubessa.</translation> +<translation id="8550239873869577759">Epäilyttävä tiedosto ladattu</translation> <translation id="8551388862522347954">Käyttöoikeudet</translation> <translation id="8551588720239073785">Aika- ja päivämääräasetukset</translation> <translation id="8551647092888540776"><ph name="FILE_NAMES" /> ei avaudu offline-tilassa</translation> @@ -9777,6 +9794,7 @@ <translation id="8601206103050338563">TLS WWW -palvelimen todennus</translation> <translation id="8602674530529411098">Sovellukset (beta)</translation> <translation id="8602851771975208551">Toinen tietokoneellasi oleva ohjelma lisäsi sovelluksen, joka voi muuttaa Chromen toimintaa.</translation> +<translation id="8604513817270995005">Auttaa kirjoittamaan lyhyitä verkkosisältöjä, kuten arvosteluja. Ehdotettu sisältö perustuu kehotteisiisi ja verkkosivun sisältöön. Voit käyttää ominaisuutta klikkaamalla tekstikenttää kakkospainikkeella.</translation> <translation id="8605428685123651449">SQLiten käyttämä muisti</translation> <translation id="8607171490667464784">Kun laite on ei-aktiivinen ja käyttää akkuvirtaa</translation> <translation id="8607828412110648570">Varmista, että Bluetooth-laitteesi on parinmuodostustilassa ja lähellä. Yhdistä vain laitteita, joihin luotat. Pariliitetyt laitteet näkyvät kaikilla tämän Chromebookin tileillä. <ph name="BEGIN_LINK_LEARN_MORE" />Lue lisää<ph name="END_LINK_LEARN_MORE" /></translation> @@ -10288,6 +10306,7 @@ <translation id="8985191021574400965">Tervetuloa käyttämään Steamia Chromebookilla</translation> <translation id="8985264973231822211">Aktiivinen <ph name="DEVICE_LAST_ACTIVATED_TIME" /> päivä sitten</translation> <translation id="8985661493893822002">Muodosta verkkoyhteys kirjautuaksesi laitteelle (<ph name="DEVICE_TYPE" />).</translation> +<translation id="8985661571449404298">Suojaamaton tiedosto ladattu</translation> <translation id="8986362086234534611">Unohda</translation> <translation id="8986494364107987395">Lähetä Googlelle käyttötilastoja ja virheraportteja automaattisesti</translation> <translation id="8987305927843254629">Jokainen henkilö voi tehdä kokemuksestaan omannäköisen ja pitää datan yksityisenä.</translation> @@ -10486,6 +10505,7 @@ <translation id="9116366756388192417">Valitse aihe</translation> <translation id="9116799625073598554">Muistiinpanosovellus</translation> <translation id="9117030152748022724">Sovellusvalinnat</translation> +<translation id="9119587891086680311">Nämä ominaisuudet hyödyntävät tekoälyä ja ne ovat vielä kehitysvaiheessa, joten ne eivät aina osu oikeaan.</translation> <translation id="9120362425083889527">Asennus ei onnistunut. Yritä uudelleen tai sulje tämä ikkuna</translation> <translation id="9120693811286642342"><ph name="BEGIN_PARAGRAPH1" />Asenna <ph name="DEVICE_OS" /> sisäiselle levylle, jotta saat parhaan käyttökokemuksen. Voit myös asentaa sen myöhemmin kirjautumisnäytöltä.<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />Jos et ole valmis asentamaan, voit kokeilla sitä USB:n kautta. Tämä säilyttää nykyisen käyttöjärjestelmäsi ja datasi, mutta tallennustila ja suorituskyky voivat olla rajallisia.<ph name="END_PARAGRAPH2" /></translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb index 8113a9a..ede609d 100644 --- a/chrome/app/resources/generated_resources_fil.xtb +++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -1132,7 +1132,6 @@ <translation id="1832848789136765277">Para matiyak na maa-access mo anumang oras ang iyong naka-sync na data, i-verify na ikaw ito</translation> <translation id="1834503245783133039">Hindi na-download: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Ina-upgrade ang Linux</translation> -<translation id="1835612721186505600">Pinapayagan ang access para sa mga app at website na may pahintulot sa camera</translation> <translation id="1838374766361614909">I-clear ang paghahanap</translation> <translation id="1839021455997460752">Ang iyong email address</translation> <translation id="1839540115464516994">Ipakita sa <ph name="LOCATION" /></translation> @@ -4595,7 +4594,6 @@ <translation id="4507128560633489176">Na-clear na ang data.</translation> <translation id="4507373251891673233">Na-block mo ang lahat ng extension mula sa <ph name="HOST" /></translation> <translation id="4507401683427517298">I-click ang “Magdagdag ng Shortcut”</translation> -<translation id="4508150454272293946">Payagan ang mga app at webpage na gamitin ang (mga) camera na nakakonekta sa device na ito. Kung may problema ka pa rin sa iyong camera, subukang i-restart ang app o i-refresh ang webpage.</translation> <translation id="450867954911715010">Mga setting ng pagiging naa-access</translation> <translation id="4508765956121923607">Tingnan ang P&inagmulan</translation> <translation id="4509277363725254222">Kapag nag-share ka ng kopya ng iyong <ph name="BEGIN_BOLD_USERNAME" />username<ph name="END_BOLD_USERNAME" /> at <ph name="BEGIN_BOLD_PASSWORD" />password<ph name="END_BOLD_PASSWORD" />, puwedeng ilagay ng miyembro ng pamilya mo ang mga ito gamit ang Google Password Manager</translation> @@ -8495,7 +8493,6 @@ <translation id="7610337976012700501">Para magamit ang <ph name="FEATURE_NAME" /> sa mga contact na ito, idagdag sa iyong mga contact ang email address na naka-link sa kanilang Google Account.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Lahat ng Extension</translation> -<translation id="7612401678989660900">Payagan ang access para sa mga app at website na may pahintulot sa mikropono</translation> <translation id="7612497353238585898">Aktibong site</translation> <translation id="7612655942094160088">Nag-e-enable sa mga feature ng nakakonektang telepono.</translation> <translation id="7612989789287281429">Sina-sign in ka…</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb index 11d2936..2378b746 100644 --- a/chrome/app/resources/generated_resources_fr-CA.xtb +++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -1120,7 +1120,6 @@ <translation id="1832848789136765277">Pour vous assurer de toujours pouvoir accéder à vos données de synchronisation, vérifiez qu'il s'agit bien de vous</translation> <translation id="1834503245783133039">Échec du téléchargement : <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Mise à niveau de Linux terminé</translation> -<translation id="1835612721186505600">Permettez l'accès à l'appareil photo aux applications et aux sites Web en détenant l'autorisation</translation> <translation id="1838374766361614909">Effacer les termes de recherche</translation> <translation id="1839021455997460752">Votre adresse de courriel</translation> <translation id="1839540115464516994">Afficher dans <ph name="LOCATION" /></translation> @@ -4571,7 +4570,6 @@ <translation id="4507128560633489176">Données effacées.</translation> <translation id="4507373251891673233">Vous avez bloqué toutes les extensions de <ph name="HOST" /></translation> <translation id="4507401683427517298">Cliquez sur « Ajouter un raccourci ».</translation> -<translation id="4508150454272293946">Autorisez les applications et les pages Web à utiliser le ou les appareils photo connectés à cet appareil. Si le problème avec votre appareil photo persiste, essayez de redémarrer l'application ou d'actualiser la page Web.</translation> <translation id="450867954911715010">Paramètres d'accessibilité</translation> <translation id="4508765956121923607">Voir le code s&ource</translation> <translation id="4509277363725254222">Lorsque vous partagez une copie de votre <ph name="BEGIN_BOLD_USERNAME" />nom d'utilisateur<ph name="END_BOLD_USERNAME" /> et de votre <ph name="BEGIN_BOLD_PASSWORD" />mot de passe<ph name="END_BOLD_PASSWORD" />, le membre de la famille peut les remplir à l'aide du gestionnaire de mots de passe Google.</translation> @@ -8465,7 +8463,6 @@ <translation id="7610337976012700501">Pour utiliser le <ph name="FEATURE_NAME" /> avec ces contacts, ajoutez l'adresse de courriel associée au compte Google de chacun d'entre eux à vos contacts.</translation> <translation id="7611713099524036757">méta</translation> <translation id="7612050744024016345">Toutes les extensions</translation> -<translation id="7612401678989660900">Permettez l'accès au microphone à toutes les applications et à tous les sites Web en détenant l'autorisation</translation> <translation id="7612497353238585898">Site actif</translation> <translation id="7612655942094160088">Active les fonctionnalités de téléphone connecté.</translation> <translation id="7612989789287281429">Connexion en cours…</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb index c07e868..f1d5340 100644 --- a/chrome/app/resources/generated_resources_fr.xtb +++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -378,6 +378,7 @@ <translation id="1281746473742296584">{NUM_OF_FILES,plural, =1{Impossible d'ouvrir le fichier}one{Impossible d'ouvrir le fichier}other{Impossible d'ouvrir les fichiers}}</translation> <translation id="1282311502488501110">Ne pas se connecter</translation> <translation id="1282465000333679776">Partager l'audio du système</translation> +<translation id="1283126956823499975">Un problème est survenu lors de la configuration de l'appareil</translation> <translation id="1284277788676816155">Ne pas autoriser l'enregistrement des données</translation> <translation id="1285320974508926690">Ne jamais traduire ce site</translation> <translation id="1285484354230578868">Stocker les données dans votre compte Google Drive</translation> @@ -1120,7 +1121,6 @@ <translation id="1832848789136765277">Pour toujours avoir accès à vos données synchronisées, confirmez votre identité</translation> <translation id="1834503245783133039">Échec du téléchargement : <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Mettre à niveau Linux</translation> -<translation id="1835612721186505600">Autoriser l'accès pour les applis et sites Web avec l'autorisation d'accès à l'appareil photo</translation> <translation id="1838374766361614909">Effacer la recherche</translation> <translation id="1839021455997460752">Votre adresse e-mail</translation> <translation id="1839540115464516994">Afficher dans <ph name="LOCATION" /></translation> @@ -4569,7 +4569,6 @@ <translation id="4507128560633489176">Données effacées.</translation> <translation id="4507373251891673233">Vous avez bloqué toutes les extensions pour <ph name="HOST" /></translation> <translation id="4507401683427517298">Cliquez sur "Ajouter un raccourci"</translation> -<translation id="4508150454272293946">Autorisez les applis et pages Web à utiliser les appareils photo connectés à cet appareil. Si le problème persiste, essayez de redémarrer l'appli ou d'actualiser la page Web.</translation> <translation id="450867954911715010">Paramètres d'accessibilité</translation> <translation id="4508765956121923607">Afficher la s&ource</translation> <translation id="4509277363725254222">Lorsque vous partagez une copie de votre <ph name="BEGIN_BOLD_USERNAME" />nom d'utilisateur<ph name="END_BOLD_USERNAME" /> et de votre <ph name="BEGIN_BOLD_PASSWORD" />mot de passe<ph name="END_BOLD_PASSWORD" />, le membre de votre famille peut les renseigner à l'aide du Gestionnaire de mots de passe de Google</translation> @@ -5017,6 +5016,7 @@ <translation id="4863769717153320198">La résolution est de <ph name="WIDTH" /> x <ph name="HEIGHT" /> (par défaut)</translation> <translation id="4864369630010738180">Connexion...</translation> <translation id="4864805589453749318">Sélectionne le parent qui t'autorise à ajouter un compte scolaire.</translation> +<translation id="4864905533117889071"><ph name="SENSOR_NAME" /> (bloqué)</translation> <translation id="486505726797718946">Mémoire économisée</translation> <translation id="486635084936119914">Ouvrir automatiquement certains types de fichiers après leur téléchargement</translation> <translation id="4867272607148176509">Les parents peuvent approuver ou bloquer des applis, définir des limites de temps d'utilisation et contrôler la navigation sur le Web. Un compte scolaire peut être ajouté plus tard pour accéder à la plupart des ressources scolaires.</translation> @@ -5510,6 +5510,7 @@ <translation id="5261619498868361045">Vous devez indiquer un nom de conteneur.</translation> <translation id="5261683757250193089">Ouvrir sur le Web Store</translation> <translation id="5261799091118902550">Ce fichier est peut-être un virus ou un logiciel malveillant. Vous pouvez l'envoyer à Google pour vérifier s'il est dangereux.</translation> +<translation id="5262334727506665688">Continuez à enregistrer les mots de passe dans votre compte Google</translation> <translation id="5262784498883614021">Se connecter automatiquement au réseau</translation> <translation id="5263656105659419083">Pour revenir facilement au panneau latéral, cliquez sur "Épingler" en haut à droite</translation> <translation id="5264148714798105376">Cette opération peut prendre environ une minute.</translation> @@ -7050,6 +7051,7 @@ <translation id="649396225532207613">Ce fichier peut compromettre vos comptes personnels et de réseaux sociaux</translation> <translation id="6494327278868541139">Afficher les détails de la protection renforcée</translation> <translation id="6494445798847293442">N'est pas une autorité de certification</translation> +<translation id="6494483173119160146">Une erreur irrécupérable s'est produite. Veuillez réinitialiser votre appareil (cela effacera toutes les données utilisateur), puis réessayer.</translation> <translation id="6497784818439587832">Agrandissez ou réduisez la taille des éléments à l'écran</translation> <translation id="6497789971060331894">Défilement inversé avec la souris</translation> <translation id="6498249116389603658">&Toutes vos langues</translation> @@ -8465,7 +8467,6 @@ <translation id="7610337976012700501">Pour utiliser le <ph name="FEATURE_NAME" /> avec ces contacts, ajoutez à ceux-ci l'adresse e-mail associée à leur compte Google.</translation> <translation id="7611713099524036757">méta</translation> <translation id="7612050744024016345">Toutes les extensions</translation> -<translation id="7612401678989660900">Autoriser l'accès pour les applis et sites Web avec l'autorisation d'accès au micro</translation> <translation id="7612497353238585898">Site actif</translation> <translation id="7612655942094160088">Activation des fonctionnalités connectées du téléphone.</translation> <translation id="7612989789287281429">Connexion…</translation> @@ -9528,6 +9529,7 @@ <translation id="8397825320644530257">Dissocier le téléphone connecté</translation> <translation id="8398877366907290961">Poursuivre quand même</translation> <translation id="8399282673057829204">Afficher le mot de passe</translation> +<translation id="839949601275221554">Une erreur s'est produite. Veuillez redémarrer votre appareil et réessayer.</translation> <translation id="8401432541486058167">Utilisez le code associé à votre carte à puce.</translation> <translation id="8401772916834964810">{COUNT,plural, =0{Chrome bloquera de nouveau les cookies aujourd'hui}=1{Chrome bloquera de nouveau les cookies demain}one{Chrome bloquera de nouveau les cookies dans # jour}other{Chrome bloquera de nouveau les cookies dans # jours}}</translation> <translation id="8403618281196981152">Vos données dans Chrome</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb index 2870fd2..e7108b8 100644 --- a/chrome/app/resources/generated_resources_gl.xtb +++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -1118,7 +1118,6 @@ <translation id="1832848789136765277">Para asegurarte de poder acceder sempre aos teus datos sincronizados, verifica a túa identidade</translation> <translation id="1834503245783133039">Non se descargou correctamente o ficheiro <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Actualizando Linux</translation> -<translation id="1835612721186505600">Permite o acceso á cámara a todas as aplicacións e sitios web autorizados</translation> <translation id="1838374766361614909">Borrar busca</translation> <translation id="1839021455997460752">O teu enderezo de correo electrónico</translation> <translation id="1839540115464516994">Mostrar en: <ph name="LOCATION" /></translation> @@ -4570,7 +4569,6 @@ <translation id="4507128560633489176">Datos borrados.</translation> <translation id="4507373251891673233">Bloqueaches todas as extensións de <ph name="HOST" /></translation> <translation id="4507401683427517298">Fai clic en Engadir atallo</translation> -<translation id="4508150454272293946">Permite que as aplicacións e páxinas web usen as cámaras conectadas a este dispositivo. Se segues tendo problemas coa cámara, proba a reiniciar a aplicación ou actualiza a páxina web.</translation> <translation id="450867954911715010">Configuración de accesibilidade</translation> <translation id="4508765956121923607">Ver código f&onte</translation> <translation id="4509277363725254222">Se compartes unha copia do teu <ph name="BEGIN_BOLD_USERNAME" />nome de usuario<ph name="END_BOLD_USERNAME" /> e <ph name="BEGIN_BOLD_PASSWORD" />contrasinal<ph name="END_BOLD_PASSWORD" />, o membro da túa familia poderá completalos co xestor de contrasinais de Google</translation> @@ -8459,7 +8457,6 @@ <translation id="7610337976012700501">Para poder usar <ph name="FEATURE_NAME" /> con estes contactos, engade aos teus contactos o enderezo de correo electrónico vinculado á súa Conta de Google.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Todas as extensións</translation> -<translation id="7612401678989660900">Permite o acceso ao micrófono a todas as aplicacións e sitios web autorizados</translation> <translation id="7612497353238585898">Sitio activo</translation> <translation id="7612655942094160088">Activar funcións do teléfono conectado.</translation> <translation id="7612989789287281429">Iniciando sesión…</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb index dc705ab9..0723e1ba 100644 --- a/chrome/app/resources/generated_resources_gu.xtb +++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -1117,7 +1117,6 @@ <translation id="1832848789136765277">તમે તમારો સિંક કરેલો ડેટા ગમે ત્યારે ઍક્સેસ કરી શકો છો, એની ખાતરી કરવા માટે, આ તમે જ છો તેની ચકાસણી કરો</translation> <translation id="1834503245783133039">ડાઉનલોડ અસફળ: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux અપગ્રેડ કરી રહ્યાં છીએ</translation> -<translation id="1835612721186505600">કૅમેરાની પરવાનગી ધરાવતી બધી ઍપ અને વેબસાઇટ માટે, ઍક્સેસની મંજૂરી આપો</translation> <translation id="1838374766361614909">શોધ સાફ કરો</translation> <translation id="1839021455997460752">તમારું ઇમેઇલ ઍડ્રેસ</translation> <translation id="1839540115464516994"><ph name="LOCATION" />માં બતાવો</translation> @@ -4576,7 +4575,6 @@ <translation id="4507128560633489176">ડેટા સાફ કરવામાં આવ્યો.</translation> <translation id="4507373251891673233">તમે <ph name="HOST" />ના તમામ એક્સ્ટેન્શન બ્લૉક કર્યા છે</translation> <translation id="4507401683427517298">“શૉર્ટકટ ઉમેરો” પર ક્લિક કરો</translation> -<translation id="4508150454272293946">ઍપ અને વેેબપેજને આ ડિવાઇસ સાથે કનેક્ટેડ કૅમેરાનો ઉપયોગ કરવાની મંજૂરી આપો. જો તમારે હજી સુધી તમારા કૅમેરા સંબંધિત કોઈ સમસ્યા હોય, તો ઍપ ફરી શરૂ કરી જુઓ કે વેેબપેજ રિફ્રેશ કરી જુઓ.</translation> <translation id="450867954911715010">ઍક્સેસિબિલિટી સેટિંગ્સ</translation> <translation id="4508765956121923607">&સ્રોત જુઓ</translation> <translation id="4509277363725254222">તમે તમારા <ph name="BEGIN_BOLD_USERNAME" />વપરાશકર્તા નામ<ph name="END_BOLD_USERNAME" /> અને <ph name="BEGIN_BOLD_PASSWORD" />પાસવર્ડ<ph name="END_BOLD_PASSWORD" />ની એક કૉપિ શેર કરો ત્યારે, તમારા કુટુંબનો સભ્ય તેમને Google Password Managerનો ઉપયોગ કરીને ભરી શકે છે</translation> @@ -8478,7 +8476,6 @@ <translation id="7610337976012700501">આ સંપર્કો સાથે <ph name="FEATURE_NAME" />નો ઉપયોગ કરવા માટે, તેમના Google એકાઉન્ટ સાથે લિંક કરવામાં આવેલું ઇમેઇલ ઍડ્રેસ તમારા સંપર્કોમાં ઉમેરો.</translation> <translation id="7611713099524036757">Meta</translation> <translation id="7612050744024016345">તમામ એક્સ્ટેન્શન</translation> -<translation id="7612401678989660900">માઇક્રોફોનની પરવાનગી ધરાવતી બધી ઍપ અને વેબસાઇટ માટે, ઍક્સેસની મંજૂરી આપો</translation> <translation id="7612497353238585898">સક્રિય સાઇટ</translation> <translation id="7612655942094160088">કનેક્ટ કરેલી ફોન સુવિધાઓ ચાલુ છે.</translation> <translation id="7612989789287281429">તમને સાઇન ઇન કરી રહ્યાં છીએ…</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb index dddf485..043e2ac 100644 --- a/chrome/app/resources/generated_resources_hi.xtb +++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -1131,7 +1131,6 @@ <translation id="1832848789136765277">यह पक्का करने के लिए कि आप हमेशा अपना सिंक किया हुआ डेटा ऐक्सेस कर सकें, अपनी पहचान की पुष्टि करें</translation> <translation id="1834503245783133039">फ़ाइल डाउनलोड नहीं हो सकी: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux को बेहतर बनाया जा रहा है</translation> -<translation id="1835612721186505600">ऐसे सभी ऐप्लिकेशन और वेबसाइटों को कैमरे का ऐक्सेस दें जिनके पास कैमरा इस्तेमाल करने की अनुमति है</translation> <translation id="1838374766361614909">खोज साफ़ करें</translation> <translation id="1839021455997460752">आपका ईमेल पता</translation> <translation id="1839540115464516994"><ph name="LOCATION" /> में दिखाएं</translation> @@ -4584,7 +4583,6 @@ <translation id="4507128560633489176">डेटा मिटाया गया.</translation> <translation id="4507373251891673233">आपने <ph name="HOST" /> के लिए, सभी एक्सटेंशन को ब्लॉक कर दिया है</translation> <translation id="4507401683427517298">“शॉर्टकट जोड़ें” पर क्लिक करें</translation> -<translation id="4508150454272293946">ऐप्लिकेशन और वेबपेजों को, इस डिवाइस से कनेक्ट किए गए कैमरे का इस्तेमाल करने की अनुमति दें. अगर आपको अब भी अपने कैमरे में कोई समस्या आ रही है, तो ऐप्लिकेशन को रीस्टार्ट करें या वेबपेज को रीफ़्रेश करके देखें.</translation> <translation id="450867954911715010">सुलभता सेटिंग</translation> <translation id="4508765956121923607">स्रोत देखें</translation> <translation id="4509277363725254222">अपने <ph name="BEGIN_BOLD_USERNAME" />उपयोगकर्ता नाम<ph name="END_BOLD_USERNAME" /> और <ph name="BEGIN_BOLD_PASSWORD" />पासवर्ड<ph name="END_BOLD_PASSWORD" /> की कॉपी शेयर करने पर, आपके फ़ैमिली ग्रुप का सदस्य, Google Password Manager की मदद से उनका इस्तेमाल कर सकता है</translation> @@ -8478,7 +8476,6 @@ <translation id="7610337976012700501">इन संपर्कों के साथ <ph name="FEATURE_NAME" /> का इस्तेमाल करने के लिए, उनके Google खाते से लिंक किए गए ईमेल पते अपने संपर्कों में जोड़ें.</translation> <translation id="7611713099524036757">मेटा</translation> <translation id="7612050744024016345">सभी एक्सटेंशन</translation> -<translation id="7612401678989660900">ऐसे सभी ऐप्लिकेशन और वेबसाइटों को माइक्रोफ़ोन का ऐक्सेस दें जिनके पास माइक्रोफ़ोन इस्तेमाल करने की अनुमति है</translation> <translation id="7612497353238585898">साइट खुली है</translation> <translation id="7612655942094160088">कनेक्ट किए गए फ़ोन की सुविधाएं चालू करें.</translation> <translation id="7612989789287281429">साइन इन किया जा रहा है…</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb index ed2d68da..e3ac03e 100644 --- a/chrome/app/resources/generated_resources_hr.xtb +++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -1122,7 +1122,6 @@ <translation id="1832848789136765277">Da biste uvijek mogli pristupati svojim podacima za sinkronizaciju, potvrdite da ste to vi</translation> <translation id="1834503245783133039">Preuzimanje nije uspjelo: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Nadogradnja Linuxa</translation> -<translation id="1835612721186505600">Dopustite pristup za aplikacije i web-lokacije s dopuštenjem za kameru</translation> <translation id="1838374766361614909">Brisanje pretraživanja</translation> <translation id="1839021455997460752">Vaša e-adresa</translation> <translation id="1839540115464516994">Prikaži na lokaciji <ph name="LOCATION" /></translation> @@ -4581,7 +4580,6 @@ <translation id="4507128560633489176">Podaci su izbrisani.</translation> <translation id="4507373251891673233">Blokirali ste sva proširenja s <ph name="HOST" /></translation> <translation id="4507401683427517298">Kliknite Dodaj prečac</translation> -<translation id="4508150454272293946">Dopustite aplikacijama i web-stranicama upotrebu fotoaparata povezanih s ovim uređajem. Ako i dalje imate problema s fotoaparatom, pokušajte ponovo pokrenuti aplikaciju ili osvježiti web-stranicu.</translation> <translation id="450867954911715010">Postavke pristupačnosti</translation> <translation id="4508765956121923607">Pogledaj i&zvor</translation> <translation id="4509277363725254222">Kad podijelite kopiju svojeg <ph name="BEGIN_BOLD_USERNAME" />korisničkog imena<ph name="END_BOLD_USERNAME" /> i <ph name="BEGIN_BOLD_PASSWORD" />zaporke<ph name="END_BOLD_PASSWORD" />, član vaše obitelji može ih unijeti pomoću Google upravitelja zaporki.</translation> @@ -8480,7 +8478,6 @@ <translation id="7610337976012700501">Da biste značajku <ph name="FEATURE_NAME" /> upotrebljavali s tim kontaktima, u kontakte dodajte e-adrese povezane s njihovim Google računima.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Sva proširenja</translation> -<translation id="7612401678989660900">Dopustite pristup za aplikacije i web-lokacije s dopuštenjem za mikrofon</translation> <translation id="7612497353238585898">Aktivna web-lokacija</translation> <translation id="7612655942094160088">Omogućivanje značajki povezanog telefona.</translation> <translation id="7612989789287281429">Prijavljivanje…</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb index f14ca2c..9d097f4 100644 --- a/chrome/app/resources/generated_resources_hu.xtb +++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -1131,7 +1131,6 @@ <translation id="1832848789136765277">Igazolja személyazonosságát, hogy mindig hozzáférhessen szinkronizált adataihoz</translation> <translation id="1834503245783133039">Sikertelen letöltés: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">A Linux frissítése</translation> -<translation id="1835612721186505600">Engedélyezi a hozzáférést a kamerahasználati engedéllyel rendelkező alkalmazásoknak és webhelyeknek</translation> <translation id="1838374766361614909">Keresett kifejezés törlése</translation> <translation id="1839021455997460752">Az Ön e-mail-címe</translation> <translation id="1839540115464516994">Megjelenítés itt: <ph name="LOCATION" /></translation> @@ -4583,7 +4582,6 @@ <translation id="4507128560633489176">Adatok törölve.</translation> <translation id="4507373251891673233">Ön letiltotta az összes bővítményt innen: <ph name="HOST" /></translation> <translation id="4507401683427517298">Kattintson a „Parancsikon hozzáadása” lehetőségre</translation> -<translation id="4508150454272293946">Az alkalmazások és weboldalak használhatják az eszközhöz csatlakoztatott kamerát vagy kamerákat. Ha továbbra is problémákat tapasztal a kamerával, próbálja újraindítani az alkalmazást, vagy frissítse a weboldalt.</translation> <translation id="450867954911715010">Kisegítő beállítások</translation> <translation id="4508765956121923607">F&orrás megtekintése</translation> <translation id="4509277363725254222">Ha megosztja <ph name="BEGIN_BOLD_USERNAME" />felhasználónevét<ph name="END_BOLD_USERNAME" /> és <ph name="BEGIN_BOLD_PASSWORD" />jelszavát<ph name="END_BOLD_PASSWORD" />, akkor családtagja kitöltheti őket a Google Jelszókezelővel.</translation> @@ -8479,7 +8477,6 @@ <translation id="7610337976012700501">Ha ezekkel a névjegyekkel szeretné használni a(z) <ph name="FEATURE_NAME" /> funkciót, vegye fel a Google-fiókjukhoz tartozó e-mail-címüket a névjegyek közé.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Minden bővítmény</translation> -<translation id="7612401678989660900">Engedélyezi a hozzáférést a mikrofonhasználati engedéllyel rendelkező alkalmazásoknak és webhelyeknek</translation> <translation id="7612497353238585898">Aktív webhely</translation> <translation id="7612655942094160088">Telefonos kapcsolatot használó funkciók engedélyezése.</translation> <translation id="7612989789287281429">Bejelentkezés…</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb index f8ecbc7..1c1edde 100644 --- a/chrome/app/resources/generated_resources_hy.xtb +++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -1121,7 +1121,6 @@ <translation id="1832848789136765277">Հաստատեք ձեր ինքնությունը, որպեսզի համաժամացված տվյալները միշտ հասանելի լինեն ձեզ</translation> <translation id="1834503245783133039">Չհաջողվեց ներբեռնել՝ <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Լինուքսը նորացվում է</translation> -<translation id="1835612721186505600">Հասանելի դարձնել հավելվածների և կայքերի համար, որոնք ունեն տեսախցիկի օգտագործման թույլտվություն</translation> <translation id="1838374766361614909">Մաքրել որոնումը</translation> <translation id="1839021455997460752">Ձեր էլ. հասցեն</translation> <translation id="1839540115464516994">Ցույց տալ <ph name="LOCATION" /> ծառայությունում</translation> @@ -4566,7 +4565,6 @@ <translation id="4507128560633489176">Տվյալները ջնջվեցին։</translation> <translation id="4507373251891673233">Դուք արգելափակել եք <ph name="HOST" /> կայքի բոլոր ընդլայնումները</translation> <translation id="4507401683427517298">Սեղմեք «Ավելացնել դյուրանցում»</translation> -<translation id="4508150454272293946">Թույլատրեք հավելվածներին ու վեբ էջերին օգտագործել այս սարքին միացված տեսախցիկ(ներ)ը։ Եթե տեսախցիկի հետ կապված խնդիրը չլուծվի, վերագործարկեք հավելվածը կամ թարմացրեք կայքէջը։</translation> <translation id="450867954911715010">Հատուկ գործառույթների կարգավորումներ</translation> <translation id="4508765956121923607">Դիտել աղ&բյուրը</translation> <translation id="4509277363725254222">Եթե դուք տրամադրեք ձեր <ph name="BEGIN_BOLD_USERNAME" />օգտանվան<ph name="END_BOLD_USERNAME" /> և <ph name="BEGIN_BOLD_PASSWORD" />գաղտնաբառի<ph name="END_BOLD_PASSWORD" /> պատճենը, ձեր ընտանիքի անդամները կկարողանան դրանք օգտագործել Google գաղտնաբառերի կառավարչի միջոցով։</translation> @@ -8458,7 +8456,6 @@ <translation id="7610337976012700501">«<ph name="FEATURE_NAME" />» գործառույթն այս կոնտակտների հետ օգտագործելու համար ավելացրեք նրանց Google հաշիվների հետ կապված էլ․ հասցեները ձեր կոնտակտներում։</translation> <translation id="7611713099524036757">Meta</translation> <translation id="7612050744024016345">Բոլոր ընդլայնումները</translation> -<translation id="7612401678989660900">Հասանելի դարձնել հավելվածների և կայքերի համար, որոնք ունեն խոսափողի օգտագործման թույլտվություն</translation> <translation id="7612497353238585898">Ակտիվ կայք</translation> <translation id="7612655942094160088">Միացնել կապակցված հեռախոսի գործառույթները։</translation> <translation id="7612989789287281429">Մուտք…</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb index dcba403..252f62f3 100644 --- a/chrome/app/resources/generated_resources_id.xtb +++ b/chrome/app/resources/generated_resources_id.xtb
@@ -1130,7 +1130,6 @@ <translation id="1832848789136765277">Untuk memastikan Anda selalu dapat mengakses data yang disinkronkan, verifikasi diri Anda</translation> <translation id="1834503245783133039">Download tidak berhasil: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Mengupgrade Linux</translation> -<translation id="1835612721186505600">Mengizinkan akses untuk aplikasi dan situs yang memiliki izin kamera</translation> <translation id="1838374766361614909">Hapus penelusuran</translation> <translation id="1839021455997460752">Alamat email Anda</translation> <translation id="1839540115464516994">Tampilkan di <ph name="LOCATION" /></translation> @@ -4584,7 +4583,6 @@ <translation id="4507128560633489176">Data dihapus.</translation> <translation id="4507373251891673233">Anda memblokir semua ekstensi dari <ph name="HOST" /></translation> <translation id="4507401683427517298">Klik “Tambahkan Pintasan”</translation> -<translation id="4508150454272293946">Izinkan aplikasi dan halaman web untuk menggunakan kamera yang terhubung ke perangkat ini. Jika Anda masih mengalami masalah dengan kamera, coba mulai ulang aplikasi atau muat ulang halaman web.</translation> <translation id="450867954911715010">Setelan aksesibilitas</translation> <translation id="4508765956121923607">Lihat S&umber</translation> <translation id="4509277363725254222">Jika Anda membagikan salinan <ph name="BEGIN_BOLD_USERNAME" />nama pengguna<ph name="END_BOLD_USERNAME" /> dan <ph name="BEGIN_BOLD_PASSWORD" />sandi<ph name="END_BOLD_PASSWORD" />, anggota keluarga Anda dapat mengisinya menggunakan Pengelola Sandi Google</translation> @@ -8476,7 +8474,6 @@ <translation id="7610337976012700501">Untuk menggunakan <ph name="FEATURE_NAME" /> dengan kontak ini, tambahkan alamat email yang ditautkan dengan Akun Google mereka ke kontak Anda.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Semua Ekstensi</translation> -<translation id="7612401678989660900">Mengizinkan akses untuk aplikasi dan situs yang memiliki izin mikrofon</translation> <translation id="7612497353238585898">Situs aktif</translation> <translation id="7612655942094160088">Fitur telepon yang terhubung aktif.</translation> <translation id="7612989789287281429">Memproses login Anda…</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb index dcafc3d..2a5c812 100644 --- a/chrome/app/resources/generated_resources_is.xtb +++ b/chrome/app/resources/generated_resources_is.xtb
@@ -1131,7 +1131,6 @@ <translation id="1832848789136765277">Staðfestu að þetta sért þú til að hafa alltaf aðgang að samstillingargögnunum þínum</translation> <translation id="1834503245783133039">Niðurhal mistókst: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Uppfærir Linux</translation> -<translation id="1835612721186505600">Veita forritum og vefsvæðum með myndavélarheimild aðgang</translation> <translation id="1838374766361614909">Hreinsa leit</translation> <translation id="1839021455997460752">Netfangið þitt</translation> <translation id="1839540115464516994">Birta í <ph name="LOCATION" /></translation> @@ -4585,7 +4584,6 @@ <translation id="4507128560633489176">Gögn hreinsuð.</translation> <translation id="4507373251891673233">Þú lokaðir fyrir allar viðbætur frá <ph name="HOST" /></translation> <translation id="4507401683427517298">Smelltu á „Bæta við flýtileið“</translation> -<translation id="4508150454272293946">Leyfa forritum og vefsíðum að nota myndavélina/-vélarnar sem eru tengdar þessu tæki. Ef þú átt enn í vandræðum með myndavélina skaltu prófa að endurræsa forritið eða uppfæra vefsíðuna.</translation> <translation id="450867954911715010">Aðgengisstillingar</translation> <translation id="4508765956121923607">Sk&oða frumkóða</translation> <translation id="4509277363725254222">Þegar þú deilir afriti af <ph name="BEGIN_BOLD_USERNAME" />notandanafninu<ph name="END_BOLD_USERNAME" /> og <ph name="BEGIN_BOLD_PASSWORD" />aðgangsorðinu<ph name="END_BOLD_PASSWORD" /> þínu getur fjölskyldumeðlimur notað þau með Google-aðgangsorðastjórnun</translation> @@ -8479,7 +8477,6 @@ <translation id="7610337976012700501">Til að nota „<ph name="FEATURE_NAME" />“ með þessum tengiliðum skaltu bæta netföngunum sem eru tengd við Google-reikninga þeirra við tengiliðina þína.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Allar viðbætur</translation> -<translation id="7612401678989660900">Veita forritum og vefsvæðum með hljóðnemaheimild aðgang</translation> <translation id="7612497353238585898">Virkt vefsvæði</translation> <translation id="7612655942094160088">Kveikja á tengdum eiginleikum í síma</translation> <translation id="7612989789287281429">Skráir þig inn…</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb index 2910bde1..fd57ba1 100644 --- a/chrome/app/resources/generated_resources_it.xtb +++ b/chrome/app/resources/generated_resources_it.xtb
@@ -377,6 +377,7 @@ <translation id="1281746473742296584">{NUM_OF_FILES,plural, =1{Impossibile aprire il file}other{Impossibile aprire i file}}</translation> <translation id="1282311502488501110">Non accedere</translation> <translation id="1282465000333679776">Condividi audio di sistema</translation> +<translation id="1283126956823499975">Si è verificato un problema durante la configurazione del dispositivo</translation> <translation id="1284277788676816155">Non consentire il salvataggio dei dati</translation> <translation id="1285320974508926690">Non tradurre mai questo sito</translation> <translation id="1285484354230578868">Memorizza dati nel tuo account Google Drive</translation> @@ -1119,7 +1120,6 @@ <translation id="1832848789136765277">Per assicurarti di poter accedere ai tuoi dati di sincronizzazione in qualsiasi momento, verifica la tua identità</translation> <translation id="1834503245783133039">Download non riuscito: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Upgrade di Linux</translation> -<translation id="1835612721186505600">Consenti l'accesso per siti web e app che hanno l'autorizzazione di accesso alla fotocamera</translation> <translation id="1838374766361614909">Cancella ricerca</translation> <translation id="1839021455997460752">Il tuo indirizzo email</translation> <translation id="1839540115464516994">Mostra su <ph name="LOCATION" /></translation> @@ -4568,7 +4568,6 @@ <translation id="4507128560633489176">Dati cancellati.</translation> <translation id="4507373251891673233">Hai impedito a tutte le estensioni di accedere a <ph name="HOST" /></translation> <translation id="4507401683427517298">Fai clic su "Aggiungi scorciatoia"</translation> -<translation id="4508150454272293946">Consenti ad app e pagine web di utilizzare le fotocamere collegate a questo dispositivo. Se hai ancora problemi con la fotocamera, prova a riavviare l'app o ad aggiornare la pagina web.</translation> <translation id="450867954911715010">Impostazioni di accessibilità</translation> <translation id="4508765956121923607">Visualizza s&orgente</translation> <translation id="4509277363725254222">Quando condividi una copia del tuo <ph name="BEGIN_BOLD_USERNAME" />nome utente<ph name="END_BOLD_USERNAME" /> e della tua <ph name="BEGIN_BOLD_PASSWORD" />password<ph name="END_BOLD_PASSWORD" />, il membro del tuo gruppo Famiglia può inserirli utilizzando Gestore delle password di Google</translation> @@ -5016,6 +5015,7 @@ <translation id="4863769717153320198">Risoluzione di <ph name="WIDTH" /> x <ph name="HEIGHT" /> (valore predefinito)</translation> <translation id="4864369630010738180">Accesso in corso...</translation> <translation id="4864805589453749318">Seleziona il genitore che sta concedendo l'autorizzazione per aggiungere un account della scuola.</translation> +<translation id="4864905533117889071"><ph name="SENSOR_NAME" /> (bloccato)</translation> <translation id="486505726797718946">Ricordo salvato</translation> <translation id="486635084936119914">Apri automaticamente determinati tipi di file dopo il download</translation> <translation id="4867272607148176509">I genitori possono approvare o bloccare le app, impostare limiti di tempo e controllare la navigazione sul web. Un account della scuola può essere aggiunto in un secondo momento per accedere alla maggior parte delle risorse scolastiche.</translation> @@ -5509,6 +5509,7 @@ <translation id="5261619498868361045">È necessario specificare il nome del contenitore.</translation> <translation id="5261683757250193089">Apri nel Web Store</translation> <translation id="5261799091118902550">Questo file potrebbe essere un virus o un malware. Puoi inviarlo a Google per verificare se non è sicuro.</translation> +<translation id="5262334727506665688">Continua a salvare le password nel tuo Account Google</translation> <translation id="5262784498883614021">Collegati automaticamente alla rete</translation> <translation id="5263656105659419083">Per tornare facilmente al riquadro laterale, fai clic su Fissa in alto a destra</translation> <translation id="5264148714798105376">L'operazione potrebbe richiedere un minuto circa.</translation> @@ -7045,6 +7046,7 @@ <translation id="649396225532207613">Questo file può danneggiare i tuoi account personali e dei social network</translation> <translation id="6494327278868541139">Mostra dettagli della protezione avanzata</translation> <translation id="6494445798847293442">Non è un'autorità di certificazione</translation> +<translation id="6494483173119160146">Si è verificato un errore irreversibile con il dispositivo. Reimposta il dispositivo (verranno resettati tutti i dati utente) e riprova.</translation> <translation id="6497784818439587832">Modifica le dimensioni del display per ingrandire o ridurre gli elementi visualizzati sullo schermo</translation> <translation id="6497789971060331894">Scorrimento invertito del mouse</translation> <translation id="6498249116389603658">&Tutte le tue lingue</translation> @@ -8458,7 +8460,6 @@ <translation id="7610337976012700501">Per usare la funzionalità <ph name="FEATURE_NAME" /> con questi contatti, aggiungi ai tuoi contatti l'indirizzo email collegato al loro Account Google.</translation> <translation id="7611713099524036757">Meta</translation> <translation id="7612050744024016345">Tutte le estensioni</translation> -<translation id="7612401678989660900">Consenti l'accesso per siti web e app che hanno l'autorizzazione di accesso al microfono</translation> <translation id="7612497353238585898">Sito attivo</translation> <translation id="7612655942094160088">Attiva le funzionalità collegate al telefono.</translation> <translation id="7612989789287281429">Accesso in corso…</translation> @@ -9521,6 +9522,7 @@ <translation id="8397825320644530257">Disconnettere un telefono connesso</translation> <translation id="8398877366907290961">Procedi comunque</translation> <translation id="8399282673057829204">Visualizza password</translation> +<translation id="839949601275221554">Si è verificato un errore con il dispositivo. Riavvia il dispositivo e riprova.</translation> <translation id="8401432541486058167">Specifica il PIN associato alla tua smart card.</translation> <translation id="8401772916834964810">{COUNT,plural, =0{Chrome bloccherà nuovamente i cookie oggi}=1{Chrome bloccherà nuovamente i cookie domani}other{# giorni al nuovo blocco dei cookie in Chrome}}</translation> <translation id="8403618281196981152">I tuoi dati in Chrome</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb index 870b9bc..2918c56 100644 --- a/chrome/app/resources/generated_resources_iw.xtb +++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -1129,7 +1129,6 @@ <translation id="1832848789136765277">כדי לוודא שתמיד תהיה לך גישה לנתונים המסונכרנים שלך, עליך לאמת את זהותך</translation> <translation id="1834503245783133039">ההורדה נכשלה: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux שודרגה</translation> -<translation id="1835612721186505600">מתן גישה לאפליקציות ולאתרים עם הרשאת גישה למצלמה</translation> <translation id="1838374766361614909">ניקוי חיפוש</translation> <translation id="1839021455997460752">כתובת האימייל שלך</translation> <translation id="1839540115464516994">הצגה ב-<ph name="LOCATION" /></translation> @@ -4585,7 +4584,6 @@ <translation id="4507128560633489176">הנתונים נוקו.</translation> <translation id="4507373251891673233">חסמת את כל התוספים מ-<ph name="HOST" /></translation> <translation id="4507401683427517298">לוחצים על 'הוספת קיצור דרך'</translation> -<translation id="4508150454272293946">צריך לתת לאפליקציות ולדפי אינטרנט הרשאה להשתמש במצלמות שמחוברות למכשיר הזה. אם הבעיות במצלמה נמשכות, אפשר לנסות להפעיל מחדש את האפליקציה או לרענן את דף האינטרנט.</translation> <translation id="450867954911715010">הגדרות נגישות</translation> <translation id="4508765956121923607">הצגת מ&קור</translation> <translation id="4509277363725254222">כשמשתפים עותק של <ph name="BEGIN_BOLD_USERNAME" />שם המשתמש<ph name="END_BOLD_USERNAME" /> ו<ph name="BEGIN_BOLD_PASSWORD" />הסיסמה<ph name="END_BOLD_PASSWORD" />, החברים בקבוצה המשפחתית יכולים למלא את הפרטים האלה באמצעות מנהל הסיסמאות של Google.</translation> @@ -8482,7 +8480,6 @@ <translation id="7610337976012700501">כדי להשתמש ב<ph name="FEATURE_NAME" /> עם אנשי הקשר האלה, עליך להוסיף להם את כתובת האימייל שמשויכת לחשבון Google שלהם.</translation> <translation id="7611713099524036757">Meta</translation> <translation id="7612050744024016345">כל התוספים</translation> -<translation id="7612401678989660900">מתן גישה לאפליקציות ולאתרים עם הרשאת גישה למיקרופון</translation> <translation id="7612497353238585898">אתר פעיל</translation> <translation id="7612655942094160088">הפעלת תכונות הטלפון המקושר.</translation> <translation id="7612989789287281429">מתבצעת כניסה לחשבון…</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb index 5794d4c..e03b7a52 100644 --- a/chrome/app/resources/generated_resources_ja.xtb +++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -377,6 +377,7 @@ <translation id="1281746473742296584">{NUM_OF_FILES,plural, =1{ファイルを開けません}other{ファイルを開けません}}</translation> <translation id="1282311502488501110">ログインしない</translation> <translation id="1282465000333679776">システムの音声を共有</translation> +<translation id="1283126956823499975">デバイスの設定中にエラーが発生しました</translation> <translation id="1284277788676816155">データの保存を許可しない</translation> <translation id="1285320974508926690">このサイトは翻訳しない</translation> <translation id="1285484354230578868">Google ドライブ アカウントでのデータの保存</translation> @@ -1099,6 +1100,7 @@ <translation id="1823768272150895732">フォント</translation> <translation id="1823781806707127806">既存の閲覧データを管理対象プロファイルに追加する</translation> <translation id="18245044880483936">バックアップ データは、お子様のドライブの保存容量にはカウントされません。</translation> +<translation id="1825073796163165618">リンクを有効にする</translation> <translation id="1825565032302550710">ポートは 1024~65535 の範囲で指定してください</translation> <translation id="182577151972096764">最近表示したレシピ</translation> <translation id="18260074040409954">保存したパスワードはどのデバイスでも使用できます。パスワードは、<ph name="EMAIL" /> の <ph name="GOOGLE_PASSWORD_MANAGER" /> に保存されます。</translation> @@ -1118,7 +1120,6 @@ <translation id="1832848789136765277">同期データに常にアクセスできるようにするには、本人確認を行ってください</translation> <translation id="1834503245783133039"><ph name="FILE_NAME" /> をダウンロードできませんでした</translation> <translation id="1835261175655098052">Linux をアップグレードしています</translation> -<translation id="1835612721186505600">カメラへのアクセス権を持つアプリとウェブサイトに対して、アクセスを許可します</translation> <translation id="1838374766361614909">検索をクリア</translation> <translation id="1839021455997460752">メールアドレス</translation> <translation id="1839540115464516994"><ph name="LOCATION" /> で表示</translation> @@ -1335,6 +1336,7 @@ <translation id="1997616988432401742">ユーザーの証明書</translation> <translation id="1999115740519098545">起動時</translation> <translation id="2002109485265116295">リアルタイム</translation> +<translation id="2002160221914907025">試験運用版 AI</translation> <translation id="2003130567827682533">「<ph name="NAME" />」データサービスを有効にするには、まず Wi-Fi ネットワークに接続してください</translation> <translation id="2004413981947727241">任意のデバイスでパスワードを使用する</translation> <translation id="2004697686368036666">一部のサイトで機能を使用できなくなる可能性があります</translation> @@ -1989,6 +1991,7 @@ <translation id="2482878487686419369">通知</translation> <translation id="2482895651873876648">タブを <ph name="GROUP_NAME" /> グループに移動しました - <ph name="GROUP_CONTENTS" /></translation> <translation id="2483627560139625913">Chrome ブラウザ設定で検索エンジンを設定</translation> +<translation id="2483698983806594329">未確認のファイルをダウンロードしました</translation> <translation id="2484743711056182585">権限を削除</translation> <translation id="2484909293434545162">サイトが Cookie を使用している場合は、ここに表示されます</translation> <translation id="2484959914739448251">同期しているすべてのデバイスと Google アカウントから閲覧データを削除するには、<ph name="BEGIN_LINK" />パスフレーズを入力<ph name="END_LINK" />してください。</translation> @@ -2127,6 +2130,7 @@ <translation id="2589658397149952302">ドライブ ファイルを表示しない</translation> <translation id="25899519884572181">リーダーモードを終了</translation> <translation id="2593499352046705383">開始する前に、データがバックアップされていることを確認してください。<ph name="DEVICE_OS" /> をインストールすると、ハードドライブは上書きされます。詳しくは、g.co/flex/InstallGuide をご覧ください。</translation> +<translation id="2594832159966169099">V8 のセキュリティを管理する</translation> <translation id="2594999711683503743">Google で検索、または URL を入力</translation> <translation id="2597073208962000830">ニアバイシェアでは Bluetooth のスキャン機能を使用して、付近のデバイスを探します。</translation> <translation id="2598710988533271874">新しい Chrome をご利用いただけます</translation> @@ -2306,6 +2310,7 @@ <translation id="2730647855013151888">すべての個人情報を含める</translation> <translation id="2730901670247399077">絵文字候補</translation> <translation id="273093730430620027">このページはカメラにアクセスしています。</translation> +<translation id="2730956943403103181">V8 オプティマイザーの使用を許可しない</translation> <translation id="2731392572903530958">閉じたウインドウを開く(&E)</translation> <translation id="2731700343119398978">お待ちください...</translation> <translation id="2731971182069536520">次回デバイスを再起動すると、管理者による 1 回限りの更新が行われ、ローカルデータが削除されます。</translation> @@ -2709,6 +2714,7 @@ <translation id="3025174326431589540">{COUNT,plural, =0{保存されているパスワードはありません}=1{{COUNT} 件のサイトのパスワードを確認しました}other{{COUNT} 件のサイトやアプリのパスワードを確認しました}}</translation> <translation id="3027296729579831126">ニアバイシェアをオンにする</translation> <translation id="3027644380269727216">ユーザーのウェブサイト上でのアクティビティに基づいて提案されます。この設定は有効になっています。</translation> +<translation id="3028445648481691885">ダウンロードをキャンセルしました</translation> <translation id="3029276696788198026">プリロードなし</translation> <translation id="3029466929721441205">シェルフでのタッチペン ツールの表示</translation> <translation id="3029808567601324798">ロックまでの時間</translation> @@ -2814,6 +2820,7 @@ <translation id="3119948370277171654">キャストしたコンテンツまたは URL を教えてください。</translation> <translation id="3122464029669770682">CPU</translation> <translation id="3122496702278727796">データ ディレクトリの作成に失敗しました</translation> +<translation id="3122810280993140148">選択したテーマ、ムード、ビジュアル スタイル、色に基づいてカスタムテーマを作成します。この機能を使用するには、新しいタブを開いて [Chrome をカスタマイズ] をクリックします。</translation> <translation id="3122883569442693641">詳細</translation> <translation id="3124111068741548686">USER ハンドル</translation> <translation id="3124332159330678621">Chrome をカスタマイズして、ブラウザのデザインを一新</translation> @@ -2853,6 +2860,7 @@ <translation id="3159978855457658359">デバイス名を編集</translation> <translation id="3160928651883997588">VPN 設定</translation> <translation id="3161522574479303604">すべての言語</translation> +<translation id="3162766632262775911">V8 オプティマイザーの使用を常に許可する</translation> <translation id="3162853326462195145">学校用アカウント</translation> <translation id="3162899666601560689">サイトは、Cookie を使用して閲覧の利便性を高めることができます(ログイン状態の維持、ショッピング カートの中身の保存など)</translation> <translation id="3163201441334626963">不明な商品(<ph name="PRODUCT_ID" />、ベンダー: <ph name="VENDOR_ID" />)</translation> @@ -3322,6 +3330,7 @@ <translation id="3547954654003013442">プロキシ設定</translation> <translation id="3548162552723420559">環境に合わせて画面の色を調整します</translation> <translation id="354949590254473526">カスタム DNS クエリ URL を入力</translation> +<translation id="3549827561154008969">ダウンロードを再開しました</translation> <translation id="3550593477037018652">モバイル ネットワークとの接続を切断する</translation> <translation id="3550915441744863158">Chrome は自動更新されるため、常に最新版をご利用になれます</translation> <translation id="3551320343578183772">タブを閉じる</translation> @@ -3470,6 +3479,7 @@ <translation id="3666196264870170605">Intel WiFi NIC のデバッグダンプ</translation> <translation id="3670113805793654926">任意のベンダーのデバイス</translation> <translation id="3670229581627177274">Bluetooth を ON にする</translation> +<translation id="3670480940339182416">サイトでの V8 オプティマイザーの使用を許可する</translation> <translation id="3672681487849735243">出荷時のエラーが見つかりました</translation> <translation id="3673097791729989571">ログインは <ph name="SAML_DOMAIN" /> でホストされています</translation> <translation id="3673622964532248901">このデバイスにキャストできません。</translation> @@ -4263,7 +4273,7 @@ <translation id="4268025649754414643">キーの暗号化</translation> <translation id="4268516942564021145">お使いのアカウントではこの設定は使用できません。</translation> <translation id="4270393598798225102">バージョン <ph name="NUMBER" /></translation> -<translation id="4274604968379621964">グループを保存する</translation> +<translation id="4274604968379621964">グループを保存</translation> <translation id="4274667386947315930">ログインデータ</translation> <translation id="4274673989874969668">ユーザーがサイトから離れた後も、サイトは同期を継続して、写真のアップロードやチャット メッセージの送信などのタスクを完了することがあります</translation> <translation id="4275291496240508082">起動音</translation> @@ -4560,7 +4570,6 @@ <translation id="4507128560633489176">データを消去しました。</translation> <translation id="4507373251891673233"><ph name="HOST" /> のすべての拡張機能をブロックしました</translation> <translation id="4507401683427517298">[ショートカットを追加] をクリックします</translation> -<translation id="4508150454272293946">アプリやウェブページがこのデバイスに接続されているカメラを使用できるようにします。カメラの問題が解決しない場合は、アプリを再起動するか、ウェブページを更新してみてください。</translation> <translation id="450867954911715010">ユーザー補助機能の設定</translation> <translation id="4508765956121923607">ソースを表示(&O)</translation> <translation id="4509277363725254222"><ph name="BEGIN_BOLD_USERNAME" />ユーザー名<ph name="END_BOLD_USERNAME" />と<ph name="BEGIN_BOLD_PASSWORD" />パスワード<ph name="END_BOLD_PASSWORD" />を共有すると、ファミリー メンバーは Google パスワード マネージャーを使用してそれらを入力できます</translation> @@ -4924,6 +4933,7 @@ <translation id="4800839971935185386">新しい名前とアイコンを確認</translation> <translation id="4801448226354548035">アカウントを非表示にする</translation> <translation id="4801512016965057443">モバイル データ ローミングを許可する</translation> +<translation id="4803599447809045620">リンクを無効にする</translation> <translation id="4804311503028830356">戻る矢印をクリックすると、他のオプションが表示されます</translation> <translation id="4804818685124855865">切断</translation> <translation id="4804827417948292437">アボカド</translation> @@ -5008,6 +5018,7 @@ <translation id="4863769717153320198">表示上のサイズ: <ph name="WIDTH" />x<ph name="HEIGHT" />(デフォルト)</translation> <translation id="4864369630010738180">ログインしています...</translation> <translation id="4864805589453749318">学校用アカウントを追加する権限を付与している保護者を選択してください。</translation> +<translation id="4864905533117889071"><ph name="SENSOR_NAME" />(ブロック中)</translation> <translation id="486505726797718946">思い出を保存しました</translation> <translation id="486635084936119914">ダウンロード後に特定の種類のファイルを自動的に開きます</translation> <translation id="4867272607148176509">保護者はアプリの承認とブロック、利用時間の上限の設定、ウェブ ブラウジングの制御を行えます。学校のリソースのほとんどにアクセスするための学校用アカウントは、後で追加できます。</translation> @@ -5500,6 +5511,7 @@ <translation id="5261619498868361045">コンテナ名を空白にすることはできません。</translation> <translation id="5261683757250193089">ウェブストアで開く</translation> <translation id="5261799091118902550">このファイルはウイルスや不正なソフトウェアの可能性があります。Google に送信して、安全でないかどうかを確認できます。</translation> +<translation id="5262334727506665688">Google アカウントにパスワードを保存します</translation> <translation id="5262784498883614021">ネットワークに自動接続する</translation> <translation id="5263656105659419083">右上の固定をクリックすると、サイドパネルにすばやく戻れます</translation> <translation id="5264148714798105376">これには 1 分ほどかかる場合があります。</translation> @@ -5713,6 +5725,7 @@ <translation id="5432223177001837288">音声を共有するには、タブを共有してください</translation> <translation id="5432872710261597882">高く評価すると、気に入ったというフィードバックが送信されます。</translation> <translation id="543338862236136125">パスワードを編集</translation> +<translation id="5433865420958136693">グラフィック アクセラレーションが使用可能な場合は使用する</translation> <translation id="5434065355175441495">PKCS #1 RSA 暗号化</translation> <translation id="5435274640623994081">イアコンのログを有効にする</translation> <translation id="5435779377906857208"><ph name="HOST" /> による位置情報へのアクセスを常に許可する</translation> @@ -6450,6 +6463,7 @@ <translation id="6020431688553761150">このリソースへのアクセスがサーバーで認証されませんでした。</translation> <translation id="6021293122504240352"><ph name="APPS" /> 件のアプリが現在サポートされていません</translation> <translation id="6021969570711251331">インターリーブ</translation> +<translation id="602212068530399867">アドレスバーとランチャーで使用される検索エンジン。</translation> <translation id="6022526133015258832">全画面表示</translation> <translation id="6022659036123304283">Chrome を独自にカスタマイズ</translation> <translation id="6023643151125006053">このデバイス(SN: <ph name="SERIAL_NUMBER" />)は <ph name="SAML_DOMAIN" /> の管理者によってロックされています。</translation> @@ -7038,6 +7052,7 @@ <translation id="649396225532207613">このファイルは、個人アカウントやソーシャル ネットワークのアカウントに危害を及ぼす可能性があります</translation> <translation id="6494327278868541139">保護強化機能の詳細を表示</translation> <translation id="6494445798847293442">認証局ではありません</translation> +<translation id="6494483173119160146">デバイスで修復不可能なエラーが発生しました。デバイスをリセットして(すべてのユーザーデータが消去されます)、もう一度お試しください。</translation> <translation id="6497784818439587832">画面上の項目のサイズを変えるには、表示サイズを変更します</translation> <translation id="6497789971060331894">マウスの逆スクロール</translation> <translation id="6498249116389603658">選択したすべての言語(&A)</translation> @@ -7853,6 +7868,7 @@ <translation id="7131431455372521159">すべての TrackPoint の接続を解除しました</translation> <translation id="7131896909366247105"><ph name="APP_NAME" />、待機中</translation> <translation id="7134098520442464001">テキストを縮小する</translation> +<translation id="7134951043985383439">危険なファイルをダウンロードしました</translation> <translation id="7135729336746831607">Bluetooth をオンにしますか?</translation> <translation id="7136694880210472378">デフォルトに設定</translation> <translation id="7137771508221868414">サイトにより保存された <ph name="TOTAL_USAGE" /> のデータとインストールされたアプリが削除されます</translation> @@ -8019,6 +8035,7 @@ <translation id="727441411541283857"><ph name="PERCENTAGE" />% - あと <ph name="TIME" />で充電完了</translation> <translation id="727595954130325265">今すぐ購入</translation> <translation id="7276100255011548441">Chrome では、4 週間以上経過したトピックは自動削除されます。閲覧を続けていると、トピックがリストに再度表示される場合もあります。ウェブサイトと共有したくないトピックはブロックできます。詳しくは、<ph name="BEGIN_LINK" />Chrome で広告のプライバシーを管理する<ph name="END_LINK" />をご確認ください。</translation> +<translation id="7278164481614262110">AI でテーマを作成する</translation> <translation id="727952162645687754">ダウンロード エラー</translation> <translation id="7280649757394340890">テキスト読み上げの音声の設定</translation> <translation id="7280877790564589615">許可の要求</translation> @@ -8448,7 +8465,6 @@ <translation id="7610337976012700501">これらの連絡先と <ph name="FEATURE_NAME" /> を使用するには、Google アカウントにリンクされているメールアドレスを連絡先に追加してください。</translation> <translation id="7611713099524036757">メタ</translation> <translation id="7612050744024016345">すべての拡張機能</translation> -<translation id="7612401678989660900">マイクへのアクセス権を持つアプリとウェブサイトに対して、アクセスを許可します</translation> <translation id="7612497353238585898">アクティブなサイト</translation> <translation id="7612655942094160088">接続されているスマートフォンの機能を有効にできます。</translation> <translation id="7612989789287281429">ログインしています…</translation> @@ -8714,6 +8730,7 @@ <ph name="EXTENSION_NAME" /></translation> <translation id="7789963078219276159">スタートページの背景が<ph name="CATEGORY" />に変更されました。</translation> +<translation id="7791429245559955092">このアプリケーションは、現在使用している Chrome プロフィールにインストールされます</translation> <translation id="7791436592012979144">逆スクロールは有効です</translation> <translation id="7791543448312431591">追加</translation> <translation id="7792012425874949788">ログイン時に問題が発生しました</translation> @@ -9109,6 +9126,7 @@ <translation id="8089547136368562137">Google の最高技術により保護されます</translation> <translation id="8090234456044969073">よくアクセスするウェブサイトのリストの読み取り</translation> <translation id="8090513782447872344">またいつでもご確認いただけます</translation> +<translation id="8090579562279016251">パフォーマンスは低下しますが、攻撃に対する V8 の耐性が強化されます</translation> <translation id="8090686009202681725">AI を使用してテーマを作成</translation> <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> が応答していません</translation> <translation id="8094536695728193970">アプリコット</translation> @@ -9155,6 +9173,7 @@ <translation id="8124313775439841391">管理対象 ONC</translation> <translation id="8125651784723647184">パスワードの共有は管理者によって管理されています</translation> <translation id="8129265306888404830">組織(<ph name="EMAIL_DOMAIN" />)のメールアドレスを使用するには、企業登録を使用する必要があります。このデバイスを個人で使用している場合は、個人の Google アカウントでログインしてください。</translation> +<translation id="8130476996317833777">サイトでの V8 オプティマイザーの使用を許可しない</translation> <translation id="813082847718468539">サイト情報を表示</translation> <translation id="8131740175452115882">確認</translation> <translation id="8133297578569873332">許容範囲内 - FM</translation> @@ -9510,6 +9529,7 @@ <translation id="8397825320644530257">接続済みスマートフォンの切断</translation> <translation id="8398877366907290961">このまま続行</translation> <translation id="8399282673057829204">パスワードを表示</translation> +<translation id="839949601275221554">デバイスでエラーが発生しました。デバイスを再起動して、もう一度お試しください。</translation> <translation id="8401432541486058167">スマートカードに関連付けられている PIN を入力してください。</translation> <translation id="8401772916834964810">{COUNT,plural, =0{今日、Chrome で Cookie を再びブロックします}=1{明日、Chrome で Cookie を再びブロックします}other{Chrome で Cookie を再びブロックするまであと # 日}}</translation> <translation id="8403618281196981152">Chrome に保存されるデータ</translation> @@ -9538,6 +9558,7 @@ <translation id="8422748173858722634">IMEI</translation> <translation id="8422787418163030046">トレイがありません</translation> <translation id="8424250197845498070">高度な保護機能でブロックされました</translation> +<translation id="842501938276307467">試験運用版の AI 機能を試す</translation> <translation id="8425213833346101688">変更</translation> <translation id="8425492902634685834">タスクバーに固定</translation> <translation id="8425768983279799676">PIN を使用してデバイスのロックを解除できます。</translation> @@ -9692,6 +9713,7 @@ <ph name="BEGIN_PARAGRAPH2" /><ph name="USER_EMAIL" /> を使用するには、まず <ph name="DEVICE_TYPE" /> にログインします。次に、ログイン画面の一番下にある [ユーザーを追加] を選択します。<ph name="END_PARAGRAPH2" /></translation> <translation id="85486688517848470">キーボードの最上段にあるキーの動作を切り替えるには、検索キーを押したままにします</translation> <translation id="8549316893834449916">Chromebook には Google アカウント(Gmail、ドライブ、YouTube などで使用しているのと同じアカウント)を使用してログインします。</translation> +<translation id="8550239873869577759">不審なファイルをダウンロードしました</translation> <translation id="8551388862522347954">ライセンス</translation> <translation id="8551588720239073785">日時の設定</translation> <translation id="8551647092888540776">オフラインで <ph name="FILE_NAMES" /> を開くことはできません</translation> @@ -9747,6 +9769,7 @@ <translation id="8601206103050338563">TLS WWW クライアント認証</translation> <translation id="8602674530529411098">アプリ(ベータ版)</translation> <translation id="8602851771975208551">パソコン上の別のプログラムにより、Chrome の動作方法を変更する可能性のあるアプリが追加されました。</translation> +<translation id="8604513817270995005">ウェブでクチコミなどの短文を書くのに役立ちます。候補は、プロンプトとウェブページのコンテンツに基づいて表示されます。この機能を使用するには、テキスト ボックスを右クリックします。</translation> <translation id="8605428685123651449">SQLite メモリ</translation> <translation id="8607171490667464784">非アクティブでバッテリー駆動時</translation> <translation id="8607828412110648570">Bluetooth デバイスがペア設定モードになっていて、近くにあることを確認してください。ペア設定は信頼しているデバイスとのみ行ってください。ペア設定したデバイスは、この Chromebook のすべてのアカウントに表示されます。<ph name="BEGIN_LINK_LEARN_MORE" />詳細<ph name="END_LINK_LEARN_MORE" /></translation> @@ -10258,6 +10281,7 @@ <translation id="8985191021574400965">Chromebook 向け Steam へようこそ</translation> <translation id="8985264973231822211">最終同期: <ph name="DEVICE_LAST_ACTIVATED_TIME" /> 日前</translation> <translation id="8985661493893822002">お使いの <ph name="DEVICE_TYPE" /> にログインするにはインターネットに接続してください。</translation> +<translation id="8985661571449404298">安全でないファイルをダウンロードしました</translation> <translation id="8986362086234534611">削除</translation> <translation id="8986494364107987395">使用統計データと障害レポートを Google に自動送信します</translation> <translation id="8987305927843254629">ユーザーごとに使用環境をカスタマイズして、データのプライバシーを確保できます。</translation> @@ -10456,6 +10480,7 @@ <translation id="9116366756388192417">テーマを選択</translation> <translation id="9116799625073598554">メモ用アプリ</translation> <translation id="9117030152748022724">アプリを管理する</translation> +<translation id="9119587891086680311">これらの機能は AI を使用していますが、開発の初期段階であり、常に正しく機能するとは限りません。</translation> <translation id="9120362425083889527">インストールを完了できませんでした。もう一度お試しいただくか、このウィンドウを閉じてください</translation> <translation id="9120693811286642342"><ph name="BEGIN_PARAGRAPH1" />快適にご利用いただくには、<ph name="DEVICE_OS" /> を内部ディスクにインストールしてください。後でログイン画面からインストールすることもできます。<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />インストールする準備ができていない場合は、USB から実行して試してみることもできます。この場合、既存の OS とデータは残りますが、保存容量やパフォーマンスが制限される可能性があります。<ph name="END_PARAGRAPH2" /></translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb index 3bbf9b80..cceae0a 100644 --- a/chrome/app/resources/generated_resources_ka.xtb +++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -377,6 +377,7 @@ <translation id="1281746473742296584">{NUM_OF_FILES,plural, =1{ფაილის გახსნა ვერ ხერხდება}other{ფაილების გახსნა ვერ ხერხდება}}</translation> <translation id="1282311502488501110">არ მსურს შესვლა</translation> <translation id="1282465000333679776">სისტემის აუდიოს გაზიარება</translation> +<translation id="1283126956823499975">ამ მოწყობილობის დაყენებისას წარმოიქმნა შეფერხება</translation> <translation id="1284277788676816155">მონაცემთა შენახვის აკრძალვა</translation> <translation id="1285320974508926690">არასდროს გადათარგმნო ეს საიტი</translation> <translation id="1285484354230578868">მონაცემების შენახვა თქვენს Google Drive ანგარიშზე</translation> @@ -1120,7 +1121,6 @@ <translation id="1832848789136765277">იმაში დასარწმუნებლად, რომ ყოველთვის შეძლებთ თქვენს სინქრონიზებულ მონაცემებზე წვდომას, დაადასტურეთ, რომ ეს თქვენ ხართ</translation> <translation id="1834503245783133039">ჩამოტვირთვა ვერ მოხერხდა: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">მიმდინარეობს Linux-ის ახალ ვერსიაზე გადასვლა</translation> -<translation id="1835612721186505600">მანიჭეთ წვდომა აპებსა და ვებსაიტებს, რომლებსაც კამერის გამოყენების ნებართვა აქვს</translation> <translation id="1838374766361614909">ძიების გასუფთავება</translation> <translation id="1839021455997460752">თქვენი ელფოსტის მისამართი</translation> <translation id="1839540115464516994">ჩვენება აქ: <ph name="LOCATION" /></translation> @@ -4578,7 +4578,6 @@ <translation id="4507128560633489176">მონაცემები გასუფთავდა</translation> <translation id="4507373251891673233">თქვენ დაბლოკეთ ყველა გაფართოება <ph name="HOST" />-დან</translation> <translation id="4507401683427517298">დაწკაპუნებით აირჩიეთ „მალსახმობის დამატება“</translation> -<translation id="4508150454272293946">მიანიჭეთ აპებსა და ვებსაიტებს ამ მოწყობილობასთან დაკავშირებული კამერ(ებ)ის გამოყენების უფლება. თუ კამერასთან დაკავშირებით პრობლემა კვლავ შეგექმნებათ, ცადეთ აპის ან ვებგვერდის გადატვირთვა.</translation> <translation id="450867954911715010">მარტივი წვდომის პარამეტრები</translation> <translation id="4508765956121923607">წყ&აროს ნახვა</translation> <translation id="4509277363725254222">თქვენი <ph name="BEGIN_BOLD_USERNAME" />მომხმარებლის სახელისა<ph name="END_BOLD_USERNAME" /> და <ph name="BEGIN_BOLD_PASSWORD" />პაროლის<ph name="END_BOLD_PASSWORD" /> ასლის გაზიარებისას თქვენი ოჯახის წევრები შეძლებენ მათ შევსებას Google პაროლების მმართველის მეშვეობით</translation> @@ -5027,6 +5026,7 @@ <translation id="4863769717153320198">როგორც ჩანს, გარჩევადობა არის <ph name="WIDTH" /> x <ph name="HEIGHT" /> (ნაგულისხმევი)</translation> <translation id="4864369630010738180">მიმდინარეობს შესვლა…</translation> <translation id="4864805589453749318">აირჩიეთ მშობელი, რომელიც მოგანიჭებთ სასწავლებლის ანგარიშის ნებართვას.</translation> +<translation id="4864905533117889071"><ph name="SENSOR_NAME" /> (დაბლოკილი)</translation> <translation id="486505726797718946">მეხსიერების დაზოგილია</translation> <translation id="486635084936119914">კონკრეტული ტიპის ფაილების ავტომატური გახსნა ჩამოტვირთვის შემდეგ</translation> <translation id="4867272607148176509">მშობლებს შეუძლიათ აპების დაშვება ან დაბლოკვა, დროის კუთხით ლიმიტების დაწესება და ვების დათვალიერების კონტროლი. მოგვიანებით შესაძლებელი იქნება სასწავლებლის ანგარიშის დამატება, სასწავლებლის რესურსების უმეტესობაზე წვდომისთვის.</translation> @@ -5520,6 +5520,7 @@ <translation id="5261619498868361045">კონტეინერის სახელი არ უნდა იყოს ცარიელი.</translation> <translation id="5261683757250193089">Web Store-ში გახსნა</translation> <translation id="5261799091118902550">ეს ფაილი, შესაძლოა, ვირუსი ან მავნე პროგრამა იყოს. შეგიძლიათ გაუგზავნოთ ის Google-ს მისი უსაფრთხოების შესამოწმებლად.</translation> +<translation id="5262334727506665688">კვლავ თქვენს Google ანგარიშში შეინახეთ პაროლები</translation> <translation id="5262784498883614021">ქსელთან ავტომატური დაკავშირება</translation> <translation id="5263656105659419083">გვერდით პანელზე მარტივად რომ დაბრუნდეთ, დააწკაპუნეთ „ჩამაგრებას“ ზედა მარჯვენა ნაწილში</translation> <translation id="5264148714798105376">ამას შეიძლება ერთ წუთამდე დასჭირდეს.</translation> @@ -7061,6 +7062,7 @@ <translation id="649396225532207613">ამ ფაილს შეუძლია თქვენი პერსონალური და სოციალური ქსელების ანგარიშების დაზიანება</translation> <translation id="6494327278868541139">გაძლიერებული დაცვის დეტალების ჩვენება</translation> <translation id="6494445798847293442">არ წამოადგენს სერტიფიცირების ცენტრს</translation> +<translation id="6494483173119160146">ამ მოწყობილობამ დააფიქსირა გამოუსწორებელი შეცდომა. გადააყენეთ მოწყობილობა (ეს მოქმედება წაშლის მომხმარებელთა ყველა მონაცემს) და ცადეთ ხელახლა.</translation> <translation id="6497784818439587832">შეცვალეთ ეკრანის ზომა, თქვენს ეკრანზე არსებული ერთეულები რომ დააპატარაოთ ან გაადიდოთ</translation> <translation id="6497789971060331894">მაუსით უკუგადაადგილება</translation> <translation id="6498249116389603658">&ყველა თქვენი ენა</translation> @@ -8474,7 +8476,6 @@ <translation id="7610337976012700501">ამ კონტაქტებთან „<ph name="FEATURE_NAME" />“ რომ გამოიყენოთ, დაამატეთ მათ Google ანგარიშებთან დაკავშირებული ელფოსტის მისამართები თქვენს კონტაქტებში.</translation> <translation id="7611713099524036757">მეტა</translation> <translation id="7612050744024016345">ყველა გაფართოება</translation> -<translation id="7612401678989660900">მანიჭეთ წვდომა აპებსა და ვებსაიტებს, რომლებსაც მიკროფონის გამოყენების ნებართვა აქვს</translation> <translation id="7612497353238585898">აქტიური საიტი</translation> <translation id="7612655942094160088">დაკავშირებული ტელეფონის ფუნქციების ჩართვა.</translation> <translation id="7612989789287281429">მიმდინარეობს შესვლა…</translation> @@ -9539,6 +9540,7 @@ <translation id="8397825320644530257">დაკავშირებულ ტელეფონთან კავშირის გაწყვეტა</translation> <translation id="8398877366907290961">მაინც გაგრძელება</translation> <translation id="8399282673057829204">პაროლის ნახვა</translation> +<translation id="839949601275221554">ამ მოწყობილობამ დააფიქსირა შეცდომა. გადატვირთეთ მოწყობილობა და ცადეთ ხელახლა.</translation> <translation id="8401432541486058167">მიუთითეთ PIN-კოდი, რომელიც დაკავშირებულია თქვენს სმარტ-ბარათთან.</translation> <translation id="8401772916834964810">{COUNT,plural, =0{Chrome დღეს კლავ დაბლოკავს ქუქი-ჩანაწერებს}=1{Chrome ხვალ კლავ დაბლოკავს ქუქი-ჩანაწერებს}other{Chrome # დღეში კლავ დაბლოკავს ქუქი-ჩანაწერებს}}</translation> <translation id="8403618281196981152">თქვენი მონაცემები Chrome-ში</translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb index d2a26d1..a6b09940 100644 --- a/chrome/app/resources/generated_resources_kk.xtb +++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -1116,7 +1116,6 @@ <translation id="1832848789136765277">Синхрондау деректерін әрдайым пайдалана алатыныңызға көз жеткізу үшін, жеке басыңызды растаңыз.</translation> <translation id="1834503245783133039">Жүктеп алынбады: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux жүйесінің жаңа нұсқасын орнату</translation> -<translation id="1835612721186505600">Қолданбалар мен веб-сайттарға камераны пайдалануға мүмкіндік беру</translation> <translation id="1838374766361614909">Іздеуді тазарту</translation> <translation id="1839021455997460752">Электрондық мекенжайыңыз</translation> <translation id="1839540115464516994"><ph name="LOCATION" /> ішінде көрсету</translation> @@ -4565,7 +4564,6 @@ <translation id="4507128560633489176">Деректер өшірілді.</translation> <translation id="4507373251891673233"><ph name="HOST" /> сайтының барлық кеңейтімін бөгедіңіз.</translation> <translation id="4507401683427517298">"Таңбаша қосу" түймесін басыңыз.</translation> -<translation id="4508150454272293946">Қолданбалар мен веб-беттердің осы құрылғыға қосылған камераларды пайдалануына рұқсат беріңіз. Камерада әлі де мәселе болса, қолданбаны қайта өшіріп қосып көріңіз немесе веб-бетті жаңартыңыз.</translation> <translation id="450867954911715010">Арнайы мүмкіндіктер параметрлері</translation> <translation id="4508765956121923607">Д&ереккөзді көру</translation> <translation id="4509277363725254222"><ph name="BEGIN_BOLD_USERNAME" />Пайдаланушы аты<ph name="END_BOLD_USERNAME" /> және <ph name="BEGIN_BOLD_PASSWORD" />құпия сөз<ph name="END_BOLD_PASSWORD" /> көшірмесін бөліскен кезде, отбасы мүшесі оларды Google Password Manager көмегімен толтыра алады.</translation> @@ -8453,7 +8451,6 @@ <translation id="7610337976012700501"><ph name="FEATURE_NAME" /> функциясын осы контактілермен пайдалану үшін олардың Google аккаунтымен байланыстырылған электрондық поштаны контактілерге қосыңыз.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Барлық кеңейтім</translation> -<translation id="7612401678989660900">Қолданбалар мен веб-сайттарға микрофонды пайдалануға мүмкіндік беру</translation> <translation id="7612497353238585898">Ашық сайт</translation> <translation id="7612655942094160088">Жалғанған телефон функцияларын қосу.</translation> <translation id="7612989789287281429">Аккаунтқа кіруде…</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb index 4faeb58..f8dac09 100644 --- a/chrome/app/resources/generated_resources_km.xtb +++ b/chrome/app/resources/generated_resources_km.xtb
@@ -1132,7 +1132,6 @@ <translation id="1832848789136765277">ដើម្បីប្រាកដថា អ្នកអាចចូលប្រើទិន្នន័យសមកាលកម្មរបស់អ្នកបានជានិច្ច សូមផ្ទៀងផ្ទាត់ថាជាអ្នក</translation> <translation id="1834503245783133039">ការទាញយកមិនបានជោគជ័យ៖ <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">កំពុងដំឡើងកំណែ Linux</translation> -<translation id="1835612721186505600">អនុញ្ញាតឱ្យចូលប្រើប្រាស់សម្រាប់កម្មវិធី និងគេហទំព័រដែលមានការអនុញ្ញាតឱ្យប្រើកាមេរ៉ា</translation> <translation id="1838374766361614909">ជម្រះការស្វែងរក</translation> <translation id="1839021455997460752">អាសយដ្ឋានអ៊ីមែលរបស់អ្នក</translation> <translation id="1839540115464516994">បង្ហាញនៅក្នុង <ph name="LOCATION" /></translation> @@ -4595,7 +4594,6 @@ <translation id="4507128560633489176">បានសម្អាតទិន្នន័យ។</translation> <translation id="4507373251891673233">អ្នកបានទប់ស្កាត់កម្មវិធីបន្ថែមទាំងអស់ពី <ph name="HOST" /></translation> <translation id="4507401683427517298">ចុច “បញ្ចូលផ្លូវកាត់”</translation> -<translation id="4508150454272293946">អនុញ្ញាតឱ្យកម្មវិធី និងទំព័របណ្ដាញប្រើកាមេរ៉ាដែលបានភ្ជាប់ជាមួយឧបករណ៍នេះ។ ប្រសិនបើអ្នកនៅតែមានបញ្ហាពាក់ព័ន្ធនឹងកាមេរ៉ារបស់អ្នកទៀត សូមសាកល្បងចាប់ផ្ដើមកម្មវិធីនេះឡើងវិញ ឬផ្ទុកទំព័របណ្ដាញឡើងវិញ។</translation> <translation id="450867954911715010">ការកំណត់លទ្ធភាពប្រើប្រាស់</translation> <translation id="4508765956121923607">មើលប្រភព</translation> <translation id="4509277363725254222">នៅពេលអ្នកចែករំលែកច្បាប់ចម្លងនៃ<ph name="BEGIN_BOLD_USERNAME" />ឈ្មោះអ្នកប្រើប្រាស់<ph name="END_BOLD_USERNAME" /> និង<ph name="BEGIN_BOLD_PASSWORD" />ពាក្យសម្ងាត់<ph name="END_BOLD_PASSWORD" />របស់អ្នក សមាជិកគ្រួសាររបស់អ្នកអាចបំពេញឈ្មោះអ្នកប្រើប្រាស់ និងពាក្យសម្ងាត់ទាំងនោះបានដោយប្រើកម្មវិធីគ្រប់គ្រងពាក្យសម្ងាត់</translation> @@ -8496,7 +8494,6 @@ <translation id="7610337976012700501">ដើម្បីប្រើ<ph name="FEATURE_NAME" />ជាមួយទំនាក់ទំនងទាំងនេះ សូមបញ្ចូលអាសយដ្ឋានអ៊ីមែលដែលបានភ្ជាប់ជាមួយគណនី Google របស់ពួកគេទៅក្នុងទំនាក់ទំនងរបស់អ្នក។</translation> <translation id="7611713099524036757">មេតា</translation> <translation id="7612050744024016345">កម្មវិធីបន្ថែមទាំងអស់</translation> -<translation id="7612401678989660900">អនុញ្ញាតឱ្យចូលប្រើប្រាស់សម្រាប់កម្មវិធី និងគេហទំព័រដែលមានការអនុញ្ញាតឱ្យប្រើមីក្រូហ្វូន</translation> <translation id="7612497353238585898">គេហទំព័រសកម្ម</translation> <translation id="7612655942094160088">បើកមុខងារទូរសព្ទដែលបានភ្ជាប់។</translation> <translation id="7612989789287281429">កំពុងនាំអ្នកចូលគណនី…</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb index db5e1f0..823a353 100644 --- a/chrome/app/resources/generated_resources_kn.xtb +++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -1105,6 +1105,7 @@ <translation id="1823768272150895732">ಫಾಂಟ್</translation> <translation id="1823781806707127806">ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಬ್ರೌಸಿಂಗ್ ಡೇಟಾವನ್ನು ನಿರ್ವಹಿತ ಪ್ರೊಫೈಲ್ಗೆ ಸೇರಿಸಿ</translation> <translation id="18245044880483936">ನಿಮ್ಮ ಮಗುವಿನ ಡ್ರೈವ್ ಸಂಗ್ರಹಣೆ ಕೋಟಾದಲ್ಲಿ ಬ್ಯಾಕಪ್ ಡೇಟಾ ಸೇರಿರುವುದಿಲ್ಲ.</translation> +<translation id="1825073796163165618">ಲಿಂಕ್ಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation> <translation id="1825565032302550710">ಪೋರ್ಟ್ 1024 ಮತ್ತು 65535 ಆಗಿರಬೇಕು</translation> <translation id="182577151972096764">ಇತ್ತೀಚೆಗೆ ವೀಕ್ಷಿಸಿದ ರೆಸಿಪಿಗಳು</translation> <translation id="18260074040409954">ಉಳಿಸಿದ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ನೀವು ಯಾವುದೇ ಸಾಧನದಲ್ಲಿ ಬಳಸಬಹುದು. ಅವುಗಳನ್ನು <ph name="EMAIL" /> ಗಾಗಿ <ph name="GOOGLE_PASSWORD_MANAGER" /> ನಲ್ಲಿ ಉಳಿಸಲಾಗುತ್ತದೆ.</translation> @@ -1124,7 +1125,6 @@ <translation id="1832848789136765277">ನಿಮ್ಮ ಸಿಂಕ್ ಡೇಟಾವನ್ನು ನೀವು ಯಾವಾಗಲೂ ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಾಗುವ ಹಾಗೆ ನೋಡಿಕೊಳ್ಳಲು, ಅದು ನೀವೇ ಎಂದು ದೃಢೀಕರಿಸಿ</translation> <translation id="1834503245783133039">ಡೌನ್ಲೋಡ್ ವಿಫಲಗೊಂಡಿದೆ: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux ಅಪ್ಗ್ರೇಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ</translation> -<translation id="1835612721186505600">ಕ್ಯಾಮರಾ ಅನುಮತಿಯ ಮೂಲಕ ಆ್ಯಪ್ಗಳು ಮತ್ತು ವೆಬ್ಸೈಟ್ಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಅನುಮತಿಸಿ</translation> <translation id="1838374766361614909">ಹುಡುಕಾಟ ತೆರವುಗೊಳಿಸಿ</translation> <translation id="1839021455997460752">ನಿಮ್ಮ ಇಮೇಲ್ ವಿಳಾಸ</translation> <translation id="1839540115464516994"><ph name="LOCATION" /> ನಲ್ಲಿ ತೋರಿಸಿ</translation> @@ -1343,6 +1343,7 @@ <translation id="1997616988432401742">ನಿಮ್ಮ ಪ್ರಮಾಣಪತ್ರಗಳು</translation> <translation id="1999115740519098545">ಸ್ಟಾರ್ಟ್ಅಪ್ನಲ್ಲಿ</translation> <translation id="2002109485265116295">ನೈಜ ಸಮಯ</translation> +<translation id="2002160221914907025">ಪ್ರಾಯೋಗಿಕ AI</translation> <translation id="2003130567827682533">'<ph name="NAME" />' ಡೇಟಾವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು, ಮೊದಲು ವೈ-ಫೈ ನೆಟ್ವರ್ಕ್ಗೆ ಸಂಪರ್ಕಿಸಿ</translation> <translation id="2004413981947727241">ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಯಾವುದೇ ಸಾಧನದಲ್ಲಿ ಬಳಸಿ</translation> <translation id="2004697686368036666">ಫೀಚರ್ಗಳು ಕೆಲವು ಸೈಟ್ಗಳಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸದೇ ಇರಬಹುದು</translation> @@ -2002,6 +2003,7 @@ <translation id="2482878487686419369">ಸೂಚನೆಗಳು</translation> <translation id="2482895651873876648"><ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> ಗುಂಪಿಗೆ ಟ್ಯಾಬ್ ಅನ್ನು ಸರಿಸಲಾಗಿದೆ</translation> <translation id="2483627560139625913">Chrome ಬ್ರೌಸರ್ ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ಸರ್ಚ್ ಎಂಜಿನ್ ಅನ್ನು ಸೆಟ್ ಮಾಡಿ</translation> +<translation id="2483698983806594329">ಪರಿಶೀಲಿಸದ ಫೈಲ್ ಅನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲಾಗಿದೆ</translation> <translation id="2484743711056182585">ಅನುಮತಿಯನ್ನು ತೆಗೆದುಹಾಕಿ</translation> <translation id="2484909293434545162">ಸೈಟ್ ಕುಕೀಗಳನ್ನು ಬಳಸಿದರೆ, ಅದು ಇಲ್ಲಿ ಗೋಚರಿಸುತ್ತದೆ</translation> <translation id="2484959914739448251">ಸಿಂಕ್ ಮಾಡಿರುವ ನಿಮ್ಮ ಎಲ್ಲಾ ಸಾಧನಗಳು ಮತ್ತು ನಿಮ್ಮ Google ಖಾತೆಯಿಂದ ಬ್ರೌಸಿಂಗ್ ಡೇಟಾವನ್ನು ತೆರವುಗೊಳಿಸಲು, <ph name="BEGIN_LINK" />ನಿಮ್ಮ ಪಾಸ್ಫ್ರೇಸ್ ನಮೂದಿಸಿ<ph name="END_LINK" />.</translation> @@ -2141,6 +2143,7 @@ <translation id="2589658397149952302">Drive ಫೈಲ್ಗಳನ್ನು ಎಂದಿಗೂ ತೋರಿಸಬೇಡಿ</translation> <translation id="25899519884572181">ರೀಡರ್ ಮೋಡ್ನಿಂದ ನಿರ್ಗಮಿಸಿ</translation> <translation id="2593499352046705383">ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು, ನಿಮ್ಮ ಡೇಟಾದ ಬ್ಯಾಕಪ್ ನಿಮ್ಮ ಬಳಿ ಇದೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. <ph name="DEVICE_OS" /> ಅನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡುವುದರಿಂದ ನಿಮ್ಮ ಹಾರ್ಡ್ ಡ್ರೈವ್ ಓವರ್ರೈಟ್ ಆಗುತ್ತದೆ. g.co/flex/InstallGuide ನಲ್ಲಿ ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ.</translation> +<translation id="2594832159966169099">V8 ಭದ್ರತೆಯನ್ನು ನಿರ್ವಹಿಸಿ</translation> <translation id="2594999711683503743">Google ನಲ್ಲಿ ಹುಡುಕಿ ಅಥವಾ URL ಟೈಪ್ ಮಾಡಿ</translation> <translation id="2597073208962000830">ಸಮೀಪದಲ್ಲಿರುವ ಸಾಧನಗಳನ್ನು ಹುಡುಕಲು, ಬ್ಲೂಟೂತ್ ಸ್ಕ್ಯಾನಿಂಗ್ ಅನ್ನು Nearby ಶೇರ್ ಬಳಸಿಕೊಳ್ಳುತ್ತದೆ.</translation> <translation id="2598710988533271874">ಹೊಸ Chrome ಲಭ್ಯವಿದೆ</translation> @@ -2320,6 +2323,7 @@ <translation id="2730647855013151888">ಎಲ್ಲಾ ವೈಯಕ್ತಿಕ ಮಾಹಿತಿಯನ್ನು ಸೇರಿಸಿ</translation> <translation id="2730901670247399077">ಎಮೋಜಿ ಸಲಹೆಗಳು</translation> <translation id="273093730430620027">ಈ ಪುಟವು ನಿಮ್ಮ ಕ್ಯಾಮರಾವನ್ನು ಪ್ರವೇಶಿಸುತ್ತಿದೆ.</translation> +<translation id="2730956943403103181">V8 ಆಪ್ಟಿಮೈಸರ್ ಅನ್ನು ಬಳಸಲು ಅನುಮತಿಸಲಾಗಿಲ್ಲ</translation> <translation id="2731392572903530958">ಮು&ಚ್ಚಿದ ವಿಂಡೋವನ್ನು ಮತ್ತೆ ತೆರೆ</translation> <translation id="2731700343119398978">ದಯವಿಟ್ಟು ನಿರೀಕ್ಷಿಸಿ...</translation> <translation id="2731971182069536520">ಮುಂದಿನ ಬಾರಿ ನೀವು ನಿಮ್ಮ ಸಾಧನವನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿದಾಗ, ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ಒಂದು ಬಾರಿಯ ಅಪ್ಡೇಟ್ ಅನ್ನು ನಿರ್ವಹಿಸಲಿದ್ದು, ಅದು ನಿಮ್ಮ ಸ್ಥಳೀಯ ಡೇಟಾವನ್ನು ಅಳಿಸಿ ಹಾಕುತ್ತದೆ.</translation> @@ -2723,6 +2727,7 @@ <translation id="3025174326431589540">{COUNT,plural, =0{ಉಳಿಸಿರುವ ಯಾವುದೇ ಪಾಸ್ವರ್ಡ್ಗಳಿಲ್ಲ}=1{{COUNT} ಸೈಟ್ಗೆ ಸಂಬಂಧಿಸಿದ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಲಾಗಿದೆ}one{{COUNT} ಸೈಟ್ಗಳು ಹಾಗೂ ಆ್ಯಪ್ಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಲಾಗಿದೆ}other{{COUNT} ಸೈಟ್ಗಳು ಹಾಗೂ ಆ್ಯಪ್ಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಲಾಗಿದೆ}}</translation> <translation id="3027296729579831126">Nearby ಶೇರ್ ಆನ್ ಮಾಡಿ</translation> <translation id="3027644380269727216">ಸೈಟ್ ಒಂದರಲ್ಲಿನ ನಿಮ್ಮ ಚಟುವಟಿಕೆಯನ್ನು ಆಧರಿಸಿ. ಈ ಸೆಟ್ಟಿಂಗ್ ಆನ್ ಆಗಿದೆ.</translation> +<translation id="3028445648481691885">ಡೌನ್ಲೋಡ್ ಅನ್ನು ರದ್ದುಮಾಡಲಾಗಿದೆ</translation> <translation id="3029276696788198026">ಮುಂಚಿತವಾಗಿ ಲೋಡ್ ಮಾಡುವಿಕೆ ಇಲ್ಲ</translation> <translation id="3029466929721441205">ಶೆಲ್ಫ್ನಲ್ಲಿ ಸ್ಟೈಲಸ್ ಪರಿಕರಗಳನ್ನು ತೋರಿಸಿ</translation> <translation id="3029808567601324798">ಲಾಕ್ ಮಾಡುವ ಸಮಯ</translation> @@ -2828,6 +2833,7 @@ <translation id="3119948370277171654">ನೀವು ಯಾವ ಕಂಟೆಂಟ್/URL ಅನ್ನು ಬಿತ್ತರಿಸುತ್ತಿರುವಿರಿ?</translation> <translation id="3122464029669770682">CPU</translation> <translation id="3122496702278727796">ಡೇಟಾ ಡೈರೆಕ್ಟರಿ ರಚಿಸಲು ವಿಫಲವಾಗಿದೆ</translation> +<translation id="3122810280993140148">ನೀವು ಆಯ್ಕೆ ಮಾಡುವ ವಿಷಯ, ಮೂಡ್, ವಿಷುವಲ್ ಶೈಲಿ ಮತ್ತು ಬಣ್ಣವನ್ನು ಆಧರಿಸಿ ಕಸ್ಟಮ್ ಥೀಮ್ಗಳನ್ನು ರಚಿಸುತ್ತದೆ. ಈ ಫೀಚರ್ ಅನ್ನು ಬಳಸಲು, ಹೊಸ ಟ್ಯಾಬ್ ತೆರೆಯಿರಿ ಮತ್ತು 'Chrome ಅನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ' ಎಂಬುದನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ.</translation> <translation id="3122883569442693641">ಇನ್ನಷ್ಟು ವಿವರಗಳು</translation> <translation id="3124111068741548686">ಬಳಕೆದಾರರ ನಿರ್ವಹಣೆಗಳು</translation> <translation id="3124332159330678621">ನಿಮ್ಮ ಬ್ರೌಸರ್ಗೆ ಹೊಸ ನೋಟವನ್ನು ನೀಡಲು Chrome ಅನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ</translation> @@ -2867,6 +2873,7 @@ <translation id="3159978855457658359">ಸಾಧನದ ಹೆಸರನ್ನು ಎಡಿಟ್ ಮಾಡಿ</translation> <translation id="3160928651883997588">VPN ಆದ್ಯತೆಗಳು</translation> <translation id="3161522574479303604">ಎಲ್ಲಾ ಭಾಷೆಗಳು</translation> +<translation id="3162766632262775911">V8 ಆಪ್ಟಿಮೈಸರ್ ಅನ್ನು ಬಳಸಲು ಯಾವಾಗಲೂ ಅನುಮತಿಸಲಾಗಿದೆ</translation> <translation id="3162853326462195145">ಶಾಲೆಯ ಖಾತೆ</translation> <translation id="3162899666601560689">ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್ ಅನುಭವವನ್ನು ಸುಧಾರಿಸಲು, ಉದಾಹರಣೆಗೆ, ನಿಮ್ಮನ್ನು ಸೈನ್ ಇನ್ ಆಗಿರಿಸಲು ಅಥವಾ ನಿಮ್ಮ ಶಾಪಿಂಗ್ ಕಾರ್ಟ್ನಲ್ಲಿರುವ ಐಟಂಗಳನ್ನು ನೆನಪಿಟ್ಟುಕೊಳ್ಳಲು ಸೈಟ್ಗಳು ಕುಕೀಗಳನ್ನು ಬಳಸಬಹುದು</translation> <translation id="3163201441334626963"><ph name="VENDOR_ID" /> ಮಾರಾಟಗಾರರಿಂದ <ph name="PRODUCT_ID" /> ಅಪರಿಚಿತ ಉತ್ಪನ್ನ</translation> @@ -3336,6 +3343,7 @@ <translation id="3547954654003013442">ಪ್ರಾಕ್ಸಿ ಸೆಟ್ಟಿಂಗ್ಗಳು</translation> <translation id="3548162552723420559">ಪರಿಸರಕ್ಕೆ ಸರಿಹೊಂದುವಂತೆ ಪರದೆಯ ಬಣ್ಣವನ್ನು ಹೊಂದಾಣಿಕೆ ಮಾಡುತ್ತದೆ</translation> <translation id="354949590254473526">ಕಸ್ಟಮ್ DNS ಪ್ರಶ್ನೆ URL ಅನ್ನು ನಮೂದಿಸಿ</translation> +<translation id="3549827561154008969">ಡೌನ್ಲೋಡ್ ಅನ್ನು ಪುನರಾರಂಭಿಸಲಾಗಿದೆ</translation> <translation id="3550593477037018652">ಸೆಲ್ಯುಲರ್ ನೆಟ್ವರ್ಕ್ನ ಕನೆಕ್ಷನ್ ರದ್ದುಗೊಳಿಸಿ</translation> <translation id="3550915441744863158">Chrome ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನವೀಕರಣಗೊಳ್ಳುತ್ತದೆ. ಹೀಗಾಗಿ ನೀವು ಯಾವಾಗಲೂ ತಾಜಾ ಆವೃತ್ತಿಯನ್ನು ಹೊಂದಿರುತ್ತೀರಿ.</translation> <translation id="3551320343578183772">ಟ್ಯಾಬ್ ಅನ್ನು ಮುಚ್ಚಿ</translation> @@ -3485,6 +3493,7 @@ <translation id="3666196264870170605">Intel ವೈಫೈ NIC ಗಳ ಡೀಬಗ್ ಡಂಪ್</translation> <translation id="3670113805793654926">ಯಾವುದೇ ಮಾರಾಟಗಾರರಿಂದ ಸಾಧನಗಳು</translation> <translation id="3670229581627177274">ಬ್ಲೂಟೂತ್ ಆನ್ ಮಾಡಿ</translation> +<translation id="3670480940339182416">ಸೈಟ್ಗಳು V8 ಆಪ್ಟಿಮೈಸರ್ ಅನ್ನು ಬಳಸಬಹುದು</translation> <translation id="3672681487849735243">ತಯಾರಿಕೆಯ ದೋಷವನ್ನು ಪತ್ತೆ ಮಾಡಲಾಗಿದೆ</translation> <translation id="3673097791729989571">ಸೈನ್ ಇನ್ ಅನ್ನು <ph name="SAML_DOMAIN" /> ಮೂಲಕ ಹೋಸ್ಟ್ ಮಾಡಲಾಗಿದೆ</translation> <translation id="3673622964532248901">ಈ ಸಾಧನಕ್ಕೆ ಬಿತ್ತರಿಸಲು ನಿಮಗೆ ಅನುಮತಿಯಿಲ್ಲ.</translation> @@ -4577,7 +4586,6 @@ <translation id="4507128560633489176">ಡೇಟಾ ತೆರವುಗೊಳಿಸಲಾಗಿದೆ.</translation> <translation id="4507373251891673233"><ph name="HOST" /> ನಿಂದ ನೀವು ಎಲ್ಲಾ ವಿಸ್ತರಣೆಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿದ್ದೀರಿ</translation> <translation id="4507401683427517298">"ಶಾರ್ಟ್ಕಟ್ ಅನ್ನು ಸೇರಿಸಿ" ಎಂಬುದನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ</translation> -<translation id="4508150454272293946">ಈ ಸಾಧನಕ್ಕೆ ಕನೆಕ್ಟ್ ಆಗಿರುವ ಕ್ಯಾಮರಾ(ಗಳನ್ನು) ಬಳಸಲು ಆ್ಯಪ್ಗಳು ಮತ್ತು ವೆಬ್ಪುಟಗಳನ್ನು ಅನುಮತಿಸಿ. ನಿಮ್ಮ ಕ್ಯಾಮರಾದಲ್ಲಿ ನೀವು ಇನ್ನೂ ಸಮಸ್ಯೆಯನ್ನು ಎದುರಿಸುತ್ತಿದ್ದರೆ, ಆ್ಯಪ್ ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಲು ಪ್ರಯತ್ನಿಸಿ ಅಥವಾ ವೆಬ್ಪುಟವನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡಿ.</translation> <translation id="450867954911715010">ಪ್ರವೇಶದ ಸೆಟ್ಟಿಂಗ್ಗಳು</translation> <translation id="4508765956121923607">ಮೂ&ಲವನ್ನು ವೀಕ್ಷಿಸಿ</translation> <translation id="4509277363725254222">ನಿಮ್ಮ <ph name="BEGIN_BOLD_USERNAME" />ಬಳಕೆದಾರರ ಹೆಸರು<ph name="END_BOLD_USERNAME" /> ಮತ್ತು <ph name="BEGIN_BOLD_PASSWORD" />ಪಾಸ್ವರ್ಡ್ನ<ph name="END_BOLD_PASSWORD" /> ನಕಲನ್ನು ನೀವು ಹಂಚಿಕೊಂಡಾಗ, ನಿಮ್ಮ ಕುಟುಂಬದ ಸದಸ್ಯರು Google Password Manager ಅನ್ನು ಬಳಸಿಕೊಂಡು ಅವುಗಳನ್ನು ಭರ್ತಿ ಮಾಡಬಹುದು.</translation> @@ -4941,6 +4949,7 @@ <translation id="4800839971935185386">ಹೆಸರು ಮತ್ತು ಐಕಾನ್ ಅಪ್ಡೇಟ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ</translation> <translation id="4801448226354548035">ಖಾತೆಗಳನ್ನು ಮರೆಮಾಡು</translation> <translation id="4801512016965057443">ಮೊಬೈಲ್ ಡೇಟಾ ರೋಮಿಂಗ್ ಅನ್ನು ಅನುಮತಿಸಿ</translation> +<translation id="4803599447809045620">ಲಿಂಕ್ಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ</translation> <translation id="4804311503028830356">ಇತರ ಆಯ್ಕೆಗಳನ್ನು ಎಕ್ಸ್ಪ್ಲೋರ್ ಮಾಡಲು ಹಿಂದಿನ ಆ್ಯರೋ ಕ್ಲಿಕ್ ಮಾಡಿ</translation> <translation id="4804818685124855865">ಡಿಸ್ಕನೆಕ್ಟ್</translation> <translation id="4804827417948292437">ಆವಕಾಡೊ</translation> @@ -5733,6 +5742,7 @@ <translation id="5432223177001837288">ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳಲು, ಬದಲಿಗೆ ಟ್ಯಾಬ್ ಹಂಚಿಕೊಳ್ಳಿ</translation> <translation id="5432872710261597882">ನೀವು ಇದನ್ನು ಇಷ್ಟಪಡುತ್ತೀರಿ ಎಂಬ ಫೀಡ್ಬ್ಯಾಕ್ ಅನ್ನು ಥಂಬ್ಸ್ ಅಪ್ ಸಲ್ಲಿಸುತ್ತದೆ.</translation> <translation id="543338862236136125">ಪಾಸ್ವರ್ಡ್ ಎಡಿಟ್ ಮಾಡಿ</translation> +<translation id="5433865420958136693">ಲಭ್ಯವಿರುವಾಗ ಗ್ರಾಫಿಕ್ಸ್ ವೇಗವರ್ಧಕವನ್ನು ಬಳಸಿ</translation> <translation id="5434065355175441495">PKCS #1 RSA ಎನ್ಕ್ರಿಪ್ಶನ್</translation> <translation id="5435274640623994081">ಇಯರ್ಕಾನ್ ಲಾಗ್ ಇನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation> <translation id="5435779377906857208">ನಿಮ್ಮ ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಲು <ph name="HOST" /> ಗೆ ಯಾವಾಗಲೂ ಅನುಮತಿಸಿ</translation> @@ -6471,6 +6481,7 @@ <translation id="6020431688553761150">ಈ ಸಂಪನ್ಮೂಲವನ್ನು ಪ್ರವೇಶಿಸಲು ನಿಮಗೆ ಸರ್ವರ್ ದೃಢೀಕರಿಸಿಲ್ಲ.</translation> <translation id="6021293122504240352"><ph name="APPS" /> ಆ್ಯಪ್ಗಳು ಇನ್ನು ಮುಂದೆ ಬೆಂಬಲಿತವಾಗಿಲ್ಲ</translation> <translation id="6021969570711251331">ಒಂದರ ಮೇಲೆ ಮತ್ತೊಂದು</translation> +<translation id="602212068530399867">ವಿಳಾಸ ಪಟ್ಟಿ ಮತ್ತು ಲಾಂಚರ್ನಲ್ಲಿ ಬಳಸಲಾದ ಸರ್ಚ್ ಎಂಜಿನ್.</translation> <translation id="6022526133015258832">ಪೂರ್ಣ ಪರದೆಯನ್ನು ತೆರೆಯಿರಿ</translation> <translation id="6022659036123304283">Chrome ಅನ್ನು ನಿಮ್ಮದಾಗಿಸಿಕೊಳ್ಳಿ</translation> <translation id="6023643151125006053">ಈ ಸಾಧನವು (SN: <ph name="SERIAL_NUMBER" />), <ph name="SAML_DOMAIN" /> ನ ನಿರ್ವಾಹಕರಿಂದ ಲಾಕ್ ಮಾಡಲ್ಪಟ್ಟಿದೆ.</translation> @@ -7879,6 +7890,7 @@ <translation id="7131431455372521159">ಎಲ್ಲಾ ಟ್ರ್ಯಾಕ್ಪಾಯಿಂಟ್ಗಳು ಡಿಸ್ಕನೆಕ್ಟ್ ಆಗಿವೆ</translation> <translation id="7131896909366247105"><ph name="APP_NAME" />, ನಿರೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ</translation> <translation id="7134098520442464001">ಪಠ್ಯವನ್ನು ಚಿಕ್ಕದಾಗಿಸಿ</translation> +<translation id="7134951043985383439">ಅಪಾಯಕಾರಿ ಫೈಲ್ ಅನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲಾಗಿದೆ</translation> <translation id="7135729336746831607">ಬ್ಲೂಟೂತ್ ಆನ್ ಮಾಡಬೇಕೆ?</translation> <translation id="7136694880210472378">ಡಿಫಾಲ್ಟ್ ಮಾಡಿ</translation> <translation id="7137771508221868414">ಸೈಟ್ಗಳು ಮತ್ತು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿದ ಆ್ಯಪ್ಗಳಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ <ph name="TOTAL_USAGE" /> ಡೇಟಾವನ್ನು ಇದು ಅಳಿಸುತ್ತದೆ</translation> @@ -8046,6 +8058,7 @@ <translation id="727441411541283857"><ph name="PERCENTAGE" />% - <ph name="TIME" /> ಪೂರ್ಣಗೊಳ್ಳುವವರೆಗೆ</translation> <translation id="727595954130325265">ಈಗಲೇ ಶಾಪ್ ಮಾಡಿ</translation> <translation id="7276100255011548441">4 ವಾರಗಳಿಗಿಂತ ಹಳೆಯದಾದ ವಿಷಯಗಳನ್ನು Chrome ಸ್ವಯಂ-ಅಳಿಸುತ್ತದೆ. ನೀವು ಬ್ರೌಸ್ ಮಾಡುತ್ತಿದ್ದಂತೆ, ಒಂದು ವಿಷಯವು ಪಟ್ಟಿಯಲ್ಲಿ ಪುನಃ ಕಾಣಿಸಿಕೊಳ್ಳಬಹುದು. ಅಥವಾ ಸೈಟ್ಗಳ ಜೊತೆಗೆ Chrome ಹಂಚಿಕೊಳ್ಳಲು ನೀವು ಬಯಸದ ವಿಷಯಗಳನ್ನು ನೀವು ನಿರ್ಬಂಧಿಸಬಹುದು. <ph name="BEGIN_LINK" />Chrome ನಲ್ಲಿ ನಿಮ್ಮ ಜಾಹೀರಾತು ಗೌಪ್ಯತೆಯನ್ನು ನಿರ್ವಹಿಸುವ<ph name="END_LINK" /> ಕುರಿತು ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ.</translation> +<translation id="7278164481614262110">AI ಮೂಲಕ ಥೀಮ್ಗಳನ್ನು ರಚಿಸಿ</translation> <translation id="727952162645687754">ಡೌನ್ಲೋಡ್ ದೋಷ</translation> <translation id="7280649757394340890">ಪಠ್ಯದಿಂದ ಧ್ವನಿಯ ಧ್ವನಿ ಸೆಟ್ಟಿಂಗ್ಗಳು</translation> <translation id="7280877790564589615">ಅನುಮತಿ ವಿನಂತಿಸಲಾಗಿದೆ</translation> @@ -8474,7 +8487,6 @@ <translation id="7610337976012700501">ಈ ಸಂಪರ್ಕಗಳ ಜೊತೆಗೆ <ph name="FEATURE_NAME" /> ಅನ್ನು ಬಳಸಲು, ಅವರ Google ಖಾತೆಯೊಂದಿಗೆ ಲಿಂಕ್ ಮಾಡಲಾದ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ನಿಮ್ಮ ಸಂಪರ್ಕಗಳಲ್ಲಿ ಸೇರಿಸಿ.</translation> <translation id="7611713099524036757">ಮೆಟಾ</translation> <translation id="7612050744024016345">ಎಲ್ಲಾ ಎಕ್ಸ್ಟೆನ್ಶನ್ಗಳು</translation> -<translation id="7612401678989660900">ಮೈಕ್ರೊಫೋನ್ ಅನುಮತಿಯ ಮೂಲಕ ಆ್ಯಪ್ಗಳು ಮತ್ತು ವೆಬ್ಸೈಟ್ಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಅನುಮತಿಸಿ</translation> <translation id="7612497353238585898">ಸಕ್ರಿಯ ಸೈಟ್</translation> <translation id="7612655942094160088">ಸಂಪರ್ಕಿತ ಫೋನ್ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ.</translation> <translation id="7612989789287281429">ನಿಮ್ಮನ್ನು ಸೈನ್ ಇನ್ ಮಾಡಲಾಗುತ್ತಿದೆ…</translation> @@ -8740,6 +8752,7 @@ <ph name="EXTENSION_NAME" /></translation> <translation id="7789963078219276159">ಆರಂಭಿಕ ಪುಟದ ಹಿನ್ನೆಲೆಯನ್ನು <ph name="CATEGORY" /> ಗೆ ಬದಲಾಯಿಸಲಾಗಿದೆ.</translation> +<translation id="7791429245559955092">ನೀವು ಪ್ರಸ್ತುತ ಬಳಸುತ್ತಿರುವ Chrome ಪ್ರೊಫೈಲ್ನಲ್ಲಿ ಈ ಆ್ಯಪ್ ಅನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲಾಗುತ್ತದೆ.</translation> <translation id="7791436592012979144">ಹಿಮ್ಮುಖ ಸ್ಕ್ರಾಲ್ ಮಾಡುವಿಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ</translation> <translation id="7791543448312431591">ಸೇರಿಸು</translation> <translation id="7792012425874949788">ಸೈನ್ ಇನ್ ಮಾಡುವುದರೊಂದಿಗೆ ಯಾವುದೋ ತಪ್ಪು ಸಂಭವಿಸಿದೆ</translation> @@ -9132,6 +9145,7 @@ <translation id="8089547136368562137">ಇದನ್ನು ಅತ್ಯುತ್ತಮ Google ಫೀಚರ್ ಮೂಲಕ ಸುರಕ್ಷಿತಗೊಳಿಸಲಾಗಿದೆ</translation> <translation id="8090234456044969073">ನಿಮ್ಮ ಪದೇ ಪದೇ ಭೇಟಿ ನೀಡಿದ ವೆಬ್ಸೈಟ್ಗಳ ಪಟ್ಟಿಯನ್ನು ಓದಿ</translation> <translation id="8090513782447872344">ಪುನಃ ನೋಡಲು ನೀವು ಯಾವಾಗ ಬೇಕಾದರೂ ಹಿಂತಿರುಗಬಹುದು</translation> +<translation id="8090579562279016251">ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ ಆದರೆ V8 ಅನ್ನು ಅಸಿಮೆಟ್ರಿಕ್ ಎನ್ಕ್ರಿಪ್ಶನ್ಗಳ ವಿರುದ್ದ ಮತ್ತಷ್ಟು ಪ್ರತಿರಕ್ಷಣೆ ಮಾಡುತ್ತದೆ</translation> <translation id="8090686009202681725">AI ಮೂಲಕ ಥೀಮ್ ಅನ್ನು ರಚಿಸಿ</translation> <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತಿಲ್ಲ</translation> <translation id="8094536695728193970">ಏಪ್ರಿಕಾಟ್</translation> @@ -9178,6 +9192,7 @@ <translation id="8124313775439841391">ನಿರ್ವಹಿಸಲಾದ ONC</translation> <translation id="8125651784723647184">ಪಾಸ್ವರ್ಡ್ ಹಂಚಿಕೆಯನ್ನು ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ನಿರ್ವಹಿಸುತ್ತಾರೆ</translation> <translation id="8129265306888404830">ನಿಮ್ಮ ಸಂಸ್ಥೆಯಲ್ಲಿನ (<ph name="EMAIL_DOMAIN" />) ನಿಮ್ಮ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಬಳಸಲು, ನೀವು ಎಂಟರ್ಪ್ರೈಸ್ ದಾಖಲಾತಿಯನ್ನು ಬಳಸಬೇಕಾಗುತ್ತದೆ. ಈ ಸಾಧನವು ನಿಮ್ಮ ವೈಯಕ್ತಿಕ ಬಳಕೆಗಾಗಿ ಇದ್ದರೆ, ನಿಮ್ಮ ವೈಯಕ್ತಿಕ Google ಖಾತೆ ಬಳಸಿಕೊಂಡು ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation> +<translation id="8130476996317833777">V8 ಆಪ್ಟಿಮೈಸರ್ ಅನ್ನು ಬಳಸಲು ಸೈಟ್ಗಳನ್ನು ಅನುಮತಿಸಬೇಡಿ</translation> <translation id="813082847718468539">ಸೈಟ್ ಮಾಹಿತಿಯನ್ನು ವೀಕ್ಷಿಸಿ</translation> <translation id="8131740175452115882">ದೃಢೀಕರಿಸು</translation> <translation id="8133297578569873332">ಸ್ವೀಕಾರಾರ್ಹ - FM</translation> @@ -9561,6 +9576,7 @@ <translation id="8422748173858722634">IMEI</translation> <translation id="8422787418163030046">ಟ್ರೇ ಕಾಣೆಯಾಗಿದೆ</translation> <translation id="8424250197845498070">ಸುಧಾರಿತ ರಕ್ಷಣೆಯಿಂದ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</translation> +<translation id="842501938276307467">ಪ್ರಾಯೋಗಿಕ AI ಫೀಚರ್ಗಳನ್ನು ಬಳಸಿ ನೋಡಿ</translation> <translation id="8425213833346101688">ಬದಲಿಸಿ</translation> <translation id="8425492902634685834">ಕಾರ್ಯಪಟ್ಟಿಗೆ ಪಿನ್ ಮಾಡು</translation> <translation id="8425768983279799676">ನೀವು ಸಾಧನವನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಲು ನಿಮ್ಮ ಪಿನ್ ಅನ್ನು ಬಳಸಬಹುದು.</translation> @@ -9715,6 +9731,7 @@ <ph name="BEGIN_PARAGRAPH2" /> <ph name="USER_EMAIL" /> ಅನ್ನು ಬಳಸಲು, ಮೊದಲು ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ರಿಂದ ಸೈನ್ ಔಟ್ ಮಾಡಿ. ನಂತರ ಲಾಗಿನ್ ಸ್ಕ್ರೀನ್ನ ಕೆಳಭಾಗದಲ್ಲಿ, ವ್ಯಕ್ತಿಯನ್ನು ಸೇರಿಸು ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ.<ph name="END_PARAGRAPH2" /></translation> <translation id="85486688517848470">ಮೇಲಿನ-ಸಾಲುಗಳ ಕೀಗಳ ನಡುವಳಿಕೆಯನ್ನು ಬದಲಾಯಿಸಲು ಹುಡುಕಾಟದ ಕೀ ಅನ್ನು ಒತ್ತಿ ಹಿಡಿಯಿರಿ</translation> <translation id="8549316893834449916">ನೀವು Gmail, Drive, YouTube ಮತ್ತು ಇನ್ನಷ್ಟವುಗಳಿಗೆ ಬಳಸುವ ಅದೇ ಖಾತೆಯನ್ನು ನಿಮ್ಮ Chromebook ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಲು ನಿಮ್ಮ Google ಖಾತೆಯನ್ನು ಬಳಸುತ್ತೀರಿ.</translation> +<translation id="8550239873869577759">ಅನುಮಾನಾಸ್ಪದ ಫೈಲ್ ಅನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲಾಗಿದೆ</translation> <translation id="8551388862522347954">ಪರವಾನಗಿಗಳು</translation> <translation id="8551588720239073785">ದಿನಾಂಕ ಮತ್ತು ಸಮಯದ ಸೆಟ್ಟಿಂಗ್ಗಳು</translation> <translation id="8551647092888540776">ಆಫ್ಲೈನ್ನಲ್ಲಿರುವಾಗ <ph name="FILE_NAMES" /> ಅನ್ನು ತೆರೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ</translation> @@ -9770,6 +9787,7 @@ <translation id="8601206103050338563">TLS WWW ಗ್ರಾಹಕ ಅಪ್ಲಿಕೇಶನ್</translation> <translation id="8602674530529411098">ಆ್ಯಪ್ಗಳು (ಬೀಟಾ)</translation> <translation id="8602851771975208551">ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ನಲ್ಲಿನ ಮತ್ತೊಂದು ಪ್ರೋಗ್ರಾಂ Chrome ಕಾರ್ಯನಿರ್ವಹಿಸುವ ವಿಧಾನವನ್ನು ಬದಲಿಸಬಹುದಾದಂತಹ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಸೇರಿಸಿದೆ.</translation> +<translation id="8604513817270995005">ವಿಮರ್ಶೆಗಳಂತಹ ವೆಬ್ನಲ್ಲಿರುವ ವಿಷಯಗಳಿಗಾಗಿ ಕಿರು-ರೂಪದ ಕಂಟೆಂಟ್ ಅನ್ನು ಬರೆಯಲು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಸೂಚಿಸಲಾದ ಕಂಟೆಂಟ್ ನಿಮ್ಮ ಪ್ರಾಂಪ್ಟ್ಗಳು ಮತ್ತು ವೆಬ್ ಪುಟದ ಕಂಟೆಂಟ್ ಅನ್ನು ಆಧರಿಸಿದೆ. ಈ ಫೀಚರ್ ಅನ್ನು ಬಳಸಲು, ಟೆಕ್ಸ್ಟ್ ಬಾಕ್ಸ್ ಮೇಲೆ ಬಲ-ಕ್ಲಿಕ್ ಮಾಡಿ.</translation> <translation id="8605428685123651449">SQLite ಸ್ಮರಣೆ</translation> <translation id="8607171490667464784">ನಿಷ್ಕ್ರಿಯವಾಗಿರುವಾಗ ಮತ್ತು ಬ್ಯಾಟರಿ ಬಳಸುತ್ತಿರುವಾಗ</translation> <translation id="8607828412110648570">ನಿಮ್ಮ ಬ್ಲೂಟೂತ್ ಸಾಧನವು ಜೋಡಿಸುವಿಕೆ ಮೋಡ್ನಲ್ಲಿದೆ ಮತ್ತು ಸಮೀಪದಲ್ಲಿದೆ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ನೀವು ವಿಶ್ವಾಸ ಹೊಂದಿರುವ ಸಾಧನಗಳ ಜೊತೆ ಮಾತ್ರ ಜೋಡಿಸಿ. ಈ Chromebook ನಲ್ಲಿನ ಎಲ್ಲಾ ಖಾತೆಗಳಿಗೆ ಜೋಡಿಸಿರುವ ಸಾಧನಗಳು ಗೋಚರಿಸುತ್ತವೆ. <ph name="BEGIN_LINK_LEARN_MORE" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK_LEARN_MORE" /></translation> @@ -10282,6 +10300,7 @@ <translation id="8985191021574400965">Chromebook ನ Steam ಗೆ ಸುಸ್ವಾಗತ</translation> <translation id="8985264973231822211"><ph name="DEVICE_LAST_ACTIVATED_TIME" /> ದಿನದ ಹಿಂದೆ ಸಕ್ರಿಯ</translation> <translation id="8985661493893822002">ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಲು ಇಂಟರ್ನೆಟ್ಗೆ ಕನೆಕ್ಟ್ ಮಾಡಿ.</translation> +<translation id="8985661571449404298">ಸುರಕ್ಷಿತವಲ್ಲದ ಫೈಲ್ ಅನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲಾಗಿದೆ</translation> <translation id="8986362086234534611">ಮರೆತುಹೋಗು</translation> <translation id="8986494364107987395">ಬಳಕೆಯ ಅಂಕಿಅಂಶಗಳನ್ನು ಮತ್ತು ಕ್ರಾಶ್ ವರದಿಗಳನ್ನು Google ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರವಾನಿಸು</translation> <translation id="8987305927843254629">ಪ್ರತಿಯೊಬ್ಬ ವ್ಯಕ್ತಿಯು ತಮ್ಮ ಅನುಭವವನ್ನು ವೈಯಕ್ತಿಕಗೊಳಿಸಬಹುದು ಮತ್ತು ಡೇಟಾವನ್ನು ಖಾಸಗಿಯಾಗಿರಿಸಬಹುದು.</translation> @@ -10480,6 +10499,7 @@ <translation id="9116366756388192417">ವಿಷಯವನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation> <translation id="9116799625073598554">ಟಿಪ್ಪಣಿ ತೆಗೆದುಕೊಳ್ಳುವಿಕೆ ಅಪ್ಲಿಕೇಶನ್</translation> <translation id="9117030152748022724">ನಿಮ್ಮ ಆ್ಯಪ್ಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation> +<translation id="9119587891086680311">ಈ ಫೀಚರ್ಗಳು AI ಅನ್ನು ಬಳಸುತ್ತವೆ, ಇವುಗಳು ಇನ್ನೂ ಅಭಿವೃದ್ಧಿಯ ಆರಂಭಿಕ ಹಂತದಲ್ಲಿವೆ ಮತ್ತು ಯಾವಾಗಲೂ ಅದನ್ನು ಸರಿಯಾಗಿ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲದಿರಬಹುದು.</translation> <translation id="9120362425083889527">ಇನ್ಸ್ಟಾಲೇಶನ್ ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸಲಾಗಲಿಲ್ಲ. ಪುನಃ ಪ್ರಯತ್ನಿಸಿ ಅಥವಾ ಈ ವಿಂಡೋವನ್ನು ಮುಚ್ಚಿ</translation> <translation id="9120693811286642342"><ph name="BEGIN_PARAGRAPH1" />ಉತ್ತಮ ಅನುಭವಕ್ಕಾಗಿ, ನಿಮ್ಮ ಆಂತರಿಕ ಡಿಸ್ಕ್ನಲ್ಲಿ <ph name="DEVICE_OS" /> ಅನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ ನೀವು ಇದನ್ನು ನಂತರ ಲಾಗಿನ್ ಸ್ಕ್ರೀನ್ನಿಂದಲೂ ಇನ್ಸ್ಟಾಲ್ ಮಾಡಬಹುದು.<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />ನೀವು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲು ಸಿದ್ಧರಿಲ್ಲದಿದ್ದರೆ, ಇದನ್ನು ಬಳಸಿ ನೋಡಲು ನೀವು USB ಇಂದ ರನ್ ಮಾಡಬಹುದು. ಇದು ನಿಮ್ಮ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ OS ಮತ್ತು ಡೇಟಾವನ್ನು ಉಳಿಸಿಕೊಳ್ಳುತ್ತದೆ, ಆದರೆ ನೀವು ಸಂಗ್ರಹಣೆ ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆಯ ಮಿತಿಗಳನ್ನು ನೋಡಬಹುದು.<ph name="END_PARAGRAPH2" /></translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb index b128298..2e02597 100644 --- a/chrome/app/resources/generated_resources_ko.xtb +++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -1111,6 +1111,7 @@ <translation id="1823768272150895732">글꼴</translation> <translation id="1823781806707127806">기존 인터넷 사용 기록을 관리 프로필에 추가</translation> <translation id="18245044880483936">백업 데이터는 자녀의 드라이브 스토리지 저장용량에 포함되지 않습니다.</translation> +<translation id="1825073796163165618">링크 사용 설정</translation> <translation id="1825565032302550710">포트 번호는 1024와 65535 사이여야 합니다.</translation> <translation id="182577151972096764">최근에 본 레시피</translation> <translation id="18260074040409954">어느 기기에서든 저장된 비밀번호를 사용할 수 있습니다. <ph name="EMAIL" />의 <ph name="GOOGLE_PASSWORD_MANAGER" />에 저장됩니다.</translation> @@ -1130,7 +1131,6 @@ <translation id="1832848789136765277">동기화 데이터에 항상 액세스하려면 본인 확인 절차를 거치세요.</translation> <translation id="1834503245783133039">다운로드 실패: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux 업그레이드 중</translation> -<translation id="1835612721186505600">카메라 권한이 있는 앱 및 웹사이트에 대한 액세스 허용</translation> <translation id="1838374766361614909">검색어 지우기</translation> <translation id="1839021455997460752">이메일 주소</translation> <translation id="1839540115464516994"><ph name="LOCATION" />에서 표시</translation> @@ -1351,6 +1351,7 @@ <translation id="1997616988432401742">내 인증서</translation> <translation id="1999115740519098545">시작 그룹</translation> <translation id="2002109485265116295">실시간</translation> +<translation id="2002160221914907025">실험용 AI</translation> <translation id="2003130567827682533">'<ph name="NAME" />' 데이터를 활성화하려면 먼저 Wi-Fi 네트워크에 연결하세요.</translation> <translation id="2004413981947727241">어느 기기에서나 비밀번호 사용하기</translation> <translation id="2004697686368036666">일부 사이트에서 기능이 작동하지 않을 수 있음</translation> @@ -2011,6 +2012,7 @@ <translation id="2482878487686419369">알림</translation> <translation id="2482895651873876648"><ph name="GROUP_NAME" /> 그룹으로 탭을 이동함 - <ph name="GROUP_CONTENTS" /></translation> <translation id="2483627560139625913">Chrome 브라우저 설정에서 검색엔진 설정</translation> +<translation id="2483698983806594329">확인되지 않은 파일이 다운로드됨</translation> <translation id="2484743711056182585">권한 삭제</translation> <translation id="2484909293434545162">사이트에서 쿠키를 사용하는 경우 여기에 표시됩니다.</translation> <translation id="2484959914739448251">동기화된 모든 기기 및 Google 계정에서 인터넷 사용 기록을 삭제하려면 <ph name="BEGIN_LINK" />암호를 입력<ph name="END_LINK" />하세요.</translation> @@ -2150,6 +2152,7 @@ <translation id="2589658397149952302">Drive 파일 표시 안함</translation> <translation id="25899519884572181">읽기 모드 종료</translation> <translation id="2593499352046705383">시작하기 전에 데이터를 백업해 두어야 합니다. <ph name="DEVICE_OS" /> 운영체제를 설치하면 하드 드라이브가 덮어쓰기됩니다. 다음 페이지에서 자세히 알아보세요. g.co/flex/InstallGuide</translation> +<translation id="2594832159966169099">V8 보안 관리</translation> <translation id="2594999711683503743">Google에서 검색하거나 URL을 입력하세요.</translation> <translation id="2597073208962000830">Nearby Share는 블루투스 검색을 사용하여 근처 기기를 찾습니다.</translation> <translation id="2598710988533271874">새로운 Chrome 사용 가능</translation> @@ -2329,6 +2332,7 @@ <translation id="2730647855013151888">모든 개인 정보 포함</translation> <translation id="2730901670247399077">추천 그림 이모티콘</translation> <translation id="273093730430620027">카메라에 액세스하는 페이지입니다.</translation> +<translation id="2730956943403103181">V8 옵티마이저 사용이 허용되지 않음</translation> <translation id="2731392572903530958">닫은 창 다시 열기(&E)</translation> <translation id="2731700343119398978">잠시 기다려 주세요...</translation> <translation id="2731971182069536520">다음번에 기기를 다시 시작하면 관리자가 일회성 업데이트를 실행하여 로컬 데이터가 삭제됩니다.</translation> @@ -2732,6 +2736,7 @@ <translation id="3025174326431589540">{COUNT,plural, =0{저장된 비밀번호 없음}=1{사이트 {COUNT}개의 비밀번호 확인함}other{사이트 및 앱 {COUNT}개의 비밀번호 확인함}}</translation> <translation id="3027296729579831126">Nearby Share 사용 설정</translation> <translation id="3027644380269727216">사이트 내 활동을 기반으로 추천됩니다. 이 설정을 사용하고 있습니다.</translation> +<translation id="3028445648481691885">다운로드가 취소됨</translation> <translation id="3029276696788198026">미리 로드 안함</translation> <translation id="3029466929721441205">앱 표시줄에 스타일러스 도구 표시</translation> <translation id="3029808567601324798">잠금 시간</translation> @@ -2837,6 +2842,7 @@ <translation id="3119948370277171654">어떤 콘텐츠/URL을 전송하고 계셨나요?</translation> <translation id="3122464029669770682">CPU</translation> <translation id="3122496702278727796">데이터 디렉터리 만들기 실패</translation> +<translation id="3122810280993140148">선택한 주제, 분위기, 시각적 스타일, 색상을 기반으로 맞춤 테마를 만듭니다. 이 기능을 사용하려면 새 탭을 열고 'Chrome 맞춤설정'을 클릭하세요.</translation> <translation id="3122883569442693641">세부정보 더보기</translation> <translation id="3124111068741548686">사용자 핸들</translation> <translation id="3124332159330678621">Chrome 브라우저를 새로운 디자인으로 맞춤설정합니다.</translation> @@ -2876,6 +2882,7 @@ <translation id="3159978855457658359">기기 이름 수정</translation> <translation id="3160928651883997588">VPN 환경설정</translation> <translation id="3161522574479303604">모든 언어</translation> +<translation id="3162766632262775911">V8 옵티마이저 사용이 항상 허용됨</translation> <translation id="3162853326462195145">학교 계정</translation> <translation id="3162899666601560689">사이트에서 사용자의 로그인 상태를 유지하거나 장바구니에 담긴 상품을 기억하는 등 탐색 환경을 개선하기 위해 쿠키를 사용할 수 있습니다.</translation> <translation id="3163201441334626963">공급업체 <ph name="VENDOR_ID" />의 알 수 없는 제품 <ph name="PRODUCT_ID" /></translation> @@ -3345,6 +3352,7 @@ <translation id="3547954654003013442">프록시 설정</translation> <translation id="3548162552723420559">주변 환경에 맞게 화면 색상을 조정합니다.</translation> <translation id="354949590254473526">맞춤 DNS 쿼리 URL 입력</translation> +<translation id="3549827561154008969">다운로드가 재개됨</translation> <translation id="3550593477037018652">셀룰러 네트워크 연결 해제</translation> <translation id="3550915441744863158">Chrome은 자동으로 업데이트되므로 항상 최신 버전을 사용할 수 있습니다.</translation> <translation id="3551320343578183772">탭 닫기</translation> @@ -3494,6 +3502,7 @@ <translation id="3666196264870170605">Intel Wi-Fi NIC 디버그 덤프</translation> <translation id="3670113805793654926">모든 공급업체의 기기</translation> <translation id="3670229581627177274">블루투스 켜기</translation> +<translation id="3670480940339182416">사이트에서 V8 옵티마이저를 사용할 수 있음</translation> <translation id="3672681487849735243">하드웨어에서 문제가 발견되었습니다.</translation> <translation id="3673097791729989571">로그인 호스팅 제공: <ph name="SAML_DOMAIN" /></translation> <translation id="3673622964532248901">이 기기로 전송할 수 없습니다.</translation> @@ -4584,7 +4593,6 @@ <translation id="4507128560633489176">데이터가 지워졌습니다.</translation> <translation id="4507373251891673233"><ph name="HOST" />의 모든 확장 프로그램을 차단했습니다.</translation> <translation id="4507401683427517298">'바로가기 추가'를 클릭합니다</translation> -<translation id="4508150454272293946">앱 및 웹페이지에서 이 기기에 연결된 카메라를 사용하도록 허용합니다. 카메라에 문제가 계속 발생하면 앱을 다시 시작하거나 웹페이지를 새로고침하세요.</translation> <translation id="450867954911715010">접근성 설정</translation> <translation id="4508765956121923607">소스 보기(&O)</translation> <translation id="4509277363725254222"><ph name="BEGIN_BOLD_USERNAME" />사용자 이름<ph name="END_BOLD_USERNAME" />과 <ph name="BEGIN_BOLD_PASSWORD" />비밀번호<ph name="END_BOLD_PASSWORD" /> 사본을 공유하면 가족 구성원이 Google 비밀번호 관리자를 사용하여 입력할 수 있습니다.</translation> @@ -4948,6 +4956,7 @@ <translation id="4800839971935185386">이름 및 아이콘 업데이트 검토</translation> <translation id="4801448226354548035">계정 숨기기</translation> <translation id="4801512016965057443">모바일 데이터 로밍 허용</translation> +<translation id="4803599447809045620">링크 사용 중지</translation> <translation id="4804311503028830356">다른 옵션을 살펴보려면 뒤로 화살표를 클릭합니다.</translation> <translation id="4804818685124855865">연결 해제</translation> <translation id="4804827417948292437">아보카도</translation> @@ -5739,6 +5748,7 @@ <translation id="5432223177001837288">오디오를 공유하려면 탭을 대신 공유하세요.</translation> <translation id="5432872710261597882">좋아요를 누르면 이 기능이 마음에 든다는 의견이 제출됩니다.</translation> <translation id="543338862236136125">비밀번호 수정</translation> +<translation id="5433865420958136693">가능한 경우 그래픽 가속 사용</translation> <translation id="5434065355175441495">PKCS #1 RSA 암호화</translation> <translation id="5435274640623994081">이어콘 로깅 사용</translation> <translation id="5435779377906857208"><ph name="HOST" />의 위치 액세스 항상 허용</translation> @@ -6476,6 +6486,7 @@ <translation id="6020431688553761150">서버에서 승인하지 않아 이 리소스에 액세스할 수 없습니다.</translation> <translation id="6021293122504240352">앱 <ph name="APPS" />개가 더 이상 지원되지 않음</translation> <translation id="6021969570711251331">인터리브</translation> +<translation id="602212068530399867">주소 표시줄과 런처에서 사용되는 검색엔진입니다.</translation> <translation id="6022526133015258832">전체화면 열기</translation> <translation id="6022659036123304283">나만의 Chrome 만들기</translation> <translation id="6023643151125006053"><ph name="SAML_DOMAIN" /> 관리자가 이 기기(SN: <ph name="SERIAL_NUMBER" />)를 잠갔습니다.</translation> @@ -7881,6 +7892,7 @@ <translation id="7131431455372521159">모든 트랙 포인트의 연결이 해제되었습니다</translation> <translation id="7131896909366247105"><ph name="APP_NAME" />, 대기 중</translation> <translation id="7134098520442464001">텍스트 축소</translation> +<translation id="7134951043985383439">위험한 파일이 다운로드됨</translation> <translation id="7135729336746831607">블루투스를 사용 설정하시겠습니까?</translation> <translation id="7136694880210472378">기본으로 설정</translation> <translation id="7137771508221868414">사이트 및 설치된 앱에서 저장한 <ph name="TOTAL_USAGE" />의 데이터가 삭제됩니다.</translation> @@ -8048,6 +8060,7 @@ <translation id="727441411541283857"><ph name="PERCENTAGE" />% - 충전 완료까지 <ph name="TIME" /> 남음</translation> <translation id="727595954130325265">지금 구매</translation> <translation id="7276100255011548441">Chrome은 4주 이상 된 주제를 자동 삭제합니다. 인터넷 사용에 따라 특정 주제가 목록에 다시 표시될 수 있습니다. 또는 사용자가 Chrome에서 사이트와 공유하지 않았으면 하는 주제를 차단할 수 있습니다. <ph name="BEGIN_LINK" />Chrome에서 광고 개인 정보 보호 관리<ph name="END_LINK" />에 대해 자세히 알아보세요.</translation> +<translation id="7278164481614262110">AI로 테마 만들기</translation> <translation id="727952162645687754">다운로드 오류</translation> <translation id="7280649757394340890">TTS 음성 설정</translation> <translation id="7280877790564589615">권한 요청됨</translation> @@ -8476,7 +8489,6 @@ <translation id="7610337976012700501">내 연락처에 있는 사용자와 <ph name="FEATURE_NAME" />을(를) 사용하려면 사용자의 Google 계정에 연결된 이메일 주소를 내 연락처에 추가하세요.</translation> <translation id="7611713099524036757">메타</translation> <translation id="7612050744024016345">전체 확장 프로그램</translation> -<translation id="7612401678989660900">마이크 권한이 있는 앱 및 웹사이트의 액세스 허용</translation> <translation id="7612497353238585898">활성 사이트</translation> <translation id="7612655942094160088">연결된 휴대전화 기능 사용 설정.</translation> <translation id="7612989789287281429">로그인하는 중…</translation> @@ -8743,6 +8755,7 @@ <ph name="EXTENSION_NAME" /></translation> <translation id="7789963078219276159">시작 페이지 배경화면이 <ph name="CATEGORY" />(으)로 변경되었습니다.</translation> +<translation id="7791429245559955092">이 애플리케이션이 현재 사용하는 Chrome 프로필에 설치됩니다</translation> <translation id="7791436592012979144">역방향 스크롤 사용 설정됨</translation> <translation id="7791543448312431591">추가</translation> <translation id="7792012425874949788">로그인 중에 문제가 발생했습니다.</translation> @@ -9139,6 +9152,7 @@ <translation id="8089547136368562137">Google 최고의 보안 기술로 보호됩니다.</translation> <translation id="8090234456044969073">가장 자주 방문한 웹사이트 목록 보기</translation> <translation id="8090513782447872344">언제든 돌아와서 다시 살펴볼 수 있습니다</translation> +<translation id="8090579562279016251">성능은 감소하지만 V8의 공격에 대한 저항력이 강화됨</translation> <translation id="8090686009202681725">AI로 테마 만들기</translation> <translation id="8093359998839330381"><ph name="PLUGIN_NAME" />이(가) 응답하지 않습니다</translation> <translation id="8094536695728193970">애프리콧</translation> @@ -9185,6 +9199,7 @@ <translation id="8124313775439841391">관리되는 ONC</translation> <translation id="8125651784723647184">비밀번호 공유는 관리자가 관리합니다.</translation> <translation id="8129265306888404830">조직(<ph name="EMAIL_DOMAIN" />)의 이메일 주소를 사용하려면 엔터프라이즈 등록을 사용해야 합니다. 이 기기를 개인용으로 사용하는 경우 개인 Google 계정으로 로그인하세요.</translation> +<translation id="8130476996317833777">사이트에서 V8 옵티마이저를 사용하도록 허용하지 않음</translation> <translation id="813082847718468539">사이트 정보 보기</translation> <translation id="8131740175452115882">확인</translation> <translation id="8133297578569873332">양호함 - FM</translation> @@ -9568,6 +9583,7 @@ <translation id="8422748173858722634">IMEI</translation> <translation id="8422787418163030046">트레이 없음</translation> <translation id="8424250197845498070">고급 보호 기능으로 차단됨</translation> +<translation id="842501938276307467">실험용 AI 기능 사용해 보기</translation> <translation id="8425213833346101688">변경</translation> <translation id="8425492902634685834">작업 표시줄에 고정</translation> <translation id="8425768983279799676">PIN을 사용하여 기기를 잠금 해제할 수 있습니다.</translation> @@ -9722,6 +9738,7 @@ <ph name="BEGIN_PARAGRAPH2" /><ph name="USER_EMAIL" /> 계정을 사용하려면 먼저 <ph name="DEVICE_TYPE" />에서 로그아웃한 다음, 로그인 화면 하단에서 사용자 추가를 선택하세요.<ph name="END_PARAGRAPH2" /></translation> <translation id="85486688517848470">맨 위 키의 동작을 전환하려면 검색 키를 길게 누름</translation> <translation id="8549316893834449916">Gmail, 드라이브, YouTube 등에 사용하는 계정과 동일한 Google 계정으로 Chromebook에 로그인합니다.</translation> +<translation id="8550239873869577759">의심스러운 파일이 다운로드됨</translation> <translation id="8551388862522347954">라이선스</translation> <translation id="8551588720239073785">날짜 및 시간 설정</translation> <translation id="8551647092888540776">오프라인 상태에서 <ph name="FILE_NAMES" /> 파일을 열 수 없음</translation> @@ -9777,6 +9794,7 @@ <translation id="8601206103050338563">TLS WWW 클라이언트 인증</translation> <translation id="8602674530529411098">앱(베타)</translation> <translation id="8602851771975208551">컴퓨터의 다른 프로그램에서 Chrome 작동에 영향을 줄 수 있는 앱을 추가했습니다.</translation> +<translation id="8604513817270995005">리뷰와 같이 웹상의 짧은 형식 콘텐츠를 작성하는 데 도움이 됩니다. 추천 콘텐츠는 사용자의 프롬프트와 웹페이지의 콘텐츠를 기반으로 합니다. 이 기능을 사용하려면 텍스트 상자를 마우스 오른쪽 버튼으로 클릭합니다.</translation> <translation id="8605428685123651449">SQLite 메모리</translation> <translation id="8607171490667464784">비활성 상태이며 배터리를 사용하는 동안</translation> <translation id="8607828412110648570">블루투스 기기를 페어링 모드로 설정하고 가까이 두세요. 신뢰하는 기기만 페어링하세요. 페어링된 기기는 이 Chromebook의 모든 계정에 표시됩니다. <ph name="BEGIN_LINK_LEARN_MORE" />자세히 알아보기<ph name="END_LINK_LEARN_MORE" /></translation> @@ -10288,6 +10306,7 @@ <translation id="8985191021574400965">Chromebook용 Steam 시작하기</translation> <translation id="8985264973231822211"><ph name="DEVICE_LAST_ACTIVATED_TIME" />일 전에 사용</translation> <translation id="8985661493893822002"><ph name="DEVICE_TYPE" /> 기기에 로그인하려면 인터넷에 연결하세요</translation> +<translation id="8985661571449404298">안전하지 않은 파일이 다운로드됨</translation> <translation id="8986362086234534611">저장 안함</translation> <translation id="8986494364107987395">사용 통계 및 비정상 종료 보고서를 Google에 자동으로 전송합니다.</translation> <translation id="8987305927843254629">모든 사용자는 자신의 환경을 맞춤설정하고 데이터를 비공개로 유지할 수 있습니다.</translation> @@ -10486,6 +10505,7 @@ <translation id="9116366756388192417">주제 선택</translation> <translation id="9116799625073598554">메모 앱</translation> <translation id="9117030152748022724">앱 관리</translation> +<translation id="9119587891086680311">이러한 기능은 AI를 사용하고 있으며 초기 개발 단계이며 항상 정확하지는 않습니다.</translation> <translation id="9120362425083889527">설치를 완료할 수 없습니다. 다시 시도하거나 이 창을 닫으세요.</translation> <translation id="9120693811286642342"><ph name="BEGIN_PARAGRAPH1" />최적의 환경에서 이용하려면 <ph name="DEVICE_OS" />을 내부 디스크에 설치하세요. 나중에 로그인 화면에서 설치할 수도 있습니다.<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />아직 설치할 준비가 되지 않았다면 USB에서 실행하여 사용해 볼 수도 있습니다. 기존 OS와 데이터는 그대로 유지되지만 저장용량과 성능이 제한될 수 있습니다<ph name="END_PARAGRAPH2" /></translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb index ed4ec285..d4f7139 100644 --- a/chrome/app/resources/generated_resources_ky.xtb +++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -1130,7 +1130,6 @@ <translation id="1832848789136765277">Шайкештирилген маалыматыңызга каалаган убакта кирүү үчүн өзүңүздү ырастаңыз</translation> <translation id="1834503245783133039">Жүктөлүп алынбай калды: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux'ту жаңыртуу</translation> -<translation id="1835612721186505600">Колдонмолорго жана вебсайттарга камераны пайдаланууга уруксат берүү</translation> <translation id="1838374766361614909">Изделип жаткан нерсени өчүрүү</translation> <translation id="1839021455997460752">Электрондук почта дарегиңиз</translation> <translation id="1839540115464516994">Төмөнкүдө көрсөтүү: <ph name="LOCATION" /></translation> @@ -4584,7 +4583,6 @@ <translation id="4507128560633489176">Дайын-даректер өчүрүлдү.</translation> <translation id="4507373251891673233"><ph name="HOST" /> сайтынын бардык кеңейтүүлөрүн бөгөттөдүңүз</translation> <translation id="4507401683427517298">“Ыкчам баскыч кошуу” дегенди чыкылдатыңыз</translation> -<translation id="4508150454272293946">Колдонмолорго жана веб-баракчаларга бул түзмөккө туташкан камераны (-ларды) пайдаланууга уруксат бериңиз. Эгер камерага байланыштуу көйгөй оңдолбосо, колдонмону өчүрүп күйгүзүп же веб-баракчаны жаңыртып көрүңүз.</translation> <translation id="450867954911715010">Атайын мүмкүнчүлүктөрдүн параметрлери</translation> <translation id="4508765956121923607">Б&улакты карап көрүү</translation> <translation id="4509277363725254222"><ph name="BEGIN_BOLD_USERNAME" />Колдонуучунун атынын<ph name="END_BOLD_USERNAME" /> жана <ph name="BEGIN_BOLD_PASSWORD" />сырсөздүн<ph name="END_BOLD_PASSWORD" /> көчүрмөсүн бөлүшсөңүз, үй-бүлөлүк топтун мүчөсү аларды Сырсөздөрдү башкаргычтын жардамы менен толтура алат.</translation> @@ -8476,7 +8474,6 @@ <translation id="7610337976012700501">Бул байланыштар менен <ph name="FEATURE_NAME" /> колдонуу үчүн байланыштарыңызга алардын Google аккаунту менен байланышкан электрондук почта дарегин кошуңуз.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Бардык кеңейтүүлөр</translation> -<translation id="7612401678989660900">Колдонмолорго жана вебсайттарга микрофонду пайдаланууга уруксат берүү</translation> <translation id="7612497353238585898">Активдүү сайт</translation> <translation id="7612655942094160088">Байланыштырылган телефондун функциясын иштетүү.</translation> <translation id="7612989789287281429">Кирип жатасыз…</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb index febd4c1..4c56c8a 100644 --- a/chrome/app/resources/generated_resources_lo.xtb +++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -1130,7 +1130,6 @@ <translation id="1832848789136765277">ເພື່ອກວດສອບວ່າທ່ານຈະສາມາດເຂົ້າເຖິງການຊິ້ງຂໍ້ມູນຂອງທ່ານໄດ້ສະເໝີ, ກະລຸນາຢັ້ງຢືນວ່າແມ່ນທ່ານແທ້ກ່ອນ</translation> <translation id="1834503245783133039">ການດາວໂຫຼດບໍ່ສຳເລັດ: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">ກຳລັງອັບເກຣດ Linux</translation> -<translation id="1835612721186505600">ອະນຸຍາດສິດເຂົ້າເຖິງສຳລັບແອັບ ແລະ ເວັບໄຊທີ່ມີສິດອະນຸຍາດກ້ອງຖ່າຍຮູບ</translation> <translation id="1838374766361614909">ລຶບການຊອກຫາ</translation> <translation id="1839021455997460752">ທີ່ຢູ່ອີເມວຂອງທ່ານ</translation> <translation id="1839540115464516994">ສະແດງໃນ <ph name="LOCATION" /></translation> @@ -4594,7 +4593,6 @@ <translation id="4507128560633489176">ລຶບລ້າງຂໍ້ມູນແລ້ວ.</translation> <translation id="4507373251891673233">ທ່ານໄດ້ບລັອກສ່ວນຂະຫຍາຍທັງໝົດຈາກ <ph name="HOST" /></translation> <translation id="4507401683427517298">ຄລິກ “ເພີ່ມທາງລັດ”</translation> -<translation id="4508150454272293946">ອະນຸຍາດໃຫ້ແອັບ ແລະ ໜ້າເວັບໃຊ້ກ້ອງທີ່ເຊື່ອມຕໍ່ກັບອຸປະກອນນີ້. ຫາກທ່ານຍັງພົບບັນຫາກ່ຽວກັບກ້ອງຂອງທ່ານ, ໃຫ້ລອງຣີສະຕາດແອັບ ຫຼື ໂຫຼດຂໍ້ມູນໜ້າເວັບຄືນໃໝ່.</translation> <translation id="450867954911715010">ການຕັ້ງຄ່າການຊ່ວຍເຂົ້າເຖິງ</translation> <translation id="4508765956121923607">ເບິ່ງແຫຼ່ງທີ່ມາ</translation> <translation id="4509277363725254222">ເມື່ອທ່ານແບ່ງປັນສຳເນົາ <ph name="BEGIN_BOLD_USERNAME" />ຊື່ຜູ້ໃຊ່້<ph name="END_BOLD_USERNAME" /> ແລະ <ph name="BEGIN_BOLD_PASSWORD" />ລະຫັດຜ່ານ<ph name="END_BOLD_PASSWORD" /> ຂອງທ່ານ, ຄອບຄົວທ່ານຈະສາມາດຕື່ມຂໍ້ມູນໃສ່ພວກມັນໄດ້ໂດຍການໃຊ້ຕົວຈັດການລະຫັດຜ່ານ Google</translation> @@ -8492,7 +8490,6 @@ <translation id="7610337976012700501">ເພື່ອໃຊ້ <ph name="FEATURE_NAME" /> ກັບລາຍຊື່ຜູ້ຕິດຕໍ່ເຫຼົ່ານີ້, ໃຫ້ເພີ່ມທີ່ຢູ່ອີເມວທີ່ລິ້ງກັບບັນຊີ Google ຂອງເຂົາເຈົ້າໃສ່ລາຍຊື່ຜູ້ຕິດຕໍ່ຂອງທ່ານ.</translation> <translation id="7611713099524036757">Meta</translation> <translation id="7612050744024016345">ສ່ວນຂະຫຍາຍທັງໝົດ</translation> -<translation id="7612401678989660900">ອະນຸຍາດສິດເຂົ້າເຖິງສຳລັບແອັບ ແລະ ເວັບໄຊທີ່ມີສິດອະນຸຍາດໄມໂຄຣໂຟນ</translation> <translation id="7612497353238585898">ເວັບໄຊທີ່ເຄື່ອນໄຫວຢູ່</translation> <translation id="7612655942094160088">ເປີດການນຳໃຊ້ຄຸນສົມບັດໂທລະສັບທີ່ເຊື່ອມຕໍ່ຢູ່.</translation> <translation id="7612989789287281429">ກຳລັງພາທ່ານເຂົ້າສູ່ລະບົບ…</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb index f7624ded..74b4f21 100644 --- a/chrome/app/resources/generated_resources_lt.xtb +++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -1135,7 +1135,6 @@ <translation id="1832848789136765277">Kad užtikrintumėte galimybę visada pasiekti sinchronizuojamus duomenis, patvirtinkite savo tapatybę</translation> <translation id="1834503245783133039">Nepavyko atsisiųsti: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Naujovinama „Linux“</translation> -<translation id="1835612721186505600">Leisti pasiekti programoms ir svetainėms, turinčioms fotoaparato leidimą</translation> <translation id="1838374766361614909">Išvalyti paiešką</translation> <translation id="1839021455997460752">Jūsų el. pašto adresas</translation> <translation id="1839540115464516994">Rodyti sistemoje „<ph name="LOCATION" />“</translation> @@ -4598,7 +4597,6 @@ <translation id="4507128560633489176">Duomenys išvalyti.</translation> <translation id="4507373251891673233">Užblokavote visus plėtinius iš <ph name="HOST" /></translation> <translation id="4507401683427517298">Spustelėkite „Pridėti šaukinį“.</translation> -<translation id="4508150454272293946">Leiskite programoms ir tinklalapiams naudoti prie šio įrenginio prijungtą (-us) fotoaparatą (-us). Jei vis tiek kyla problemų dėl fotoaparato, pabandykite paleisti programą iš naujo arba atnaujinti tinklalapį.</translation> <translation id="450867954911715010">Pasiekiamumo nustatymai</translation> <translation id="4508765956121923607">Žiūrėti ša&ltinį</translation> <translation id="4509277363725254222">Kai bendrinate <ph name="BEGIN_BOLD_USERNAME" />naudotojo vardo<ph name="END_BOLD_USERNAME" /> ir <ph name="BEGIN_BOLD_PASSWORD" />slaptažodžio<ph name="END_BOLD_PASSWORD" /> kopiją, šeimos grupės narys gali juos užpildyti naudodamas „Google“ slaptažodžių tvarkyklę</translation> @@ -8506,7 +8504,6 @@ <translation id="7610337976012700501">Norėdami naudoti „<ph name="FEATURE_NAME" />“ su šiais kontaktais, prie savo kontaktų pridėkite el. pašto adresą, susietą su jų „Google“ paskyra.</translation> <translation id="7611713099524036757">Meta</translation> <translation id="7612050744024016345">Visi plėtiniai</translation> -<translation id="7612401678989660900">Leisti pasiekti programoms ir svetainėms, turinčioms mikrofono leidimą</translation> <translation id="7612497353238585898">Aktyvi svetainė</translation> <translation id="7612655942094160088">Susietų telefono funkcijų įgalinimas.</translation> <translation id="7612989789287281429">Prisijungiama…</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb index 6da50b6..d5ae734 100644 --- a/chrome/app/resources/generated_resources_lv.xtb +++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -1121,7 +1121,6 @@ <translation id="1832848789136765277">Lai vienmēr varētu piekļūt saviem sinhronizētajiem datiem, apstipriniet savu identitāti.</translation> <translation id="1834503245783133039">Nesekmīga lejupielāde: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Notiek Linux jaunināšana</translation> -<translation id="1835612721186505600">Atļaujiet piekļuvi lietotnēm un vietnēm, kurām ir kameras atļauja.</translation> <translation id="1838374766361614909">Notīrīt meklēšanas vaicājumu</translation> <translation id="1839021455997460752">Jūsu e-pasta adrese</translation> <translation id="1839540115464516994">Rādīt šeit: <ph name="LOCATION" /></translation> @@ -4570,7 +4569,6 @@ <translation id="4507128560633489176">Dati notīrīti.</translation> <translation id="4507373251891673233">Jūs esat bloķējis visu paplašinājumu piekļuvi vietnei <ph name="HOST" />.</translation> <translation id="4507401683427517298">Noklikšķiniet uz Pievienot saīsni.</translation> -<translation id="4508150454272293946">Atļaut lietotnēm un tīmekļa lapām izmantot ar šo ierīci savienotās kameras. Ja problēma ar kameru joprojām nav novērsta, restartējiet lietotni vai atsvaidziniet tīmekļa lapu.</translation> <translation id="450867954911715010">Pieejamības iestatījumi</translation> <translation id="4508765956121923607">Skatīt av&otu</translation> <translation id="4509277363725254222">Ja kopīgosiet sava <ph name="BEGIN_BOLD_USERNAME" />lietotājvārda<ph name="END_BOLD_USERNAME" /> un <ph name="BEGIN_BOLD_PASSWORD" />paroles<ph name="END_BOLD_PASSWORD" /> kopiju, jūsu ģimenes loceklis varēs to aizpildīt, izmantojot Google paroļu pārvaldnieku.</translation> @@ -8464,7 +8462,6 @@ <translation id="7610337976012700501">Lai izmantotu funkciju <ph name="FEATURE_NAME" /> ar kontaktpersonām, pievienojiet kontaktpersonu sarakstam šo personu e-pasta adreses, kas saistītas ar viņu Google kontiem.</translation> <translation id="7611713099524036757">modificētājtaustiņš</translation> <translation id="7612050744024016345">Visi paplašinājumi</translation> -<translation id="7612401678989660900">Atļaujiet piekļuvi lietotnēm un vietnēm, kurām ir mikrofona atļauja.</translation> <translation id="7612497353238585898">Aktīva vietne</translation> <translation id="7612655942094160088">Iespējot pievienotā tālruņa funkcijas.</translation> <translation id="7612989789287281429">Notiek pierakstīšanās…</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb index 6bdcec6..5b04a78 100644 --- a/chrome/app/resources/generated_resources_mk.xtb +++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -1131,7 +1131,6 @@ <translation id="1832848789136765277">За да можете секогаш да пристапувате до податоците од синхронизацијата, потврдете дека сте вие</translation> <translation id="1834503245783133039">Преземањето е неуспешно: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Се надградува Linux</translation> -<translation id="1835612721186505600">Дозволете пристап за апликации и веб-сајтови со дозвола од камерата</translation> <translation id="1838374766361614909">Исчисти го пребарувањето</translation> <translation id="1839021455997460752">Вашата адреса на е-пошта</translation> <translation id="1839540115464516994">Прикажи во <ph name="LOCATION" /></translation> @@ -4585,7 +4584,6 @@ <translation id="4507128560633489176">Податоците се избришани.</translation> <translation id="4507373251891673233">Ги блокиравте сите екстензии од <ph name="HOST" /></translation> <translation id="4507401683427517298">Кликнете „Додај кратенка“</translation> -<translation id="4508150454272293946">Дозволете апликациите и веб-страниците да ги користат камерите поврзани со уредов. Ако и понатаму имате проблем со камерата, обидете се со рестартирање на апликацијата или освежување на веб-страницата.</translation> <translation id="450867954911715010">Поставки за пристапност</translation> <translation id="4508765956121923607">Прикажи и&звор</translation> <translation id="4509277363725254222">Кога ќе споделите копија од вашите <ph name="BEGIN_BOLD_USERNAME" />корисничко име<ph name="END_BOLD_USERNAME" /> и <ph name="BEGIN_BOLD_PASSWORD" />лозинка<ph name="END_BOLD_PASSWORD" />, членот на вашето семејство може да ги пополни со Google Password Manager</translation> @@ -8479,7 +8477,6 @@ <translation id="7610337976012700501">За да користите <ph name="FEATURE_NAME" /> со овие контакти, додајте ги адресите на е-пошта поврзани со нивните сметки на Google во вашите контакти.</translation> <translation id="7611713099524036757">Meta</translation> <translation id="7612050744024016345">Сите екстензии</translation> -<translation id="7612401678989660900">Дозволете пристап за апликации и веб-сајтови со дозвола за микрофонот</translation> <translation id="7612497353238585898">Активен сајт</translation> <translation id="7612655942094160088">Овозможи ги функциите на поврзаниот телефон.</translation> <translation id="7612989789287281429">Ве најавуваме…</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb index 0365f223..8efbfa4 100644 --- a/chrome/app/resources/generated_resources_ml.xtb +++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -1119,7 +1119,6 @@ <translation id="1832848789136765277">സമന്വയിപ്പിക്കുന്ന ഡാറ്റ നിങ്ങൾക്ക് എപ്പോഴും ആക്സസ് ചെയ്യാനാകുമെന്ന് ഉറപ്പാക്കാൻ ഇത് നിങ്ങളാണെന്ന് പരിശോധിച്ചുറപ്പിക്കുക</translation> <translation id="1834503245783133039">ഡൗൺലോഡ് പരാജയപ്പെട്ടു: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux അപ്ഗ്രേഡ് ചെയ്യുന്നു</translation> -<translation id="1835612721186505600">ക്യാമറാ അനുമതിയുള്ള ആപ്പുകൾക്കും വെബ്സൈറ്റുകൾക്കും ആക്സസ് അനുവദിക്കുക</translation> <translation id="1838374766361614909">തിരയൽ മായ്ക്കുക</translation> <translation id="1839021455997460752">നിങ്ങളുടെ ഇമെയിൽ വിലാസം</translation> <translation id="1839540115464516994"><ph name="LOCATION" /> എന്നതിൽ കാണിക്കുക</translation> @@ -4576,7 +4575,6 @@ <translation id="4507128560633489176">ഡാറ്റ മായ്ച്ചു.</translation> <translation id="4507373251891673233"><ph name="HOST" /> എന്നതിൽ നിന്നുള്ള എല്ലാ വിപുലീകരണങ്ങളും നിങ്ങൾ ബ്ലോക്ക് ചെയ്തു</translation> <translation id="4507401683427517298">“കുറുക്കുവഴി ചേർക്കുക” ക്ലിക്ക് ചെയ്യുക</translation> -<translation id="4508150454272293946">ഈ ഉപകരണത്തിലേക്ക് കണക്റ്റ് ചെയ്തിരിക്കുന്ന ക്യാമറ(കൾ) ഉപയോഗിക്കാൻ ആപ്പുകളെയും വെബ്പേജുകളെയും അനുവദിക്കുക. നിങ്ങളുടെ ക്യാമറയുമായി ബന്ധപ്പെട്ട് ഇപ്പോഴും പ്രശ്നമുണ്ടെങ്കിൽ, ആപ്പ് റീസ്റ്റാർട്ട് ചെയ്യുക അല്ലെങ്കിൽ വെബ്പേജ് റീഫ്രഷ് ചെയ്യുക.</translation> <translation id="450867954911715010">ഉപയോഗസഹായി ക്രമീകരണങ്ങൾ</translation> <translation id="4508765956121923607">ഉ&റവിടം കാണുക</translation> <translation id="4509277363725254222">നിങ്ങളുടെ <ph name="BEGIN_BOLD_USERNAME" />ഉപയോക്തൃനാമത്തിന്റെയും<ph name="END_BOLD_USERNAME" /> <ph name="BEGIN_BOLD_PASSWORD" />പാസ്വേഡിന്റെയും<ph name="END_BOLD_PASSWORD" /> പകർപ്പ് പങ്കിടുമ്പോൾ, നിങ്ങളുടെ കുടുംബാംഗത്തിന് അവ Google Password Manager ഉപയോഗിച്ച് പൂരിപ്പിക്കാനാകും</translation> @@ -8475,7 +8473,6 @@ <translation id="7610337976012700501">ഈ കോൺടാക്റ്റുകൾക്കൊപ്പം <ph name="FEATURE_NAME" /> ഉപയോഗിക്കാൻ, അവരുടെ Google Account-മായി ലിങ്ക് ചെയ്തിരിക്കുന്ന ഇമെയിൽ വിലാസം നിങ്ങളുടെ കോൺടാക്റ്റുകളിലേക്ക് ചേർക്കുക.</translation> <translation id="7611713099524036757">മെറ്റ</translation> <translation id="7612050744024016345">മുഴുവൻ വിപുലീകരണങ്ങളും</translation> -<translation id="7612401678989660900">മൈക്രോഫോൺ അനുമതിയുള്ള ആപ്പുകൾക്കും വെബ്സൈറ്റുകൾക്കും ആക്സസ് അനുവദിക്കുക</translation> <translation id="7612497353238585898">സജീവമായ സൈറ്റ്</translation> <translation id="7612655942094160088">കണക്റ്റ് ചെയ്തിരിക്കുന്ന ഫോണിന്റെ ഫീച്ചറുകൾ പ്രവർത്തനക്ഷമമാക്കി.</translation> <translation id="7612989789287281429">നിങ്ങളെ സൈൻ ഇൻ ചെയ്യിക്കുന്നു…</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb index 8bf3b64..e63955e6 100644 --- a/chrome/app/resources/generated_resources_mn.xtb +++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -1127,7 +1127,6 @@ <translation id="1832848789136765277">Та синк хийсэн өгөгдөлдөө үргэлж хандах боломжтой эсэхээ баталгаажуулахын тулд өөрийгөө мөн болохыг баталгаажуулна уу</translation> <translation id="1834503245783133039">Татаж чадсангүй: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux-г дэвшүүлж байна</translation> -<translation id="1835612721186505600">Камерын зөвшөөрөлтэй аппууд болон вебсайтуудад хандалтыг зөвшөөрөх</translation> <translation id="1838374766361614909">Хайлтыг арилгах</translation> <translation id="1839021455997460752">Таны имэйл хаяг</translation> <translation id="1839540115464516994"><ph name="LOCATION" />-д харуулах</translation> @@ -4589,7 +4588,6 @@ <translation id="4507128560633489176">Өгөгдлийг арилгасан.</translation> <translation id="4507373251891673233">Та бүх өргөтгөлийг <ph name="HOST" />-с блоклосон</translation> <translation id="4507401683427517298">“Товчлол нэмэх”-ийг товшино уу</translation> -<translation id="4508150454272293946">Апп болон веб хуудаснуудад энэ төхөөрөмжид холбогдсон камеруудыг ашиглахыг зөвшөөрнө үү. Хэрэв таны камертай холбоотой асуудал хэвээр байвал аппыг дахин эхлүүлэх эсвэл веб хуудсыг сэргээж үзнэ үү.</translation> <translation id="450867954911715010">Хандалтын тохиргоо</translation> <translation id="4508765956121923607">Эх үүсвэрийг харах</translation> <translation id="4509277363725254222">Таныг <ph name="BEGIN_BOLD_USERNAME" />хэрэглэгчийн нэр<ph name="END_BOLD_USERNAME" /> болон <ph name="BEGIN_BOLD_PASSWORD" />нууц үгнийхээ<ph name="END_BOLD_PASSWORD" /> хуулбарыг хуваалцах үед танай гэр бүлийн гишүүн Google Password Manager-г ашиглан тэдгээрийг бөглөх боломжтой</translation> @@ -8486,7 +8484,6 @@ <translation id="7610337976012700501"><ph name="FEATURE_NAME" />-г эдгээр харилцагчтай ашиглахын тулд тэдний Google Бүртгэлтэй холбосон имэйлийг харилцагчдадаа нэмнэ үү.</translation> <translation id="7611713099524036757">мета</translation> <translation id="7612050744024016345">Бүх өргөтгөл</translation> -<translation id="7612401678989660900">Микрофоны зөвшөөрөлтэй аппууд болон вебсайтуудад хандалтыг зөвшөөрөх</translation> <translation id="7612497353238585898">Идэвхтэй сайт</translation> <translation id="7612655942094160088">Холбогдсон утасны онцлогуудын идэвхжилт.</translation> <translation id="7612989789287281429">Та нэвтэрч байна…</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb index c0301c07..addba1b 100644 --- a/chrome/app/resources/generated_resources_mr.xtb +++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -1110,6 +1110,7 @@ <translation id="1823768272150895732">फॉंट</translation> <translation id="1823781806707127806">व्यवस्थापित प्रोफाइलमध्ये आधीपासून असलेला ब्राउझिंग डेटा जोडा</translation> <translation id="18245044880483936">बॅकअप डेटा तुमच्या मुलाच्या ड्राइव्ह स्टोरेजच्या कोट्यामध्ये मोजला जाणार नाही.</translation> +<translation id="1825073796163165618">लिंक सुरू करा</translation> <translation id="1825565032302550710">पोर्ट १०२४ आणि ६५५३५ यांच्या मधले असणे आवश्यक आहे</translation> <translation id="182577151972096764">अलीकडे पाहिलेल्या पाककृती</translation> <translation id="18260074040409954">तुम्ही सेव्ह केलेले पासवर्ड कोणत्याही डिव्हाइसवर वापरू शकता. ते <ph name="EMAIL" />साठी <ph name="GOOGLE_PASSWORD_MANAGER" /> मध्ये सेव्ह केले आहेत.</translation> @@ -1129,7 +1130,6 @@ <translation id="1832848789136765277">तुम्ही तुमचा सिंक डेटा कधीही ॲक्सेस करू शकता याची खात्री करण्यासाठी, हे तुम्हीच आहात याची पडताळणी करा</translation> <translation id="1834503245783133039">डाउनलोड करता आले नाही: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux अपग्रेड करत आहे</translation> -<translation id="1835612721186505600">कॅमेराची परवानगी असलेल्या अॅप्स आणि वेबसाइटच्या अॅक्सेसला अनुमती द्या</translation> <translation id="1838374766361614909">शोध साफ करा</translation> <translation id="1839021455997460752">तुमचा ईमेल अॅड्रेस</translation> <translation id="1839540115464516994"><ph name="LOCATION" /> मध्ये दाखवा</translation> @@ -1349,6 +1349,7 @@ <translation id="1997616988432401742">तुमची प्रमाणपत्रे</translation> <translation id="1999115740519098545">स्टार्टअप वर</translation> <translation id="2002109485265116295">रीअल टाइम</translation> +<translation id="2002160221914907025">प्रायोगिक AI</translation> <translation id="2003130567827682533">'<ph name="NAME" />' डेटा ॲक्टिव्हेट करण्यासाठी, आधी वाय-फाय नेटवर्कशी कनेक्ट करा</translation> <translation id="2004413981947727241">तुमचा पासवर्ड कोणत्याही डिव्हाइवर वापरा</translation> <translation id="2004697686368036666">काही साइटवर वैशिष्ट्ये कदाचित काम करणार नाहीत</translation> @@ -2008,6 +2009,7 @@ <translation id="2482878487686419369">सूचना</translation> <translation id="2482895651873876648">टॅब गट <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> यामध्ये हलवला आहे</translation> <translation id="2483627560139625913">Chrome ब्राउझर सेटिंग्जमध्ये शोध इंजीन सेट करा</translation> +<translation id="2483698983806594329">पडताळणी न केलेली फाइल डाउनलोड केली आहे</translation> <translation id="2484743711056182585">मंजुरी काढून टाका</translation> <translation id="2484909293434545162">साइटने कुकी वापरल्यास, त्या येथे दिसतील</translation> <translation id="2484959914739448251">तुमच्या सिंक केलेल्या सर्व डिव्हाइसमधून आणि तुमच्या Google खात्यामधून ब्राउझ केलेला डेटा साफ करण्यासाठी, <ph name="BEGIN_LINK" />तुमचा पासफ्रेझ एंटर करा<ph name="END_LINK" />.</translation> @@ -2147,6 +2149,7 @@ <translation id="2589658397149952302">Drive मधील फाइल कधीही दाखवू नका</translation> <translation id="25899519884572181">वाचक मोडमधून बाहेर पडा</translation> <translation id="2593499352046705383">सुरुवात करण्यापूर्वी, तुम्ही तुमच्या सर्व डेटाचा बॅकअप घेतला आहे याची खात्री करा. <ph name="DEVICE_OS" /> हे इंस्टॉल केल्याने, तुमची हार्ड ड्राइव्ह ओव्हरराइट होईल. g.co/flex/InstallGuide येथे अधिक जाणून घ्या.</translation> +<translation id="2594832159966169099">V8 सुरक्षा व्यवस्थापित करणे</translation> <translation id="2594999711683503743">Google वर शोधा किंवा URL टाइप करा</translation> <translation id="2597073208962000830">जवळपासची डिव्हाइस शोधण्यासाठी Nearby सह शेअरिंग ब्लूटूथ स्कॅनिंग वापरते.</translation> <translation id="2598710988533271874">Chrome चे नवीन अपडेट उपलब्ध आहे</translation> @@ -2326,6 +2329,7 @@ <translation id="2730647855013151888">सर्व वैयक्तिक माहिती समाविष्ट करा</translation> <translation id="2730901670247399077">इमोजी सूचना</translation> <translation id="273093730430620027">हे पेज तुमचा कॅमेरा अॅक्सेस करत आहे.</translation> +<translation id="2730956943403103181">V8 ऑप्टिमायझर वापरण्याची अनुमती नाही</translation> <translation id="2731392572903530958">बंद केलेली विंडो पु&न्हा उघडा</translation> <translation id="2731700343119398978">कृपया प्रतीक्षा करा...</translation> <translation id="2731971182069536520">पुढील वेळी तुम्ही तुमचे डिव्हाइस रीस्टार्ट कराल तेव्हा तुमचा अॅडमिनिस्ट्रेटर एक वेळ अपडेट करेल जो तुमचा स्थानिक डेटा हटवेल.</translation> @@ -2729,6 +2733,7 @@ <translation id="3025174326431589540">{COUNT,plural, =0{No saved passwords}=1{{COUNT} साइटसाठी तपासलेले पासवर्ड}other{{COUNT} साइट आणि ॲपसाठी तपासलेले पासवर्ड}}</translation> <translation id="3027296729579831126">Nearby सह शेअरिंग सुरू करा</translation> <translation id="3027644380269727216">साइटवरील तुमच्या अॅक्टिव्हिटीवर आधारित. हे सेटिंग सुरू आहे.</translation> +<translation id="3028445648481691885">डाउनलोड रद्द केले आहे</translation> <translation id="3029276696788198026">प्रीलोडिंग नाही</translation> <translation id="3029466929721441205">शेल्फमध्ये स्टायलस टूल दाखवा</translation> <translation id="3029808567601324798">लॉक करण्याची वेळ</translation> @@ -2834,6 +2839,7 @@ <translation id="3119948370277171654">तुम्ही कोणता आशय/URL कास्ट करत होतात?</translation> <translation id="3122464029669770682">सीपीयू</translation> <translation id="3122496702278727796">डेटा डिरेक्टरी तयार करण्यात अयशस्वी</translation> +<translation id="3122810280993140148">तुम्ही निवडलेला विषय, मूड, व्हिज्युअल शैली आणि रंग यांवर आधारित कस्टम थीम तयार करते. हे वैशिष्ट्य वापरण्यासाठी, नवीन टॅब उघडा आणि Chrome कस्टमाइझ करा वर क्लिक करा.</translation> <translation id="3122883569442693641">आणखी तपशील</translation> <translation id="3124111068741548686">वापरकर्ता हँडल</translation> <translation id="3124332159330678621">तुमच्या ब्राउझरला नवीन लुक देण्यासाठी Chrome कस्टमाइझ करा</translation> @@ -2873,6 +2879,7 @@ <translation id="3159978855457658359">डिव्हाइसचे नाव संपादित करा</translation> <translation id="3160928651883997588">VPN प्राधान्ये</translation> <translation id="3161522574479303604">सर्व भाषा</translation> +<translation id="3162766632262775911">V8 ऑप्टिमायझर वापरण्यासाठी नेहमी अनुमती दिली आहे</translation> <translation id="3162853326462195145">शाळा खाते</translation> <translation id="3162899666601560689">तुमच्या ब्राउझिंग अनुभवात सुधारणा करण्यासाठी, उदाहरणार्थ, तुम्हाला साइन इन केलेले ठेवण्यासाठी किंवा तुमच्या शॉपिंग कार्टमधील आयटम लक्षात ठेवण्यासाठी साइट कुकी वापरू शकतात</translation> <translation id="3163201441334626963"><ph name="VENDOR_ID" /> विक्रेत्याकडील <ph name="PRODUCT_ID" /> अज्ञात उत्पादन</translation> @@ -3342,6 +3349,7 @@ <translation id="3547954654003013442">प्रॉक्सी सेटिंग्ज</translation> <translation id="3548162552723420559">वातावरणाशी जुळण्यासाठी स्क्रीनचे रंग अॅडजस्ट करते</translation> <translation id="354949590254473526">कस्टम DNS क्वेरी URL एंटर करा</translation> +<translation id="3549827561154008969">डाउनलोड पुन्हा सुरू केले आहे</translation> <translation id="3550593477037018652">मोबाइल नेटवर्क डिस्कनेक्ट करा</translation> <translation id="3550915441744863158">Chrome स्वयंचलितपणे अपडेट होते जेणेकरून आपल्याकडे नेहमी नवीन आवृत्ती असते</translation> <translation id="3551320343578183772">टॅब बंद करा</translation> @@ -3491,6 +3499,7 @@ <translation id="3666196264870170605">Intel वायफाय NICs डीबग डंप</translation> <translation id="3670113805793654926">कोणत्याही विक्रेत्याकडील डिव्हाइस</translation> <translation id="3670229581627177274">ब्लूटूथ सुरू करा</translation> +<translation id="3670480940339182416">साइट V8 ऑप्टिमायझर वापरू शकतात</translation> <translation id="3672681487849735243">एक फॅक्टरी एरर शोधली गेली</translation> <translation id="3673097791729989571">साइन इन करणे <ph name="SAML_DOMAIN" /> द्वारे होस्ट केले आहे</translation> <translation id="3673622964532248901">तुम्हाला या डिव्हाइसवर कास्ट करण्याची अनुमती नाही.</translation> @@ -4581,7 +4590,6 @@ <translation id="4507128560633489176">डेटा साफ केला.</translation> <translation id="4507373251891673233">तुम्ही <ph name="HOST" /> वरील सर्व एक्स्टेंशन ब्लॉक केली आहेत</translation> <translation id="4507401683427517298">“शॉर्टकट जोडा” वर क्लिक करा</translation> -<translation id="4508150454272293946">अॅप्स आणि वेबपेज यांना या डिव्हाइसला कनेक्ट केलेला(ले) कॅमेरा वापरण्याची अनुमती द्या. तरीही तुमच्या कॅमेरामध्ये समस्या असल्यास, अॅप रीस्टार्ट करून पहा किंवा वेबपेज रिफ्रेश करा.</translation> <translation id="450867954911715010">प्रवेशयोग्यता सेटिंग्ज</translation> <translation id="4508765956121923607">स्त्रो&त पहा</translation> <translation id="4509277363725254222">तुम्ही तुमचे <ph name="BEGIN_BOLD_USERNAME" />वापरकर्ता नाव<ph name="END_BOLD_USERNAME" />आणि <ph name="BEGIN_BOLD_PASSWORD" />पासवर्ड<ph name="END_BOLD_PASSWORD" /> यांची प्रत शेअर करता, तेव्हा तुमचा कुटुंब सदस्य Google Password Manager वापरून ते भरू शकतो</translation> @@ -4945,6 +4953,7 @@ <translation id="4800839971935185386">नाव आणि आयकनमधील अपडेटचे पुनरावलोकन करा</translation> <translation id="4801448226354548035">खाती लपवा</translation> <translation id="4801512016965057443">मोबाइल डेटा रोमिंगची अनुमती द्या</translation> +<translation id="4803599447809045620">लिंक बंद करा</translation> <translation id="4804311503028830356">इतर पर्याय एक्सप्लोर करण्याआधी बॅक अॅरोवर क्लिक करा</translation> <translation id="4804818685124855865">डिस्कनेक्ट</translation> <translation id="4804827417948292437">ॲव्होकॅडो</translation> @@ -5736,6 +5745,7 @@ <translation id="5432223177001837288">ऑडिओ शेअर करण्यासाठी, त्याऐवजी टॅब शेअर करा</translation> <translation id="5432872710261597882">थंब्स अपवर क्लिक केल्यावर तुम्हाला हे आवडले आहे असा फीडबॅक सबमिट केला जातो.</translation> <translation id="543338862236136125">पासवर्ड संपादित करा</translation> +<translation id="5433865420958136693">उपलब्ध असल्यास, ग्राफिक अॅक्सिलरेशन वापरा</translation> <translation id="5434065355175441495">PKCS #1 RSA एंक्रिप्शन</translation> <translation id="5435274640623994081">इअरकॉन लॉगिंग सुरू करा</translation> <translation id="5435779377906857208"><ph name="HOST" /> ला तुमचे स्थान अॅक्सेस करण्याची नेहमी अनुमती द्या</translation> @@ -6474,6 +6484,7 @@ <translation id="6020431688553761150">हे संसाधन ॲक्सेस करण्यासाठी सर्व्हरने तुम्हाला परवानगी दिलेली नाही.</translation> <translation id="6021293122504240352"><ph name="APPS" /> अॅप्सना यापुढे सपोर्ट नाही</translation> <translation id="6021969570711251331">एकावर एक</translation> +<translation id="602212068530399867">अॅड्रेस बार आणि लाँचरमध्ये वापरले जाणारे शोध इंजीन.</translation> <translation id="6022526133015258832">फुल स्क्रीन उघडा</translation> <translation id="6022659036123304283">Chrome ला तुमच्या आवडीनुसार बनवा</translation> <translation id="6023643151125006053">हे डिव्हाइस (SN: <ph name="SERIAL_NUMBER" />) <ph name="SAML_DOMAIN" /> ॲडमिनिस्ट्रेटरने लॉक केले होते.</translation> @@ -7879,6 +7890,7 @@ <translation id="7131431455372521159">सर्व TrackPoints डिस्कनेक्ट केले गेले आहेत</translation> <translation id="7131896909366247105"><ph name="APP_NAME" />, प्रतीक्षा करत आहे</translation> <translation id="7134098520442464001">मजकूर लहान करा</translation> +<translation id="7134951043985383439">धोकादायक फाइल डाउनलोड केली आहे</translation> <translation id="7135729336746831607">ब्लूटूथ सुरू करायचे आहे का?</translation> <translation id="7136694880210472378">डीफॉल्ट बनवा</translation> <translation id="7137771508221868414">यामुळे साइट आणि इंस्टॉल केलेल्या अॅप्सनी स्टोअर केलेला <ph name="TOTAL_USAGE" /> डेटा हटवला जाईल</translation> @@ -8046,6 +8058,7 @@ <translation id="727441411541283857"><ph name="PERCENTAGE" />% - पूर्ण होण्यास <ph name="TIME" /></translation> <translation id="727595954130325265">आता खरेदी करा</translation> <translation id="7276100255011548441">Chrome ४ आठवड्यांपेक्षा जुने विषय ऑटो-डिलीट करते. तुम्ही ब्राउझ करत असताना, विषय सूचीमध्ये पुन्हा दिसू शकतो किंवा Chrome ने साइटसोबत शेअर करू नये असे तुम्हाला वाटत असलेले विषय तुम्ही ब्लॉक करू शकता. <ph name="BEGIN_LINK" />Chrome मध्ये तुमची जाहिरातीसंबंधित गोपनीयता व्यवस्थापित करणे<ph name="END_LINK" /> याविषयी अधिक जाणून घ्या.</translation> +<translation id="7278164481614262110">AI वापरून थीम तयार करा</translation> <translation id="727952162645687754">डाउनलोड एरर</translation> <translation id="7280649757394340890">टेक्स्ट टू स्पीच व्हॉइस सेटिंग्ज</translation> <translation id="7280877790564589615">परवानगीची विनंती केली</translation> @@ -8475,7 +8488,6 @@ <translation id="7610337976012700501">या संपर्कांसह <ph name="FEATURE_NAME" /> वापरण्यासाठी, त्यांच्या Google खाते शी लिंक केलेला ईमेल अॅड्रेस तुमच्या संपर्कांमध्ये जोडा.</translation> <translation id="7611713099524036757">Meta</translation> <translation id="7612050744024016345">सर्व एक्स्टेंशन</translation> -<translation id="7612401678989660900">मायक्रोफोनची परवानगी असलेल्या अॅप्स आणि वेबसाइटसाठी अॅक्सेसला अनुमती द्या</translation> <translation id="7612497353238585898">ॲक्टिव्ह साइट</translation> <translation id="7612655942094160088">कनेक्ट केलेल्या फोनमधील वैशिष्ट्ये सुरू करा.</translation> <translation id="7612989789287281429">तुम्हाला साइन इन करत आहे…</translation> @@ -8740,6 +8752,7 @@ <translation id="7788298548579301890">तुमच्या कॉंप्युटरवरील दुसर्या प्रोग्रामने एक अॅप जोडला जो Chrome ची काम करण्याची पद्धत कदाचित बदलू शकतो. <ph name="EXTENSION_NAME" /></translation> <translation id="7789963078219276159">पेज बॅकग्राउंड सुरू करा <ph name="CATEGORY" /> असे बदलले गेले आहे.</translation> +<translation id="7791429245559955092">हे अॅप्लिकेशन तुम्ही सध्या वापरत असलेल्या Chrome प्रोफाइलवर इंस्टॉल केले जाईल</translation> <translation id="7791436592012979144">रिव्हर्स स्क्रोलिंग सुरू केले आहे</translation> <translation id="7791543448312431591">जोडा</translation> <translation id="7792012425874949788">साइन इन करताना काहीतरी चूक झाली</translation> @@ -9135,6 +9148,7 @@ <translation id="8089547136368562137">हे Google च्या सर्वोत्तम तंत्रज्ञानाद्वारे संरक्षित आहे</translation> <translation id="8090234456044969073">आपल्या सर्वाधिक वारंवार भेट दिलेल्या वेबसाइटची सूची वाचा</translation> <translation id="8090513782447872344">तुम्ही पुन्हा पाहण्यासाठी कधीही परत येऊ शकता</translation> +<translation id="8090579562279016251">परफॉर्मन्स कमी करते, पण हल्ल्यांविरुद्ध V8 चा अवरोध वाढवते</translation> <translation id="8090686009202681725">AI वापरून थीम तयार करा</translation> <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> प्रतिसाद देत नाही</translation> <translation id="8094536695728193970">ॲप्रिकॉट</translation> @@ -9181,6 +9195,7 @@ <translation id="8124313775439841391">व्यवस्थापित ONC</translation> <translation id="8125651784723647184">पासवर्ड शेअरिंग तुमच्या अॅडमिनिस्ट्रेटरद्वारे व्यवस्थापित केलेले आहे</translation> <translation id="8129265306888404830">तुमच्या संस्थेचा ईमेल अॅड्रेस वापरण्यासाठी (<ph name="EMAIL_DOMAIN" />), तुम्ही एंटरप्राइझ नोंदणी करणे आवश्यक आहे. हे डिव्हाइस तुमच्या वैयक्तिक वापरासाठी असल्यास, तुमचे वैयक्तिक Google खाते वापरून साइन इन करा.</translation> +<translation id="8130476996317833777">साइटना V8 ऑप्टिमायझर वापरण्याची अनुमती देऊ नका</translation> <translation id="813082847718468539">साइटची माहिती पहा</translation> <translation id="8131740175452115882">पुष्टी करा</translation> <translation id="8133297578569873332">स्वीकारण्यायोग्य - एफएम</translation> @@ -9564,6 +9579,7 @@ <translation id="8422748173858722634">IMEI</translation> <translation id="8422787418163030046">ट्रे सापडला नाही</translation> <translation id="8424250197845498070">प्रगत संरक्षण याद्वारे ब्लॉक केले आहे</translation> +<translation id="842501938276307467">प्रायोगिक AI वैशिष्ट्ये वापरून पहा</translation> <translation id="8425213833346101688">बदल करा</translation> <translation id="8425492902634685834">टास्कबारवर पिन करा</translation> <translation id="8425768983279799676">तुमचे डिव्हाइस अनलॉक करण्यासाठी तुम्ही तुमचा पिन वापरू शकता.</translation> @@ -9718,6 +9734,7 @@ <ph name="BEGIN_PARAGRAPH2" /><ph name="USER_EMAIL" /> वापरण्यासाठी, सर्वप्रथम तुमच्या <ph name="DEVICE_TYPE" /> मधून साइन आउट करा. त्यानंतर तुमच्या लॉग इन स्क्रीनच्या तळाशी, व्यक्ती जोडा निवडा.<ph name="END_PARAGRAPH2" /></translation> <translation id="85486688517848470">शीर्ष-पंक्ती की चे वर्तन बदलण्यासाठी शोध की प्रेस करून ठेवा</translation> <translation id="8549316893834449916">तुमच्या Chromebook मध्ये साइन इन करण्यासाठी तुम्ही तुमचे Google खाते वापराल – जे तुम्ही Gmail, Drive, YouTube आणि बर्याच गोष्टींसाठी वापरता.</translation> +<translation id="8550239873869577759">संशयास्पद फाइल डाउनलोड केली आहे</translation> <translation id="8551388862522347954">परवाने</translation> <translation id="8551588720239073785">तारीख आणि वेळ सेटिंग्ज</translation> <translation id="8551647092888540776">ऑफलाइन असताना <ph name="FILE_NAMES" /> उघडू शकत नाही</translation> @@ -9773,6 +9790,7 @@ <translation id="8601206103050338563">TLS WWW क्लायंट ऑथेंटिकेशन</translation> <translation id="8602674530529411098">ॲप्स (बीटा)</translation> <translation id="8602851771975208551">तुमच्या कॉंप्युटरवरील दुसऱ्या प्रोग्रामने Chrome च्या काम करण्याचा मार्ग बदलू शकणारा अॅप जोडला.</translation> +<translation id="8604513817270995005">वेबवर असलेल्या परीक्षणांसारख्या गोष्टींसाठी तुम्हाला लघु स्वरूपातील आशय लिहिण्यास मदत करते. सुचवलेला आशय हा तुमचे प्रॉम्प्ट आणि वेब पेजवरील आशय यावर आधारित असतो. हे वैशिष्ट्य वापरण्यासाठी, टेक्स्ट बॉक्सवर राइट-क्लिक करा.</translation> <translation id="8605428685123651449">SQLite मेमरी</translation> <translation id="8607171490667464784">इनॅक्टिव्ह आणि बॅटरीवर सुरू असताना</translation> <translation id="8607828412110648570">तुमचे ब्लूटूथ डिव्हाइस हे पेअरिंग मोडमध्ये आणि जवळपास असल्याची खात्री करा. तुमचा विश्वास असलेल्या डिव्हाइससोबतच पेअर करा. पेअर केलेली डिव्हाइस या Chromebook वरील सर्व खात्यांना दृश्यमान असतात. <ph name="BEGIN_LINK_LEARN_MORE" />अधिक जाणून घ्या<ph name="END_LINK_LEARN_MORE" /></translation> @@ -10285,6 +10303,7 @@ <translation id="8985191021574400965">Chromebook साठी Steam मध्ये स्वागत आहे</translation> <translation id="8985264973231822211"><ph name="DEVICE_LAST_ACTIVATED_TIME" /> दिवसापूर्वी ॲक्टिव्ह होते</translation> <translation id="8985661493893822002">कृपया तुमच्या <ph name="DEVICE_TYPE" /> मध्ये साइन इन करण्यासाठी इंटरनेटशी कनेक्ट करा.</translation> +<translation id="8985661571449404298">असुरक्षित फाइल डाउनलोड केली आहे</translation> <translation id="8986362086234534611">विसरा</translation> <translation id="8986494364107987395">Google ला वापरविषयक आकडेवारी आणि क्रॅश अहवाल आपोआप पाठवा</translation> <translation id="8987305927843254629">प्रत्येक व्यक्ती स्वतःचा अनुभव पर्सनलाइझ करू शकते आणि डेटा खाजगी ठेवू शकते.</translation> @@ -10483,6 +10502,7 @@ <translation id="9116366756388192417">विषय निवडा</translation> <translation id="9116799625073598554">टीप-घेणारा ॲप</translation> <translation id="9117030152748022724">तुमची ॲप्स व्यवस्थापित करा</translation> +<translation id="9119587891086680311">ही वैशिष्ट्ये AI वापरतात, ती विकासाच्या सुरुवातीच्या टप्प्यात आहेत आणि ती नेहमी योग्यप्रकारे काम करतील असे नाही.</translation> <translation id="9120362425083889527">इंस्टॉलेशन पूर्ण करता आले नाही. कृपया पुन्हा प्रयत्न करा किंवा ही विंडो बंद करा</translation> <translation id="9120693811286642342"><ph name="BEGIN_PARAGRAPH1" />सर्वोत्तम अनुभवासाठी, <ph name="DEVICE_OS" /> हे तुमच्या अंतर्गत डिस्कवर इंस्टॉल करा. तुम्ही नंतर लॉग इन स्क्रीनवरूनदेखील इंस्टॉल करू शकता.<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />तुम्ही इंस्टॉल करण्यासाठी तयार नसल्यास, तुम्ही ते वापरून पाहण्याकरिता USB वरून रन करू शकता. हे तुमचे आधीपासून असलेले OS आणि डेटा ठेवेल, पण तुम्हाला कदाचित स्टोरेज आणि परफॉर्मन्स मर्यादा दिसतील.<ph name="END_PARAGRAPH2" /></translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb index e4c4e417..288bacb 100644 --- a/chrome/app/resources/generated_resources_ms.xtb +++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -379,6 +379,7 @@ <translation id="1281746473742296584">{NUM_OF_FILES,plural, =1{Tidak dapat membuka fail}other{Tidak dapat membuka fail}}</translation> <translation id="1282311502488501110">Jangan Log Masuk</translation> <translation id="1282465000333679776">Kongsi audio sistem</translation> +<translation id="1283126956823499975">Ada masalah ketika menyediakan peranti</translation> <translation id="1284277788676816155">Jangan benarkan penyimpanan data</translation> <translation id="1285320974508926690">Jangan sekali-kali menterjemahkan tapak ini</translation> <translation id="1285484354230578868">Simpan data dalam akaun Google Drive anda</translation> @@ -1131,7 +1132,6 @@ <translation id="1832848789136765277">Untuk memastikan anda dapat mengakses data penyegerakan anda pada bila-bila masa, sahkan itu anda</translation> <translation id="1834503245783133039">Muat turun tidak berjaya: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Meningkatkan Linux</translation> -<translation id="1835612721186505600">Benarkan akses untuk apl dan laman web dengan kebenaran kamera</translation> <translation id="1838374766361614909">Kosongkan carian</translation> <translation id="1839021455997460752">Alamat e-mel anda</translation> <translation id="1839540115464516994">Paparkan dalam <ph name="LOCATION" /></translation> @@ -4594,7 +4594,6 @@ <translation id="4507128560633489176">Data dikosongkan.</translation> <translation id="4507373251891673233">Anda menyekat semua sambungan daripada <ph name="HOST" /></translation> <translation id="4507401683427517298">Klik “Tambah pintasan”</translation> -<translation id="4508150454272293946">Benarkan apl dan halaman web menggunakan kamera yang disambungkan kepada peranti ini. Jika anda masih menghadapi masalah dengan kamera anda, cuba mulakan semula apl atau segarkan semula halaman web.</translation> <translation id="450867954911715010">Tetapan kebolehaksesan</translation> <translation id="4508765956121923607">Paparkan S&umber</translation> <translation id="4509277363725254222">Apabila anda berkongsi salinan <ph name="BEGIN_BOLD_USERNAME" />nama pengguna<ph name="END_BOLD_USERNAME" /> dan <ph name="BEGIN_BOLD_PASSWORD" />kata laluan<ph name="END_BOLD_PASSWORD" /> anda, ahli keluarga anda boleh mengisi nama pengguna dan kata laluan tersebut menggunakan Google Password Manager</translation> @@ -5043,6 +5042,7 @@ <translation id="4863769717153320198">Kelihatan seperti <ph name="WIDTH" /> x <ph name="HEIGHT" /> (Lalai)</translation> <translation id="4864369630010738180">Sedang log masuk...</translation> <translation id="4864805589453749318">Pilih ibu/bapa yang memberikan kebenaran untuk menambah akaun sekolah.</translation> +<translation id="4864905533117889071"><ph name="SENSOR_NAME" /> (disekat)</translation> <translation id="486505726797718946">Kenangan Disimpan</translation> <translation id="486635084936119914">Buka jenis fail tertentu secara automatik selepas memuat turun</translation> <translation id="4867272607148176509">Ibu bapa boleh meluluskan atau menyekat apl, menetapkan had masa dan mengawal penyemakan imbas web. Akaun sekolah boleh ditambahkan kemudian untuk mengakses kebanyakan sumber sekolah.</translation> @@ -5536,6 +5536,7 @@ <translation id="5261619498868361045">Nama bekas tidak boleh kosong.</translation> <translation id="5261683757250193089">Buka dalam Gedung Web</translation> <translation id="5261799091118902550">Fail ini mungkin virus atau perisian hasad. Anda boleh menghantar fail ini kepada Google untuk menyemak jika fail tersebut tidak selamat.</translation> +<translation id="5262334727506665688">Teruskan menyimpan kata laluan dalam Google Account anda</translation> <translation id="5262784498883614021">Sambung kepada rangkaian secara automatik</translation> <translation id="5263656105659419083">Untuk kembali kepada panel sisi dengan mudah, klik Pin pada bahagian atas sebelah kanan</translation> <translation id="5264148714798105376">Proses ini mungkin mengambil masa seminit atau lebih.</translation> @@ -7077,6 +7078,7 @@ <translation id="649396225532207613">Fail ini boleh membahayakan akaun peribadi dan rangkaian sosial anda</translation> <translation id="6494327278868541139">Paparkan butiran perlindungan dipertingkatkan</translation> <translation id="6494445798847293442">Bukan Pihak Berkuasa Pensijilan</translation> +<translation id="6494483173119160146">Peranti mengalami ralat yang tidak dapat dipulihkan. Sila tetapkan semula peranti anda (tindakan ini akan memadamkan semua data pengguna anda) dan cuba lagi.</translation> <translation id="6497784818439587832">Tukar saiz paparan untuk menjadikan item pada skrin anda lebih kecil atau lebih besar</translation> <translation id="6497789971060331894">Penatalan terbalik tetikus</translation> <translation id="6498249116389603658">&Semua bahasa anda</translation> @@ -8492,7 +8494,6 @@ <translation id="7610337976012700501">Untuk menggunakan <ph name="FEATURE_NAME" /> dengan kenalan ini, tambahkan alamat e-mel yang dipautkan dengan Google Account mereka pada kenalan anda.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Semua Sambungan</translation> -<translation id="7612401678989660900">Benarkan akses untuk semua apl dan laman web dengan kebenaran mikrofon</translation> <translation id="7612497353238585898">Laman aktif</translation> <translation id="7612655942094160088">Dayakan ciri telefon yang disambungkan.</translation> <translation id="7612989789287281429">Anda sedang log masuk…</translation> @@ -9559,6 +9560,7 @@ <translation id="8397825320644530257">Putuskan sambungan telefon yang bersambung</translation> <translation id="8398877366907290961">Teruskan juga</translation> <translation id="8399282673057829204">Lihat kata laluan</translation> +<translation id="839949601275221554">Peranti mengalami ralat. Sila mulakan semula peranti anda dan cuba lagi.</translation> <translation id="8401432541486058167">Sediakan PIN yang dikaitkan dengan kad pintar anda.</translation> <translation id="8401772916834964810">{COUNT,plural, =0{Chrome akan menyekat kuki lagi hari ini}=1{Chrome akan menyekat kuki lagi esok}other{# hari sehingga Chrome menyekat kuki lagi}}</translation> <translation id="8403618281196981152">Data anda dalam Chrome</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb index 4402878..3faa8ebe 100644 --- a/chrome/app/resources/generated_resources_my.xtb +++ b/chrome/app/resources/generated_resources_my.xtb
@@ -1129,7 +1129,6 @@ <translation id="1832848789136765277">စင့်ခ်လုပ်သောဒေတာကို အမြဲသုံးခွင့်ရကြောင်း သေချာစေရန် သင်ဖြစ်ကြောင်းအတည်ပြုပါ</translation> <translation id="1834503245783133039">ဒေါင်းလုဒ်လုပ်ခြင်း မအောင်မြင်ပါ− <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux ကို အဆင့်မြှင့်နေသည်</translation> -<translation id="1835612721186505600">ကင်မရာခွင့်ပြုချက်ပါသည့် အက်ပ်နှင့် ဝဘ်ဆိုက်များကို သုံးခွင့်ပြုရန်</translation> <translation id="1838374766361614909">ရှာဖွေမှုကို ရှင်းပါ</translation> <translation id="1839021455997460752">သင့်အီးမေးလ်လိပ်စာ</translation> <translation id="1839540115464516994"><ph name="LOCATION" /> တွင် ပြပါ</translation> @@ -4582,7 +4581,6 @@ <translation id="4507128560633489176">ဒေတာကို ရှင်းထုတ်ပြီးပြီ။</translation> <translation id="4507373251891673233">သင်သည် <ph name="HOST" /> မှ နောက်ဆက်တွဲအားလုံးကို ပိတ်ထားသည်</translation> <translation id="4507401683427517298">“ဖြတ်လမ်းလင့်ခ် ထည့်ရန်” ကို နှိပ်ပါ</translation> -<translation id="4508150454272293946">ဤစက်သို့ ချိတ်ဆက်ထားသည့် ကင်မရာ(များ) သုံးရန်အတွက် အက်ပ်နှင့် ဝဘ်စာမျက်နှာများကို ခွင့်ပြုရန်။ သင့်ကင်မရာနှင့်သက်ဆိုင်သည့် ပြဿနာရှိနေသေးပါက အက်ပ်ကိုပြန်စကြည့်ပါ (သို့) ဝဘ်စာမျက်နှာကို ပြန်လည်စတင်ကြည့်ပါ။</translation> <translation id="450867954911715010">အများသုံးနိုင်မှု ဆက်တင်များ</translation> <translation id="4508765956121923607">ရင်း&မြစ်ကို ကြည့်ရန်</translation> <translation id="4509277363725254222">သင်၏ <ph name="BEGIN_BOLD_USERNAME" />အသုံးပြုသူအမည်<ph name="END_BOLD_USERNAME" /> နှင့် <ph name="BEGIN_BOLD_PASSWORD" />စကားဝှက်<ph name="END_BOLD_PASSWORD" /> မိတ္တူကို မျှဝေသောအခါ သင့်မိသားစုဝင်သည် Google Password Manager ဖြင့် ၎င်းတို့ကို ဖြည့်နိုင်သည်</translation> @@ -8472,7 +8470,6 @@ <translation id="7610337976012700501"><ph name="FEATURE_NAME" /> ဤအဆက်အသွယ်များနှင့် သုံးရန် Google Account နှင့်လင့်ခ်ချိတ်ထားသော ၎င်းတို့၏အီးမေးလ်လိပ်စာကို သင့်အဆက်အသွယ်များသို့ ထည့်ပါ။</translation> <translation id="7611713099524036757">မက်တာ</translation> <translation id="7612050744024016345">နောက်ဆက်တွဲအားလုံး</translation> -<translation id="7612401678989660900">မိုက်ခရိုဖုန်းခွင့်ပြုချက်ပါသည့် အက်ပ်နှင့် ဝဘ်ဆိုက်များကို သုံးခွင့်ပြုရန်</translation> <translation id="7612497353238585898">ယခုသုံးနေသောဝဘ်ဆိုက်</translation> <translation id="7612655942094160088">ချိတ်ဆက်ထားသော ဖုန်းဝန်ဆောင်မှုများ ဖွင့်ရန်။</translation> <translation id="7612989789287281429">လက်မှတ်ထိုးဝင်နေသည်…</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb index 39ba21e5..66b22c3 100644 --- a/chrome/app/resources/generated_resources_ne.xtb +++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -1117,7 +1117,6 @@ <translation id="1832848789136765277">तपाईं आफूले सिंक गरेका डेटा जुनसुकै बेला हेर्न तथा प्रयोग गर्न सक्नुहुन्छ भन्ने कुरा सुनिश्चित गर्न साइन इन गर्ने व्यक्ति तपाईं नै हो भन्ने कुरा पुष्टि गर्नुहोस्</translation> <translation id="1834503245783133039">डाउनलोड असफल भयो: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux को स्तरवृद्धि गर्दै</translation> -<translation id="1835612721186505600">क्यामेरा प्रयोग गर्ने अनुमति चाहिने एप तथा वेबसाइटहरूलाई क्यामेरा प्रयोग गर्ने अनुमति दिनुहोस्</translation> <translation id="1838374766361614909">खोजी खाली गर्नुहोस्</translation> <translation id="1839021455997460752">तपाईंको इमेल ठेगाना</translation> <translation id="1839540115464516994"><ph name="LOCATION" /> मा देखाइयोस्</translation> @@ -4575,7 +4574,6 @@ <translation id="4507128560633489176">डेटा हटाइयो।</translation> <translation id="4507373251891673233">तपाईंले <ph name="HOST" /> का सबै एक्स्टेन्सनहरू ब्लक गर्नुभएको छ</translation> <translation id="4507401683427517298">"सर्टकट हाल्नुहोस्" मा क्लिक गर्नुहोस्</translation> -<translation id="4508150454272293946">एप तथा वेबपेजहरूलाई यो डिभाइसमा कनेक्ट गरिएका क्यामेरा(हरू) प्रयोग गर्ने अनुमति दिनुहोस्। तपाईंले अझै पनि आफ्नो क्यामेरामा कुनै समस्या देख्नुभयो भने एप रिस्टार्ट गरी हेर्नुहोस् वा वेबपेज रिफ्रेस गरी हेर्नुहोस्।</translation> <translation id="450867954911715010">पहुँच सम्बन्धी सेटिङहरू</translation> <translation id="4508765956121923607">स्रो&त हेर्नुहोस्</translation> <translation id="4509277363725254222">तपाईंले आफ्नो <ph name="BEGIN_BOLD_USERNAME" />युजरनेम<ph name="END_BOLD_USERNAME" /> र <ph name="BEGIN_BOLD_PASSWORD" />पासवर्ड<ph name="END_BOLD_PASSWORD" /> को कपी सेयर गर्नुभयो भने तपाईंका परिवारका सदस्यहरू Google पासवर्ड म्यानेजर प्रयोग गरी ती जानकारी भर्न सक्छन्</translation> @@ -8471,7 +8469,6 @@ <translation id="7610337976012700501"><ph name="FEATURE_NAME" /> प्रयोग गरी यी कन्ट्याक्टसँग सामग्री सेयर गर्न उहाँहरूका Google खातामा लिंक गरिएको इमेल ठेगाना आफ्नो कन्ट्याक्टमा हाल्नुहोस्।</translation> <translation id="7611713099524036757">मेटा</translation> <translation id="7612050744024016345">सबै एक्स्टेन्सनहरू</translation> -<translation id="7612401678989660900">माइक्रोफोन प्रयोग गर्ने अनुमति चाहिने एप तथा वेबसाइटहरूलाई माइक्रोफोन प्रयोग गर्ने अनुमति दिनुहोस्</translation> <translation id="7612497353238585898">सक्रिय साइट</translation> <translation id="7612655942094160088">कनेक्ट गरिएको फोनका सुविधाहरू सक्षम पार्नुहोस्।</translation> <translation id="7612989789287281429">साइन इन गरिँदै छ…</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb index 615de6d4..143fed57 100644 --- a/chrome/app/resources/generated_resources_nl.xtb +++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -377,6 +377,7 @@ <translation id="1281746473742296584">{NUM_OF_FILES,plural, =1{Kan bestand niet openen}other{Kan bestanden niet openen}}</translation> <translation id="1282311502488501110">Niet inloggen</translation> <translation id="1282465000333679776">Systeemaudio delen</translation> +<translation id="1283126956823499975">Er is iets misgegaan bij het instellen van het apparaat</translation> <translation id="1284277788676816155">Niet toestaan dat gegevens worden opgeslagen</translation> <translation id="1285320974508926690">Deze site nooit vertalen</translation> <translation id="1285484354230578868">Gegevens opslaan in je Google Drive-account</translation> @@ -1120,7 +1121,6 @@ <translation id="1832848789136765277">Bevestig dat jij het bent zodat je altijd toegang hebt tot je synchronisatiegegevens</translation> <translation id="1834503245783133039">Download niet geslaagd: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux upgraden</translation> -<translation id="1835612721186505600">Toegang geven aan apps en websites met camerarechten</translation> <translation id="1838374766361614909">Zoekopdracht wissen</translation> <translation id="1839021455997460752">Je e-mailadres</translation> <translation id="1839540115464516994">Tonen in <ph name="LOCATION" /></translation> @@ -4577,7 +4577,6 @@ <translation id="4507128560633489176">Gegevens zijn gewist.</translation> <translation id="4507373251891673233">Je hebt alle extensies van <ph name="HOST" /> geblokkeerd</translation> <translation id="4507401683427517298">Klik op Snelkoppeling toevoegen</translation> -<translation id="4508150454272293946">Apps en webpagina's toestaan de camera('s) te gebruiken die met dit apparaat zijn verbonden. Als je nog steeds problemen met je camera hebt, start je de app opnieuw of vernieuw je de webpagina.</translation> <translation id="450867954911715010">Toegankelijkheidsinstellingen</translation> <translation id="4508765956121923607">Br&on bekijken</translation> <translation id="4509277363725254222">Als je je <ph name="BEGIN_BOLD_USERNAME" />gebruikersnaam<ph name="END_BOLD_USERNAME" /> en <ph name="BEGIN_BOLD_PASSWORD" />wachtwoord<ph name="END_BOLD_PASSWORD" /> deelt, kan je gezinslid deze gegevens invullen via Google Wachtwoordmanager</translation> @@ -5025,6 +5024,7 @@ <translation id="4863769717153320198">Ziet eruit als <ph name="WIDTH" /> x <ph name="HEIGHT" /> (standaardresolutie)</translation> <translation id="4864369630010738180">Inloggen...</translation> <translation id="4864805589453749318">Selecteer de ouder die toestemming geeft om een schoolaccount toe te voegen.</translation> +<translation id="4864905533117889071"><ph name="SENSOR_NAME" /> (geblokkeerd)</translation> <translation id="486505726797718946">Herinnering opgeslagen</translation> <translation id="486635084936119914">Bepaalde bestandstypen na downloaden automatisch openen</translation> <translation id="4867272607148176509">Ouders kunnen apps goedkeuren of blokkeren, tijdlimieten instellen en browsen op internet beheren. Je kunt later een schoolaccount toevoegen om toegang te krijgen tot de meeste schoolbronnen.</translation> @@ -5518,6 +5518,7 @@ <translation id="5261619498868361045">Containernaam mag niet leeg zijn.</translation> <translation id="5261683757250193089">Openen in Web Store</translation> <translation id="5261799091118902550">Dit bestand is misschien een virus of malware. Je kunt het bestand naar Google sturen om te laten checken of het onveilig is.</translation> +<translation id="5262334727506665688">Blijf wachtwoorden opslaan in je Google-account</translation> <translation id="5262784498883614021">Automatisch verbinding maken met netwerk</translation> <translation id="5263656105659419083">Klik rechtsboven op Vastzetten zodat je makkelijk kunt teruggaan naar het zijvenster</translation> <translation id="5264148714798105376">Dit kan een minuut duren.</translation> @@ -7055,6 +7056,7 @@ <translation id="649396225532207613">Dit bestand kan schadelijk zijn voor je persoonlijke en socialmedia-accounts</translation> <translation id="6494327278868541139">Details van geoptimaliseerde beveiliging bekijken</translation> <translation id="6494445798847293442">Geen certificeringsinstantie</translation> +<translation id="6494483173119160146">Er is een onherstelbare fout opgetreden op het apparaat. Reset het apparaat (hiermee worden alle gebruikersgegevens gewist) en probeer het opnieuw.</translation> <translation id="6497784818439587832">Wijzig de weergavegrootte om items op het scherm kleiner of groter te maken.</translation> <translation id="6497789971060331894">Omgekeerd scrollen muis</translation> <translation id="6498249116389603658">&Al je talen</translation> @@ -8468,7 +8470,6 @@ <translation id="7610337976012700501">Als je <ph name="FEATURE_NAME" /> met deze contacten wilt gebruiken, voeg je het e-mailadres dat bij hun Google-account hoort aan je contacten toe.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Alle extensies</translation> -<translation id="7612401678989660900">Toegang geven aan apps en websites met microfoonrechten</translation> <translation id="7612497353238585898">Actieve site</translation> <translation id="7612655942094160088">Zet functies van verbonden telefoon aan.</translation> <translation id="7612989789287281429">Inloggen…</translation> @@ -9532,6 +9533,7 @@ <translation id="8397825320644530257">Verbonden telefoon loskoppelen</translation> <translation id="8398877366907290961">Toch doorgaan</translation> <translation id="8399282673057829204">Wachtwoord bekijken</translation> +<translation id="839949601275221554">Er is een fout opgetreden op het apparaat. Start het apparaat opnieuw op en probeer het nogmaals.</translation> <translation id="8401432541486058167">Geef de pincode op die hoort bij je smartkaart.</translation> <translation id="8401772916834964810">{COUNT,plural, =0{Chrome blokkeert vandaag weer cookies}=1{Chrome blokkeert morgen weer cookies}other{Nog # dagen totdat Chrome weer cookies blokkeert}}</translation> <translation id="8403618281196981152">Je gegevens in Chrome</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb index e244c85..6209fc2 100644 --- a/chrome/app/resources/generated_resources_no.xtb +++ b/chrome/app/resources/generated_resources_no.xtb
@@ -1127,7 +1127,6 @@ <translation id="1832848789136765277">For å sikre at du alltid har tilgang til de synkroniserte dataene dine, må du bekrefte at det er deg</translation> <translation id="1834503245783133039">Nedlasting mislykket: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Oppgradering av Linux</translation> -<translation id="1835612721186505600">Bruk kameratillatelsen for å gi apper og nettsteder tilgang til kameraet</translation> <translation id="1838374766361614909">Fjern søket</translation> <translation id="1839021455997460752">E-postadressen din</translation> <translation id="1839540115464516994">Vis i <ph name="LOCATION" /></translation> @@ -4587,7 +4586,6 @@ <translation id="4507128560633489176">Dataene er fjernet.</translation> <translation id="4507373251891673233">Du har blokkert alle utvidelser fra <ph name="HOST" /></translation> <translation id="4507401683427517298">Klikk på «Legg til en snarvei»</translation> -<translation id="4508150454272293946">La apper og nettsider bruke kameraene som er koblet til denne enheten. Hvis du fremdeles har problemer med kameraet, kan du prøve å starte appen på nytt eller laste inn nettsiden på nytt.</translation> <translation id="450867954911715010">Innstillinger for tilgjengelighet</translation> <translation id="4508765956121923607">Vis &kilde</translation> <translation id="4509277363725254222">Når du deler en kopi av <ph name="BEGIN_BOLD_USERNAME" />brukernavnet<ph name="END_BOLD_USERNAME" /> og <ph name="BEGIN_BOLD_PASSWORD" />passordet<ph name="END_BOLD_PASSWORD" /> ditt, kan familiemedlemmet ditt fylle ut disse med Google Passordlagring</translation> @@ -8487,7 +8485,6 @@ <translation id="7610337976012700501">For å bruke <ph name="FEATURE_NAME" /> med disse kontaktene, legg til e-postadressene som er knyttet til Google-kontoene deres, i kontaktene dine.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Alle utvidelser</translation> -<translation id="7612401678989660900">Bruk mikrofontillatelsen for å gi apper og nettsteder tilgang til mikrofonen</translation> <translation id="7612497353238585898">Aktivt nettsted</translation> <translation id="7612655942094160088">Slå på funksjoner for tilkoblet telefon.</translation> <translation id="7612989789287281429">Logger på …</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb index 6f18a9c9..431cbd4 100644 --- a/chrome/app/resources/generated_resources_or.xtb +++ b/chrome/app/resources/generated_resources_or.xtb
@@ -1116,7 +1116,6 @@ <translation id="1832848789136765277">ଆପଣ ଆପଣଙ୍କ ସିଙ୍କ୍ କରାଯାଇଥିବା ଡାଟାକୁ ସର୍ବଦା ଆକ୍ସେସ୍ କରିପାରିବେ ତାହା ସୁନିଶ୍ଚିତ କରିବା ପାଇଁ ଏହା ଆପଣ ଅଟନ୍ତି ବୋଲି ଯାଞ୍ଚ କରନ୍ତୁ</translation> <translation id="1834503245783133039"><ph name="FILE_NAME" />: ଡାଉନ୍ଲୋଡ୍ ବିଫଳ ହେଲା</translation> <translation id="1835261175655098052">Linux ଅପଗ୍ରେଡ୍ କରାଯାଉଛି</translation> -<translation id="1835612721186505600">କେମେରା ଅନୁମତି ଥିବା ଆପ୍ସ ଓ ୱେବସାଇଟ ପାଇଁ ଆକ୍ସେସ କରିବାର ଅନୁମତି ଦିଅନ୍ତୁ</translation> <translation id="1838374766361614909">ସର୍ଚ୍ଚ ଖାଲି କରନ୍ତୁ</translation> <translation id="1839021455997460752">ଆପଣଙ୍କର ଇମେଲ ଠିକଣା</translation> <translation id="1839540115464516994"><ph name="LOCATION" />ରେ ଦେଖାନ୍ତୁ</translation> @@ -4566,7 +4565,6 @@ <translation id="4507128560633489176">ଡାଟା ଖାଲି କରାଯାଇଛି।</translation> <translation id="4507373251891673233">ଆପଣ <ph name="HOST" />ର ସମସ୍ତ ଏକ୍ସଟେନସନକୁ ବ୍ଲକ କରିଛନ୍ତି</translation> <translation id="4507401683427517298">“ସର୍ଟକଟ ଯୋଗ କରନ୍ତୁ”ରେ କ୍ଲିକ କରନ୍ତୁ</translation> -<translation id="4508150454272293946">ଏହି ଡିଭାଇସ ସହିତ କନେକ୍ଟ ଥିବା କେମେରା(ଗୁଡ଼ିକ) ବ୍ୟବହାର କରିବାକୁ ଆପ ଏବଂ ୱେବପୃଷ୍ଠାଗୁଡ଼ିକୁ ଅନୁମତି ଦିଅନ୍ତୁ। ଯଦି ଏବେ ବି ଆପଣଙ୍କ କେମେରାରେ କୌଣସି ସମସ୍ୟା ଅଛି, ଆପ ରିଷ୍ଟାର୍ଟ କରିବାକୁ ଚେଷ୍ଟା କରନ୍ତୁ କିମ୍ୱା ୱେବପୃଷ୍ଠାକୁ ରିଫ୍ରେସ କରନ୍ତୁ।</translation> <translation id="450867954911715010">ଆକ୍ସେସିବିଲିଟୀ ସେଟିଂସ</translation> <translation id="4508765956121923607">ଉ&ତ୍ସ ଦର୍ଶନ କରନ୍ତୁ</translation> <translation id="4509277363725254222">ଆପଣ ଆପଣଙ୍କ <ph name="BEGIN_BOLD_USERNAME" />ୟୁଜରନେମ<ph name="END_BOLD_USERNAME" /> ଏବଂ <ph name="BEGIN_BOLD_PASSWORD" />ପାସୱାର୍ଡ<ph name="END_BOLD_PASSWORD" />ର କପି ସେୟାର କଲେ, ଆପଣଙ୍କ ପରିବାରର ସଦସ୍ୟମାନେ Google Password Manager ବ୍ୟବହାର କରି ସେଗୁଡ଼ିକୁ ପୂରଣ କରିପାରିବେ</translation> @@ -8457,7 +8455,6 @@ <translation id="7610337976012700501">ଏହି କଣ୍ଟାକ୍ଟଗୁଡ଼ିକ ସହ <ph name="FEATURE_NAME" /> ବ୍ୟବହାର କରିବାକୁ, ଆପଣଙ୍କ କଣ୍ଟାକ୍ଟରେ ସେମାନଙ୍କ Google ଆକାଉଣ୍ଟ ସହ ଲିଙ୍କ କରାଯାଇଥିବା ଇମେଲ ଠିକଣା ଯୋଗ କରନ୍ତୁ।</translation> <translation id="7611713099524036757">Meta</translation> <translation id="7612050744024016345">ସମସ୍ତ ଏକ୍ସଟେନସନ</translation> -<translation id="7612401678989660900">ମାଇକ୍ରୋଫୋନ ଅନୁମତି ଥିବା ଆପ୍ସ ଓ ୱେବସାଇଟ ପାଇଁ ଆକ୍ସେସ କରିବାର ଅନୁମତି ଦିଅନ୍ତୁ</translation> <translation id="7612497353238585898">ସକ୍ରିୟ ସାଇଟ</translation> <translation id="7612655942094160088">ସଂଯୁକ୍ତ ଥିବା ଫୋନ୍ ଫିଚରଗୁଡ଼ିକୁ ସକ୍ଷମ କରନ୍ତୁ।</translation> <translation id="7612989789287281429">ଆପଣଙ୍କୁ ସାଇନ ଇନ କରାଯାଉଛି…</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb index 807a2cb..a1bfb36 100644 --- a/chrome/app/resources/generated_resources_pa.xtb +++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -380,6 +380,7 @@ <translation id="1281746473742296584">{NUM_OF_FILES,plural, =1{ਫ਼ਾਈਲ ਨੂੰ ਨਹੀਂ ਖੋਲ੍ਹਿਆ ਜਾ ਸਕਦਾ}one{ਫ਼ਾਈਲ ਨੂੰ ਨਹੀਂ ਖੋਲ੍ਹਿਆ ਜਾ ਸਕਦਾ}other{ਫ਼ਾਈਲਾਂ ਨੂੰ ਨਹੀਂ ਖੋਲ੍ਹਿਆ ਜਾ ਸਕਦਾ}}</translation> <translation id="1282311502488501110">ਸਾਈਨ-ਇਨ ਨਾ ਕਰੋ</translation> <translation id="1282465000333679776">ਸਿਸਟਮ ਆਡੀਓ ਸਾਂਝਾ ਕਰੋ</translation> +<translation id="1283126956823499975">ਇਸ ਡੀਵਾਈਸ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਵੇਲੇ ਕੋਈ ਗੜਬੜ ਹੋ ਗਈ</translation> <translation id="1284277788676816155">ਡਾਟਾ ਰੱਖਿਅਤ ਕਰਨ ਦੀ ਆਗਿਆ ਨਾ ਦਿਓ</translation> <translation id="1285320974508926690">ਕਦੇ ਵੀ ਇਸ ਸਾਈਟ ਦਾ ਅਨੁਵਾਦ ਨਾ ਕਰੋ</translation> <translation id="1285484354230578868">ਆਪਣੇ Google Drive ਖਾਤੇ ਵਿੱਚ ਡਾਟਾ ਸਟੋਰ ਕਰੋ</translation> @@ -1131,7 +1132,6 @@ <translation id="1832848789136765277">ਇਹ ਪੱਕਾ ਕਰਨ ਲਈ ਕਿ ਤੁਸੀਂ ਆਪਣੇ ਸਿੰਕ ਕੀਤੇ ਡਾਟੇ ਤੱਕ ਹਮੇਸ਼ਾਂ ਪਹੁੰਚ ਕਰ ਸਕੋ, ਆਪਣੀ ਪਛਾਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ</translation> <translation id="1834503245783133039">ਡਾਊਨਲੋਡ ਅਸਫਲ ਰਿਹਾ: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux ਨੂੰ ਅੱਪਗ੍ਰੇਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ</translation> -<translation id="1835612721186505600">ਕੈਮਰਾ ਇਜਾਜ਼ਤ ਨਾਲ ਐਪਾਂ ਅਤੇ ਵੈੱਬਸਾਈਟਾਂ ਲਈ ਪਹੁੰਚ ਦੀ ਇਜਾਜ਼ਤ ਦਿਓ</translation> <translation id="1838374766361614909">ਖੋਜ ਹਟਾਓ</translation> <translation id="1839021455997460752">ਤੁਹਾਡਾ ਈਮੇਲ ਪਤਾ</translation> <translation id="1839540115464516994"><ph name="LOCATION" /> ਵਿੱਚ ਦਿਖਾਓ</translation> @@ -4586,7 +4586,6 @@ <translation id="4507128560633489176">ਡਾਟਾ ਕਲੀਅਰ ਕੀਤਾ ਗਿਆ।</translation> <translation id="4507373251891673233">ਤੁਸੀਂ <ph name="HOST" /> ਤੋਂ ਸਾਰੀਆਂ ਐਕਸਟੈਂਸ਼ਨਾਂ ਨੂੰ ਬਲਾਕ ਕੀਤਾ ਹੈ</translation> <translation id="4507401683427517298">“ਸ਼ਾਰਟਕੱਟ ਸ਼ਾਮਲ ਕਰੋ” 'ਤੇ ਕਲਿੱਕ ਕਰੋ</translation> -<translation id="4508150454272293946">ਐਪਾਂ ਅਤੇ ਵੈੱਬ-ਪੰਨਿਆਂ ਨੂੰ ਇਸ ਡੀਵਾਈਸ ਨਾਲ ਕਨੈਕਟ ਕੀਤੇ ਕੈਮਰੇ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿਓ। ਜੇ ਹਾਲੇ ਵੀ ਤੁਹਾਡੇ ਕੈਮਰੇ ਵਿੱਚ ਕੋਈ ਸਮੱਸਿਆ ਹੈ, ਤਾਂ ਐਪ ਨੂੰ ਮੁੜ-ਸ਼ੁਰੂ ਜਾਂ ਵੈੱਬ-ਪੰਨਾ ਰਿਫ੍ਰੈਸ਼ ਕਰ ਕੇ ਦੇਖੋ।</translation> <translation id="450867954911715010">ਪਹੁੰਚਯੋਗਤਾ ਸੈਟਿੰਗਾਂ</translation> <translation id="4508765956121923607">ਸ&ਰੋਤ ਦੇਖੋ</translation> <translation id="4509277363725254222">ਆਪਣੇ <ph name="BEGIN_BOLD_USERNAME" />ਵਰਤੋਂਕਾਰ ਨਾਮ<ph name="END_BOLD_USERNAME" /> ਅਤੇ <ph name="BEGIN_BOLD_PASSWORD" />ਪਾਸਵਰਡ<ph name="END_BOLD_PASSWORD" /> ਦੀ ਕਾਪੀ ਨੂੰ ਸਾਂਝਾ ਕਰਨ 'ਤੇ, ਤੁਹਾਡੇ ਪਰਿਵਾਰਕ ਮੈਂਬਰ Google Password Manager ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਉਨ੍ਹਾਂ ਨੂੰ ਭਰ ਸਕਦੇ ਹਨ</translation> @@ -5034,6 +5033,7 @@ <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" /> ਵਰਗਾ ਲੱਗਦਾ ਹੈ (ਪੂਰਵ-ਨਿਰਧਾਰਤ)</translation> <translation id="4864369630010738180">ਸਾਈਨ ਇਨ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ...</translation> <translation id="4864805589453749318">ਸਕੂਲੀ ਖਾਤਾ ਸ਼ਾਮਲ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣ ਵਾਲੇ ਮਾਂ-ਪਿਓ ਨੂੰ ਚੁਣੋ।</translation> +<translation id="4864905533117889071"><ph name="SENSOR_NAME" /> (ਬਲਾਕ ਕੀਤਾ ਗਿਆ)</translation> <translation id="486505726797718946">ਮੈਮੋਰੀ ਰੱਖਿਅਤ ਕੀਤੀ ਗਈ</translation> <translation id="486635084936119914">ਕੁਝ ਕਿਸਮ ਦੀਆਂ ਫ਼ਾਈਲਾਂ ਨੂੰ ਡਾਊਨਲੋਡ ਕਰਨ ਤੋਂ ਬਾਅਦ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਖੋਲ੍ਹੋ</translation> <translation id="4867272607148176509">ਮਾਂ-ਪਿਓ ਐਪਾਂ ਨੂੰ ਮਨਜ਼ੂਰੀ ਦੇ ਸਕਦੇ ਹਨ ਜਾਂ ਉਨ੍ਹਾਂ ਨੂੰ ਬਲਾਕ ਕਰ ਸਕਦੇ ਹਨ, ਸਮਾਂ ਸੀਮਾਵਾਂ ਸੈੱਟ ਕਰ ਸਕਦੇ ਹਨ ਅਤੇ ਵੈੱਬ ਬ੍ਰਾਊਜ਼ਿੰਗ ਕੰਟਰੋਲ ਕਰ ਸਕਦੇ ਹਨ। ਜ਼ਿਆਦਾਤਰ ਸਕੂਲੀ ਸਰੋਤਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਲਈ ਬਾਅਦ ਵਿੱਚ ਸਕੂਲ ਖਾਤਾ ਸ਼ਾਮਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।</translation> @@ -5527,6 +5527,7 @@ <translation id="5261619498868361045">ਕੰਟੇਨਰ ਦਾ ਨਾਮ ਖਾਲੀ ਨਹੀਂ ਛੱਡਿਆ ਜਾ ਸਕਦਾ।</translation> <translation id="5261683757250193089">ਵੈੱਬ ਸਟੋਰ ਵਿੱਚ ਖੋਲ੍ਹੋ</translation> <translation id="5261799091118902550">ਇਹ ਫ਼ਾਈਲ ਵਾਇਰਸ ਜਾਂ ਮਾਲਵੇਅਰ ਹੋ ਸਕਦੀ ਹੈ। ਇਸਦੇ ਸੁਰੱਖਿਅਤ ਹੋਣ ਜਾਂ ਨਾ ਹੋਣ ਸੰਬੰਧੀ ਜਾਂਚ ਕਰਨ ਲਈ ਤੁਸੀਂ ਇਸਨੂੰ Google ਨੂੰ ਭੇਜ ਸਕਦੇ ਹੋ।</translation> +<translation id="5262334727506665688">ਆਪਣੇ Google ਖਾਤੇ ਵਿੱਚ ਪਾਸਵਰਡ ਨੂੰ ਰੱਖਿਅਤ ਕਰਦੇ ਰਹੋ</translation> <translation id="5262784498883614021">ਨੈੱਟਵਰਕ ਨਾਲ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਕਨੈਕਟ ਕਰੋ</translation> <translation id="5263656105659419083">ਸਾਈਡ ਪੈਨਲ 'ਤੇ ਆਸਾਨੀ ਨਾਲ ਵਾਪਸ ਜਾਣ ਲਈ, ਸਿਖਰ 'ਤੇ ਸੱਜੇ ਪਾਸੇ ਮੌਜੂਦ 'ਪਿੰਨ ਕਰੋ' 'ਤੇ ਕਲਿੱਕ ਕਰੋ</translation> <translation id="5264148714798105376">ਇਸ ਵਿੱਚ ਇੱਕ ਮਿੰਟ ਜਾਂ ਥੋੜ੍ਹਾ ਜ਼ਿਆਦਾ ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ।</translation> @@ -7066,6 +7067,7 @@ <translation id="649396225532207613">ਇਹ ਫ਼ਾਈਲ ਤੁਹਾਡੇ ਨਿੱਜੀ ਅਤੇ ਸੋਸ਼ਲ ਨੈੱਟਵਰਕ ਖਾਤਿਆਂ ਨੂੰ ਨੁਕਸਾਨ ਪਹੁੰਚਾ ਸਕਦੀ ਹੈ</translation> <translation id="6494327278868541139">ਵਿਸਤ੍ਰਿਤ ਸੁਰੱਖਿਆ ਵੇਰਵੇ ਦਿਖਾਓ</translation> <translation id="6494445798847293442">ਇੱਕ ਪ੍ਰਮਾਣ-ਪੱਤਰ ਅਥਾਰਿਟੀ ਨਹੀਂ</translation> +<translation id="6494483173119160146">ਇਸ ਡੀਵਾਈਸ ਵਿੱਚ ਕੋਈ ਮੁੜ-ਹਾਸਲ ਨਾ ਹੋਣਯੋਗ ਡਾਟੇ ਸੰਬੰਧੀ ਗੜਬੜ ਹੋ ਗਈ। ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਡੀਵਾਈਸ ਨੂੰ ਰੀਸੈੱਟ ਕਰੋ (ਇਸ ਨਾਲ ਸਾਰਾ ਵਰਤੋਂਕਾਰ ਡਾਟਾ ਮਿਟ ਜਾਵੇਗਾ) ਅਤੇ ਦੁਬਾਰਾ ਸ਼ੁਰੂ ਕਰੋ।</translation> <translation id="6497784818439587832">ਆਪਣੀ ਸਕ੍ਰੀਨ 'ਤੇ ਆਈਟਮਾਂ ਨੂੰ ਛੋਟਾ ਜਾਂ ਵੱਡਾ ਕਰਨ ਲਈ ਡਿਸਪਲੇ ਦਾ ਆਕਾਰ ਬਦਲੋ</translation> <translation id="6497789971060331894">ਮਾਊਸ ਦੀ ਉਲਟ ਸਕ੍ਰੋਲਿੰਗ</translation> <translation id="6498249116389603658">&ਤੁਹਾਡੀਆਂ ਸਾਰੀਆਂ ਭਾਸ਼ਾਵਾਂ</translation> @@ -8481,7 +8483,6 @@ <translation id="7610337976012700501">ਇਨ੍ਹਾਂ ਸੰਪਰਕਾਂ ਨਾਲ <ph name="FEATURE_NAME" /> ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ, ਉਨ੍ਹਾਂ ਦੇ Google ਖਾਤੇ ਨਾਲ ਲਿੰਕ ਕੀਤੇ ਈਮੇਲ ਪਤੇ ਨੂੰ ਆਪਣੇ ਸੰਪਰਕਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ।</translation> <translation id="7611713099524036757">ਮੈਟਾ</translation> <translation id="7612050744024016345">ਸਾਰੀਆਂ ਐਕਸਟੈਂਸ਼ਨਾਂ</translation> -<translation id="7612401678989660900">ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਇਜਾਜ਼ਤ ਦੇ ਨਾਲ ਐਪਾਂ ਅਤੇ ਵੈੱਬਸਾਈਟਾਂ ਨੂੰ ਪਹੁੰਚ ਦੀ ਇਜਾਜ਼ਤ ਦਿਓ</translation> <translation id="7612497353238585898">ਕਿਰਿਆਸ਼ੀਲ ਸਾਈਟ</translation> <translation id="7612655942094160088">ਕਨੈਕਟ ਕੀਤੇ ਫ਼ੋਨ ਦੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਚਾਲੂ ਕਰੋ।</translation> <translation id="7612989789287281429">ਤੁਹਾਨੂੰ ਸਾਈਨ-ਇਨ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…</translation> @@ -9542,6 +9543,7 @@ <translation id="8397825320644530257">ਕਨੈਕਟ ਕੀਤੇ ਫ਼ੋਨ ਨੂੰ ਡਿਸਕਨੈਕਟ ਕਰੋ</translation> <translation id="8398877366907290961">ਫੇਰ ਵੀ ਜਾਰੀ ਰੱਖੋ</translation> <translation id="8399282673057829204">ਪਾਸਵਰਡ ਦੇਖੋ</translation> +<translation id="839949601275221554">ਇਸ ਡੀਵਾਈਸ ਵਿੱਚ ਕੋਈ ਗੜਬੜ ਹੋ ਗਈ। ਆਪਣੇ ਡੀਵਾਈਸ ਨੂੰ ਮੁੜ-ਸ਼ੁਰੂ ਕਰ ਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> <translation id="8401432541486058167">ਆਪਣੇ ਸਮਾਰਟ ਕਾਰਡ ਨਾਲ ਸੰਬੰਧਿਤ ਪਿੰਨ ਮੁਹੱਈਆ ਕਰਵਾਓ</translation> <translation id="8401772916834964810">{COUNT,plural, =0{Chrome ਕੁਕੀਜ਼ ਨੂੰ ਅੱਜ ਦੁਬਾਰਾ ਬਲਾਕ ਕਰ ਦੇਵੇਗਾ}=1{Chrome ਕੁਕੀਜ਼ ਨੂੰ ਕੱਲ੍ਹ ਦੁਬਾਰਾ ਬਲਾਕ ਕਰ ਦੇਵੇਗਾ}other{Chrome ਕੁਕੀਜ਼ ਨੂੰ # ਦਿਨਾਂ ਵਿੱਚ ਦੁਬਾਰਾ ਬਲਾਕ ਕਰ ਦੇਵੇਗਾ}}</translation> <translation id="8403618281196981152">Chrome ਵਿੱਚ ਤੁਹਾਡਾ ਡਾਟਾ</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb index 6e929afe..197f575 100644 --- a/chrome/app/resources/generated_resources_pl.xtb +++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -379,6 +379,7 @@ <translation id="1281746473742296584">{NUM_OF_FILES,plural, =1{Nie można otworzyć pliku}few{Nie można otworzyć plików}many{Nie można otworzyć plików}other{Nie można otworzyć plików}}</translation> <translation id="1282311502488501110">Nie loguj się</translation> <translation id="1282465000333679776">Udostępnij dźwięk z komputera</translation> +<translation id="1283126956823499975">Podczas konfigurowania urządzenia coś poszło nie tak</translation> <translation id="1284277788676816155">Nie zezwalaj na zapisywanie danych</translation> <translation id="1285320974508926690">Nigdy nie tłumacz tej witryny</translation> <translation id="1285484354230578868">Przechowywanie danych na koncie Dysku Google</translation> @@ -1118,7 +1119,6 @@ <translation id="1832848789136765277">Aby zapewnić sobie stały dostęp do zsynchronizowanych danych, potwierdź swoją tożsamość</translation> <translation id="1834503245783133039">Nie udało się pobrać: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Uaktualnianie Linuksa</translation> -<translation id="1835612721186505600">Zezwalanie na dostęp w przypadku aplikacji i stron internetowych, które mają uprawnienia do korzystania z aparatu</translation> <translation id="1838374766361614909">Wyczyść wyszukiwanie</translation> <translation id="1839021455997460752">Twój adres e-mail</translation> <translation id="1839540115464516994">Pokaż w tej lokalizacji: <ph name="LOCATION" /></translation> @@ -4560,7 +4560,6 @@ <translation id="4507128560633489176">Dane zostały wyczyszczone.</translation> <translation id="4507373251891673233">Wszystkie rozszerzenia mają zablokowany dostęp do witryny <ph name="HOST" /></translation> <translation id="4507401683427517298">Kliknij „Dodaj skrót”</translation> -<translation id="4508150454272293946">Zezwól aplikacjom i stronom internetowym na dostęp do kamer podłączonych do tego urządzenia. Jeśli nadal masz problem z kamerą, uruchom ponownie aplikację lub odśwież stronę.</translation> <translation id="450867954911715010">Ustawienia ułatwień dostępu</translation> <translation id="4508765956121923607">Wyświetl ź&ródło</translation> <translation id="4509277363725254222">Gdy udostępnisz swoją <ph name="BEGIN_BOLD_USERNAME" />nazwę użytkownika<ph name="END_BOLD_USERNAME" /> i <ph name="BEGIN_BOLD_PASSWORD" />hasło<ph name="END_BOLD_PASSWORD" />, członek grupy rodzinnej będzie mógł wstawić te dane za pomocą Menedżera haseł Google.</translation> @@ -5009,6 +5008,7 @@ <translation id="4863769717153320198">Wygląda na <ph name="WIDTH" /> × <ph name="HEIGHT" /> (domyślna)</translation> <translation id="4864369630010738180">Loguję...</translation> <translation id="4864805589453749318">Wybierz rodzica, który zezwala na dodanie konta szkolnego.</translation> +<translation id="4864905533117889071"><ph name="SENSOR_NAME" /> (zablokowano)</translation> <translation id="486505726797718946">Zaoszczędzona pamięć</translation> <translation id="486635084936119914">Automatycznie otwieraj określone typy plików po pobraniu</translation> <translation id="4867272607148176509">Rodzice mogą zatwierdzać i blokować aplikacje, ustawiać limity czasu oraz kontrolować przeglądanie internetu. Później można dodać konto szkolne, aby uzyskać dostęp do większości zasobów szkolnych.</translation> @@ -5502,6 +5502,7 @@ <translation id="5261619498868361045">Nazwa kontenera nie może być pusta.</translation> <translation id="5261683757250193089">Otwórz w Chrome Web Store</translation> <translation id="5261799091118902550">Ten plik może zawierać wirusa lub złośliwe oprogramowanie. Możesz go wysłać do Google, aby sprawdzić, czy jest bezpieczny.</translation> +<translation id="5262334727506665688">Nadal zapisuj hasła na koncie Google</translation> <translation id="5262784498883614021">Automatycznie łącz z siecią</translation> <translation id="5263656105659419083">Aby łatwo wrócić do panelu bocznego, kliknij Przypnij w prawym górnym rogu</translation> <translation id="5264148714798105376">To może potrwać około minuty.</translation> @@ -7042,6 +7043,7 @@ <translation id="649396225532207613">Ten plik może zaszkodzić Twoim kontom osobistym i kontom w sieciach społecznościowch</translation> <translation id="6494327278868541139">Pokaż szczegóły silniejszej ochrony</translation> <translation id="6494445798847293442">To nie jest urząd certyfikacji</translation> +<translation id="6494483173119160146">Na urządzeniu wystąpił nieodwracalny błąd. Zresetuj urządzenie (spowoduje to usunięcie wszystkich danych użytkownika) i spróbuj jeszcze raz.</translation> <translation id="6497784818439587832">Umożliwia zmienianie rozmiaru wyświetlacza, aby elementy na ekranie były mniejsze lub większe</translation> <translation id="6497789971060331894">Odwrotne przewijanie myszą</translation> <translation id="6498249116389603658">&Wszystkie Twoje języki</translation> @@ -8458,7 +8460,6 @@ <translation id="7610337976012700501">Aby podczas korzystania z funkcji <ph name="FEATURE_NAME" /> używać tych kontaktów, dodaj do nich adresy e-mail połączone z ich kontami Google.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Wszystkie rozszerzenia</translation> -<translation id="7612401678989660900">Zezwalanie na dostęp w przypadku aplikacji i stron internetowych, które mają uprawnienia do korzystania z mikrofonu</translation> <translation id="7612497353238585898">Aktywna witryna</translation> <translation id="7612655942094160088">Włącznik funkcji połączonego telefonu.</translation> <translation id="7612989789287281429">Loguję Cię…</translation> @@ -9524,6 +9525,7 @@ <translation id="8397825320644530257">Odłącz połączony telefon</translation> <translation id="8398877366907290961">Kontynuuj mimo wszystko</translation> <translation id="8399282673057829204">Wyświetl hasło</translation> +<translation id="839949601275221554">Wystąpił błąd urządzenia. Uruchom je ponownie i spróbuj jeszcze raz.</translation> <translation id="8401432541486058167">Wpisz kod PIN powiązany z Twoją kartą elektroniczną.</translation> <translation id="8401772916834964810">{COUNT,plural, =0{Chrome ponownie zablokuje pliki cookie dzisiaj}=1{Chrome ponownie zablokuje pliki cookie jutro}few{Chrome ponownie zablokuje pliki cookie za # dni}many{Chrome ponownie zablokuje pliki cookie za # dni}other{Chrome ponownie zablokuje pliki cookie za # dnia}}</translation> <translation id="8403618281196981152">Twoje dane w Chrome</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb index 5328fb25..b4b07a3 100644 --- a/chrome/app/resources/generated_resources_pt-BR.xtb +++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -1132,7 +1132,6 @@ <translation id="1832848789136765277">Para garantir o acesso aos seus dados sincronizados, confirme sua identidade</translation> <translation id="1834503245783133039">Falha no download: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Fazendo upgrade do Linux</translation> -<translation id="1835612721186505600">Dê acesso a apps e sites com a permissão da câmera</translation> <translation id="1838374766361614909">Limpar pesquisa</translation> <translation id="1839021455997460752">Seu endereço de e-mail</translation> <translation id="1839540115464516994">Mostrar no <ph name="LOCATION" /></translation> @@ -4595,7 +4594,6 @@ <translation id="4507128560633489176">Dados limpos.</translation> <translation id="4507373251891673233">Você bloqueou todas as extensões do <ph name="HOST" /></translation> <translation id="4507401683427517298">Clique em "Adicionar atalho"</translation> -<translation id="4508150454272293946">Permita que apps e páginas da Web usem as câmeras conectadas a este dispositivo. Se você ainda tiver problemas com a câmera, tente reiniciar o app ou atualize a página da Web.</translation> <translation id="450867954911715010">Configurações de acessibilidade</translation> <translation id="4508765956121923607">Exibir &código fonte</translation> <translation id="4509277363725254222">Quando você compartilha uma cópia do <ph name="BEGIN_BOLD_USERNAME" />nome de usuário<ph name="END_BOLD_USERNAME" /> e da <ph name="BEGIN_BOLD_PASSWORD" />senha<ph name="END_BOLD_PASSWORD" />, o membro da família pode preencher esses dados usando o Gerenciador de senhas do Google</translation> @@ -8496,7 +8494,6 @@ <translation id="7610337976012700501">Para usar o <ph name="FEATURE_NAME" /> com estes contatos, adicione o endereço de e-mail vinculado à Conta do Google deles.</translation> <translation id="7611713099524036757">tecla meta</translation> <translation id="7612050744024016345">Todas as extensões</translation> -<translation id="7612401678989660900">Dê acesso a apps e sites com a permissão do microfone</translation> <translation id="7612497353238585898">Site ativo</translation> <translation id="7612655942094160088">Ativar recursos do smartphone conectado.</translation> <translation id="7612989789287281429">Fazendo login…</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb index 8b94745..3da14e0 100644 --- a/chrome/app/resources/generated_resources_pt-PT.xtb +++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -1121,7 +1121,6 @@ <translation id="1832848789136765277">Para se certificar de que pode sempre aceder aos seus dados de sincronização, valide a sua identidade</translation> <translation id="1834503245783133039">Transferência sem êxito: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">A atualizar o Linux…</translation> -<translation id="1835612721186505600">Permitir acesso a apps e Websites com a autorização da câmara</translation> <translation id="1838374766361614909">Limpar pesquisa</translation> <translation id="1839021455997460752">O seu endereço de email</translation> <translation id="1839540115464516994">Mostrar em <ph name="LOCATION" /></translation> @@ -4580,7 +4579,6 @@ <translation id="4507128560633489176">Dados limpos.</translation> <translation id="4507373251891673233">Bloqueou todas as extensões de <ph name="HOST" /></translation> <translation id="4507401683427517298">Clique em "Adicionar atalho"</translation> -<translation id="4508150454272293946">Permitir que as apps e as páginas Web usem as câmaras associadas a este dispositivo. Se continuar a ter problemas com a câmara, experimente reiniciar a app ou atualizar a página Web.</translation> <translation id="450867954911715010">Definições de acessibilidade</translation> <translation id="4508765956121923607">Ver &Origem</translation> <translation id="4509277363725254222">Quando partilha uma cópia do seu <ph name="BEGIN_BOLD_USERNAME" />nome de utilizador<ph name="END_BOLD_USERNAME" /> e <ph name="BEGIN_BOLD_PASSWORD" />palavra-passe<ph name="END_BOLD_PASSWORD" />, o membro da família pode preenchê-los através do Gestor de Palavras-passe da Google</translation> @@ -8482,7 +8480,6 @@ <translation id="7610337976012700501">Para usar a funcionalidade <ph name="FEATURE_NAME" /> com estes contactos, adicione o endereço de email associado às respetivas Contas Google aos seus contactos.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Todas as extensões</translation> -<translation id="7612401678989660900">Permitir acesso a apps e Websites com a autorização do microfone</translation> <translation id="7612497353238585898">Site ativo</translation> <translation id="7612655942094160088">Ativar funcionalidades do telemóvel associado.</translation> <translation id="7612989789287281429">A iniciar sessão…</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb index 02de5115..a2b7af0 100644 --- a/chrome/app/resources/generated_resources_ro.xtb +++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -1101,6 +1101,7 @@ <translation id="1823768272150895732">Font</translation> <translation id="1823781806707127806">Adaugă datele de navigare existente în profilul gestionat</translation> <translation id="18245044880483936">Datele cărora li s-a făcut backup nu sunt luate în considerare la calcularea cotei de stocare Drive a copilului tău.</translation> +<translation id="1825073796163165618">Activează linkurile</translation> <translation id="1825565032302550710">Portul trebuie să aibă o valoare între 1024 și 65535</translation> <translation id="182577151972096764">rețete afișate recent</translation> <translation id="18260074040409954">Poți folosi parolele salvate pe orice dispozitiv. Ele se salvează pe <ph name="GOOGLE_PASSWORD_MANAGER" /> pentru <ph name="EMAIL" />.</translation> @@ -1120,7 +1121,6 @@ <translation id="1832848789136765277">Confirmă-ți identitatea ca să te asiguri că ai în permanență acces la datele sincronizate</translation> <translation id="1834503245783133039">Descărcare nereușită: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Se face upgrade la Linux</translation> -<translation id="1835612721186505600">Permite accesul aplicațiilor și site-urilor care au permisiune pentru camera foto</translation> <translation id="1838374766361614909">Șterge căutarea</translation> <translation id="1839021455997460752">Adresa de e-mail</translation> <translation id="1839540115464516994">Afișează în <ph name="LOCATION" /></translation> @@ -1339,6 +1339,7 @@ <translation id="1997616988432401742">Certificatele tale</translation> <translation id="1999115740519098545">La pornire</translation> <translation id="2002109485265116295">În timp real</translation> +<translation id="2002160221914907025">AI experimental</translation> <translation id="2003130567827682533">Pentru a activa datele „<ph name="NAME" />”, conectează-te mai întâi la o rețea Wi-Fi.</translation> <translation id="2004413981947727241">Folosește parolele pe orice dispozitiv</translation> <translation id="2004697686368036666">Este posibil ca funcțiile din anumite site-uri să nu funcționeze</translation> @@ -1995,6 +1996,7 @@ <translation id="2482878487686419369">Notificări</translation> <translation id="2482895651873876648">Fila a fost mutată în grupul <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /></translation> <translation id="2483627560139625913">Setează motorul de căutare în setările browserului Chrome</translation> +<translation id="2483698983806594329">S-a descărcat un fișier neverificat</translation> <translation id="2484743711056182585">Elimină accesul</translation> <translation id="2484909293434545162">Dacă un site folosește cookie-uri, acesta va apărea aici</translation> <translation id="2484959914739448251">Pentru a șterge datele de navigare de pe toate dispozitivele sincronizate și din Contul Google, <ph name="BEGIN_LINK" />introdu expresia de acces<ph name="END_LINK" />.</translation> @@ -2134,6 +2136,7 @@ <translation id="2589658397149952302">Nu mai afișa niciodată fișierele din Drive</translation> <translation id="25899519884572181">Ieși din modul Cititor</translation> <translation id="2593499352046705383">Înainte de a începe, asigură-te că ai făcut backup pentru date. Instalarea <ph name="DEVICE_OS" /> va înlocui datele de pe hard disk. Află mai multe la g.co/flex/InstallGuide.</translation> +<translation id="2594832159966169099">Gestionează securitatea pentru V8</translation> <translation id="2594999711683503743">Caută pe Google sau introdu adresa URL</translation> <translation id="2597073208962000830">Trimiterea în apropiere folosește scanarea Bluetooth pentru a găsi dispozitive din apropiere.</translation> <translation id="2598710988533271874">Este disponibilă o nouă versiune Chrome</translation> @@ -2313,6 +2316,7 @@ <translation id="2730647855013151888">Include toate informațiile cu caracter personal</translation> <translation id="2730901670247399077">Sugestii de emoji</translation> <translation id="273093730430620027">Această pagină vă accesează camera.</translation> +<translation id="2730956943403103181">Nu au permisiunea de a folosi instrumentul de optimizare pentru V8</translation> <translation id="2731392572903530958">R&edeschide fereastra închisă</translation> <translation id="2731700343119398978">Așteptați...</translation> <translation id="2731971182069536520">Data viitoare când repornești dispozitivul, administratorul va face o actualizare unică ce va șterge datele locale.</translation> @@ -2716,6 +2720,7 @@ <translation id="3025174326431589540">{COUNT,plural, =0{Nu există parole salvate}=1{S-au verificat parolele pentru {COUNT} site}few{S-au verificat parolele pentru {COUNT} site-uri și aplicații}other{S-au verificat parolele pentru {COUNT} de site-uri și aplicații}}</translation> <translation id="3027296729579831126">Activează Trimiterea în apropiere</translation> <translation id="3027644380269727216">Pe baza activității tale pe un site. Setarea este activată.</translation> +<translation id="3028445648481691885">Descărcarea a fost anulată</translation> <translation id="3029276696788198026">Fără preîncărcare</translation> <translation id="3029466929721441205">Afișează instrumentele pentru creion pe raft</translation> <translation id="3029808567601324798">Blocare</translation> @@ -2821,6 +2826,7 @@ <translation id="3119948370277171654">Ce conținut / adresă URL proiectai?</translation> <translation id="3122464029669770682">CPU</translation> <translation id="3122496702278727796">Nu s-a reușit crearea directorului de date</translation> +<translation id="3122810280993140148">Creează teme personalizate în funcție de subiectul, starea de spirit, stilul vizual și culoarea pe care le alegi. Pentru a folosi această funcție, deschide o filă nouă și dă clic pe Personalizează Chrome.</translation> <translation id="3122883569442693641">Mai multe detalii</translation> <translation id="3124111068741548686">Handle-uri USER</translation> <translation id="3124332159330678621">Personalizează Chrome pentru a-i oferi browserului un nou aspect</translation> @@ -2860,6 +2866,7 @@ <translation id="3159978855457658359">Modifică numele dispozitivului</translation> <translation id="3160928651883997588">Preferințe pentru VPN</translation> <translation id="3161522574479303604">Toate limbile</translation> +<translation id="3162766632262775911">Au permisiunea de a folosi întotdeauna instrumentul de optimizare pentru V8</translation> <translation id="3162853326462195145">Contul de la școală</translation> <translation id="3162899666601560689">Site-urile pot folosi cookie-uri pentru a-ți îmbunătăți experiența de navigare, de exemplu, pentru a te menține conectat(ă) sau pentru a reține articolele din coșul de cumpărături</translation> <translation id="3163201441334626963">Produs necunoscut <ph name="PRODUCT_ID" /> de la furnizorul <ph name="VENDOR_ID" /></translation> @@ -3329,6 +3336,7 @@ <translation id="3547954654003013442">Setări proxy</translation> <translation id="3548162552723420559">Ajustează culoarea ecranului în funcție de mediu</translation> <translation id="354949590254473526">Introdu adresa URL personalizată pentru interogarea DNS</translation> +<translation id="3549827561154008969">Descărcarea a fost reluată</translation> <translation id="3550593477037018652">Deconectează rețeaua mobilă</translation> <translation id="3550915441744863158">Chrome se actualizează automat, astfel încât să aveți întotdeauna cea mai recentă versiune</translation> <translation id="3551320343578183772">Închide fila</translation> @@ -3478,6 +3486,7 @@ <translation id="3666196264870170605">Date pentru remedierea erorilor cardurilor de interfață cu rețeaua Intel Wi-Fi</translation> <translation id="3670113805793654926">Dispozitive de la orice furnizor</translation> <translation id="3670229581627177274">Activează Bluetooth</translation> +<translation id="3670480940339182416">Site-urile pot folosi instrumentul de optimizare pentru V8</translation> <translation id="3672681487849735243">A fost detectată o eroare de fabricație</translation> <translation id="3673097791729989571">Conectare găzduită de <ph name="SAML_DOMAIN" /></translation> <translation id="3673622964532248901">Nu ai permisiunea de a proiecta pe acest dispozitiv.</translation> @@ -4569,7 +4578,6 @@ <translation id="4507128560633489176">Datele au fost șterse.</translation> <translation id="4507373251891673233">Ai blocat toate extensiile de la <ph name="HOST" /></translation> <translation id="4507401683427517298">Dă clic pe Adaugă o comandă rapidă</translation> -<translation id="4508150454272293946">Permite aplicațiilor și paginilor web să utilizeze camerele foto conectate la acest dispozitiv. Dacă întâmpini în continuare probleme cu camera foto, repornește aplicația sau actualizează pagina web.</translation> <translation id="450867954911715010">Setări de accesibilitate</translation> <translation id="4508765956121923607">Afișează s&ursa</translation> <translation id="4509277363725254222">Când permiți accesul la o copie a <ph name="BEGIN_BOLD_USERNAME" />numelui de utilizator<ph name="END_BOLD_USERNAME" /> și a <ph name="BEGIN_BOLD_PASSWORD" />parolei<ph name="END_BOLD_PASSWORD" />, membrul familiei tale le poate completa folosind Managerul de parole Google</translation> @@ -4933,6 +4941,7 @@ <translation id="4800839971935185386">Examinează actualizările numelui și ale pictogramei</translation> <translation id="4801448226354548035">Ascundeți conturile</translation> <translation id="4801512016965057443">Permite roaming de date mobile</translation> +<translation id="4803599447809045620">Dezactivează linkurile</translation> <translation id="4804311503028830356">Dă clic pe săgeata înapoi pentru a explora alte opțiuni</translation> <translation id="4804818685124855865">Deconectează-te</translation> <translation id="4804827417948292437">Avocado</translation> @@ -5724,6 +5733,7 @@ <translation id="5432223177001837288">Pentru a trimite conținut audio, permite accesul la o filă</translation> <translation id="5432872710261597882">Îmi place trimite feedback conform căruia îți place acest conținut.</translation> <translation id="543338862236136125">Editează parola</translation> +<translation id="5433865420958136693">Folosește accelerarea plăcii grafice când este disponibilă</translation> <translation id="5434065355175441495">Criptare RSA PKCS #1</translation> <translation id="5435274640623994081">Activează înregistrarea audiogramei</translation> <translation id="5435779377906857208">Permite întotdeauna accesul <ph name="HOST" /> la locație</translation> @@ -6461,6 +6471,7 @@ <translation id="6020431688553761150">Serverul nu te-a autorizat să accesezi această resursă.</translation> <translation id="6021293122504240352"><ph name="APPS" /> aplicații nu mai sunt acceptate</translation> <translation id="6021969570711251331">Intercalat</translation> +<translation id="602212068530399867">Motorul de căutare folosit în bara de adrese și în lansator.</translation> <translation id="6022526133015258832">Deschideți în ecran complet</translation> <translation id="6022659036123304283">Personalizează Chrome</translation> <translation id="6023643151125006053">Dispozitivul (NS: <ph name="SERIAL_NUMBER" />) a fost blocat de administratorul <ph name="SAML_DOMAIN" />.</translation> @@ -7868,6 +7879,7 @@ <translation id="7131431455372521159">Toate TrackPoint-urile au fost deconectate</translation> <translation id="7131896909366247105"><ph name="APP_NAME" />, se așteaptă</translation> <translation id="7134098520442464001">Micșorează textul</translation> +<translation id="7134951043985383439">S-a descărcat un fișier periculos</translation> <translation id="7135729336746831607">Activezi Bluetooth?</translation> <translation id="7136694880210472378">Setează ca prestabilit</translation> <translation id="7137771508221868414">Astfel, se vor șterge <ph name="TOTAL_USAGE" /> din datele stocate de site-uri și de aplicațiile instalate</translation> @@ -8035,6 +8047,7 @@ <translation id="727441411541283857"><ph name="PERCENTAGE" />% – <ph name="TIME" /> până la încărcare completă</translation> <translation id="727595954130325265">Cumpără acum</translation> <translation id="7276100255011548441">Chrome șterge automat subiectele mai vechi de patru săptămâni. Pe măsură ce navighezi, un subiect poate să reapară în listă. Sau poți bloca subiectele pe care nu vrei să le trimită Chrome la site-uri. Află mai multe despre <ph name="BEGIN_LINK" />gestionarea confidențialității anunțurilor în Chrome<ph name="END_LINK" />.</translation> +<translation id="7278164481614262110">Creează teme cu AI</translation> <translation id="727952162645687754">Eroare la descărcare</translation> <translation id="7280649757394340890">Setări ale vocii pentru redarea vocală a textului</translation> <translation id="7280877790564589615">Permisiune solicitată</translation> @@ -8464,7 +8477,6 @@ <translation id="7610337976012700501">Pentru a folosi <ph name="FEATURE_NAME" /> cu aceste persoane de contact, adaugă în agendă adresele de e-mail asociate Conturilor Google respective.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Toate extensiile</translation> -<translation id="7612401678989660900">Permite accesul aplicațiilor și site-urilor cu permisiunea pentru microfon</translation> <translation id="7612497353238585898">Site activ</translation> <translation id="7612655942094160088">Activarea funcțiilor telefonului conectat.</translation> <translation id="7612989789287281429">Se conectează…</translation> @@ -8731,6 +8743,7 @@ <ph name="EXTENSION_NAME" /></translation> <translation id="7789963078219276159">Fundalul paginii de pornire a fost modificat la <ph name="CATEGORY" />.</translation> +<translation id="7791429245559955092">Aplicația se va instala în profilul Chrome folosit în momentul de față</translation> <translation id="7791436592012979144">Derularea inversă este activată</translation> <translation id="7791543448312431591">Adaugă</translation> <translation id="7792012425874949788">A apărut o eroare la conectare</translation> @@ -9126,6 +9139,7 @@ <translation id="8089547136368562137">Este protejată de cele mai bune tehnologii Google</translation> <translation id="8090234456044969073">Citește o listă a site-urilor vizitate cel mai frecvent</translation> <translation id="8090513782447872344">Poți reveni oricând pentru a consulta din nou informațiile</translation> +<translation id="8090579562279016251">Reduce performanța, dar face motorul V8 mai rezistent la atacuri</translation> <translation id="8090686009202681725">Creează o temă cu AI</translation> <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> nu răspunde</translation> <translation id="8094536695728193970">Caisă</translation> @@ -9172,6 +9186,7 @@ <translation id="8124313775439841391">Proprietăți ONC gestionate</translation> <translation id="8125651784723647184">Permiterea accesului la parolă este gestionată de administrator</translation> <translation id="8129265306888404830">Pentru a folosi adresa de e-mail a organizației (<ph name="EMAIL_DOMAIN" />), trebuie să folosești înregistrarea de companie. Dacă dispozitivul este pentru uz personal, conectează-te cu Contul Google personal.</translation> +<translation id="8130476996317833777">Nu permite site-urilor să folosească instrumentul de optimizare pentru V8</translation> <translation id="813082847718468539">Afișează informațiile privind site-ul</translation> <translation id="8131740175452115882">Confirmați</translation> <translation id="8133297578569873332">Acceptabilă – FM</translation> @@ -9555,6 +9570,7 @@ <translation id="8422748173858722634">IMEI</translation> <translation id="8422787418163030046">Tavă lipsă</translation> <translation id="8424250197845498070">Blocat de Protecția avansată</translation> +<translation id="842501938276307467">Încearcă funcțiile bazate pe AI-ul experimental</translation> <translation id="8425213833346101688">Modificați</translation> <translation id="8425492902634685834">Fixează pe Bara de activități</translation> <translation id="8425768983279799676">Poți folosi codul PIN ca să deblochezi dispozitivul.</translation> @@ -9709,6 +9725,7 @@ <ph name="BEGIN_PARAGRAPH2" />Pentru a folosi <ph name="USER_EMAIL" />, mai întâi deconectează-te de la <ph name="DEVICE_TYPE" />. Apoi, în partea de jos a ecranului de conectare, selectează Adaugă o persoană.<ph name="END_PARAGRAPH2" /></translation> <translation id="85486688517848470">Apasă lung pe tasta de căutare pentru a schimba comportamentul tastelor de pe rândul de sus</translation> <translation id="8549316893834449916">Vei folosi Contul Google ca să te conectezi la Chromebook; e același cont pe care îl folosești pentru Gmail, Drive, YouTube și altele.</translation> +<translation id="8550239873869577759">S-a descărcat un fișier suspect</translation> <translation id="8551388862522347954">Licențe</translation> <translation id="8551588720239073785">Setări de dată și oră</translation> <translation id="8551647092888540776">Nu poți deschide <ph name="FILE_NAMES" /> când ești offline</translation> @@ -9764,6 +9781,7 @@ <translation id="8601206103050338563">Autentificare client TLS WWW</translation> <translation id="8602674530529411098">Aplicații (beta)</translation> <translation id="8602851771975208551">Un alt program de pe computerul dvs. a adăugat o aplicație care poate schimba modul în care funcționează Chrome.</translation> +<translation id="8604513817270995005">Te ajută să scrii conținut scurt pentru web, de exemplu, recenzii. Conținutul sugerat se bazează pe solicitările tale și pe conținutul paginii web. Pentru a folosi această funcție, dă clic dreapta pe o casetă de text.</translation> <translation id="8605428685123651449">Memorie SQLite</translation> <translation id="8607171490667464784">În timp ce dispozitivul este inactiv și pe baterie</translation> <translation id="8607828412110648570">Verifică dacă dispozitivul Bluetooth este în modul de asociere și în apropiere. Asociază-l numai cu dispozitive în care ai încredere. Dispozitivele asociate sunt vizibile pentru toate conturile de pe acest Chromebook. <ph name="BEGIN_LINK_LEARN_MORE" />Află mai multe<ph name="END_LINK_LEARN_MORE" /></translation> @@ -10276,6 +10294,7 @@ <translation id="8985191021574400965">Bun venit la Steam pentru Chromebook</translation> <translation id="8985264973231822211">Activ acum <ph name="DEVICE_LAST_ACTIVATED_TIME" /> zi</translation> <translation id="8985661493893822002">Accesează internetul pentru a te conecta pe <ph name="DEVICE_TYPE" />.</translation> +<translation id="8985661571449404298">S-a descărcat un fișier nesigur</translation> <translation id="8986362086234534611">Șterge</translation> <translation id="8986494364107987395">Trimite automat la Google statistici de utilizare și rapoarte de blocare</translation> <translation id="8987305927843254629">Fiecare persoană poate să-și personalizeze experiența și să-și păstreze datele private.</translation> @@ -10474,6 +10493,7 @@ <translation id="9116366756388192417">Alege un subiect</translation> <translation id="9116799625073598554">Aplicație pentru scris note</translation> <translation id="9117030152748022724">Gestionează aplicațiile</translation> +<translation id="9119587891086680311">Aceste funcții folosesc AI, sunt în primele etape de dezvoltare și nu vor răspunde întotdeauna corect.</translation> <translation id="9120362425083889527">Instalarea nu s-a putut finaliza. Încearcă din nou sau închide fereastra</translation> <translation id="9120693811286642342"><ph name="BEGIN_PARAGRAPH1" />Pentru o experiență optimă, instalează <ph name="DEVICE_OS" /> pe discul intern. Poți să instalezi și mai târziu din ecranul de conectare.<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />Dacă nu ești gata de instalare, poți să rulezi serviciul de pe USB pentru a-l încerca. Astfel, vei păstra sistemul de operare și datele existente, dar pot să existe limitări ale spațiului de stocare și ale performanței.<ph name="END_PARAGRAPH2" /></translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb index 515c76b..be599fb 100644 --- a/chrome/app/resources/generated_resources_ru.xtb +++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -1122,7 +1122,6 @@ <translation id="1832848789136765277">Чтобы никогда не терять доступ к синхронизированным данным, подтвердите свою личность.</translation> <translation id="1834503245783133039">Не удалось скачать файл <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Обновление Linux</translation> -<translation id="1835612721186505600">Доступ получат приложения и сайты с разрешением "Камера"</translation> <translation id="1838374766361614909">Удалить условия поиска</translation> <translation id="1839021455997460752">Ваш адрес электронной почты</translation> <translation id="1839540115464516994">Показать в сервисе "<ph name="LOCATION" />"</translation> @@ -4580,7 +4579,6 @@ <translation id="4507128560633489176">Данные удалены.</translation> <translation id="4507373251891673233">Вы заблокировали все расширения с сайта <ph name="HOST" />.</translation> <translation id="4507401683427517298">Нажмите "Добавить ярлык".</translation> -<translation id="4508150454272293946">Разрешите приложениям и веб-страницам использовать камеры, подключенные к этому устройству. Если это не помогло, попробуйте перезапустить приложение или обновить веб-страницу.</translation> <translation id="450867954911715010">Настройки специальных возможностей</translation> <translation id="4508765956121923607">Исходный код страницы</translation> <translation id="4509277363725254222">Если вы поделитесь копией <ph name="BEGIN_BOLD_USERNAME" />имени пользователя<ph name="END_BOLD_USERNAME" /> и <ph name="BEGIN_BOLD_PASSWORD" />пароля<ph name="END_BOLD_PASSWORD" />, участники семейной группы смогут использовать их с помощью Google Менеджера паролей.</translation> @@ -8483,7 +8481,6 @@ <translation id="7610337976012700501">Чтобы вы могли передавать данные этим людям при помощи функции "<ph name="FEATURE_NAME" />", а они – вам, добавьте в контакты адреса электронной почты, которые связаны с аккаунтами Google нужных пользователей.</translation> <translation id="7611713099524036757">Meta</translation> <translation id="7612050744024016345">Все расширения</translation> -<translation id="7612401678989660900">Доступ получат приложения и сайты с разрешением "Микрофон"</translation> <translation id="7612497353238585898">Активный сайт</translation> <translation id="7612655942094160088">Включить функции, использующие подключение к телефону.</translation> <translation id="7612989789287281429">Вход в аккаунт…</translation> @@ -8701,7 +8698,7 @@ <translation id="7764256770584298012"><ph name="DOWNLOAD_RECEIVED" /> с сайта <ph name="DOWNLOAD_DOMAIN" /></translation> <translation id="7764527477537408401">Открыть группу в новом окне</translation> <translation id="7764909446494215916">Управление аккаунтом &Google</translation> -<translation id="7765158879357617694">Переместить</translation> +<translation id="7765158879357617694">Перенести</translation> <translation id="7765507180157272835">Требуется подключение к Bluetooth и сети Wi-Fi</translation> <translation id="7766082757934713382">Эта функция приостанавливает автоматическое обновление системы и приложений, что позволяет экономить сетевой трафик.</translation> <translation id="7766807826975222231">Узнать больше</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb index 37e3ef7..103a6103 100644 --- a/chrome/app/resources/generated_resources_si.xtb +++ b/chrome/app/resources/generated_resources_si.xtb
@@ -1120,7 +1120,6 @@ <translation id="1832848789136765277">ඔබට සැම විටම ඔබගේ සමමුහුර්ත දත්ත වෙත ප්රවේශ විය හැකි බව සහතික කර ගැනීමට, ඒ ඔබ බව සත්යාපනය කරන්න</translation> <translation id="1834503245783133039">බාගැනීම අසාර්ථකයි: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">ලිනක්ස් උත්ශ්රේණි කෙරේ</translation> -<translation id="1835612721186505600">කැමරා අවසරය සහිත යෙදුම් සහ වෙබ් අඩවි සඳහා ප්රවේශයට ඉඩ දෙන්න</translation> <translation id="1838374766361614909">සෙවීම හිස් කරන්න</translation> <translation id="1839021455997460752">ඔබගේ ඉ-තැපැල් ලිපිනය</translation> <translation id="1839540115464516994"><ph name="LOCATION" /> හි පෙන්වන්න</translation> @@ -4583,7 +4582,6 @@ <translation id="4507128560633489176">දත්ත හිස් කරන ලදී.</translation> <translation id="4507373251891673233">ඔබ #<ph name="HOST" /> සිට සියලු දිගු අවහිර කර ඇත</translation> <translation id="4507401683427517298">"කෙටිමඟ එක් කරන්න" ක්ලික් කරන්න</translation> -<translation id="4508150454272293946">යෙදුම්වලට සහ වෙබ් පිටුවලට මෙම උපාංගයට සම්බන්ධිත කැමරා(ව) භාවිත කිරීමට ඉඩ දෙන්න. ඔබට ඔබේ කැමරාව සම්බන්ධයෙන් තවමත් ගැටලුවක් තිබේ නම් යෙදුම නැවත ආරම්භ කිරීමට හෝ වෙබ් පිටුව නැවුම් කිරීමට උත්සාහ කරන්න.</translation> <translation id="450867954911715010">ප්රවේශ්යතා සැකසීම්</translation> <translation id="4508765956121923607">ප්රභවය බ&ලන්න</translation> <translation id="4509277363725254222">ඔබ ඔබේ <ph name="BEGIN_BOLD_USERNAME" />පරිශීලක නාමය<ph name="END_BOLD_USERNAME" /> සහ <ph name="BEGIN_BOLD_PASSWORD" />මුරපදයේ<ph name="END_BOLD_PASSWORD" /> පිටපතක් බෙදා ගන්නා විට, ඔබේ පවුලේ සාමාජිකයෙකුට Google මුරපද කළමනාකරු භාවිත කර ඒවා පිරවිය හැක</translation> @@ -8481,7 +8479,6 @@ <translation id="7610337976012700501">මෙම සම්බන්ධතා සමග <ph name="FEATURE_NAME" /> භාවිතය සඳහා, ඔවුන්ගේ Google ගිණුම සමග සම්බන්ධ කර ඇති ඉ-තැපැල් ලිපිනය ඔබේ සම්බන්ධතාවලට එක් කරන්න.</translation> <translation id="7611713099524036757">මෙටා</translation> <translation id="7612050744024016345">සියලු දිගු</translation> -<translation id="7612401678989660900">මයික්රෆෝන අවසරය සහිත යෙදුම් සහ වෙබ් අඩවි සඳහා ප්රවේශයට ඉඩ දෙන්න</translation> <translation id="7612497353238585898">සක්රිය අඩවිය</translation> <translation id="7612655942094160088">සම්බන්ධිත දුරකථන විශේෂාංග සබලයි.</translation> <translation id="7612989789287281429">ඔබව පුරමින්…</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb index 9686002..0efa538e 100644 --- a/chrome/app/resources/generated_resources_sk.xtb +++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -379,6 +379,7 @@ <translation id="1281746473742296584">{NUM_OF_FILES,plural, =1{Súbor sa nedá otvoriť}few{Súbory sa nedajú otvoriť}many{Can't open files}other{Súbory sa nedajú otvoriť}}</translation> <translation id="1282311502488501110">Neprihlasovať sa</translation> <translation id="1282465000333679776">Zdieľať zvuk systému</translation> +<translation id="1283126956823499975">Pri nastavovaní zariadenia sa niečo pokazilo</translation> <translation id="1284277788676816155">Nepovoliť ukladať údaje</translation> <translation id="1285320974508926690">Nikdy neprekladať tieto webové stránky</translation> <translation id="1285484354230578868">Ukladať údaje v účte na Disku Google</translation> @@ -1121,7 +1122,6 @@ <translation id="1832848789136765277">Ak chcete mať neustály prístup k svojim synchronizovaným údajom, overte svoju totožnosť</translation> <translation id="1834503245783133039">Sťahovanie sa nepodarilo: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Inovácia systému Linux</translation> -<translation id="1835612721186505600">Umožniť prístup všetkým aplikáciám a webom s povolením používať kameru</translation> <translation id="1838374766361614909">Vymazať vyhľadávanie</translation> <translation id="1839021455997460752">Vaša e‑mailová adresa</translation> <translation id="1839540115464516994">Zobraziť v službe <ph name="LOCATION" /></translation> @@ -4570,7 +4570,6 @@ <translation id="4507128560633489176">Dáta boli vymazané.</translation> <translation id="4507373251891673233">Zablokovali ste všetky rozšírenia z webu <ph name="HOST" /></translation> <translation id="4507401683427517298">Kliknite na Pridať odkaz.</translation> -<translation id="4508150454272293946">Povoľte aplikáciám a webovým stránkam používať kamery pripojené k tomuto zariadeniu. Ak máte stále problém s kamerou, skúste reštartovať aplikáciu alebo obnoviť webovú stránku.</translation> <translation id="450867954911715010">Nastavenia dostupnosti</translation> <translation id="4508765956121923607">&Zobraziť zdrojový kód</translation> <translation id="4509277363725254222">Keď zdieľate svoje <ph name="BEGIN_BOLD_USERNAME" />používateľské meno<ph name="END_BOLD_USERNAME" /> a <ph name="BEGIN_BOLD_PASSWORD" />heslo<ph name="END_BOLD_PASSWORD" />, člen vašej rodiny ich môže vyplniť pomocou Správcu hesiel Google.</translation> @@ -5018,6 +5017,7 @@ <translation id="4863769717153320198">Vyzerá ako <ph name="WIDTH" /> x <ph name="HEIGHT" /> (predvolené)</translation> <translation id="4864369630010738180">Prebieha prihlasovanie...</translation> <translation id="4864805589453749318">Vyberte rodiča, ktorý udeľuje povolenie pridať školský účet.</translation> +<translation id="4864905533117889071"><ph name="SENSOR_NAME" /> (blokované)</translation> <translation id="486505726797718946">Bola uvoľnená pamäť</translation> <translation id="486635084936119914">Automaticky otvoriť určité typy súborov po ich stiahnutí</translation> <translation id="4867272607148176509">Rodičia môžu schvaľovať alebo blokovať aplikácie, nastavovať časové limity a ovládať webové prehliadanie. Školský účet na prístup k väčšine školských zdrojov sa dá pridať neskôr.</translation> @@ -5511,6 +5511,7 @@ <translation id="5261619498868361045">Názov kontajnera nemôže byť prázdny.</translation> <translation id="5261683757250193089">Otvoriť v Internetovom obchode</translation> <translation id="5261799091118902550">Tento súbor môže byť vírus alebo malvér. Môžete ho odoslať Googlu, ktorý skontroluje, či je bezpečný.</translation> +<translation id="5262334727506665688">Naďalej ukladať heslá do vášho účtu Google</translation> <translation id="5262784498883614021">Automaticky pripojiť k sieti</translation> <translation id="5263656105659419083">Na bočný panel sa ľahko vrátite kliknutím na Pripnúť vpravo hore</translation> <translation id="5264148714798105376">Môže to chvíľu trvať.</translation> @@ -7050,6 +7051,7 @@ <translation id="649396225532207613">Tento súbor môže poškodiť vaše osobné účty aj účty sociálnych sietí</translation> <translation id="6494327278868541139">Zobraziť podrobnosti o rozšírenej ochrane</translation> <translation id="6494445798847293442">Položka nie je certifikačnou autoritou</translation> +<translation id="6494483173119160146">V zariadení sa vyskytla neopraviteľná chyba. Resetujte zariadenie (vymažú sa všetky údaje používateľa) a skúste to znova.</translation> <translation id="6497784818439587832">Zmenou veľkosti zobrazenia môžete položky na obrazovke zmenšiť alebo zväčšiť</translation> <translation id="6497789971060331894">Obrátené posúvanie myšou</translation> <translation id="6498249116389603658">&Všetky vaše jazyky</translation> @@ -8466,7 +8468,6 @@ <translation id="7610337976012700501">Ak chcete s týmito kontaktmi používať funkciu <ph name="FEATURE_NAME" />, pridajte e‑mailové adresy prepojené s ich účtami Google do svojich kontaktov.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Všetky rozšírenia</translation> -<translation id="7612401678989660900">Umožniť prístup aplikáciám a webom s povolením používať mikrofón</translation> <translation id="7612497353238585898">Aktívny web</translation> <translation id="7612655942094160088">Povolenie funkcií pripojeného telefónu</translation> <translation id="7612989789287281429">Prihlasuje sa…</translation> @@ -9529,6 +9530,7 @@ <translation id="8397825320644530257">Odpojiť pripojený telefón</translation> <translation id="8398877366907290961">Pokračovať!</translation> <translation id="8399282673057829204">Zobraziť heslo</translation> +<translation id="839949601275221554">V zariadení sa vyskytla chyba. Reštartujte ho a skúste to znova.</translation> <translation id="8401432541486058167">Zadajte PIN spojený s vašou inteligentnou kartou.</translation> <translation id="8401772916834964810">{COUNT,plural, =0{Chrome bude dnes súbory cookie znova blokovať}=1{Chrome bude zajtra súbory cookie znova blokovať}few{Chrome bude súbory cookie znova blokovať o # dni}many{Chrome bude súbory cookie znova blokovať o # dňa}other{Chrome bude súbory cookie znova blokovať o # dní}}</translation> <translation id="8403618281196981152">Vaše údaje v Chrome</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb index 591c066e..7434d96 100644 --- a/chrome/app/resources/generated_resources_sl.xtb +++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -1114,6 +1114,7 @@ <translation id="1823768272150895732">Pisava</translation> <translation id="1823781806707127806">Dodaj obstoječe podatke brskanja v upravljan profil</translation> <translation id="18245044880483936">Varnostno kopirani podatki se ne štejejo v otrokovo količinsko omejitev prostora za shranjevanje v Googlu Drive.</translation> +<translation id="1825073796163165618">Omogočanje povezav</translation> <translation id="1825565032302550710">Številka vrat mora biti med 1024 in 65535</translation> <translation id="182577151972096764">nedavno ogledani recepti</translation> <translation id="18260074040409954">Shranjena gesla lahko uporabljate v poljubni napravi. Shranijo se v storitev <ph name="GOOGLE_PASSWORD_MANAGER" /> za uporabnika <ph name="EMAIL" />.</translation> @@ -1133,7 +1134,6 @@ <translation id="1832848789136765277">Če želite poskrbeti, da boste vedno lahko dostopali do sinhroniziranih podatkov, potrdite, da ste to vi.</translation> <translation id="1834503245783133039">Prenos ni uspel: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Nadgrajevanje Linuxa</translation> -<translation id="1835612721186505600">Omogočanje dostopa za aplikacije in spletna mesta z dovoljenjem za kamero.</translation> <translation id="1838374766361614909">Čiščenje iskanja</translation> <translation id="1839021455997460752">Vaš e-poštni naslov</translation> <translation id="1839540115464516994">Pokaži v: <ph name="LOCATION" /></translation> @@ -1353,6 +1353,7 @@ <translation id="1997616988432401742">Vaša potrdila</translation> <translation id="1999115740519098545">Ob zagonu</translation> <translation id="2002109485265116295">Sprotno</translation> +<translation id="2002160221914907025">Preizkusna umetna inteligenca</translation> <translation id="2003130567827682533">Če želite aktivirati podatke omrežja »<ph name="NAME" />«, se najprej povežite z omrežjem Wi-Fi.</translation> <translation id="2004413981947727241">Uporaba gesel v kateri koli napravi</translation> <translation id="2004697686368036666">Funkcije na nekaterih spletnih mestih morda ne bodo delovale.</translation> @@ -2012,6 +2013,7 @@ <translation id="2482878487686419369">Obvestila</translation> <translation id="2482895651873876648">Zavihek je premaknjen v skupino <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" />.</translation> <translation id="2483627560139625913">Nastavitev iskalnika v nastavitvah brskalnika Chrome</translation> +<translation id="2483698983806594329">Prenesena je nepreverjena datoteka</translation> <translation id="2484743711056182585">Odstrani odobritev</translation> <translation id="2484909293434545162">Če spletno mesto uporablja piškotke, bo prikazano tukaj.</translation> <translation id="2484959914739448251">Če želite izbrisati podatke brskanja iz vseh sinhroniziranih naprav in Google Računa, <ph name="BEGIN_LINK" />vnesite geslo<ph name="END_LINK" />.</translation> @@ -2151,6 +2153,7 @@ <translation id="2589658397149952302">Nikoli ne pokaži datotek v Googlu Drive</translation> <translation id="25899519884572181">Zapiranje načina bralnika</translation> <translation id="2593499352046705383">Preden začnete, morate varnostno kopirati podatke. Z namestitvijo sistema <ph name="DEVICE_OS" /> bodo prepisani vsi podatki na trdem disku. Več o tem: g.co/flex/InstallGuide.</translation> +<translation id="2594832159966169099">Upravljanje varnosti V8</translation> <translation id="2594999711683503743">Iščite v Google ali vnesite URL</translation> <translation id="2597073208962000830">Deljenje v bližini uporablja iskanje naprav Bluetooth za zaznavanje naprav v bližini.</translation> <translation id="2598710988533271874">Na voljo je novi Chrome</translation> @@ -2330,6 +2333,7 @@ <translation id="2730647855013151888">Vključi vse osebne podatke</translation> <translation id="2730901670247399077">Predlogi za emodžije</translation> <translation id="273093730430620027">Ta stran dostopa do vaše kamere.</translation> +<translation id="2730956943403103181">Uporaba orodja za optimiziranje V8 ni dovoljena</translation> <translation id="2731392572903530958">&Znova odpri zaprto okno</translation> <translation id="2731700343119398978">Počakajte ...</translation> <translation id="2731971182069536520">Ob naslednjem vnovičnem zagonu naprave bo skrbnik opravil enkratno posodobitev, s katero bodo izbrisani lokalni podatki.</translation> @@ -2733,6 +2737,7 @@ <translation id="3025174326431589540">{COUNT,plural, =0{Ni shranjenih gesel}=1{Preverjena gesla za {COUNT} spletno mesto}one{Preverjena gesla za {COUNT} spletno mesto in aplikacijo}two{Preverjena gesla za {COUNT} spletni mesti in aplikaciji}few{Preverjena gesla za {COUNT} spletna mesta in aplikacije}other{Preverjena gesla za {COUNT} spletnih mest in aplikacij}}</translation> <translation id="3027296729579831126">Vklop deljenja v bližini</translation> <translation id="3027644380269727216">Na podlagi vaše dejavnosti na spletnem mestu. Ta nastavitev je vklopljena.</translation> +<translation id="3028445648481691885">Prenos je preklican</translation> <translation id="3029276696788198026">Brez vnaprejšnjega nalaganja</translation> <translation id="3029466929721441205">Prikaz orodij za pisalo na polici</translation> <translation id="3029808567601324798">Čas do zaklepanja</translation> @@ -2838,6 +2843,7 @@ <translation id="3119948370277171654">Katero vsebino oziroma kateri URL ste predvajali?</translation> <translation id="3122464029669770682">CPE</translation> <translation id="3122496702278727796">Imenika s podatki ni bilo mogoče ustvariti</translation> +<translation id="3122810280993140148">Ustvari teme po meri na podlagi motiva, razpoloženja, vizualnega sloga in barve, ki jih izberete. Če želite uporabljati to funkcijo, odprite nov zavihek in kliknite »Prilagodi Chrome«.</translation> <translation id="3122883569442693641">Več podrobnosti</translation> <translation id="3124111068741548686">Kode za dostop uporabnika USER</translation> <translation id="3124332159330678621">Prilagodite Chrome, da bo brskalnik videti drugače.</translation> @@ -2877,6 +2883,7 @@ <translation id="3159978855457658359">Urejanje imena naprave</translation> <translation id="3160928651883997588">Nastavitve za VPN</translation> <translation id="3161522574479303604">Vsi jeziki</translation> +<translation id="3162766632262775911">Uporaba orodja za optimiziranje V8 je vedno dovoljena</translation> <translation id="3162853326462195145">Šolski račun</translation> <translation id="3162899666601560689">Spletna mesta lahko uporabljajo piškotke za izboljšanje izkušnje brskanja, in sicer tako, da na primer poskrbijo, da ostanete prijavljeni, ali si zapomnijo izdelke v nakupovalnem vozičku.</translation> <translation id="3163201441334626963">Neznan izdelek <ph name="PRODUCT_ID" /> dobavitelja <ph name="VENDOR_ID" /></translation> @@ -3346,6 +3353,7 @@ <translation id="3547954654003013442">Nastavitve proxyja</translation> <translation id="3548162552723420559">Prilagodi barvo zaslona, da se ujema z okoljem</translation> <translation id="354949590254473526">Vnesite URL poizvedbe DNS-ja po meri</translation> +<translation id="3549827561154008969">Prenos se nadaljuje</translation> <translation id="3550593477037018652">Prekinitev povezave z mobilnim omrežjem</translation> <translation id="3550915441744863158">Chrome se posodablja samodejno, zato boste vedno imeli najnovejšo različico</translation> <translation id="3551320343578183772">Zapri zavihek</translation> @@ -3495,6 +3503,7 @@ <translation id="3666196264870170605">Izvoz podatkov za odpravljanje napak Intelovih kontrolnikov omrežnih vmesnikov Wi-Fi</translation> <translation id="3670113805793654926">Naprave katerega koli ponudnika</translation> <translation id="3670229581627177274">Vklop vmesnika Bluetooth</translation> +<translation id="3670480940339182416">Spletna mesta lahko uporabljajo orodje za optimiziranje V8</translation> <translation id="3672681487849735243">Zaznana je tovarniška napaka</translation> <translation id="3673097791729989571">Prijavo gosti <ph name="SAML_DOMAIN" /></translation> <translation id="3673622964532248901">Predvajanje v tej napravi ni dovoljeno.</translation> @@ -4587,7 +4596,6 @@ <translation id="4507128560633489176">Podatki so izbrisani.</translation> <translation id="4507373251891673233">Vse razširitve s spletnega mesta <ph name="HOST" /> ste blokirali.</translation> <translation id="4507401683427517298">Kliknite »Dodaj bližnjico«</translation> -<translation id="4508150454272293946">Aplikacijam in spletnim stranem dovolite uporabo kamer, povezanih s to napravo. Če imate še vedno težave s kamero, poskusite znova zagnati aplikacijo ali osvežiti spletno stran.</translation> <translation id="450867954911715010">Nastavitve funkcij za ljudi s posebnimi potrebami</translation> <translation id="4508765956121923607">Prikaz &izvorne kode</translation> <translation id="4509277363725254222">Če delite kopijo <ph name="BEGIN_BOLD_USERNAME" />uporabniškega imena<ph name="END_BOLD_USERNAME" /> in <ph name="BEGIN_BOLD_PASSWORD" />gesla<ph name="END_BOLD_PASSWORD" />, ga lahko družinski član izpolni z Googlovim upraviteljem gesel</translation> @@ -4951,6 +4959,7 @@ <translation id="4800839971935185386">Preglejte posodobitve imen in ikon</translation> <translation id="4801448226354548035">Skrij račune</translation> <translation id="4801512016965057443">Dovoli mobilno podatkovno gostovanje</translation> +<translation id="4803599447809045620">Onemogočanje povezav</translation> <translation id="4804311503028830356">Kliknite puščico nazaj, če želite raziskati druge možnosti.</translation> <translation id="4804818685124855865">Prekini povezavo</translation> <translation id="4804827417948292437">Avokado</translation> @@ -5742,6 +5751,7 @@ <translation id="5432223177001837288">Če želite deliti zvok, namesto tega delite zavihek</translation> <translation id="5432872710261597882">S palcem gor pošljete povratne informacije, da vam je to všeč.</translation> <translation id="543338862236136125">Uredi geslo</translation> +<translation id="5433865420958136693">Uporabi grafično pospeševanje, ko je na voljo</translation> <translation id="5434065355175441495">PKCS #1 s šifriranjem RSA</translation> <translation id="5435274640623994081">Omogočanje beleženja zvočnih ikon</translation> <translation id="5435779377906857208">Vedno dovoli gostitelju <ph name="HOST" /> dostop do lokacije</translation> @@ -6481,6 +6491,7 @@ <translation id="6020431688553761150">Strežnik vas ni pooblastil za dostop do tega vira.</translation> <translation id="6021293122504240352">Toliko aplikacij ni več podprtih: <ph name="APPS" /></translation> <translation id="6021969570711251331">Prepleteno</translation> +<translation id="602212068530399867">Iskalnik, ki se uporablja v naslovni vrstici in zaganjalniku.</translation> <translation id="6022526133015258832">Odpri v celozaslonskem načinu</translation> <translation id="6022659036123304283">Prilagodite si Chrome</translation> <translation id="6023643151125006053">To napravo (serijska številka: <ph name="SERIAL_NUMBER" />) je zaklenil skrbnik domene <ph name="SAML_DOMAIN" />.</translation> @@ -7892,6 +7903,7 @@ <translation id="7131431455372521159">Povezava z vsemi sledilnimi palčkami je prekinjena</translation> <translation id="7131896909366247105"><ph name="APP_NAME" />, čakanje</translation> <translation id="7134098520442464001">Pomanjšaj besedilo</translation> +<translation id="7134951043985383439">Prenesena je nevarna datoteka</translation> <translation id="7135729336746831607">Želite vklopiti Bluetooth?</translation> <translation id="7136694880210472378">Nastavi za privzeto</translation> <translation id="7137771508221868414">S tem boste izbrisali <ph name="TOTAL_USAGE" /> podatkov, ki so jih shranila spletna mesta in nameščene aplikacije</translation> @@ -8059,6 +8071,7 @@ <translation id="727441411541283857"><ph name="PERCENTAGE" /> % – <ph name="TIME" /> do napolnjenosti</translation> <translation id="727595954130325265">Nakup</translation> <translation id="7276100255011548441">Chrome samodejno izbriše teme, starejše od 4 tednov. Ko nadaljujete brskanje, se lahko na seznamu znova prikaže tema. Blokirate lahko tudi teme, za katere ne želite, da jih Chrome deli s spletnimi mesti. Preberite več o <ph name="BEGIN_LINK" />upravljanju zasebnosti pri oglaševanju v Chromu.<ph name="END_LINK" /></translation> +<translation id="7278164481614262110">Ustvarjajte teme z umetno inteligenco</translation> <translation id="727952162645687754">Napaka pri prenosu</translation> <translation id="7280649757394340890">Glasovne nastavitve pretvorbe besedila v govor</translation> <translation id="7280877790564589615">Zahtevano je dovoljenje</translation> @@ -8488,7 +8501,6 @@ <translation id="7610337976012700501">Če želite uporabljati funkcijo <ph name="FEATURE_NAME" /> s temi stiki, med svoje stike dodajte e-poštni naslov, povezan z njihovim računom Google.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Vse razširitve</translation> -<translation id="7612401678989660900">Omogočanje dostopa za aplikacije in spletna mesta z dovoljenjem za mikrofon.</translation> <translation id="7612497353238585898">Aktivno spletno mesto</translation> <translation id="7612655942094160088">Omogočanje funkcij povezanega telefona.</translation> <translation id="7612989789287281429">Prijavljamo vas …</translation> @@ -8755,6 +8767,7 @@ <ph name="EXTENSION_NAME" /></translation> <translation id="7789963078219276159">Ozadje začetne strani je spremenjeno v <ph name="CATEGORY" />.</translation> +<translation id="7791429245559955092">Ta aplikacija bo nameščena v trenutno uporabljenem profilu za Chrome</translation> <translation id="7791436592012979144">Obratno pomikanje je omogočeno</translation> <translation id="7791543448312431591">Dodaj</translation> <translation id="7792012425874949788">Nekaj je šlo narobe pri prijavi</translation> @@ -9150,6 +9163,7 @@ <translation id="8089547136368562137">Zaščiteno je z najboljšimi Googlovimi tehnologijami</translation> <translation id="8090234456044969073">Preberite seznam spletnih mest, ki jih najpogosteje obiskujete</translation> <translation id="8090513782447872344">Kadar koli se lahko vrnete in to znova preberete.</translation> +<translation id="8090579562279016251">Zmanjša učinkovitost delovanja, vendar je mehanizem V8 odpornejši proti napadom</translation> <translation id="8090686009202681725">Ustvarjanje teme z umetno inteligenco</translation> <translation id="8093359998839330381">Vtičnik <ph name="PLUGIN_NAME" /> se ne odziva</translation> <translation id="8094536695728193970">Marelična</translation> @@ -9196,6 +9210,7 @@ <translation id="8124313775439841391">Upravljan ONC</translation> <translation id="8125651784723647184">Deljenje gesel upravlja skrbnik</translation> <translation id="8129265306888404830">Če želite uporabiti svoj e-poštni naslov organizacije (<ph name="EMAIL_DOMAIN" />), morate uporabiti včlanitev v podjetje. Če je ta naprava za osebno uporabo, se prijavite z osebnim računom Google.</translation> +<translation id="8130476996317833777">Ne dovoli, da spletna mesta uporabljajo orodje za optimiziranje V8</translation> <translation id="813082847718468539">Ogled podatkov o mestu</translation> <translation id="8131740175452115882">Potrdi</translation> <translation id="8133297578569873332">Sprejemljivo – FM</translation> @@ -9579,6 +9594,7 @@ <translation id="8422748173858722634">IMEI</translation> <translation id="8422787418163030046">Ni pladnja</translation> <translation id="8424250197845498070">Blokirala dodatna zaščita</translation> +<translation id="842501938276307467">Preizkusite preizkusne funkcije umetne inteligence</translation> <translation id="8425213833346101688">Spremeni</translation> <translation id="8425492902634685834">Pripni v opravilno vrstico</translation> <translation id="8425768983279799676">Kodo PIN lahko uporabite za odklepanje naprave.</translation> @@ -9733,6 +9749,7 @@ <ph name="BEGIN_PARAGRAPH2" />Če želite uporabiti <ph name="USER_EMAIL" />, se naprej odjavite iz naprave <ph name="DEVICE_TYPE" />. Nato na dnu zaslona za prijavo izberite »Dodaj osebo«.<ph name="END_PARAGRAPH2" /></translation> <translation id="85486688517848470">Če želite spremeniti delovanje tipk v zgornji vrstici, pridržite tipko za iskanje</translation> <translation id="8549316893834449916">V Chromebook se boste prijavili z računom Google – istim računom, ki ga uporabljate za Gmail, Drive, YouTube in drugo.</translation> +<translation id="8550239873869577759">Prenesena je sumljiva datoteka</translation> <translation id="8551388862522347954">Licence</translation> <translation id="8551588720239073785">Nastavitve datuma in ure</translation> <translation id="8551647092888540776">Brez povezave ni mogoče odpreti <ph name="FILE_NAMES" /></translation> @@ -9788,6 +9805,7 @@ <translation id="8601206103050338563">Preverjanje pristnosti odjemalca TLS WWW</translation> <translation id="8602674530529411098">Aplikacije (beta)</translation> <translation id="8602851771975208551">Drug program v računalniku je dodal aplikacijo, ki lahko spremeni način delovanja Chroma.</translation> +<translation id="8604513817270995005">Pomaga vam napisati kratko vsebino za stvari v spletu, kot so mnenja. Predlagana vsebina temelji na vaših pozivih in vsebini spletne strani. Če želite uporabiti to funkcijo, z desnim gumbom kliknite besedilno polje.</translation> <translation id="8605428685123651449">Pomnilnik za SQLite</translation> <translation id="8607171490667464784">Ko je neaktivna in uporablja baterijo</translation> <translation id="8607828412110648570">Naprava Bluetooth mora biti v načinu za seznanjanje in v bližini. Seznanjajte samo z napravami, ki jim zaupate. Seznanjene naprave so vidne vsem računom v tem Chromebooku. <ph name="BEGIN_LINK_LEARN_MORE" />Več o tem<ph name="END_LINK_LEARN_MORE" /></translation> @@ -10302,6 +10320,7 @@ <translation id="8985191021574400965">Pozdravljeni v aplikaciji Steam za Chromebook</translation> <translation id="8985264973231822211">Aktivno pred toliko dnevi: <ph name="DEVICE_LAST_ACTIVATED_TIME" /></translation> <translation id="8985661493893822002">Če se želite prijaviti v napravo <ph name="DEVICE_TYPE" />, vzpostavite povezavo z internetom.</translation> +<translation id="8985661571449404298">Prenesena je datoteka, ki ni varna</translation> <translation id="8986362086234534611">Pozabi</translation> <translation id="8986494364107987395">Samodejno pošlji statistične podatke o uporabi in poročila o zrušitvah Googlu</translation> <translation id="8987305927843254629">Vsak si lahko individualno prilagodi izkušnjo in poskrbi za zasebnost podatkov.</translation> @@ -10500,6 +10519,7 @@ <translation id="9116366756388192417">Izberite predmet</translation> <translation id="9116799625073598554">Aplikacija za ustvarjanje zapiskov</translation> <translation id="9117030152748022724">Upravljanje aplikacij</translation> +<translation id="9119587891086680311">Te funkcije uporabljajo umetno inteligenco in so v zgodnjem razvoju, zato se lahko včasih tudi zmotijo.</translation> <translation id="9120362425083889527">Namestitve ni bilo mogoče dokončati. Poskusite znova ali zaprite to okno.</translation> <translation id="9120693811286642342"><ph name="BEGIN_PARAGRAPH1" />Za najboljšo izkušnjo namestite <ph name="DEVICE_OS" /> na notranji disk. Namestite ga lahko tudi pozneje na zaslonu za prijavo.<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />Če programa še ne želite namestiti, ga lahko zaženete s pogona USB in ga najprej preizkusite. Tako boste ohranili trenutni operacijski sistem in podatke, vendar lahko pride do omejitev shrambe in delovanja.<ph name="END_PARAGRAPH2" /></translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb index c812633..af1973f 100644 --- a/chrome/app/resources/generated_resources_sq.xtb +++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -1116,7 +1116,6 @@ <translation id="1832848789136765277">Për t'u siguruar që mund të qasesh gjithmonë te të dhënat e tua të sinkronizuara, verifiko që je ti</translation> <translation id="1834503245783133039">Shkarkimi ishte i pasuksesshëm: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Po përmirëson Linux</translation> -<translation id="1835612721186505600">Lejo qasjen për aplikacionet dhe uebsajtet me lejen e kamerës</translation> <translation id="1838374766361614909">Fshi kërkimin</translation> <translation id="1839021455997460752">Adresa jote e email-it</translation> <translation id="1839540115464516994">Shfaqe në <ph name="LOCATION" /></translation> @@ -4566,7 +4565,6 @@ <translation id="4507128560633489176">Të dhënat u pastruan.</translation> <translation id="4507373251891673233">Ke bllokuar të gjitha shtesat nga <ph name="HOST" /></translation> <translation id="4507401683427517298">Kliko te “Shto shkurtoren”</translation> -<translation id="4508150454272293946">Lejo që aplikacionet dhe faqet e uebit të përdorin kamerat e lidhura me këtë pajisje. Nëse ke përsëri probleme me kamerën, provo ta rinisësh aplikacionin ose rifresko faqen e uebit.</translation> <translation id="450867954911715010">Cilësimet e qasjes</translation> <translation id="4508765956121923607">Shiko b&urimin</translation> <translation id="4509277363725254222">Kur ndan një kopje të <ph name="BEGIN_BOLD_USERNAME" />emrit të përdoruesit<ph name="END_BOLD_USERNAME" /> dhe <ph name="BEGIN_BOLD_PASSWORD" />fjalëkalimit tënd<ph name="END_BOLD_PASSWORD" />, anëtari i familjes mund t'i plotësojë ato duke përdorur "Menaxherin e fjalëkalimeve të Google".</translation> @@ -8458,7 +8456,6 @@ <translation id="7610337976012700501">Për të përdorur "<ph name="FEATURE_NAME" />" me këto kontakte, shto te kontaktet e tua adresën e email-it të lidhur me "Llogarinë e tyre të Google".</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Të gjitha shtesat</translation> -<translation id="7612401678989660900">Lejo qasjen për aplikacionet dhe uebsajtet me lejen e mikrofonit</translation> <translation id="7612497353238585898">Sajti aktiv</translation> <translation id="7612655942094160088">Aktivizo veçoritë e telefonit të lidhur.</translation> <translation id="7612989789287281429">Po identifikohesh…</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb index f72e69b5..2cc37479 100644 --- a/chrome/app/resources/generated_resources_sr-Latn.xtb +++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -1119,7 +1119,6 @@ <translation id="1832848789136765277">Da biste bili sigurni da uvek možete da pristupate sinhronizovanim podacima, potvrdite da ste to vi</translation> <translation id="1834503245783133039">Preuzimanje nije uspelo: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux se nadograđuje</translation> -<translation id="1835612721186505600">Dozvolite pristup aplikacijama i veb-sajtovima sa dozvolom za kameru</translation> <translation id="1838374766361614909">Obrišite pretragu</translation> <translation id="1839021455997460752">Imejl adresa</translation> <translation id="1839540115464516994">Prikaži u: <ph name="LOCATION" /></translation> @@ -4576,7 +4575,6 @@ <translation id="4507128560633489176">Podaci su obrisani.</translation> <translation id="4507373251891673233">Blokirali ste sve dodatke sa <ph name="HOST" /></translation> <translation id="4507401683427517298">Kliknite na Dodaj prečicu</translation> -<translation id="4508150454272293946">Dozvolite aplikacijama i veb-stranicama da koriste kamere povezane sa ovim uređajem. Ako i dalje imate problem sa kamerom, probajte da ponovo pokrenete aplikaciju ili osvežite veb-stranicu.</translation> <translation id="450867954911715010">Podešavanja pristupačnosti</translation> <translation id="4508765956121923607">Prikaži i&zvor</translation> <translation id="4509277363725254222">Kada delite kopiju <ph name="BEGIN_BOLD_USERNAME" />korisničkog imena<ph name="END_BOLD_USERNAME" /> i <ph name="BEGIN_BOLD_PASSWORD" />lozinke<ph name="END_BOLD_PASSWORD" />, član porodice može da ih popuni pomoću Google menadžera lozinki</translation> @@ -8478,7 +8476,6 @@ <translation id="7610337976012700501">Da biste koristili <ph name="FEATURE_NAME" /> sa ovim kontaktima, dodajte imejl adrese povezane sa Google nalozima tih osoba u kontakte.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Svi dodaci</translation> -<translation id="7612401678989660900">Dozvolite pristup aplikacijama i veb-sajtovima sa dozvolom za mikrofon</translation> <translation id="7612497353238585898">Aktivan sajt</translation> <translation id="7612655942094160088">Omogućite povezane funkcije telefona.</translation> <translation id="7612989789287281429">Prijavljujete se…</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb index 3040bc1d..a17ce767 100644 --- a/chrome/app/resources/generated_resources_sr.xtb +++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -1119,7 +1119,6 @@ <translation id="1832848789136765277">Да бисте били сигурни да увек можете да приступате синхронизованим подацима, потврдите да сте то ви</translation> <translation id="1834503245783133039">Преузимање није успело: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux се надограђује</translation> -<translation id="1835612721186505600">Дозволите приступ апликацијама и веб-сајтовима са дозволом за камеру</translation> <translation id="1838374766361614909">Обришите претрагу</translation> <translation id="1839021455997460752">Имејл адреса</translation> <translation id="1839540115464516994">Прикажи у: <ph name="LOCATION" /></translation> @@ -4576,7 +4575,6 @@ <translation id="4507128560633489176">Подаци су обрисани.</translation> <translation id="4507373251891673233">Блокирали сте све додатке са <ph name="HOST" /></translation> <translation id="4507401683427517298">Кликните на Додај пречицу</translation> -<translation id="4508150454272293946">Дозволите апликацијама и веб-страницама да користе камере повезане са овим уређајем. Ако и даље имате проблем са камером, пробајте да поново покренете апликацију или освежите веб-страницу.</translation> <translation id="450867954911715010">Подешавања приступачности</translation> <translation id="4508765956121923607">Прикажи и&звор</translation> <translation id="4509277363725254222">Када делите копију <ph name="BEGIN_BOLD_USERNAME" />корисничког имена<ph name="END_BOLD_USERNAME" /> и <ph name="BEGIN_BOLD_PASSWORD" />лозинке<ph name="END_BOLD_PASSWORD" />, члан породице може да их попуни помоћу Google менаџера лозинки</translation> @@ -8478,7 +8476,6 @@ <translation id="7610337976012700501">Да бисте користили <ph name="FEATURE_NAME" /> са овим контактима, додајте имејл адресе повезане са Google налозима тих особа у контакте.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Сви додаци</translation> -<translation id="7612401678989660900">Дозволите приступ апликацијама и веб-сајтовима са дозволом за микрофон</translation> <translation id="7612497353238585898">Активан сајт</translation> <translation id="7612655942094160088">Омогућите повезане функције телефона.</translation> <translation id="7612989789287281429">Пријављујете се…</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb index 9fa4b9f9..79a3bba1 100644 --- a/chrome/app/resources/generated_resources_sv.xtb +++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -1130,7 +1130,6 @@ <translation id="1832848789136765277">Verifiera din identitet så att du alltid får åtkomst till din synkroniserade data</translation> <translation id="1834503245783133039">Nedladdningen misslyckades: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Uppgraderar Linux</translation> -<translation id="1835612721186505600">Tillåt åtkomst för appar och webbplatser med kamerabehörighet</translation> <translation id="1838374766361614909">Rensa sökning</translation> <translation id="1839021455997460752">Din e-postadress</translation> <translation id="1839540115464516994">Visa i <ph name="LOCATION" /></translation> @@ -4584,7 +4583,6 @@ <translation id="4507128560633489176">Datan har rensats.</translation> <translation id="4507373251891673233">Du har blockerat alla tillägg från <ph name="HOST" /></translation> <translation id="4507401683427517298">Klicka på Lägg till genväg</translation> -<translation id="4508150454272293946">Tillåt att appar och webbsidor använder de kameror som är anslutna till den här enheten. Om problemet med kameran kvarstår kan du testa att starta om appen eller uppdatera webbsidan.</translation> <translation id="450867954911715010">Inställningar för tillgänglighet</translation> <translation id="4508765956121923607">Visa &källa</translation> <translation id="4509277363725254222">När du delar en kopia av ditt <ph name="BEGIN_BOLD_USERNAME" />användarnamn<ph name="END_BOLD_USERNAME" /> och <ph name="BEGIN_BOLD_PASSWORD" />lösenord<ph name="END_BOLD_PASSWORD" /> kan familjemedlemmen fylla i uppgifterna med Google Lösenordshantering</translation> @@ -8477,7 +8475,6 @@ <translation id="7610337976012700501">Lägg till de e-postadresser som är kopplade till personernas Google-konton i dina kontakter om du vill använda <ph name="FEATURE_NAME" /> med dem.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Alla tillägg</translation> -<translation id="7612401678989660900">Tillåt åtkomst för appar och webbplatser med mikrofonbehörighet</translation> <translation id="7612497353238585898">Aktiv webbplats</translation> <translation id="7612655942094160088">Aktivera anslutna mobilfunktioner.</translation> <translation id="7612989789287281429">Du loggas in …</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb index 2f15a26..54af949e 100644 --- a/chrome/app/resources/generated_resources_sw.xtb +++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -1127,7 +1127,6 @@ <translation id="1832848789136765277">Ili uhakikishe kwamba unaweza kufikia data yako inayosawazishwa wakati wowote, thibitisha kwamba ni wewe</translation> <translation id="1834503245783133039">Imeshindwa kupakua: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Umepata Toleo Jipya la Linux</translation> -<translation id="1835612721186505600">Ruhusu programu na tovuti kufikia kamera</translation> <translation id="1838374766361614909">Futa utafutaji</translation> <translation id="1839021455997460752">Anwani yako ya barua pepe</translation> <translation id="1839540115464516994">Onyesha katika <ph name="LOCATION" /></translation> @@ -4579,7 +4578,6 @@ <translation id="4507128560633489176">Data imefutwa.</translation> <translation id="4507373251891673233">Umezuia viendelezi vyote kutoka kwenye tovuti ya <ph name="HOST" /></translation> <translation id="4507401683427517298">Bofya “Weka Njia ya mkato”</translation> -<translation id="4508150454272293946">Ruhusu programu na kurasa za wavuti zitumie kamera zilizounganishwa kwenye kifaa hiki. Iwapo kamera yako bado ina tatizo, jaribu kufunga kisha ufungue programu au uonyeshe upya ukurasa wa wavuti.</translation> <translation id="450867954911715010">Mipangilio ya zana za walio na matatizo ya kuona au kusikia</translation> <translation id="4508765956121923607">Tazama &Asili</translation> <translation id="4509277363725254222">Unaposhiriki nakala ya <ph name="BEGIN_BOLD_USERNAME" />jina lako la mtumiaji<ph name="END_BOLD_USERNAME" /> na <ph name="BEGIN_BOLD_PASSWORD" />nenosiri<ph name="END_BOLD_PASSWORD" />, mwanafamilia wako anaweza kulijaza kwa kutumia Kidhibiti cha Manenosiri cha Google</translation> @@ -8472,7 +8470,6 @@ <translation id="7610337976012700501">Ili utumie kipengele cha <ph name="FEATURE_NAME" /> kwenye anwani hizi, weka anwani za barua pepe zilizounganishwa na Akaunti zao za Google kwenye anwani zako.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Viendelezi vyote</translation> -<translation id="7612401678989660900">Ruhusu ufikiaji wa programu na tovuti zenye ruhusa ya maikrofoni</translation> <translation id="7612497353238585898">Tovuti inayotumika</translation> <translation id="7612655942094160088">Washa vipengele vya simu iliyounganishwa.</translation> <translation id="7612989789287281429">Unaingia katika akaunti…</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb index 790acf0..ff8786d 100644 --- a/chrome/app/resources/generated_resources_ta.xtb +++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -1131,7 +1131,6 @@ <translation id="1832848789136765277">நீங்கள் ஒத்திசைத்த தரவை எப்போது வேண்டுமானாலும் அணுக இது நீங்கள்தான் என உறுதிசெய்யவும்</translation> <translation id="1834503245783133039">பதிவிறக்க முடியவில்லை: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linuxஸை மேம்படுத்துகிறது</translation> -<translation id="1835612721186505600">கேமராவைப் பயன்படுத்த அனுமதி கேட்கும் ஆப்ஸுக்கும் இணையதளங்களுக்கும் அணுகலை வழங்கும்</translation> <translation id="1838374766361614909">தேடலை அழி</translation> <translation id="1839021455997460752">உங்கள் மின்னஞ்சல் முகவரி</translation> <translation id="1839540115464516994"><ph name="LOCATION" /> இல் காட்டு</translation> @@ -4594,7 +4593,6 @@ <translation id="4507128560633489176">தரவு அழிக்கப்பட்டது.</translation> <translation id="4507373251891673233"><ph name="HOST" /> தளத்தில் இருந்து அனைத்து நீட்டிப்புகளையும் தடுத்துள்ளீர்கள்</translation> <translation id="4507401683427517298">“ஷார்ட்கட்டைச் சேர்” என்பதைக் கிளிக் செய்யவும்</translation> -<translation id="4508150454272293946">இந்தச் சாதனத்தில் இணைக்கப்பட்டுள்ள கேமராக்களைப் பயன்படுத்த ஆப்ஸையும் இணையப் பக்கங்களையும் அனுமதியுங்கள். உங்கள் கேமராவில் சிக்கல் தொடர்ந்தால், ஆப்ஸை மீண்டும் தொடங்கிப் பாருங்கள் அல்லது இணையப் பக்கத்தை ரெஃப்ரெஷ் செய்து பாருங்கள்.</translation> <translation id="450867954911715010">அணுகல்தன்மை அமைப்புகள்</translation> <translation id="4508765956121923607">ஆ&தாரத்தைக் காண்பி</translation> <translation id="4509277363725254222">உங்கள் <ph name="BEGIN_BOLD_USERNAME" />பயனர்பெயர்<ph name="END_BOLD_USERNAME" /> மற்றும் <ph name="BEGIN_BOLD_PASSWORD" />கடவுச்சொல்லின்<ph name="END_BOLD_PASSWORD" /> நகலைப் பகிர்ந்தால் உங்கள் குடும்ப உறுப்பினர் Google Password Manager மூலம் அவற்றை நிரப்பலாம்</translation> @@ -8493,7 +8491,6 @@ <translation id="7610337976012700501"><ph name="FEATURE_NAME" /> அம்சத்தை இந்தத் தொடர்புகளுடன் சேர்ந்து பயன்படுத்த, அவர்களின் Google கணக்குடன் இணைக்கப்பட்டுள்ள மின்னஞ்சல் முகவரியை உங்கள் தொடர்புகளில் சேர்க்கவும்.</translation> <translation id="7611713099524036757">மெட்டா</translation> <translation id="7612050744024016345">அனைத்து நீட்டிப்புகளும்</translation> -<translation id="7612401678989660900">மைக்ரோஃபோனைப் பயன்படுத்த அனுமதி கேட்கும் ஆப்ஸுக்கும் இணையதளங்களுக்கும் அணுகலை வழங்கும்</translation> <translation id="7612497353238585898">செயலிலுள்ள தளம்</translation> <translation id="7612655942094160088">இணைக்கப்பட்ட மொபைல் அம்சங்களை இயக்கும்.</translation> <translation id="7612989789287281429">உள்நுழைகிறீர்கள்…</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb index 775602b..1914cb2 100644 --- a/chrome/app/resources/generated_resources_te.xtb +++ b/chrome/app/resources/generated_resources_te.xtb
@@ -1130,7 +1130,6 @@ <translation id="1832848789136765277">మీ సింక్ చేసిన డేటాను మీరు ఎల్లప్పుడూ యాక్సెస్ చేయగలరని నిర్ధారించుకోవడానికి, అది మీరేనని వెరిఫై చేయండి</translation> <translation id="1834503245783133039">డౌన్లోడ్ విజయవంతం కాలేదు: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linuxను అప్గ్రేడ్ చేయడం</translation> -<translation id="1835612721186505600">కెమెరా అనుమతి ఉన్న యాప్లు, వెబ్సైట్లకు యాక్సెస్ను అనుమతించండి</translation> <translation id="1838374766361614909">శోధనను తీసివేయండి</translation> <translation id="1839021455997460752">మీ ఈమెయిల్ అడ్రస్</translation> <translation id="1839540115464516994"><ph name="LOCATION" />లో చూపించండి</translation> @@ -4593,7 +4592,6 @@ <translation id="4507128560633489176">డేటా క్లియర్ చేయబడింది.</translation> <translation id="4507373251891673233">మీరు <ph name="HOST" /> నుండి అన్ని ఎక్స్టెన్షన్లనూ బ్లాక్ చేశారు</translation> <translation id="4507401683427517298">"షార్ట్కట్ను జోడించండి"ని క్లిక్ చేయండి</translation> -<translation id="4508150454272293946">ఈ పరికరానికి కనెక్ట్ చేయబడిన కెమెరా(ల)ను ఉపయోగించడానికి యాప్లను, వెబ్పేజీలను అనుమతించండి. మీ కెమెరాతో మీకు ఇప్పటికీ సమస్య ఉంటే, యాప్ను రీస్టార్ట్ చేయడానికి లేదా వెబ్పేజీని రిఫ్రెష్ చేయడానికి ట్రై చేయండి.</translation> <translation id="450867954911715010">యాక్సెస్ సెట్టింగ్లు</translation> <translation id="4508765956121923607">&మూలాన్ని చూడండి</translation> <translation id="4509277363725254222">మీ <ph name="BEGIN_BOLD_USERNAME" />యూజర్నేమ్<ph name="END_BOLD_USERNAME" />, <ph name="BEGIN_BOLD_PASSWORD" />పాస్వర్డ్<ph name="END_BOLD_PASSWORD" /> కాపీని మీరు షేర్ చేసినప్పుడు, మీ ఫ్యామిలీ మెంబర్ వాటిని Google Password Managerను ఉపయోగించి పూరించగలరు</translation> @@ -8494,7 +8492,6 @@ <translation id="7610337976012700501">ఈ కాంటాక్ట్లతో <ph name="FEATURE_NAME" />ను ఉపయోగించడానికి, వారి Google ఖాతాతో లింక్ చేయబడిన ఈమెయిల్ అడ్రస్ను మీ కాంటాక్ట్లకు జోడించండి.</translation> <translation id="7611713099524036757">మెటా</translation> <translation id="7612050744024016345">అన్ని ఎక్స్టెన్షన్లు</translation> -<translation id="7612401678989660900">మైక్రోఫోన్ అనుమతి ఉన్న యాప్లు, వెబ్సైట్లకు యాక్సెస్ను అనుమతించండి</translation> <translation id="7612497353238585898">యాక్టివ్గా ఉన్న సైట్</translation> <translation id="7612655942094160088">కనెక్ట్ చేసిన ఫోన్ ఫీచర్లు ఎనేబుల్ చేయబడతాయి.</translation> <translation id="7612989789287281429">మిమ్మల్ని సైన్ ఇన్ చేస్తోంది…</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb index fcce73f..4b21916 100644 --- a/chrome/app/resources/generated_resources_th.xtb +++ b/chrome/app/resources/generated_resources_th.xtb
@@ -377,6 +377,7 @@ <translation id="1281746473742296584">{NUM_OF_FILES,plural, =1{เปิดไฟล์ไม่ได้}other{เปิดไฟล์ไม่ได้}}</translation> <translation id="1282311502488501110">ไม่ต้องลงชื่อเข้าใช้</translation> <translation id="1282465000333679776">แชร์เสียงของระบบ</translation> +<translation id="1283126956823499975">เกิดข้อผิดพลาดในการตั้งค่าอุปกรณ์</translation> <translation id="1284277788676816155">ไม่อนุญาตให้บันทึกข้อมูล</translation> <translation id="1285320974508926690">ไม่ต้องแปลเว็บไซต์นี้</translation> <translation id="1285484354230578868">จัดเก็บข้อมูลในบัญชี Google ไดรฟ์</translation> @@ -1120,7 +1121,6 @@ <translation id="1832848789136765277">โปรดยืนยันว่าเป็นคุณเพื่อให้เข้าถึงข้อมูลที่ซิงค์ไว้ได้ทุกเมื่อ</translation> <translation id="1834503245783133039">ดาวน์โหลดไม่สำเร็จ: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">กำลังอัปเกรด Linux</translation> -<translation id="1835612721186505600">อนุญาตให้เข้าถึงสำหรับแอปและเว็บไซต์ที่มีสิทธิ์เข้าถึงกล้อง</translation> <translation id="1838374766361614909">ล้างการค้นหา</translation> <translation id="1839021455997460752">อีเมลของคุณ</translation> <translation id="1839540115464516994">แสดงใน <ph name="LOCATION" /></translation> @@ -4578,7 +4578,6 @@ <translation id="4507128560633489176">ล้างข้อมูลแล้ว</translation> <translation id="4507373251891673233">คุณได้บล็อกส่วนขยายทั้งหมดจาก <ph name="HOST" /></translation> <translation id="4507401683427517298">คลิก "เพิ่มทางลัด"</translation> -<translation id="4508150454272293946">อนุญาตให้แอปและหน้าเว็บใช้กล้องที่เชื่อมต่อกับอุปกรณ์นี้ หากยังประสบปัญหาเกี่ยวกับกล้อง ให้ลองรีสตาร์ทแอปหรือรีเฟรชหน้าเว็บ</translation> <translation id="450867954911715010">การตั้งค่าการเข้าถึง</translation> <translation id="4508765956121923607">ดู&ต้นฉบับ</translation> <translation id="4509277363725254222">เมื่อคุณแชร์สำเนา<ph name="BEGIN_BOLD_USERNAME" />ชื่อผู้ใช้<ph name="END_BOLD_USERNAME" />และ<ph name="BEGIN_BOLD_PASSWORD" />รหัสผ่าน<ph name="END_BOLD_PASSWORD" /> สมาชิกในครอบครัวจะกรอกข้อมูลเหล่านั้นได้โดยใช้เครื่องมือจัดการรหัสผ่านบน Google</translation> @@ -5027,6 +5026,7 @@ <translation id="4863769717153320198">ดูเหมือน <ph name="WIDTH" /> x <ph name="HEIGHT" /> (ค่าเริ่มต้น)</translation> <translation id="4864369630010738180">กำลังลงชื่อเข้าใช้...</translation> <translation id="4864805589453749318">เลือกผู้ปกครองที่จะให้สิทธิ์ในการเพิ่มบัญชีโรงเรียน</translation> +<translation id="4864905533117889071"><ph name="SENSOR_NAME" /> (ถูกบล็อก)</translation> <translation id="486505726797718946">ประหยัดหน่วยความจำแล้ว</translation> <translation id="486635084936119914">เปิดไฟล์บางประเภทโดยอัตโนมัติหลังจากที่ดาวน์โหลดมา</translation> <translation id="4867272607148176509">ผู้ปกครองจะอนุมัติหรือบล็อกแอป จำกัดเวลาใช้งาน และควบคุมการท่องเว็บได้ คุณสามารถเพิ่มบัญชีโรงเรียนในภายหลังเพื่อให้เข้าถึงแหล่งข้อมูลส่วนใหญ่ของโรงเรียนได้</translation> @@ -5520,6 +5520,7 @@ <translation id="5261619498868361045">ต้องระบุชื่อคอนเทนเนอร์</translation> <translation id="5261683757250193089">เปิดในเว็บสโตร์</translation> <translation id="5261799091118902550">ไฟล์นี้อาจเป็นไวรัสหรือมัลแวร์ คุณสามารถส่งไฟล์ไปยัง Google เพื่อตรวจสอบว่าปลอดภัยหรือไม่</translation> +<translation id="5262334727506665688">บันทึกรหัสผ่านไว้ในบัญชี Google เสมอ</translation> <translation id="5262784498883614021">เชื่อมต่อกับเครือข่ายโดยอัตโนมัติ</translation> <translation id="5263656105659419083">หากต้องการกลับไปที่แผงด้านข้างได้โดยง่าย ให้คลิก "ปักหมุด" ที่ด้านขวาบน</translation> <translation id="5264148714798105376">อาจใช้เวลาประมาณ 1 นาที</translation> @@ -7058,6 +7059,7 @@ <translation id="649396225532207613">ไฟล์นี้อาจเป็นอันตรายต่อบัญชีส่วนบุคคลและบัญชีโซเชียลเน็ตเวิร์กของคุณ</translation> <translation id="6494327278868541139">แสดงรายละเอียดการปกป้องที่ปรับปรุงแล้ว</translation> <translation id="6494445798847293442">ไม่ใช่ผู้ออกใบรับรอง</translation> +<translation id="6494483173119160146">อุปกรณ์พบข้อผิดพลาดที่กู้คืนไม่ได้ โปรดรีเซ็ตอุปกรณ์ (ระบบจะลบข้อมูลผู้ใช้ทั้งหมด) แล้วลองอีกครั้ง</translation> <translation id="6497784818439587832">เปลี่ยนขนาดการแสดงผลเพื่อทำให้รายการในหน้าจอมีขนาดเล็กลงหรือใหญ่ขึ้น</translation> <translation id="6497789971060331894">การเลื่อนเมาส์แบบย้อนกลับ</translation> <translation id="6498249116389603658">&ทุกภาษาของคุณ</translation> @@ -8472,7 +8474,6 @@ <translation id="7610337976012700501">หากต้องการใช้<ph name="FEATURE_NAME" />กับรายชื่อติดต่อเหล่านี้ ให้เพิ่มอีเมลที่ลิงก์กับบัญชี Google ของรายชื่อติดต่อนั้นลงในรายชื่อติดต่อของคุณ</translation> <translation id="7611713099524036757">Meta</translation> <translation id="7612050744024016345">ส่วนขยายทั้งหมด</translation> -<translation id="7612401678989660900">อนุญาตให้เข้าถึงสำหรับแอปและเว็บไซต์ที่มีสิทธิ์เข้าถึงไมโครโฟน</translation> <translation id="7612497353238585898">เว็บไซต์ที่ใช้งานอยู่</translation> <translation id="7612655942094160088">เปิดใช้ฟีเจอร์ของโทรศัพท์ที่เชื่อมต่ออยู่</translation> <translation id="7612989789287281429">กำลังลงชื่อเข้าใช้…</translation> @@ -9538,6 +9539,7 @@ <translation id="8397825320644530257">ยกเลิกการเชื่อมต่อโทรศัพท์ที่เชื่อมต่ออยู่</translation> <translation id="8398877366907290961">ดำเนินการต่อ</translation> <translation id="8399282673057829204">ดูรหัสผ่าน</translation> +<translation id="839949601275221554">อุปกรณ์พบข้อผิดพลาด โปรดรีสตาร์ทอุปกรณ์และลองอีกครั้ง</translation> <translation id="8401432541486058167">ใส่ PIN ที่เชื่อมโยงกับสมาร์ทการ์ดของคุณ</translation> <translation id="8401772916834964810">{COUNT,plural, =0{Chrome จะบล็อกคุกกี้อีกครั้งในวันนี้}=1{Chrome จะบล็อกคุกกี้อีกครั้งในวันพรุ่งนี้}other{อีก # วัน Chrome จะบล็อกคุกกี้อีกครั้ง}}</translation> <translation id="8403618281196981152">ข้อมูลของคุณใน Chrome</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb index f7edab9..6a0141bd 100644 --- a/chrome/app/resources/generated_resources_tr.xtb +++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -1119,7 +1119,6 @@ <translation id="1832848789136765277">Senkronize edilen verilerinize her zaman erişebileceğinizden emin olmak için kimliğinizi doğrulayın</translation> <translation id="1834503245783133039">İndirme işlemi başarısız oldu: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux Yeni Sürüme Geçiriliyor</translation> -<translation id="1835612721186505600">Kamera izni olan uygulamaların ve web sitelerinin kameraya erişmesine izin verin</translation> <translation id="1838374766361614909">Aramayı temizle</translation> <translation id="1839021455997460752">E-posta adresiniz</translation> <translation id="1839540115464516994">Şurada göster: <ph name="LOCATION" /></translation> @@ -4566,7 +4565,6 @@ <translation id="4507128560633489176">Veriler temizlendi.</translation> <translation id="4507373251891673233"><ph name="HOST" /> adresinden gelen tüm uzantıları engellediniz</translation> <translation id="4507401683427517298">"Kısayol Ekle"yi tıklayın.</translation> -<translation id="4508150454272293946">Uygulamaların ve web sayfalarının bu cihaza bağlı kameraları kullanmasına izin verin. Kameranızla ilgili sorun yaşamaya devam ederseniz uygulamayı yeniden başlatmayı veya web sayfasını yenilemeyi deneyin.</translation> <translation id="450867954911715010">Erişilebilirlik ayarları</translation> <translation id="4508765956121923607">Ka&ynağı Görüntüle</translation> <translation id="4509277363725254222"><ph name="BEGIN_BOLD_USERNAME" />Kullanıcı adınız<ph name="END_BOLD_USERNAME" /> ve <ph name="BEGIN_BOLD_PASSWORD" />şifrenizin<ph name="END_BOLD_PASSWORD" /> bir kopyasını paylaştığınızda aile üyeniz Google Şifre Yöneticisi'ni kullanarak bu bilgileri doldurabilir</translation> @@ -8459,7 +8457,6 @@ <translation id="7610337976012700501"><ph name="FEATURE_NAME" /> özelliğini bu kişilerle kullanabilmek için bu kişilerin Google Hesaplarıyla bağlantılı e-posta adreslerini kişilerinize ekleyin.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Tüm Uzantılar</translation> -<translation id="7612401678989660900">Mikrofon izni olan uygulamaların ve web sitelerinin mikrofona erişmesine izin verin</translation> <translation id="7612497353238585898">Etkin site</translation> <translation id="7612655942094160088">Bağlı telefon özelliklerini etkinleştir.</translation> <translation id="7612989789287281429">Oturum açılıyor…</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb index 1507d66..9119275d 100644 --- a/chrome/app/resources/generated_resources_uk.xtb +++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -1114,6 +1114,7 @@ <translation id="1823768272150895732">Шрифт</translation> <translation id="1823781806707127806">Додати наявні дані веб-перегляду в керований профіль</translation> <translation id="18245044880483936">Резервні копії даних не займають простір на Диску вашої дитини.</translation> +<translation id="1825073796163165618">Увімкнути посилання</translation> <translation id="1825565032302550710">Укажіть порт зі значенням від 1024 до 65535</translation> <translation id="182577151972096764">нещодавно переглянуті рецепти</translation> <translation id="18260074040409954">Збережені паролі можна використовувати на будь-якому пристрої. Паролі для облікового запису <ph name="EMAIL" /> зберігаються в сервісі <ph name="GOOGLE_PASSWORD_MANAGER" />.</translation> @@ -1133,7 +1134,6 @@ <translation id="1832848789136765277">Щоб не втратити доступ до своїх даних синхронізації, підтвердьте свою особу</translation> <translation id="1834503245783133039">Не вдалося завантажити файл "<ph name="FILE_NAME" />"</translation> <translation id="1835261175655098052">Linux оновлюється</translation> -<translation id="1835612721186505600">Дозволити доступ для додатків і веб-сайтів, яким потрібен дозвіл на використання камери</translation> <translation id="1838374766361614909">Очистити поле пошуку</translation> <translation id="1839021455997460752">Ваша електронна адреса</translation> <translation id="1839540115464516994">Показати в сервісі <ph name="LOCATION" /></translation> @@ -1353,6 +1353,7 @@ <translation id="1997616988432401742">Ваші сертифікати</translation> <translation id="1999115740519098545">Після запуску</translation> <translation id="2002109485265116295">У реальному часі</translation> +<translation id="2002160221914907025">Експериментальний ШІ</translation> <translation id="2003130567827682533">Щоб активувати дані служби "<ph name="NAME" />", спершу під’єднайтеся до мережі Wi-Fi</translation> <translation id="2004413981947727241">Використовуйте свої паролі на будь-якому пристрої</translation> <translation id="2004697686368036666">Функції на деяких сайтах можуть не працювати</translation> @@ -2012,6 +2013,7 @@ <translation id="2482878487686419369">Сповіщення</translation> <translation id="2482895651873876648">Вкладку переміщено в групу "<ph name="GROUP_NAME" />" – <ph name="GROUP_CONTENTS" /></translation> <translation id="2483627560139625913">Укажіть пошукову систему в налаштуваннях веб-переглядача Chrome</translation> +<translation id="2483698983806594329">Завантажено неперевірений файл</translation> <translation id="2484743711056182585">Вилучити дозвіл на доступ</translation> <translation id="2484909293434545162">Якщо сайт використовує файли cookie, він з’явиться тут</translation> <translation id="2484959914739448251">Щоб очистити дані веб-перегляду на всіх синхронізованих пристроях і в обліковому записі Google, <ph name="BEGIN_LINK" />введіть парольну фразу<ph name="END_LINK" />.</translation> @@ -2151,6 +2153,7 @@ <translation id="2589658397149952302">Ніколи не показувати файли з Диска</translation> <translation id="25899519884572181">Вийти з режиму читання</translation> <translation id="2593499352046705383">Перш ніж почати, переконайтеся, що ви створили резервну копію даних. Під час встановлення ОС <ph name="DEVICE_OS" /> буде перезаписано всі дані жорсткого диска. Докладніше: g.co/flex/InstallGuide.</translation> +<translation id="2594832159966169099">Керувати безпекою V8</translation> <translation id="2594999711683503743">Пошукайте в Google або введіть URL-адресу</translation> <translation id="2597073208962000830">Функція "Обмін поблизу" шукає розташовані неподалік пристрої за допомогою Bluetooth.</translation> <translation id="2598710988533271874">Доступна нова версія Chrome</translation> @@ -2330,6 +2333,7 @@ <translation id="2730647855013151888">Включити всю особисту інформацію</translation> <translation id="2730901670247399077">Пропозиції смайлів</translation> <translation id="273093730430620027">Ця сторінка має доступ до вашої камери.</translation> +<translation id="2730956943403103181">Заборонено використовувати оптимізатор V8</translation> <translation id="2731392572903530958">В&ідкрити закрите вікно знову</translation> <translation id="2731700343119398978">Зачекайте...</translation> <translation id="2731971182069536520">Під час наступного перезапуску пристрою адміністратор виконає одноразове оновлення, що призведе до видалення локальних даних.</translation> @@ -2733,6 +2737,7 @@ <translation id="3025174326431589540">{COUNT,plural, =0{Немає збережених паролів}=1{Перевірено паролі для {COUNT} сайту}one{Перевірено паролі для {COUNT} сайту й додатка}few{Перевірено паролі для {COUNT} сайтів і додатків}many{Перевірено паролі для {COUNT} сайтів і додатків}other{Перевірено паролі для {COUNT} сайту й додатка}}</translation> <translation id="3027296729579831126">Увімкнути функцію "Обмін поблизу"</translation> <translation id="3027644380269727216">На основі ваших дій на сайті. Це налаштування ввімкнено.</translation> +<translation id="3028445648481691885">Завантаження скасовано</translation> <translation id="3029276696788198026">Без попереднього завантаження</translation> <translation id="3029466929721441205">Показувати інструменти стилуса на панелі</translation> <translation id="3029808567601324798">Час блокування</translation> @@ -2838,6 +2843,7 @@ <translation id="3119948370277171654">Укажіть тип контенту, який Ви транслювали, або URL-адресу.</translation> <translation id="3122464029669770682">ЦП</translation> <translation id="3122496702278727796">Не вдалося створити каталог даних</translation> +<translation id="3122810280993140148">Створює спеціальні теми на основі вибраної тематики, настрою, візуального стилю й кольору. Щоб скористатися цією функцією, відкрийте нову вкладку й натисніть "Налаштувати Chrome".</translation> <translation id="3122883569442693641">Докладніше</translation> <translation id="3124111068741548686">Обробка КОРИСТУВАЧА</translation> <translation id="3124332159330678621">Налаштуйте вигляд веб-переглядача Chrome</translation> @@ -2877,6 +2883,7 @@ <translation id="3159978855457658359">Змінити назву пристрою</translation> <translation id="3160928651883997588">Параметри VPN</translation> <translation id="3161522574479303604">Усі мови</translation> +<translation id="3162766632262775911">Завжди дозволено використовувати оптимізатор V8</translation> <translation id="3162853326462195145">Обліковий запис закладу освіти</translation> <translation id="3162899666601560689">Сайти можуть використовувати файли cookie, щоб покращувати веб-перегляд, наприклад не виходити з облікового запису чи запам'ятовувати товари в кошику для покупок</translation> <translation id="3163201441334626963">Невідомий продукт <ph name="PRODUCT_ID" /> від постачальника <ph name="VENDOR_ID" /></translation> @@ -3346,6 +3353,7 @@ <translation id="3547954654003013442">Налаштування проксі-сервера</translation> <translation id="3548162552723420559">Регулює колір екрана відповідно до середовища</translation> <translation id="354949590254473526">Введіть URL-адресу DNS-запиту</translation> +<translation id="3549827561154008969">Завантаження відновлено</translation> <translation id="3550593477037018652">Від'єднати мобільну мережу</translation> <translation id="3550915441744863158">Chrome оновлюється автоматично, тому ви завжди маєте найновішу версію</translation> <translation id="3551320343578183772">Закрити вкладку</translation> @@ -3495,6 +3503,7 @@ <translation id="3666196264870170605">Дамп налагодження Intel Wi-Fi NIC</translation> <translation id="3670113805793654926">Пристрої від усіх постачальників</translation> <translation id="3670229581627177274">Увімкніть Bluetooth</translation> +<translation id="3670480940339182416">Сайти можуть використовувати оптимізатор V8</translation> <translation id="3672681487849735243">Виявлено заводську помилку</translation> <translation id="3673097791729989571">Вхід через <ph name="SAML_DOMAIN" /></translation> <translation id="3673622964532248901">Ви не можете транслювати на цей пристрій.</translation> @@ -4587,7 +4596,6 @@ <translation id="4507128560633489176">Дані видалено.</translation> <translation id="4507373251891673233">Ви заборонили всім розширенням отримувати доступ до сайту <ph name="HOST" /></translation> <translation id="4507401683427517298">Натисніть "Додати ярлик"</translation> -<translation id="4508150454272293946">Дозволити додаткам і веб-сторінкам використовувати камери, підключені до цього пристрою. Якщо проблема з камерою не зникла, перезапустіть додаток або оновіть веб-сторінку.</translation> <translation id="450867954911715010">Налаштування функцій доступності</translation> <translation id="4508765956121923607">Переглянути д&жерело</translation> <translation id="4509277363725254222">Якщо ви поділитеся <ph name="BEGIN_BOLD_USERNAME" />іменем користувача<ph name="END_BOLD_USERNAME" /> й <ph name="BEGIN_BOLD_PASSWORD" />паролем<ph name="END_BOLD_PASSWORD" />, учасник вашої сімейної групи зможе заповнювати їх за допомогою Google Менеджера паролів</translation> @@ -4951,6 +4959,7 @@ <translation id="4800839971935185386">Перевірити змінені назву й значок</translation> <translation id="4801448226354548035">Сховати облікові записи</translation> <translation id="4801512016965057443">Дозволити роумінг мобільних даних</translation> +<translation id="4803599447809045620">Вимкнути посилання</translation> <translation id="4804311503028830356">Щоб переглянути інші варіанти, натисніть стрілку назад</translation> <translation id="4804818685124855865">Від'єднатися</translation> <translation id="4804827417948292437">Авокадо</translation> @@ -5742,6 +5751,7 @@ <translation id="5432223177001837288">Щоб надати доступ до аудіо, поділіться вкладкою</translation> <translation id="5432872710261597882">За допомогою позначки "Подобається" можна надіслати схвальний відгук про цю функцію.</translation> <translation id="543338862236136125">Змінити пароль</translation> +<translation id="5433865420958136693">Використовувати прискорення графічного процесора, якщо доступно</translation> <translation id="5434065355175441495">PKCS #1 шифрування RSA</translation> <translation id="5435274640623994081">Увімкнути реєстрацію звукових ефектів</translation> <translation id="5435779377906857208">Завжди надавати сайту <ph name="HOST" /> доступ до ваших геоданих</translation> @@ -6476,6 +6486,7 @@ <translation id="6020431688553761150">Сервер не авторизував ваш доступ до цього ресурсу.</translation> <translation id="6021293122504240352">Кількість додатків, які більше не підтримуються: <ph name="APPS" /></translation> <translation id="6021969570711251331">Чергування</translation> +<translation id="602212068530399867">Пошукова система, яка використовується в адресному рядку й на панелі запуску.</translation> <translation id="6022526133015258832">Відкрити на весь екран</translation> <translation id="6022659036123304283">Ваш персональний Chrome</translation> <translation id="6023643151125006053">Адміністратор домену <ph name="SAML_DOMAIN" /> заблокував цей пристрій (серійний номер <ph name="SERIAL_NUMBER" />).</translation> @@ -7887,6 +7898,7 @@ <translation id="7131431455372521159">Усі джойстики TrackPoint відключено</translation> <translation id="7131896909366247105">Очікування встановлення додатка <ph name="APP_NAME" /></translation> <translation id="7134098520442464001">Зменшити розмір тексту</translation> +<translation id="7134951043985383439">Завантажено небезпечний файл</translation> <translation id="7135729336746831607">Увімкнути Bluetooth?</translation> <translation id="7136694880210472378">Установити за умовчанням</translation> <translation id="7137771508221868414">Буде видалено <ph name="TOTAL_USAGE" /> даних, збережених сайтами й встановленими додатками</translation> @@ -8054,6 +8066,7 @@ <translation id="727441411541283857"><ph name="PERCENTAGE" />% – <ph name="TIME" /> до повного зарядження</translation> <translation id="727595954130325265">Купити зараз</translation> <translation id="7276100255011548441">Chrome автоматично видаляє теми через 4 тижні. Але якщо ви продовжите пошук за видаленою темою, вона може знову з’явитися в списку. Ви також можете заблокувати теми, якими Chrome не має ділитись із сайтами. Дізнайтесь, <ph name="BEGIN_LINK" />як керувати конфіденційністю в рекламі в Chrome<ph name="END_LINK" />.</translation> +<translation id="7278164481614262110">Створення тем за допомогою ШІ</translation> <translation id="727952162645687754">Помилка завантаження</translation> <translation id="7280649757394340890">Налаштування голосу для синтезу мовлення</translation> <translation id="7280877790564589615">Потрібен дозвіл</translation> @@ -8482,7 +8495,6 @@ <translation id="7610337976012700501">Щоб використовувати функцію <ph name="FEATURE_NAME" /> із цими контактами, додайте в список своїх контактів електронну адресу, зв’язану з обліковим записом Google.</translation> <translation id="7611713099524036757">мета-клавіша</translation> <translation id="7612050744024016345">Усі розширення</translation> -<translation id="7612401678989660900">Надайте доступ для всіх додатків і веб-сайтів, яким потрібен дозвіл на використання мікрофона</translation> <translation id="7612497353238585898">Активний сайт</translation> <translation id="7612655942094160088">Увімкнути функції підключеного телефона.</translation> <translation id="7612989789287281429">Виконується вхід…</translation> @@ -8749,6 +8761,7 @@ <ph name="EXTENSION_NAME" /></translation> <translation id="7789963078219276159">Фон початкової сторінки було змінено. Тепер це <ph name="CATEGORY" />.</translation> +<translation id="7791429245559955092">Цей додаток буде встановлено в профілі Chrome, який ви зараз використовуєте.</translation> <translation id="7791436592012979144">Зворотне прокручування ввімкнено</translation> <translation id="7791543448312431591">Додати</translation> <translation id="7792012425874949788">Сталася помилка під час входу</translation> @@ -9144,6 +9157,7 @@ <translation id="8089547136368562137">його буде захищено найкращими технологіями Google</translation> <translation id="8090234456044969073">Переглядати список ваших найчастіше відвідуваних веб-сайтів</translation> <translation id="8090513782447872344">Посібник із конфіденційності можна будь-коли перечитати</translation> +<translation id="8090579562279016251">Знижує продуктивність, але робить систему V8 стійкішою до атак</translation> <translation id="8090686009202681725">Створити тему за допомогою ШІ</translation> <translation id="8093359998839330381">Плагін <ph name="PLUGIN_NAME" /> не відповідає</translation> <translation id="8094536695728193970">Абрикос</translation> @@ -9190,6 +9204,7 @@ <translation id="8124313775439841391">Керований ONC</translation> <translation id="8125651784723647184">Надсиланням паролів керує адміністратор</translation> <translation id="8129265306888404830">Щоб використовувати електронну адресу організації (<ph name="EMAIL_DOMAIN" />), потрібно виконати корпоративну реєстрацію. Якщо ви користуєтеся цим пристроєм для власних цілей, увійдіть в особистий обліковий запис Google.</translation> +<translation id="8130476996317833777">Заборонити сайтам використовувати оптимізатор V8</translation> <translation id="813082847718468539">Перегляд інформації про сайт</translation> <translation id="8131740175452115882">Підтвердити</translation> <translation id="8133297578569873332">Прийнятна – FM</translation> @@ -9573,6 +9588,7 @@ <translation id="8422748173858722634">IMEI</translation> <translation id="8422787418163030046">Немає лотка</translation> <translation id="8424250197845498070">Заблоковано Додатковим захистом</translation> +<translation id="842501938276307467">Спробуйте експериментальні функції ШІ</translation> <translation id="8425213833346101688">Змінити</translation> <translation id="8425492902634685834">Закріпити на панелі завдань</translation> <translation id="8425768983279799676">Пристрій можна розблоковувати PIN-кодом.</translation> @@ -9727,6 +9743,7 @@ <ph name="BEGIN_PARAGRAPH2" />Щоб додати адресу <ph name="USER_EMAIL" />, спершу вийдіть на пристрої <ph name="DEVICE_TYPE" />. Потім унизу екрана входу натисніть "Додати користувача".<ph name="END_PARAGRAPH2" /></translation> <translation id="85486688517848470">Утримуйте клавішу пошуку, щоб змінити функції клавіш угорі клавіатури</translation> <translation id="8549316893834449916">Входьте на Chromebook через обліковий запис Google, який ви також використовуєте для інших сервісів, зокрема Gmail, Диск, YouTube тощо.</translation> +<translation id="8550239873869577759">Завантажено підозрілий файл</translation> <translation id="8551388862522347954">Ліцензії</translation> <translation id="8551588720239073785">Налаштування дати й часу</translation> <translation id="8551647092888540776">Неможливо відкрити файл "<ph name="FILE_NAMES" />" у режимі офлайн</translation> @@ -9782,6 +9799,7 @@ <translation id="8601206103050338563">Автентифікація клієнта TLS WWW</translation> <translation id="8602674530529411098">Додатки (бета)</translation> <translation id="8602851771975208551">Інша програма на вашому комп’ютері додала програму, яка може змінити роботу Chrome.</translation> +<translation id="8604513817270995005">Допомагає писати короткі тексти в Інтернеті, наприклад відгуки. Пропозиції надаються на основі ваших запитів і контенту веб-сторінки. Щоб скористатися цією функцією, натисніть текстове поле правою кнопкою миші.</translation> <translation id="8605428685123651449">Пам’ять SQLite</translation> <translation id="8607171490667464784">Якщо пристрій неактивний і не заряджається</translation> <translation id="8607828412110648570">Переконайтеся, що пристрій із Bluetooth поруч і на ньому ввімкнено режим підключення. Під’єднуйте лише надійні пристрої. Підключені пристрої відображаються для всіх облікових записів на цьому пристрої Chromebook. <ph name="BEGIN_LINK_LEARN_MORE" />Докладніше<ph name="END_LINK_LEARN_MORE" /></translation> @@ -10296,6 +10314,7 @@ <translation id="8985191021574400965">Вітаємо в додатку Steam для Chromebook</translation> <translation id="8985264973231822211">У мережі <ph name="DEVICE_LAST_ACTIVATED_TIME" /> дн. тому</translation> <translation id="8985661493893822002">Щоб увійти на пристрої <ph name="DEVICE_TYPE" />, підключіться до Інтернету.</translation> +<translation id="8985661571449404298">Завантажено незахищений файл</translation> <translation id="8986362086234534611">Забути</translation> <translation id="8986494364107987395">Автоматично надсилати статистику використання та звіти про аварійне завершення роботи в Google</translation> <translation id="8987305927843254629">Кожен користувач матиме змогу персоналізувати взаємодію і забезпечити конфіденційність своїх даних.</translation> @@ -10494,6 +10513,7 @@ <translation id="9116366756388192417">Вибрати тему</translation> <translation id="9116799625073598554">Додаток для створення нотаток</translation> <translation id="9117030152748022724">Керування додатками</translation> +<translation id="9119587891086680311">Ці функції використовують штучний інтелект, перебувають на ранніх стадіях розробки й не завжди працюють правильно.</translation> <translation id="9120362425083889527">Не вдалося завершити встановлення. Повторіть спробу або закрийте це вікно.</translation> <translation id="9120693811286642342"><ph name="BEGIN_PARAGRAPH1" />Для оптимальної роботи установіть <ph name="DEVICE_OS" /> на внутрішній диск. Ви також можете зробити це пізніше на екрані входу.<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />Якщо ви наразі не хочете встановлювати цю ОС, можете випробувати її, запустивши з носія USB. Наявні дані й ОС видалено не буде, але доступний обсяг пам’яті й продуктивність можуть знизитися.<ph name="END_PARAGRAPH2" /></translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb index 07ba5712..fad1946 100644 --- a/chrome/app/resources/generated_resources_ur.xtb +++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -1121,7 +1121,6 @@ <translation id="1832848789136765277">یقینی بنانے کیلئے کہ آپ اپنے مطابقت پذیر ڈیٹا تک ہمیشہ رسائی حاصل کر سکتے ہیں، توثیق کریں کہ یہ آپ ہیں</translation> <translation id="1834503245783133039">ڈاؤن لوڈ ناکام: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux اپ گریڈ کیا جا رہا ہے</translation> -<translation id="1835612721186505600">کیمرا کی اجازت کے ساتھ ایپس اور ویب سائٹس تک رسائی کی اجازت دیں</translation> <translation id="1838374766361614909">تلاش صاف کریں</translation> <translation id="1839021455997460752">آپ کا ای میل پتہ</translation> <translation id="1839540115464516994"><ph name="LOCATION" /> میں دکھائیں</translation> @@ -4581,7 +4580,6 @@ <translation id="4507128560633489176">ڈیٹا صاف کر دیا گیا۔</translation> <translation id="4507373251891673233">آپ نے <ph name="HOST" /> سے تمام ایکسٹینشنز کو مسدود کر دیا ہے</translation> <translation id="4507401683427517298">"شارٹ کٹ شامل کریں" پر کلک کریں</translation> -<translation id="4508150454272293946">اس آلہ سے منسلک ایپس اور ویب صفحات کو (کیمرا) کیمرے استعمال کرنے کی اجازت دیں۔ اگر آپ کو اب بھی اپنے کیمرہ میں کوئی مسئلہ درپیش ہے تو ایپ کو دوبارہ شروع کرنے کی کوشش کریں یا ویب صفحہ کو ریفریش کریں۔</translation> <translation id="450867954911715010">ایکسیسبیلٹی کی ترتیبات</translation> <translation id="4508765956121923607">ما&خذ دیکھیں</translation> <translation id="4509277363725254222">جب آپ اپنے <ph name="BEGIN_BOLD_USERNAME" />صارف نام<ph name="END_BOLD_USERNAME" /> اور <ph name="BEGIN_BOLD_PASSWORD" />پاس ورڈ<ph name="END_BOLD_PASSWORD" /> کی ایک کاپی کا اشتراک کرتے ہیں، تو آپ کا فیملی ممبر Google پاس ورڈ مینیجر کا استعمال کرتے ہوئے انہیں پُر کر سکتے ہیں</translation> @@ -8480,7 +8478,6 @@ <translation id="7610337976012700501">ان رابطوں کے ساتھ <ph name="FEATURE_NAME" /> کا استعمال کرنے کیلئے، ان کے Google اکاؤنٹ سے لنک کردہ ای میل پتے کو اپنے رابطوں میں شامل کریں۔</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">تمام ایکسٹینشنز</translation> -<translation id="7612401678989660900">مائیکروفون کی اجازت کے ساتھ ایپس اور ویب سائٹس تک رسائی کی اجازت دیں</translation> <translation id="7612497353238585898">فعال سائٹ</translation> <translation id="7612655942094160088">منسلک کردہ فون کی خصوصیات فعال کریں۔</translation> <translation id="7612989789287281429">آپ کو سائن ان کیا جا رہا ہے…</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb index d175f4d5..a538665 100644 --- a/chrome/app/resources/generated_resources_uz.xtb +++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -1118,7 +1118,6 @@ <translation id="1832848789136765277">Maʼlumotlaringizni doim sinxronlash uchun shaxsingizni tasdiqlang</translation> <translation id="1834503245783133039">Yuklab olinmadi: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Linux yangilanmoqda</translation> -<translation id="1835612721186505600">Ilova va saytlarga kameradan foydalanish uchun ruxsat bering</translation> <translation id="1838374766361614909">Qidiruv shartlarini tozalash</translation> <translation id="1839021455997460752">Email manzilingiz</translation> <translation id="1839540115464516994"><ph name="LOCATION" /> ichida ochish</translation> @@ -4581,7 +4580,6 @@ <translation id="4507128560633489176">Maʼlumotlar tozalandi</translation> <translation id="4507373251891673233"><ph name="HOST" /> saytida barcha kengaytmalar bloklangan</translation> <translation id="4507401683427517298">“Yorliq yaratish” ustiga bosing</translation> -<translation id="4508150454272293946">Ilova va saytlarga bu qurilmaga ulangan kameralardan foydalanishga ruxsat berish. Kamera ishlashida muammo boʻlsa, ilovani qayta oching yoki sahifani yangilang.</translation> <translation id="450867954911715010">Qulayliklar</translation> <translation id="4508765956121923607">Sahifa &kodini ko‘rish</translation> <translation id="4509277363725254222"><ph name="BEGIN_BOLD_USERNAME" />foydalanuvchi nomi<ph name="END_BOLD_USERNAME" /> va <ph name="BEGIN_BOLD_PASSWORD" />parol<ph name="END_BOLD_PASSWORD" /> nusxasini ulashsangiz, oila aʼzosi ularni Google Parollar menejeri yordamida toʻldirishlari mumkin</translation> @@ -8478,7 +8476,6 @@ <translation id="7610337976012700501"><ph name="FEATURE_NAME" /> ishlatish uchun kontaktlaringizga ularning Google hisobidagi email manzilini kiriting.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Barcha kengaytmalar</translation> -<translation id="7612401678989660900">Ilova va saytlarga mikrofondan foydalanish uchun ruxsat bering</translation> <translation id="7612497353238585898">Faol sayt</translation> <translation id="7612655942094160088">Ulangan telefon funksiyalarini faollashtirish.</translation> <translation id="7612989789287281429">Hisobingizga kirmoqdasiz…</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb index c625cdf..d385810a 100644 --- a/chrome/app/resources/generated_resources_vi.xtb +++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -1013,7 +1013,7 @@ <translation id="1757301747492736405">Đang chờ gỡ cài đặt</translation> <translation id="175772926354468439">Bật chủ đề</translation> <translation id="1757786065507923842">Không thể yêu cầu cha mẹ cho phép.</translation> -<translation id="17584710573359123">Xem trong Cửa hàng Chrome trực tuyến</translation> +<translation id="17584710573359123">Xem trong Chrome Web Store</translation> <translation id="1761402971842586829">Đã liên kết lại <ph name="BUTTON_NAME" /> với <ph name="REMAPPING_OPTION" />.</translation> <translation id="1761845175367251960">Tài khoản của <ph name="NAME" /></translation> <translation id="176272781006230109">các đề xuất mua sắm</translation> @@ -1131,7 +1131,6 @@ <translation id="1832848789136765277">Hãy xác minh danh tính để đảm bảo bạn luôn có thể truy cập vào dữ liệu đã đồng bộ</translation> <translation id="1834503245783133039">Tải xuống không thành công: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Đang nâng cấp Linux</translation> -<translation id="1835612721186505600">Cho phép truy cập đối với các ứng dụng và trang web có quyền sử dụng máy ảnh</translation> <translation id="1838374766361614909">Xóa tìm kiếm</translation> <translation id="1839021455997460752">Địa chỉ email của bạn</translation> <translation id="1839540115464516994">Hiện trong <ph name="LOCATION" /></translation> @@ -1223,7 +1222,7 @@ <translation id="1904580727789512086">Các URL bạn truy cập sẽ được lưu vào Tài khoản Google của bạn</translation> <translation id="1905375423839394163">Tên thiết bị Chromebook</translation> <translation id="1906181697255754968">Các trang web thường truy cập vào tệp và thư mục trên thiết bị của bạn để áp dụng những tính năng như tự động lưu công việc</translation> -<translation id="1906488504371069394">Khám phá các tiện ích và giao diện khác trên <ph name="BEGIN_LINK" />Cửa hàng Chrome trực tuyến<ph name="END_LINK" /></translation> +<translation id="1906488504371069394">Khám phá các tiện ích và giao diện khác trên <ph name="BEGIN_LINK" />Chrome Web Store<ph name="END_LINK" /></translation> <translation id="1907044622262489040">Nhập dữ liệu bằng giọng nói. Nhấn tổ hợp phím Tìm kiếm + D, sau đó bắt đầu nói.</translation> <translation id="1907659324308286326">Một số phụ kiện Thunderbolt hoặc USB4 cần có quyền truy cập vào bộ nhớ để hoạt động đúng cách.</translation> <translation id="1908591798274282246">Mở lại nhóm đã đóng</translation> @@ -2258,7 +2257,7 @@ <translation id="2673873887296220733">Sao chép 1 tệp vào <ph name="CLOUD_PROVIDER" /> để mở tệp đó?</translation> <translation id="267442004702508783">làm mới</translation> <translation id="2674764818721168631">Đang tắt</translation> -<translation id="2676084251379299915">Tiện ích này đã bị chính sách doanh nghiệp vô hiệu hoá vì không còn phát hành trên Cửa hàng Chrome trực tuyến.</translation> +<translation id="2676084251379299915">Tiện ích này đã bị chính sách doanh nghiệp vô hiệu hoá vì không còn phát hành trên Chrome Web Store.</translation> <translation id="2678063897982469759">Kích hoạt lại</translation> <translation id="2678100101831051676">Không truyền được.</translation> <translation id="2678468611080193228">Hãy thử tạm thời cho phép cookie của bên thứ ba. Chế độ cài đặt này làm giảm khả năng bảo vệ nhưng các tính năng của trang web sẽ có khả năng hoạt động cao hơn</translation> @@ -2680,7 +2679,7 @@ <translation id="2996286169319737844">Dữ liệu được mã hóa bằng cụm mật khẩu đồng bộ hóa của bạn. Dữ liệu này không bao gồm địa chỉ và phương thức thanh toán từ Google Pay.</translation> <translation id="2996722619877761919">Lật trên cạnh dài</translation> <translation id="2996932914629936323">Xóa nhật ký khỏi mọi thiết bị đã đồng bộ hóa</translation> -<translation id="2998097899774209901">Đang bật • Tiện ích này vi phạm chính sách của Cửa hàng Chrome trực tuyến</translation> +<translation id="2998097899774209901">Đang bật • Tiện ích này vi phạm chính sách của Chrome Web Store</translation> <translation id="2998267783395280091">Đã tìm thấy mạng</translation> <translation id="3000378525979847272">Đã cho phép <ph name="PERMISSION_1" />, <ph name="PERMISSION_2" /></translation> <translation id="3000461861112256445">Đơn âm</translation> @@ -2713,7 +2712,7 @@ <translation id="3012631534724231212">(iframe)</translation> <translation id="3012804260437125868">Chỉ các kết nối cùng trang web an toàn</translation> <translation id="3012917896646559015">Vui lòng liên hệ ngay với nhà sản xuất phần cứng của bạn để gửi máy tính đến cơ sở sửa chữa.</translation> -<translation id="3013652227108802944">Đang tắt • Tiện ích này vi phạm chính sách của Cửa hàng Chrome trực tuyến</translation> +<translation id="3013652227108802944">Đang tắt • Tiện ích này vi phạm chính sách của Chrome Web Store</translation> <translation id="301525898020410885">Ngôn ngữ do tổ chức của bạn đặt</translation> <translation id="3015639418649705390">Chạy lại ngay</translation> <translation id="3016381065346027039">Không có mục nhật ký nào</translation> @@ -3659,7 +3658,7 @@ <translation id="3775432569830822555">Chứng chỉ Máy chủ SSL</translation> <translation id="3775705724665058594">Gửi đến thiết bị của bạn</translation> <translation id="3776508619697147021">Các trang web có thể yêu cầu tự động tải nhiều tệp xuống</translation> -<translation id="3776796446459804932">Tiện ích này vi phạm chính sách của Cửa hàng Chrome trực tuyến.</translation> +<translation id="3776796446459804932">Tiện ích này vi phạm chính sách của Chrome Web Store.</translation> <translation id="3777483481409781352">Không kích hoạt được thiết bị di động</translation> <translation id="3777796259512476958">Bạn sẽ bị đăng xuất khỏi hầu hết các trang web</translation> <translation id="3778208826288864398">Khóa bảo mật đã bị khóa do bạn nhập sai mã PIN quá nhiều lần. Bạn cần đặt lại khóa bảo mật.</translation> @@ -4540,7 +4539,7 @@ <translation id="4453946976636652378">Tìm kiếm <ph name="SEARCH_ENGINE_NAME" /> hoặc nhập một URL</translation> <translation id="4457472090507035117">Chọn giọng nói hiện tại:</translation> <translation id="4459169140545916303">Hoạt động <ph name="DEVICE_LAST_ACTIVATED_TIME" /> ngày trước</translation> -<translation id="4460014764210899310">Rã nhóm</translation> +<translation id="4460014764210899310">Tách nhóm</translation> <translation id="4461483878391246134">Thêm ngôn ngữ không cần đề xuất dịch</translation> <translation id="4462159676511157176">Máy chủ có tên tùy chỉnh</translation> <translation id="4465236939126352372">Giới hạn thời gian sử dụng <ph name="TIME" /> đã được đặt cho <ph name="APP_NAME" /></translation> @@ -4594,7 +4593,6 @@ <translation id="4507128560633489176">Đã xóa dữ liệu.</translation> <translation id="4507373251891673233">Bạn đã chặn tất cả tiện ích từ <ph name="HOST" /></translation> <translation id="4507401683427517298">Nhấp vào "Thêm lối tắt"</translation> -<translation id="4508150454272293946">Cho phép ứng dụng và trang web sử dụng (các) máy ảnh kết nối với thiết bị này. Nếu máy ảnh của bạn vẫn gặp sự cố, hãy thử khởi động lại ứng dụng hoặc làm mới trang web.</translation> <translation id="450867954911715010">Cài đặt trợ năng</translation> <translation id="4508765956121923607">Xem &Nguồn</translation> <translation id="4509277363725254222">Khi bạn chia sẻ bản sao <ph name="BEGIN_BOLD_USERNAME" />tên người dùng<ph name="END_BOLD_USERNAME" /> và <ph name="BEGIN_BOLD_PASSWORD" />mật khẩu<ph name="END_BOLD_PASSWORD" /> của mình, thành viên gia đình bạn có thể điền các thông tin này bằng Trình quản lý mật khẩu của Google</translation> @@ -5053,7 +5051,7 @@ <translation id="4870724079713069532">Bạn có thể dùng ứng dụng này trên File Explorer hoặc các ứng dụng khác để mở và chỉnh sửa các tệp được hỗ trợ. Để kiểm soát tệp nào mở được trong ứng dụng này theo mặc định, hãy chuyển đến phần <ph name="BEGIN_LINK" />cài đặt Windows<ph name="END_LINK" />.</translation> <translation id="4870758487381879312">Nhập mật khẩu do quản trị viên cung cấp để lấy thông tin cấu hình</translation> <translation id="4870995365819149457">Một số đường liên kết được hỗ trợ vẫn sẽ mở trong <ph name="APP_NAME" />, <ph name="APP_NAME_2" />, <ph name="APP_NAME_3" /> và 1 ứng dụng khác.</translation> -<translation id="4871308555310586478">Không phải từ Cửa hàng Chrome trực tuyến.</translation> +<translation id="4871308555310586478">Không phải từ Chrome Web Store.</translation> <translation id="4871322859485617074">Mã PIN chứa ký tự không hợp lệ</translation> <translation id="4871370605780490696">Thêm dấu trang</translation> <translation id="4871568871368204250">Tắt đồng bộ hóa</translation> @@ -5801,7 +5799,7 @@ <translation id="5470735824776589490">Bạn cần khởi động lại trước khi có thể đặt lại thiết bị của mình bằng Powerwash. <ph name="LINK_BEGIN" />Tìm hiểu thêm<ph name="LINK_END" /></translation> <translation id="5471768120198416576">Chào bạn! Đây là giọng nói của tính năng chuyển văn bản sang lời nói.</translation> <translation id="5472627187093107397">Lưu mật khẩu cho trang web này</translation> -<translation id="5473062644742711742">Tìm thêm công cụ hỗ trợ tiếp cận trong Cửa hàng Chrome trực tuyến</translation> +<translation id="5473062644742711742">Tìm thêm công cụ hỗ trợ tiếp cận trong Chrome Web Store</translation> <translation id="5473075389972733037">IBM</translation> <translation id="5473099001878321374">Bằng cách tiếp tục, bạn đồng ý rằng thiết bị này cũng có thể tự động tải xuống và cài đặt các bản cập nhật và ứng dụng của Google, nhà mạng của con bạn và nhà sản xuất thiết bị (có thể dùng dữ liệu di động). Một vài ứng dụng trong số này có thể cung cấp các lựa chọn mua hàng trong ứng dụng.</translation> <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{Mã PIN phải có ít nhất 1 ký tự}other{Mã PIN phải có ít nhất # ký tự}}</translation> @@ -6019,7 +6017,7 @@ <translation id="5636996382092289526">Để sử dụng <ph name="NETWORK_ID" />, trước hết bạn cần <ph name="LINK_START" />truy cập vào trang đăng nhập của mạng<ph name="LINK_END" />. Trang này thường tự động mở sau vài giây. Nếu trang này không mở thì không thể sử dụng mạng này.</translation> <translation id="5637476008227280525">Bật dữ liệu di động</translation> <translation id="563821631542362636">Cho phép trang web lưu dữ liệu</translation> -<translation id="5638309510554459422">Tìm tiện ích và chủ đề trong <ph name="BEGIN_LINK" />Cửa hàng Chrome trực tuyến<ph name="END_LINK" /></translation> +<translation id="5638309510554459422">Tìm tiện ích và chủ đề trong <ph name="BEGIN_LINK" />Chrome Web Store<ph name="END_LINK" /></translation> <translation id="5639549361331209298">Tải lại trang này, giữ để xem các tùy chọn khác</translation> <translation id="5640133431808313291">Quản lý khóa bảo mật</translation> <translation id="5640159004008030285">Mật khẩu này chỉ được lưu trên thiết bị này. Để sử dụng mật khẩu này trên các thiết bị khác, hãy <ph name="BEGIN_LINK" />lưu mật khẩu vào Tài khoản Google của bạn<ph name="END_LINK" />.</translation> @@ -7063,7 +7061,7 @@ <translation id="6476482583633999078">Tốc độ lời nói</translation> <translation id="6477822444490674459">Không dùng được tính năng đồng bộ hóa thông báo trên điện thoại có hồ sơ công việc. <ph name="LINK_BEGIN" />Tìm hiểu thêm<ph name="LINK_END" /></translation> <translation id="6478248366783946499">Giữ tệp nguy hiểm?</translation> -<translation id="6479881432656947268">Truy cập Cửa hàng Chrome trực tuyến</translation> +<translation id="6479881432656947268">Truy cập Chrome Web Store</translation> <translation id="6480327114083866287">Do <ph name="MANAGER" /> quản lý</translation> <translation id="6482559668224714696">Phóng to toàn màn hình</translation> <translation id="6483485061007832714">Mở tệp đã tải xuống</translation> @@ -8281,7 +8279,7 @@ <translation id="7434509671034404296">Nhà phát triển</translation> <translation id="7434757724413878233">Tăng tốc chuột</translation> <translation id="7434969625063495310">Không thể thêm máy chủ máy in. Vui lòng kiểm tra cấu hình của máy chủ rồi thử lại.</translation> -<translation id="7436452443388501706">{NUM_EXTENSIONS,plural, =1{Xem xét 1 tiện ích đã bị gỡ khỏi Cửa hàng Chrome trực tuyến}other{Xem xét {NUM_EXTENSIONS} tiện ích đã bị gỡ khỏi Cửa hàng Chrome trực tuyến}}</translation> +<translation id="7436452443388501706">{NUM_EXTENSIONS,plural, =1{Xem xét 1 tiện ích đã bị gỡ khỏi Chrome Web Store}other{Xem xét {NUM_EXTENSIONS} tiện ích đã bị gỡ khỏi Chrome Web Store}}</translation> <translation id="7436921188514130341">Ôi, hỏng! Đã xảy ra lỗi trong khi đổi tên.</translation> <translation id="7439519621174723623">Hãy thêm tên thiết bị để tiếp tục</translation> <translation id="7441736921018636843">Để thay đổi mục cài đặt này, hãy <ph name="BEGIN_LINK" />đặt lại tính năng đồng bộ hóa<ph name="END_LINK" /> để xóa cụm mật khẩu đồng bộ hóa của bạn</translation> @@ -8494,7 +8492,6 @@ <translation id="7610337976012700501">Để sử dụng <ph name="FEATURE_NAME" /> với những người liên hệ này, hãy thêm địa chỉ email liên kết với Tài khoản Google của họ vào danh bạ của bạn.</translation> <translation id="7611713099524036757">meta</translation> <translation id="7612050744024016345">Tất cả tiện ích</translation> -<translation id="7612401678989660900">Cho phép truy cập đối với các ứng dụng và trang web có quyền sử dụng micrô</translation> <translation id="7612497353238585898">Trang web đang hoạt động</translation> <translation id="7612655942094160088">Các tính năng trên điện thoại đã kết nối bật.</translation> <translation id="7612989789287281429">Đang đăng nhập…</translation> @@ -9949,7 +9946,7 @@ <translation id="8708000541097332489">Xóa khi thoát</translation> <translation id="870805141700401153">Ký Mã Cá nhân của Microsoft</translation> <translation id="8708671767545720562">&Thông tin khác</translation> -<translation id="8709368517685334931">Bạn có thể tìm các màu cũ hơn trong Cửa hàng Chrome trực tuyến</translation> +<translation id="8709368517685334931">Bạn có thể tìm các màu cũ hơn trong Chrome Web Store</translation> <translation id="8710550057342691420">Sắp xếp những thẻ tương tự nhau</translation> <translation id="8711402221661888347">Đồ chua</translation> <translation id="8711538096655725662">Tự động chạy trên tất cả trang web mà bạn truy cập</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb index 63c3c7c..637bcbd 100644 --- a/chrome/app/resources/generated_resources_zh-CN.xtb +++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -1095,6 +1095,7 @@ <translation id="1823768272150895732">字体</translation> <translation id="1823781806707127806">将现有浏览数据添加到受管理个人资料名下</translation> <translation id="18245044880483936">备份数据不会计入您孩子的云端硬盘存储空间配额。</translation> +<translation id="1825073796163165618">启用链接</translation> <translation id="1825565032302550710">端口必须介于 1024 到 65535 之间</translation> <translation id="182577151972096764">最近查看过的食谱</translation> <translation id="18260074040409954">您可在任意设备上使用已存密码。系统会将密码保存到 <ph name="EMAIL" /> 的 <ph name="GOOGLE_PASSWORD_MANAGER" />中。</translation> @@ -1114,7 +1115,6 @@ <translation id="1832848789136765277">若要确保您能随时访问自己的同步数据,请验证是您本人在操作</translation> <translation id="1834503245783133039">未能成功下载“<ph name="FILE_NAME" />”</translation> <translation id="1835261175655098052">正在升级 Linux</translation> -<translation id="1835612721186505600">允许具有摄像头使用权限的应用和网站使用摄像头</translation> <translation id="1838374766361614909">清除搜索字词</translation> <translation id="1839021455997460752">您的电子邮件地址</translation> <translation id="1839540115464516994">在“<ph name="LOCATION" />”中显示</translation> @@ -1331,6 +1331,7 @@ <translation id="1997616988432401742">您的证书</translation> <translation id="1999115740519098545">启动时</translation> <translation id="2002109485265116295">实时</translation> +<translation id="2002160221914907025">实验性 AI</translation> <translation id="2003130567827682533">若想激活“<ph name="NAME" />”的数据流量服务,请先连接到 Wi-Fi 网络</translation> <translation id="2004413981947727241">在任意设备上都能使用您的密码</translation> <translation id="2004697686368036666">某些网站上的功能可能无法正常运行</translation> @@ -1987,6 +1988,7 @@ <translation id="2482878487686419369">通知</translation> <translation id="2482895651873876648">此标签页已移至“<ph name="GROUP_NAME" />”组中 - 该组包含<ph name="GROUP_CONTENTS" /></translation> <translation id="2483627560139625913">在 Chrome 浏览器设置中设置搜索引擎</translation> +<translation id="2483698983806594329">下载的文件未经验证</translation> <translation id="2484743711056182585">撤消授权</translation> <translation id="2484909293434545162">如果网站使用 Cookie,它就会显示在此处</translation> <translation id="2484959914739448251">要想清除您的所有已同步设备中的浏览数据以及您的 Google 账号中的浏览数据,请<ph name="BEGIN_LINK" />输入您的密码<ph name="END_LINK" />。</translation> @@ -2125,6 +2127,7 @@ <translation id="2589658397149952302">一律不显示云端硬盘文件</translation> <translation id="25899519884572181">退出阅读器模式</translation> <translation id="2593499352046705383">在开始之前,请确保已备份数据。安装 <ph name="DEVICE_OS" /> 会覆盖您的硬盘。如需了解详情,请访问 g.co/flex/InstallGuide。</translation> +<translation id="2594832159966169099">管理 V8 安全性</translation> <translation id="2594999711683503743">使用 Google 执行搜索,或者输入网址</translation> <translation id="2597073208962000830">附近分享功能使用蓝牙扫描寻找附近的设备。</translation> <translation id="2598710988533271874">有新版 Chrome 可用</translation> @@ -2304,6 +2307,7 @@ <translation id="2730647855013151888">包含所有个人信息</translation> <translation id="2730901670247399077">表情符号建议</translation> <translation id="273093730430620027">此网页正在使用您的摄像头。</translation> +<translation id="2730956943403103181">不允许使用 V8 优化工具</translation> <translation id="2731392572903530958">重新打开关闭的窗口(&E)</translation> <translation id="2731700343119398978">请稍候...</translation> <translation id="2731971182069536520">当您下次重启设备时,您的管理员将会执行一项一次性更新,这项更新会删除您的本地数据。</translation> @@ -2707,6 +2711,7 @@ <translation id="3025174326431589540">{COUNT,plural, =0{尚未保存任何密码}=1{已为 {COUNT} 个网站检查了密码}other{已为 {COUNT} 个网站和应用检查了密码}}</translation> <translation id="3027296729579831126">开启“附近分享”功能</translation> <translation id="3027644380269727216">根据您在网站上的活动推测得出。此设置已开启。</translation> +<translation id="3028445648481691885">下载已取消</translation> <translation id="3029276696788198026">无预加载</translation> <translation id="3029466929721441205">在任务栏中显示触控笔工具</translation> <translation id="3029808567601324798">锁定前的等待时长</translation> @@ -2812,6 +2817,7 @@ <translation id="3119948370277171654">您当时投放的是什么内容/网址?</translation> <translation id="3122464029669770682">CPU</translation> <translation id="3122496702278727796">无法创建数据目录</translation> +<translation id="3122810280993140148">根据您选择的主题、情境、视觉风格和颜色创建自定义主题。若要使用此功能,请打开一个新标签页,然后点击“自定义 Chrome”。</translation> <translation id="3122883569442693641">更多详情</translation> <translation id="3124111068741548686">USER处理函数</translation> <translation id="3124332159330678621">自定义您的 Chrome 浏览器,为它换上全新外观</translation> @@ -2851,6 +2857,7 @@ <translation id="3159978855457658359">修改设备名称</translation> <translation id="3160928651883997588">VPN 偏好设置</translation> <translation id="3161522574479303604">所有语言</translation> +<translation id="3162766632262775911">始终允许使用 V8 优化工具</translation> <translation id="3162853326462195145">学校账号</translation> <translation id="3162899666601560689">网站可以使用 Cookie 来提升您的浏览体验,例如让您保持登录状态或记住您购物车中的商品</translation> <translation id="3163201441334626963">来自供应商 <ph name="VENDOR_ID" /> 的未知产品 <ph name="PRODUCT_ID" /></translation> @@ -3320,6 +3327,7 @@ <translation id="3547954654003013442">代理设置</translation> <translation id="3548162552723420559">调整屏幕颜色以与环境相称</translation> <translation id="354949590254473526">输入自定义 DNS 查询网址</translation> +<translation id="3549827561154008969">已恢复下载</translation> <translation id="3550593477037018652">断开移动网络连接</translation> <translation id="3550915441744863158">Chrome会自动更新,因此您使用的始终都是最新版本</translation> <translation id="3551320343578183772">关闭标签页</translation> @@ -3469,6 +3477,7 @@ <translation id="3666196264870170605">Intel Wi-Fi NIC 调试转储</translation> <translation id="3670113805793654926">来自任何供应商的设备</translation> <translation id="3670229581627177274">开启蓝牙</translation> +<translation id="3670480940339182416">网站可以使用 V8 优化工具</translation> <translation id="3672681487849735243">检测到出厂错误</translation> <translation id="3673097791729989571">由 <ph name="SAML_DOMAIN" /> 托管的登录服务</translation> <translation id="3673622964532248901">您不得投放到此设备。</translation> @@ -4559,7 +4568,6 @@ <translation id="4507128560633489176">已清除数据。</translation> <translation id="4507373251891673233">您已禁止所有扩展程序访问 <ph name="HOST" /></translation> <translation id="4507401683427517298">点击“添加快捷方式”</translation> -<translation id="4508150454272293946">允许应用和网页使用与此设备连接的摄像头。如果您的摄像头仍存在问题,请尝试重启应用或刷新网页。</translation> <translation id="450867954911715010">无障碍设置</translation> <translation id="4508765956121923607">显示源代码(&O)</translation> <translation id="4509277363725254222">当您分享<ph name="BEGIN_BOLD_USERNAME" />用户名<ph name="END_BOLD_USERNAME" />和<ph name="BEGIN_BOLD_PASSWORD" />密码<ph name="END_BOLD_PASSWORD" />的副本之后,您的家庭成员可以使用 Google 密码管理工具填充这些信息</translation> @@ -4923,6 +4931,7 @@ <translation id="4800839971935185386">查看名称和图标的新变化</translation> <translation id="4801448226354548035">隐藏账号</translation> <translation id="4801512016965057443">允许移动数据漫游</translation> +<translation id="4803599447809045620">停用链接</translation> <translation id="4804311503028830356">点击返回箭头即可探索其他选项</translation> <translation id="4804818685124855865">断开连接</translation> <translation id="4804827417948292437">牛油果</translation> @@ -5714,6 +5723,7 @@ <translation id="5432223177001837288">若要分享音频,请改为分享标签页</translation> <translation id="5432872710261597882">选择“我喜欢”,会提交您喜欢此功能的反馈。</translation> <translation id="543338862236136125">修改密码</translation> +<translation id="5433865420958136693">使用图形加速功能(如果可用)</translation> <translation id="5434065355175441495">PKCS #1 RSA 加密</translation> <translation id="5435274640623994081">启用耳标记录功能</translation> <translation id="5435779377906857208">始终允许 <ph name="HOST" /> 使用您的位置信息</translation> @@ -6448,6 +6458,7 @@ <translation id="6020431688553761150">服务器未授予您访问此资源的权限。</translation> <translation id="6021293122504240352"><ph name="APPS" /> 款应用不再受支持</translation> <translation id="6021969570711251331">交错</translation> +<translation id="602212068530399867">地址栏和启动器中使用的搜索引擎。</translation> <translation id="6022526133015258832">以全屏模式打开</translation> <translation id="6022659036123304283">定制您的专属 Chrome</translation> <translation id="6023643151125006053">此设备(序列号:<ph name="SERIAL_NUMBER" />)已被 <ph name="SAML_DOMAIN" /> 管理员锁定。</translation> @@ -7853,6 +7864,7 @@ <translation id="7131431455372521159">所有 TrackPoint 均已断开连接</translation> <translation id="7131896909366247105"><ph name="APP_NAME" />,正在等待…</translation> <translation id="7134098520442464001">缩小文字</translation> +<translation id="7134951043985383439">下载的文件有危险</translation> <translation id="7135729336746831607">要开启蓝牙吗?</translation> <translation id="7136694880210472378">设为默认选项</translation> <translation id="7137771508221868414">这会删除由网站和安装的应用存储的 <ph name="TOTAL_USAGE" /> 数据</translation> @@ -8020,6 +8032,7 @@ <translation id="727441411541283857"><ph name="PERCENTAGE" />% - 还需 <ph name="TIME" />充满</translation> <translation id="727595954130325265">立即抢购</translation> <translation id="7276100255011548441">Chrome 会自动删除保留时长超过 4 周的主题。随着您继续浏览,某个主题可能会再次出现在列表中。您还可屏蔽不希望 Chrome 与网站分享的主题。详细了解如何<ph name="BEGIN_LINK" />在 Chrome 中管理广告隐私权设置<ph name="END_LINK" />。</translation> +<translation id="7278164481614262110">利用 AI 创建主题</translation> <translation id="727952162645687754">下载错误</translation> <translation id="7280649757394340890">文字转语音的语音设置</translation> <translation id="7280877790564589615">已请求权限</translation> @@ -8449,7 +8462,6 @@ <translation id="7610337976012700501">如需使用“<ph name="FEATURE_NAME" />”功能与这些联系人分享内容,请将其 Google 账号所关联的电子邮件地址添加到您的通讯录中。</translation> <translation id="7611713099524036757">Meta</translation> <translation id="7612050744024016345">所有扩展程序</translation> -<translation id="7612401678989660900">允许具有麦克风使用权限的应用和网站使用麦克风</translation> <translation id="7612497353238585898">当前打开的网站</translation> <translation id="7612655942094160088">启用与已连接的手机相关的功能。</translation> <translation id="7612989789287281429">正在为您登录…</translation> @@ -8716,6 +8728,7 @@ <ph name="EXTENSION_NAME" /></translation> <translation id="7789963078219276159">初始页背景已更改为 <ph name="CATEGORY" />。</translation> +<translation id="7791429245559955092">系统会将此应用安装到您当前使用的 Chrome 个人资料中</translation> <translation id="7791436592012979144">已启用反向滚动</translation> <translation id="7791543448312431591">添加</translation> <translation id="7792012425874949788">登录时出了点问题</translation> @@ -9111,6 +9124,7 @@ <translation id="8089547136368562137">密码由 Google 先进技术确保安全</translation> <translation id="8090234456044969073">读取您最常访问的网站列表</translation> <translation id="8090513782447872344">日后您可随时回来查看</translation> +<translation id="8090579562279016251">降低性能,但提高 V8 防范攻击的能力</translation> <translation id="8090686009202681725">利用 AI 创建主题</translation> <translation id="8093359998839330381">“<ph name="PLUGIN_NAME" />”没有响应</translation> <translation id="8094536695728193970">杏黄</translation> @@ -9157,6 +9171,7 @@ <translation id="8124313775439841391">受管理的 ONC</translation> <translation id="8125651784723647184">密码分享功能由您的管理员管理</translation> <translation id="8129265306888404830">如果想通过贵组织 (<ph name="EMAIL_DOMAIN" />) 使用电子邮件地址,您需要使用企业注册。如果此设备是用于个人用途,请使用您的个人 Google 账号登录。</translation> +<translation id="8130476996317833777">不允许网站使用 V8 优化工具</translation> <translation id="813082847718468539">查看网站信息</translation> <translation id="8131740175452115882">确认</translation> <translation id="8133297578569873332">可接受 - FM</translation> @@ -9540,6 +9555,7 @@ <translation id="8422748173858722634">IMEI</translation> <translation id="8422787418163030046">缺少送纸盘</translation> <translation id="8424250197845498070">已被“高级保护”机制屏蔽</translation> +<translation id="842501938276307467">试用实验性 AI 功能</translation> <translation id="8425213833346101688">更改</translation> <translation id="8425492902634685834">固定在任务栏上</translation> <translation id="8425768983279799676">您可以使用 PIN 码来解锁您的设备。</translation> @@ -9694,6 +9710,7 @@ <ph name="BEGIN_PARAGRAPH2" />若要使用 <ph name="USER_EMAIL" />,请先在 <ph name="DEVICE_TYPE" /> 上退出您的账号,然后在登录屏幕的底部选择“添加用户”。<ph name="END_PARAGRAPH2" /></translation> <translation id="85486688517848470">按住搜索键可切换顶行键的行为</translation> <translation id="8549316893834449916">您将使用自己的 Google 账号登录 Chromebook - 此账号与您登录 Gmail、Google 云端硬盘、YouTube 等服务时使用的账号相同。</translation> +<translation id="8550239873869577759">下载的文件可疑</translation> <translation id="8551388862522347954">许可</translation> <translation id="8551588720239073785">日期和时间设置</translation> <translation id="8551647092888540776">离线时无法打开<ph name="FILE_NAMES" /></translation> @@ -9749,6 +9766,7 @@ <translation id="8601206103050338563">TLS WWW 客户端身份验证</translation> <translation id="8602674530529411098">应用(Beta 版)</translation> <translation id="8602851771975208551">您计算机上的其他程序添加了一个应用,该应用可能会改变 Chrome 的工作方式。</translation> +<translation id="8604513817270995005">可帮助您在网络上撰写评价等简短内容。系统会根据您的提示和网页内容来提供建议的内容。如需使用此功能,请右键点击文本框。</translation> <translation id="8605428685123651449">SQLite 使用的内存</translation> <translation id="8607171490667464784">处于闲置状态且使用电池时</translation> <translation id="8607828412110648570">请确保您的蓝牙设备处于配对模式且就在附近。应仅与您信任的设备配对。此 Chromebook 上的所有账号都可以看到已配对的设备。<ph name="BEGIN_LINK_LEARN_MORE" />了解详情<ph name="END_LINK_LEARN_MORE" /></translation> @@ -10260,6 +10278,7 @@ <translation id="8985191021574400965">欢迎使用 Chromebook 版 Steam</translation> <translation id="8985264973231822211"><ph name="DEVICE_LAST_ACTIVATED_TIME" /> 天前曾有活动</translation> <translation id="8985661493893822002">请连接到互联网以登录您的 <ph name="DEVICE_TYPE" />。</translation> +<translation id="8985661571449404298">下载的文件不安全</translation> <translation id="8986362086234534611">不保存</translation> <translation id="8986494364107987395">将使用情况统计信息和崩溃报告自动发送给 Google</translation> <translation id="8987305927843254629">每个人都可对自己的体验进行个性化设置并确保数据的私密性。</translation> @@ -10458,6 +10477,7 @@ <translation id="9116366756388192417">选择主题</translation> <translation id="9116799625073598554">记事应用</translation> <translation id="9117030152748022724">管理应用</translation> +<translation id="9119587891086680311">这些功能使用 AI 技术,但处于早期开发阶段,因此提供的信息不一定准确无误。</translation> <translation id="9120362425083889527">无法完成安装。请重试或关闭此窗口</translation> <translation id="9120693811286642342"><ph name="BEGIN_PARAGRAPH1" />为获得最佳体验,请将 <ph name="DEVICE_OS" /> 安装到您的内部磁盘。您也可等到需要时再从登录屏幕安装它。<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />如果尚未做好安装前的准备工作,您可从 USB 运行它来试用一下。这样做不会更改您的现有操作系统和数据,但可能会在存储和性能方面受到限制。<ph name="END_PARAGRAPH2" /></translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb index 3d06f2c..0c86703 100644 --- a/chrome/app/resources/generated_resources_zh-HK.xtb +++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -1110,6 +1110,7 @@ <translation id="1823768272150895732">字型</translation> <translation id="1823781806707127806">將現有的瀏覽資料加入至受管理的設定檔</translation> <translation id="18245044880483936">備份資料將不會佔用您子女的「雲端硬碟」儲存空間配額。</translation> +<translation id="1825073796163165618">啟用連結</translation> <translation id="1825565032302550710">連接埠必須介乎 1024 和 65535 之間</translation> <translation id="182577151972096764">最近查看過的食譜</translation> <translation id="18260074040409954">您可在任何裝置上使用已儲存的密碼。密碼會儲存至 <ph name="EMAIL" /> 的 <ph name="GOOGLE_PASSWORD_MANAGER" />。</translation> @@ -1129,7 +1130,6 @@ <translation id="1832848789136765277">為確保您可隨時存取同步資料,請驗證您的身分</translation> <translation id="1834503245783133039"><ph name="FILE_NAME" /> 下載失敗</translation> <translation id="1835261175655098052">正在升級 Linux</translation> -<translation id="1835612721186505600">允許具備相機權限的應用程式和網站存取相機</translation> <translation id="1838374766361614909">清除搜尋</translation> <translation id="1839021455997460752">您的電郵地址</translation> <translation id="1839540115464516994">在「<ph name="LOCATION" />」中顯示</translation> @@ -1350,6 +1350,7 @@ <translation id="1997616988432401742">您的憑證</translation> <translation id="1999115740519098545">起始螢幕</translation> <translation id="2002109485265116295">即時</translation> +<translation id="2002160221914907025">實驗性 AI</translation> <translation id="2003130567827682533">如要啟用「<ph name="NAME" />」的流動網絡,請先連接 Wi-Fi 網絡</translation> <translation id="2004413981947727241">在任何裝置都能使用你的密碼</translation> <translation id="2004697686368036666">部分網站的功能可能會無法正常運作</translation> @@ -2009,6 +2010,7 @@ <translation id="2482878487686419369">通知</translation> <translation id="2482895651873876648">分頁移咗去包含「<ph name="GROUP_CONTENTS" />」嘅「<ph name="GROUP_NAME" />」群組</translation> <translation id="2483627560139625913">在 Chrome 瀏覽器設定中設定搜尋引擎</translation> +<translation id="2483698983806594329">下載咗未驗證嘅檔案</translation> <translation id="2484743711056182585">移除存取權</translation> <translation id="2484909293434545162">使用 Cookie 的網站會在此處顯示</translation> <translation id="2484959914739448251">如要從所有已同步的裝置和 Google 帳戶中清除瀏覽資料,請<ph name="BEGIN_LINK" />輸入密碼短語<ph name="END_LINK" />。</translation> @@ -2148,6 +2150,7 @@ <translation id="2589658397149952302">永不顯示「雲端硬碟」檔案</translation> <translation id="25899519884572181">離開閱讀器模式</translation> <translation id="2593499352046705383">開始操作前,請確認資料已備份。安裝 <ph name="DEVICE_OS" /> 會覆寫硬碟的資料。請前往 g.co/flex/InstallGuide 以瞭解詳情。</translation> +<translation id="2594832159966169099">管理 V8 安全性</translation> <translation id="2594999711683503743">搜尋 Google 或輸入網址</translation> <translation id="2597073208962000830">「咫尺共享」功能會透過藍牙掃瞄尋找附近的裝置。</translation> <translation id="2598710988533271874">有新版本 Chrome 可安裝</translation> @@ -2327,6 +2330,7 @@ <translation id="2730647855013151888">包含所有個人資料</translation> <translation id="2730901670247399077">Emoji 建議</translation> <translation id="273093730430620027">這個網頁正在存取您的相機。</translation> +<translation id="2730956943403103181">不允許使用 V8 優化工具</translation> <translation id="2731392572903530958">重新開啟先前關閉的視窗(&E)</translation> <translation id="2731700343119398978">請稍後…</translation> <translation id="2731971182069536520">系統管理員會在您下次重新啟動裝置時執行一次性更新,而此更新會刪除您的本機資料。</translation> @@ -2730,6 +2734,7 @@ <translation id="3025174326431589540">{COUNT,plural, =0{未儲存密碼}=1{已檢查 {COUNT} 個網站的密碼}other{已檢查 {COUNT} 個網站和應用程式的密碼}}</translation> <translation id="3027296729579831126">開啟「咫尺共享」功能</translation> <translation id="3027644380269727216">根據您在網站上的活動推薦。此設定已開啟。</translation> +<translation id="3028445648481691885">已取消下載</translation> <translation id="3029276696788198026">不使用預先載入模式</translation> <translation id="3029466929721441205">顯示捷徑列中的觸控筆工具</translation> <translation id="3029808567601324798">鎖定時間</translation> @@ -2835,6 +2840,7 @@ <translation id="3119948370277171654">您投放的內容/網址是什麼?</translation> <translation id="3122464029669770682">CPU</translation> <translation id="3122496702278727796">無法建立數據目錄</translation> +<translation id="3122810280993140148">根據你選擇的主題、心情、視覺風格和顏色建立自訂主題。如要使用此功能,請開啟新分頁,然後按一下 [自訂 Chrome]。</translation> <translation id="3122883569442693641">更多詳情</translation> <translation id="3124111068741548686">USER 控制代碼</translation> <translation id="3124332159330678621">自訂 Chrome 以便為瀏覽器套用新風格</translation> @@ -2874,6 +2880,7 @@ <translation id="3159978855457658359">編輯裝置名稱</translation> <translation id="3160928651883997588">VPN 偏好設定</translation> <translation id="3161522574479303604">所有語言</translation> +<translation id="3162766632262775911">一律允許使用 V8 優化工具</translation> <translation id="3162853326462195145">學校帳戶</translation> <translation id="3162899666601560689">網站可使用 Cookie 來改善瀏覽體驗,例如讓您保持登入狀態或記住購物車中的商品</translation> <translation id="3163201441334626963">來自供應商 <ph name="VENDOR_ID" /> 的不明產品 <ph name="PRODUCT_ID" /></translation> @@ -3343,6 +3350,7 @@ <translation id="3547954654003013442">Proxy 設定</translation> <translation id="3548162552723420559">配合環境調整螢幕顏色</translation> <translation id="354949590254473526">輸入自訂 DNS 查詢網址</translation> +<translation id="3549827561154008969">已繼續下載</translation> <translation id="3550593477037018652">解除連接流動網絡</translation> <translation id="3550915441744863158">Chrome 會自動更新,隨時讓您使用最新版本</translation> <translation id="3551320343578183772">關閉分頁</translation> @@ -3492,6 +3500,7 @@ <translation id="3666196264870170605">Intel Wi-Fi NIC 偵錯傾印</translation> <translation id="3670113805793654926">來自任何供應商的裝置</translation> <translation id="3670229581627177274">開啟藍牙功能</translation> +<translation id="3670480940339182416">網站可使用 V8 優化工具</translation> <translation id="3672681487849735243">系統偵測到原廠錯誤</translation> <translation id="3673097791729989571">登入由 <ph name="SAML_DOMAIN" /> 代管</translation> <translation id="3673622964532248901">您的權限不足,因此無法投放至此裝置。</translation> @@ -4580,7 +4589,6 @@ <translation id="4507128560633489176">清除咗資料。</translation> <translation id="4507373251891673233">您已封鎖所有來自 <ph name="HOST" /> 的擴充程式</translation> <translation id="4507401683427517298">按一下 [新增捷徑]</translation> -<translation id="4508150454272293946">允許應用程式和網頁使用連接此裝置的相機。如果相機仍無法正常使用,建議你重新啟動應用程式或重新整理網頁。</translation> <translation id="450867954911715010">無障礙功能設定</translation> <translation id="4508765956121923607">檢視原始碼(&O)</translation> <translation id="4509277363725254222">當你分享<ph name="BEGIN_BOLD_USERNAME" />使用者名稱<ph name="END_BOLD_USERNAME" />和<ph name="BEGIN_BOLD_PASSWORD" />密碼<ph name="END_BOLD_PASSWORD" />副本後,家庭成員就能使用「Google 密碼管理工具」填寫這些資料</translation> @@ -4944,6 +4952,7 @@ <translation id="4800839971935185386">查看名稱和圖示變動</translation> <translation id="4801448226354548035">隱藏帳戶</translation> <translation id="4801512016965057443">允許流動數據漫遊</translation> +<translation id="4803599447809045620">停用連結</translation> <translation id="4804311503028830356">按一下向後箭嘴以探索其他選項</translation> <translation id="4804818685124855865">中斷連線</translation> <translation id="4804827417948292437">牛油果</translation> @@ -5735,6 +5744,7 @@ <translation id="5432223177001837288">如要分享音訊,請改為分享分頁</translation> <translation id="5432872710261597882">㩒一下鍾意就可以俾正評。</translation> <translation id="543338862236136125">修改密碼</translation> +<translation id="5433865420958136693">使用圖像加速功能 (如有)</translation> <translation id="5434065355175441495">PKCS #1 RSA 加密</translation> <translation id="5435274640623994081">啟用 Earcon 記錄</translation> <translation id="5435779377906857208">一律允許 <ph name="HOST" /> 存取您的位置</translation> @@ -6469,6 +6479,7 @@ <translation id="6020431688553761150">伺服器未授予您這個資源的存取權。</translation> <translation id="6021293122504240352">系統不再支援 <ph name="APPS" /> 個應用程式</translation> <translation id="6021969570711251331">交錯顯示</translation> +<translation id="602212068530399867">網址列和啟動器使用的搜尋引擎。</translation> <translation id="6022526133015258832">開啟全螢幕</translation> <translation id="6022659036123304283">自訂屬於您的 Chrome</translation> <translation id="6023643151125006053">這部裝置 (序號:<ph name="SERIAL_NUMBER" />) 已被 <ph name="SAML_DOMAIN" /> 的管理員上鎖。</translation> @@ -7875,6 +7886,7 @@ <translation id="7131431455372521159">已經解除連接所有 TrackPoint</translation> <translation id="7131896909366247105"><ph name="APP_NAME" /> 等緊</translation> <translation id="7134098520442464001">縮小文字</translation> +<translation id="7134951043985383439">下載咗危險嘅檔案</translation> <translation id="7135729336746831607">要開啟藍牙嗎?</translation> <translation id="7136694880210472378">設定為預設</translation> <translation id="7137771508221868414">此操作會刪除網站儲存的資料 (共 <ph name="TOTAL_USAGE" />),以及所安裝的應用程式</translation> @@ -8042,6 +8054,7 @@ <translation id="727441411541283857">電池現有 <ph name="PERCENTAGE" />% - 還有 <ph name="TIME" />便完成充電</translation> <translation id="727595954130325265">立即選購</translation> <translation id="7276100255011548441">Chrome 會自動刪除超過 4 星期的主題。在您瀏覽同時,清單中可能會再次出現特定主題。您亦可封鎖不希望 Chrome 與網站分享的主題。進一步瞭解如何<ph name="BEGIN_LINK" />在 Chrome 中管理廣告私隱權。<ph name="END_LINK" /></translation> +<translation id="7278164481614262110">以 AI 製作主題</translation> <translation id="727952162645687754">下載錯誤</translation> <translation id="7280649757394340890">文字轉語音聲音設定</translation> <translation id="7280877790564589615">已要求許可</translation> @@ -8470,7 +8483,6 @@ <translation id="7610337976012700501">如要與這些聯絡人使用「<ph name="FEATURE_NAME" />」,請將與他們 Google 帳戶連結的電郵地址加入你的通訊錄。</translation> <translation id="7611713099524036757">Meta</translation> <translation id="7612050744024016345">所有擴充程式</translation> -<translation id="7612401678989660900">允許具備麥克風權限的應用程式和網站存取麥克風</translation> <translation id="7612497353238585898">用緊嘅網站</translation> <translation id="7612655942094160088">啟用連接手機嘅功能。</translation> <translation id="7612989789287281429">正在登入…</translation> @@ -8737,6 +8749,7 @@ <ph name="EXTENSION_NAME" /></translation> <translation id="7789963078219276159">起始網頁背景改咗做<ph name="CATEGORY" />。</translation> +<translation id="7791429245559955092">此應用程式將安裝在你目前使用的 Chrome 個人檔案中</translation> <translation id="7791436592012979144">已啟用反向捲動功能</translation> <translation id="7791543448312431591">新增</translation> <translation id="7792012425874949788">登入帳戶時發生錯誤</translation> @@ -9132,6 +9145,7 @@ <translation id="8089547136368562137">採用 Google 最嚴密的安全保護功能</translation> <translation id="8090234456044969073">讀取最常瀏覽的網站清單</translation> <translation id="8090513782447872344">您日後可隨時返回查看</translation> +<translation id="8090579562279016251">降低效能但提高 V8 防範攻擊的能力</translation> <translation id="8090686009202681725">以 AI 製作主題</translation> <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> 沒有回應</translation> <translation id="8094536695728193970">杏色</translation> @@ -9178,6 +9192,7 @@ <translation id="8124313775439841391">管理 ONC</translation> <translation id="8125651784723647184">分享密碼功能是由管理員管理</translation> <translation id="8129265306888404830">如要使用機構的電郵地址 (<ph name="EMAIL_DOMAIN" />),您需要進行企業註冊程序。如果此裝置是作私人用途,請登入個人 Google 帳戶。</translation> +<translation id="8130476996317833777">禁止網站使用 V8 優化工具</translation> <translation id="813082847718468539">檢視網站資料</translation> <translation id="8131740175452115882">確定</translation> <translation id="8133297578569873332">可以接受 - FM</translation> @@ -9561,6 +9576,7 @@ <translation id="8422748173858722634">IMEI</translation> <translation id="8422787418163030046">沒有紙匣</translation> <translation id="8424250197845498070">已由進階保護功能封鎖</translation> +<translation id="842501938276307467">試用實驗版 AI 功能</translation> <translation id="8425213833346101688">變更</translation> <translation id="8425492902634685834">固定至工作列</translation> <translation id="8425768983279799676">您可以使用 PIN 解鎖裝置。</translation> @@ -9715,6 +9731,7 @@ <ph name="BEGIN_PARAGRAPH2" />如要使用 <ph name="USER_EMAIL" />,請先登出 <ph name="DEVICE_TYPE" />,然後在登入畫面的底部選取 [新增使用者]。<ph name="END_PARAGRAPH2" /></translation> <translation id="85486688517848470">按住搜尋鍵即可切換最上排按鍵的執行動作</translation> <translation id="8549316893834449916">您將使用 Google 帳戶登入 Chromebook,Google 帳戶是您用於 Gmail、雲端硬碟、YouTube 和其他服務的帳戶。</translation> +<translation id="8550239873869577759">下載咗可疑嘅檔案</translation> <translation id="8551388862522347954">授權</translation> <translation id="8551588720239073785">日期和時間設定</translation> <translation id="8551647092888540776">離線時無法開啟「<ph name="FILE_NAMES" />」</translation> @@ -9770,6 +9787,7 @@ <translation id="8601206103050338563">TLS WWW 用戶端驗證</translation> <translation id="8602674530529411098">應用程式 (Beta 版本)</translation> <translation id="8602851771975208551">電腦中其他程式所新增的應用程式可能會變更 Chrome 的工作方式。</translation> +<translation id="8604513817270995005">協助在網絡上撰寫評論等短篇內容。系統會根據你的提示和網頁內容提供建議。如要使用此功能,請在文字框上按一下右鍵。</translation> <translation id="8605428685123651449">SQLite 記憶體使用量</translation> <translation id="8607171490667464784">處於閒置狀態且使用電池時</translation> <translation id="8607828412110648570">請確保藍牙裝置在附近,且已處於配對模式。請只與你信任的裝置配對。在此 Chromebook 上,所有帳戶都能看到已配對的裝置。<ph name="BEGIN_LINK_LEARN_MORE" />瞭解詳情<ph name="END_LINK_LEARN_MORE" /></translation> @@ -10281,6 +10299,7 @@ <translation id="8985191021574400965">歡迎在 Chromebook 上使用 Steam</translation> <translation id="8985264973231822211">曾於 <ph name="DEVICE_LAST_ACTIVATED_TIME" /> 天前在線</translation> <translation id="8985661493893822002">請連接互聯網,以便登入 <ph name="DEVICE_TYPE" />。</translation> +<translation id="8985661571449404298">下載咗唔安全嘅檔案</translation> <translation id="8986362086234534611">清除</translation> <translation id="8986494364107987395">自動將使用統計資料和當機報告傳送給 Google</translation> <translation id="8987305927843254629">每位使用者都可將體驗個人化,以確保資料私隱。</translation> @@ -10479,6 +10498,7 @@ <translation id="9116366756388192417">選擇主題</translation> <translation id="9116799625073598554">筆記應用程式</translation> <translation id="9117030152748022724">管理應用程式</translation> +<translation id="9119587891086680311">這些採用 AI 技術的功能仍處於初期開發階段,因此提供的建議不一定符合需求。</translation> <translation id="9120362425083889527">無法完成安裝。請再試一次或關閉此視窗</translation> <translation id="9120693811286642342"><ph name="BEGIN_PARAGRAPH1" />為獲得最佳體驗,請將 <ph name="DEVICE_OS" /> 安裝至內置磁碟。您亦可稍後從登入畫面進行安裝。<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />如果現在還不想安裝,可透過 USB 執行並試用 CloudReady 2.0。此操作會保留您現有的作業系統和資料,但系統的儲存空間和效能可能受限。<ph name="END_PARAGRAPH2" /></translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb index 2f153da..bb49998 100644 --- a/chrome/app/resources/generated_resources_zh-TW.xtb +++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -1100,6 +1100,7 @@ <translation id="1823768272150895732">字型</translation> <translation id="1823781806707127806">將現有瀏覽資料加入受管理的設定檔</translation> <translation id="18245044880483936">備份資料不會計入貴子女的雲端硬碟儲存空間配額。</translation> +<translation id="1825073796163165618">啟用連結</translation> <translation id="1825565032302550710">連接埠必須介於 1024 與 65535 之間</translation> <translation id="182577151972096764">最近瀏覽過的食譜</translation> <translation id="18260074040409954">你可以在任何裝置上使用儲存的密碼,這些密碼會儲存在 <ph name="EMAIL" /> 的 <ph name="GOOGLE_PASSWORD_MANAGER" />。</translation> @@ -1119,7 +1120,6 @@ <translation id="1832848789136765277">為確保你可以隨時存取同步處理的資料,請驗證你的身分</translation> <translation id="1834503245783133039">下載失敗:<ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">正在升級 Linux</translation> -<translation id="1835612721186505600">允許應用程式和網站存取相機</translation> <translation id="1838374766361614909">清除搜尋</translation> <translation id="1839021455997460752">你的電子郵件地址</translation> <translation id="1839540115464516994">在「<ph name="LOCATION" />」中顯示</translation> @@ -1338,6 +1338,7 @@ <translation id="1997616988432401742">您的憑證</translation> <translation id="1999115740519098545">起始畫面</translation> <translation id="2002109485265116295">即時</translation> +<translation id="2002160221914907025">實驗性 AI</translation> <translation id="2003130567827682533">如要啟用「<ph name="NAME" />」的數據服務,請先連上 Wi-Fi 網路</translation> <translation id="2004413981947727241">在任何裝置都能使用你的密碼</translation> <translation id="2004697686368036666">某些網站的功能可能無法運作</translation> @@ -1994,6 +1995,7 @@ <translation id="2482878487686419369">通知</translation> <translation id="2482895651873876648">分頁已移至包含「<ph name="GROUP_CONTENTS" />」的「<ph name="GROUP_NAME" />」群組</translation> <translation id="2483627560139625913">在 Chrome 瀏覽器設定中設定搜尋引擎</translation> +<translation id="2483698983806594329">下載的檔案未經過驗證</translation> <translation id="2484743711056182585">移除授權</translation> <translation id="2484909293434545162">使用 Cookie 的網站會顯示在這裡</translation> <translation id="2484959914739448251">如要從所有同步的裝置和 Google 帳戶中清除瀏覽資料,請<ph name="BEGIN_LINK" />輸入通關密語<ph name="END_LINK" />。</translation> @@ -2133,6 +2135,7 @@ <translation id="2589658397149952302">一律不顯示雲端硬碟檔案</translation> <translation id="25899519884572181">結束閱讀器模式</translation> <translation id="2593499352046705383">開始操作前,請確認資料已備份。安裝 <ph name="DEVICE_OS" /> 會覆寫硬碟的資料。如要瞭解詳情,請前往 g.co/flex/InstallGuide。</translation> +<translation id="2594832159966169099">管理 V8 安全性</translation> <translation id="2594999711683503743">搜尋 Google 或輸入網址</translation> <translation id="2597073208962000830">「鄰近分享」功能會透過藍牙掃描功能尋找附近的裝置。</translation> <translation id="2598710988533271874">有新版 Chrome 可安裝</translation> @@ -2312,6 +2315,7 @@ <translation id="2730647855013151888">加入所有個人資訊</translation> <translation id="2730901670247399077">表情符號建議</translation> <translation id="273093730430620027">這個網頁正在存取你的攝影機。</translation> +<translation id="2730956943403103181">不允許使用 V8 最佳化工具</translation> <translation id="2731392572903530958">重新開啟先前關閉的視窗(&E)</translation> <translation id="2731700343119398978">請稍候...</translation> <translation id="2731971182069536520">系統管理員會在你下次重新啟動裝置時執行一次性更新,而這項更新會刪除你的本機資料。</translation> @@ -2715,6 +2719,7 @@ <translation id="3025174326431589540">{COUNT,plural, =0{未儲存密碼}=1{已檢查 {COUNT} 個網站的密碼}other{已檢查 {COUNT} 個網站和應用程式的密碼}}</translation> <translation id="3027296729579831126">開啟鄰近分享功能</translation> <translation id="3027644380269727216">以你的網站活動做為依據。這項設定已開啟。</translation> +<translation id="3028445648481691885">已取消下載</translation> <translation id="3029276696788198026">不使用預先載入模式</translation> <translation id="3029466929721441205">在檔案櫃中顯示觸控筆工具</translation> <translation id="3029808567601324798">鎖定時間</translation> @@ -2820,6 +2825,7 @@ <translation id="3119948370277171654">你投放的內容/網址為何?</translation> <translation id="3122464029669770682">CPU</translation> <translation id="3122496702278727796">無法建立資料目錄</translation> +<translation id="3122810280993140148">根據你選擇的主題、情境、視覺風格和顏色建立自訂主題。如要使用這項功能,請開啟新分頁,然後按一下「自訂 Chrome」。</translation> <translation id="3122883569442693641">更多詳細資料</translation> <translation id="3124111068741548686">USER 控制代碼</translation> <translation id="3124332159330678621">根據自己的需求更新 Chrome 瀏覽器外觀</translation> @@ -2859,6 +2865,7 @@ <translation id="3159978855457658359">編輯裝置名稱</translation> <translation id="3160928651883997588">VPN 偏好設定</translation> <translation id="3161522574479303604">所有語言</translation> +<translation id="3162766632262775911">一律允許使用 V8 最佳化工具</translation> <translation id="3162853326462195145">學校帳戶</translation> <translation id="3162899666601560689">網站可使用 Cookie 改善瀏覽體驗,例如讓你保持登入狀態,或記住購物車中的商品</translation> <translation id="3163201441334626963">供應商 <ph name="VENDOR_ID" /> 提供的不明產品 <ph name="PRODUCT_ID" /></translation> @@ -3328,6 +3335,7 @@ <translation id="3547954654003013442">Proxy 設定</translation> <translation id="3548162552723420559">配合環境調整螢幕顏色</translation> <translation id="354949590254473526">輸入自訂 DNS 查詢網址</translation> +<translation id="3549827561154008969">已繼續下載</translation> <translation id="3550593477037018652">中斷與行動數據網路的連線</translation> <translation id="3550915441744863158">Chrome 會自動更新,隨時讓你使用最新版本</translation> <translation id="3551320343578183772">關閉分頁</translation> @@ -3477,6 +3485,7 @@ <translation id="3666196264870170605">Intel Wi-Fi NIC 偵錯轉儲</translation> <translation id="3670113805793654926">來自任何供應商的裝置</translation> <translation id="3670229581627177274">開啟藍牙功能</translation> +<translation id="3670480940339182416">網站可以使用 V8 最佳化工具</translation> <translation id="3672681487849735243">系統偵測到原廠錯誤</translation> <translation id="3673097791729989571">登入作業由 <ph name="SAML_DOMAIN" /> 代管</translation> <translation id="3673622964532248901">你的權限不足,無法投放到這部裝置。</translation> @@ -4567,7 +4576,6 @@ <translation id="4507128560633489176">已清除資料。</translation> <translation id="4507373251891673233">你已封鎖來自 <ph name="HOST" /> 的所有擴充功能</translation> <translation id="4507401683427517298">按一下「新增捷徑」</translation> -<translation id="4508150454272293946">允許應用程式和網頁使用連上這部裝置的攝影機。如果攝影機仍無法正常使用,建議你重新啟動應用程式或重新整理網頁。</translation> <translation id="450867954911715010">協助工具設定</translation> <translation id="4508765956121923607">檢視原始碼(&O)</translation> <translation id="4509277363725254222">當你分享<ph name="BEGIN_BOLD_USERNAME" />使用者名稱<ph name="END_BOLD_USERNAME" />和<ph name="BEGIN_BOLD_PASSWORD" />密碼<ph name="END_BOLD_PASSWORD" />副本後,家庭成員就能使用 Google 密碼管理工具填寫這類資訊</translation> @@ -4931,6 +4939,7 @@ <translation id="4800839971935185386">查看名稱和圖示的異動</translation> <translation id="4801448226354548035">隱藏帳戶</translation> <translation id="4801512016965057443">允許行動數據漫遊</translation> +<translation id="4803599447809045620">停用連結</translation> <translation id="4804311503028830356">點選向後箭頭即可查看其他選項</translation> <translation id="4804818685124855865">中斷連線</translation> <translation id="4804827417948292437">酪梨</translation> @@ -5722,6 +5731,7 @@ <translation id="5432223177001837288">如要分享音訊,請改為分享分頁</translation> <translation id="5432872710261597882">按讚可給予正面評價。</translation> <translation id="543338862236136125">修改密碼</translation> +<translation id="5433865420958136693">使用圖形加速功能 (如果可用)</translation> <translation id="5434065355175441495">PKCS #1 RSA 加密</translation> <translation id="5435274640623994081">啟用語音記錄功能</translation> <translation id="5435779377906857208">一律允許 <ph name="HOST" /> 存取你的位置資訊</translation> @@ -6456,6 +6466,7 @@ <translation id="6020431688553761150">伺服器未授予你這個資源的存取權。</translation> <translation id="6021293122504240352">系統已不再支援 <ph name="APPS" /> 個應用程式</translation> <translation id="6021969570711251331">交錯顯示</translation> +<translation id="602212068530399867">網址列和啟動器使用的搜尋引擎。</translation> <translation id="6022526133015258832">開啟全螢幕</translation> <translation id="6022659036123304283">打造專屬的 Chrome</translation> <translation id="6023643151125006053">這部裝置 (序號:<ph name="SERIAL_NUMBER" />) 已被 <ph name="SAML_DOMAIN" /> 管理員鎖定。</translation> @@ -7860,6 +7871,7 @@ <translation id="7131431455372521159">所有 TrackPoint 均已中斷連線</translation> <translation id="7131896909366247105">「<ph name="APP_NAME" />」等待中</translation> <translation id="7134098520442464001">縮小文字</translation> +<translation id="7134951043985383439">下載的檔案有危險</translation> <translation id="7135729336746831607">要開啟藍牙功能嗎?</translation> <translation id="7136694880210472378">設為預設</translation> <translation id="7137771508221868414">這會刪除網站儲存的資料 (共 <ph name="TOTAL_USAGE" />),以及所安裝的應用程式</translation> @@ -8027,6 +8039,7 @@ <translation id="727441411541283857"><ph name="PERCENTAGE" />% - <ph name="TIME" />後充飽</translation> <translation id="727595954130325265">立即選購</translation> <translation id="7276100255011548441">Chrome 會自動刪除 4 週前的主題,隨著你持續瀏覽內容,清單中可能會再次出現特定主題。你也可以封鎖不希望 Chrome 提供給網站的主題。進一步瞭解如何<ph name="BEGIN_LINK" />在 Chrome 中管理廣告隱私權<ph name="END_LINK" />。</translation> +<translation id="7278164481614262110">使用 AI 建立主題</translation> <translation id="727952162645687754">下載錯誤</translation> <translation id="7280649757394340890">文字轉語音聲音設定</translation> <translation id="7280877790564589615">要求權限</translation> @@ -8456,7 +8469,6 @@ <translation id="7610337976012700501">如要與這些聯絡人使用<ph name="FEATURE_NAME" />功能,請將對方用來連結 Google 帳戶的電子郵件地址,加到聯絡人清單。</translation> <translation id="7611713099524036757">Meta</translation> <translation id="7612050744024016345">所有擴充功能</translation> -<translation id="7612401678989660900">允許應用程式和網站存取麥克風</translation> <translation id="7612497353238585898">使用中的網站</translation> <translation id="7612655942094160088">啟用已連結的手機功能。</translation> <translation id="7612989789287281429">正在登入…</translation> @@ -8723,6 +8735,7 @@ <ph name="EXTENSION_NAME" /></translation> <translation id="7789963078219276159">起始網頁背景已變更為<ph name="CATEGORY" />。</translation> +<translation id="7791429245559955092">這個應用程式將安裝在目前使用的 Chrome 設定檔</translation> <translation id="7791436592012979144">已啟用反向捲動功能</translation> <translation id="7791543448312431591">新增</translation> <translation id="7792012425874949788">登入帳戶時發生錯誤</translation> @@ -9118,6 +9131,7 @@ <translation id="8089547136368562137">採用 Google 最嚴密的安全防護機制</translation> <translation id="8090234456044969073">讀取最常造訪的網站清單</translation> <translation id="8090513782447872344">你可以日後隨時返回查看</translation> +<translation id="8090579562279016251">降低效能但提高 V8 防範攻擊的能力</translation> <translation id="8090686009202681725">使用 AI 建立主題</translation> <translation id="8093359998839330381">「<ph name="PLUGIN_NAME" />」無回應</translation> <translation id="8094536695728193970">杏黃色</translation> @@ -9164,6 +9178,7 @@ <translation id="8124313775439841391">管理化 ONC</translation> <translation id="8125651784723647184">分享密碼功能是由系統管理員管理</translation> <translation id="8129265306888404830">如要使用貴機構的電子郵件地址 (<ph name="EMAIL_DOMAIN" />),你必須進行企業註冊程序。假如這是你的個人裝置,請登入個人 Google 帳戶。</translation> +<translation id="8130476996317833777">禁止網站使用 V8 最佳化工具</translation> <translation id="813082847718468539">查看網站資訊</translation> <translation id="8131740175452115882">確認</translation> <translation id="8133297578569873332">可以接受 - FM</translation> @@ -9547,6 +9562,7 @@ <translation id="8422748173858722634">IMEI</translation> <translation id="8422787418163030046">缺少紙匣</translation> <translation id="8424250197845498070">遭到進階保護功能封鎖</translation> +<translation id="842501938276307467">試用實驗性 AI 功能</translation> <translation id="8425213833346101688">變更</translation> <translation id="8425492902634685834">固定至工作列</translation> <translation id="8425768983279799676">你可以使用 PIN 碼將裝置解鎖。</translation> @@ -9701,6 +9717,7 @@ <ph name="BEGIN_PARAGRAPH2" />如要使用 <ph name="USER_EMAIL" />,請先登出 <ph name="DEVICE_TYPE" />,然後在登入畫面底部選取「新增使用者」。<ph name="END_PARAGRAPH2" /></translation> <translation id="85486688517848470">按住搜尋鍵即可切換最上排按鍵的行為</translation> <translation id="8549316893834449916">你將使用 Google 帳戶登入 Chromebook,Google 帳戶是你用於 Gmail、雲端硬碟、YouTube 和其他服務的帳戶。</translation> +<translation id="8550239873869577759">下載的檔案很可疑</translation> <translation id="8551388862522347954">授權</translation> <translation id="8551588720239073785">日期和時間設定</translation> <translation id="8551647092888540776">離線時無法開啟「<ph name="FILE_NAMES" />」</translation> @@ -9756,6 +9773,7 @@ <translation id="8601206103050338563">TLS WWW 用戶端驗證</translation> <translation id="8602674530529411098">應用程式 (Beta 版)</translation> <translation id="8602851771975208551">電腦中其他程式所新增的應用程式可能會變更 Chrome 的運作方式。</translation> +<translation id="8604513817270995005">協助在網路上撰寫評論等短篇內容。系統會根據你的提示和網頁內容提供建議。如要使用這項功能,請在文字方塊上按一下滑鼠右鍵。</translation> <translation id="8605428685123651449">SQLite 記憶體使用量</translation> <translation id="8607171490667464784">處於閒置狀態且以電池供電時</translation> <translation id="8607828412110648570">請確認你的藍牙裝置放在附近,且處於配對模式。只配對你信任的裝置。在這部 Chromebook 上,所有帳戶都能看到配對的裝置。<ph name="BEGIN_LINK_LEARN_MORE" />瞭解詳情<ph name="END_LINK_LEARN_MORE" /></translation> @@ -10267,6 +10285,7 @@ <translation id="8985191021574400965">歡迎在 Chromebook 上使用 Steam</translation> <translation id="8985264973231822211">上次使用時間:<ph name="DEVICE_LAST_ACTIVATED_TIME" /> 天前</translation> <translation id="8985661493893822002">請連上網際網路以登入 <ph name="DEVICE_TYPE" />。</translation> +<translation id="8985661571449404298">下載的檔案不安全</translation> <translation id="8986362086234534611">清除</translation> <translation id="8986494364107987395">自動傳送使用統計資料及當機報告給 Google</translation> <translation id="8987305927843254629">每位使用者都可以建立個人專屬的體驗,並維護資料的私密性。</translation> @@ -10465,6 +10484,7 @@ <translation id="9116366756388192417">選擇主題</translation> <translation id="9116799625073598554">筆記應用程式</translation> <translation id="9117030152748022724">管理應用程式</translation> +<translation id="9119587891086680311">這些功能採用 AI 技術,但目前處於早期開發階段,因此提供的建議不一定符合需求。</translation> <translation id="9120362425083889527">無法完成安裝。請再試一次或關閉這個視窗</translation> <translation id="9120693811286642342"><ph name="BEGIN_PARAGRAPH1" />為獲得最佳體驗,請將 <ph name="DEVICE_OS" /> 安裝至內部磁碟。你也可以之後再透過登入畫面安裝。<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />如果現在還不想安裝,可透過 USB 執行並試用此作業系統。這種做法可保留現有作業系統和資料,但儲存空間及效能可能會有所限制。<ph name="END_PARAGRAPH2" /></translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb index 2267bf2..4b33648 100644 --- a/chrome/app/resources/generated_resources_zu.xtb +++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -1130,7 +1130,6 @@ <translation id="1832848789136765277">Ukuze uqiniseke ukuthi uhlala ufinyelela idatha yakho yokuvumelanisa, qinisekisa ukuthi uwena</translation> <translation id="1834503245783133039">Ukulanda kuphumelele: <ph name="FILE_NAME" /></translation> <translation id="1835261175655098052">Ithuthukisa i-Linux</translation> -<translation id="1835612721186505600">Vumela ukufinyelela kwama-app namawebhusayithi ngemvume yekhamera</translation> <translation id="1838374766361614909">Sula usesho</translation> <translation id="1839021455997460752">Ikheli lakho le-imeyili</translation> <translation id="1839540115464516994">Bonisa e-<ph name="LOCATION" /></translation> @@ -4594,7 +4593,6 @@ <translation id="4507128560633489176">Idatha isuliwe.</translation> <translation id="4507373251891673233">Uvimbe zonke izandiso ezisuka ku-<ph name="HOST" /></translation> <translation id="4507401683427517298">Chofoza okuthi “Engeza Isinqamuleli”</translation> -<translation id="4508150454272293946">Vumela ama-app namakhasi ewebhu ukuthi asebenzise amakhamera axhunywe kule divayisi. Uma usenenkinga ngekhamera yakho, zama ukuqala kabusha i-app noma uvuselele ikhasi lewebhu.</translation> <translation id="450867954911715010">Izulungiselelo zokufinyelela</translation> <translation id="4508765956121923607">Buka u&mthombo</translation> <translation id="4509277363725254222">Lapho wabelana ngekhophi <ph name="BEGIN_BOLD_USERNAME" />yegama lakho lomsebenzisi<ph name="END_BOLD_USERNAME" /> kanye <ph name="BEGIN_BOLD_PASSWORD" />nephasiwedi<ph name="END_BOLD_PASSWORD" />, ilungu lomndeni wakho lingakwazi ukuwagcwalisa lisebenzisa Umphathi Wephasiwedi Ye-Google</translation> @@ -8494,7 +8492,6 @@ <translation id="7610337976012700501">Ukuze usebenzise i-<ph name="FEATURE_NAME" /> nalaba oxhumana nabo, engeza ikheli le-imeyili elilinkiwe ne-Google Account yabo koxhumana nabo.</translation> <translation id="7611713099524036757">i-meta</translation> <translation id="7612050744024016345">Izandiso Zonke</translation> -<translation id="7612401678989660900">Vumela ukufinyelela kwama-app namawebhusayithi ngemvume yemakrofoni</translation> <translation id="7612497353238585898">Isayithi elisebenzayo</translation> <translation id="7612655942094160088">Nika amandla izici zefoni exhunyiwe.</translation> <translation id="7612989789287281429">Ikungenisa ngemvume…</translation>
diff --git a/chrome/app/resources/google_chrome_strings_af.xtb b/chrome/app/resources/google_chrome_strings_af.xtb index d12b4666..91555893 100644 --- a/chrome/app/resources/google_chrome_strings_af.xtb +++ b/chrome/app/resources/google_chrome_strings_af.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">Kon nie aan die internet koppel nie. As jy ’n brandmuur gebruik, moet jy <ph name="PRODUCT_EXE_NAME" /> asseblief op die toelaatlys plaas.</translation> <translation id="2131230230468101642">Ons vee outomaties jou belangstellings uit wat ouer as 4 weke is om jou privaatheid te beskerm. Terwyl jy aanhou blaai, kan ’n belangstelling weer op die lys verskyn. Of jy kan belangstellings wat jy wil hê Chrome moenie oorweeg nie, verwyder.</translation> <translation id="2139300032719313227">Herbegin Chrome-bedryfstelsel</translation> -<translation id="2146761408396054429">Hierdie lêer kan gevaarlik wees<ph name="LINE_BREAK" />Chrome kan hierdie aflaai vir jou nagaan as jy die wagwoord verskaf – jou wagwoord bly op jou toestel</translation> <translation id="2151406531797534936">Herbegin Chrome asseblief nou</translation> <translation id="2174917724755363426">Installering is nie afgehandel nie. Is jy seker jy wil kanselleer?</translation> <translation id="2190166659037789668">Opdateringkontroleringfout: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_am.xtb b/chrome/app/resources/google_chrome_strings_am.xtb index 2f5c748..d288b50 100644 --- a/chrome/app/resources/google_chrome_strings_am.xtb +++ b/chrome/app/resources/google_chrome_strings_am.xtb
@@ -73,7 +73,6 @@ <translation id="2130870084309816036">ከበይነመረብ ጋር መገናኘት አልተቻለም። ኬላ የሚጠቀሙ ከሆነ እባክዎ የተፈቀዱ ዝርዝር <ph name="PRODUCT_EXE_NAME" />ን ይጠቀሙ።</translation> <translation id="2131230230468101642">የእርስዎን ግላዊነት ለመጠበቅ ከ4 ሳምንታት በላይ የቆዩ ዝንባሌዎችዎን በራስ-ሰር እንሰርዛለን። ማሰስዎን በሚቀጥሉበት ጊዜ ዝንባሌ እንደገና በዝርዝሩ ላይ ሊታይ ይችላል። ወይም Chrome ከግምት ውስጥ እንዳያስገባቸው የማይፈልጓቸውን ዝንባሌዎች ማስወገድ ይችላሉ።</translation> <translation id="2139300032719313227">ChromeOSን ዳግም አስጀምር</translation> -<translation id="2146761408396054429">ይህ ፋይል አደገኛ ሊሆን ይችላል<ph name="LINE_BREAK" />የይለፍ ቃሉን ካቀረቡ Chrome ይህን ውርድ ሊፈትሽልዎ ይችላል — የይለፍ ቃልዎ በመሣሪያዎ ላይ ይቆያል</translation> <translation id="2151406531797534936">እባክዎ Chrome ን አሁን ዳግም ያስጀምሩ</translation> <translation id="2174917724755363426">መጫኑ አልተጠናቀቀም። እርግጠኛ ነዎት መሰረዝ ይፈልጋሉ?</translation> <translation id="2190166659037789668">የዝማኔ ፍተሻ ስህተት፦ <ph name="UPDATE_CHECK_ERROR" />።</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ar.xtb b/chrome/app/resources/google_chrome_strings_ar.xtb index f512cf5c..c1c6a3a5 100644 --- a/chrome/app/resources/google_chrome_strings_ar.xtb +++ b/chrome/app/resources/google_chrome_strings_ar.xtb
@@ -72,7 +72,6 @@ <translation id="2130870084309816036">يتعذّر الاتصال بالإنترنت. في حال استخدام جدار حماية، يُرجى إضافة <ph name="PRODUCT_EXE_NAME" /> إلى القائمة المسموح بها.</translation> <translation id="2131230230468101642">لحماية خصوصيتك، نحذف تلقائيًا اهتماماتك التي يمر عليها أكثر من أربعة أسابيع. وفي حال بحثت عن أحد الاهتمامات مرّة آخرى، سيظهر في القائمة من جديد. يمكنك إزالة الاهتمامات التي لا تريد أن يضيفها Chrome إلى قائمة اهتماماتك.</translation> <translation id="2139300032719313227">إعادة تشغيل نظام التشغيل Chrome</translation> -<translation id="2146761408396054429">قد يكون هذا الملف خطيرًا<ph name="LINE_BREAK" />بإمكان Chrome التحقّق من عملية التنزيل هذه في حال أدخلت كلمة المرور، علمًا بأنّه لن يتم مشاركة هذه الكلمة خارج نطاق جهازك.</translation> <translation id="2151406531797534936">يُرجى إعادة تشغيل Chrome الآن</translation> <translation id="2174917724755363426">لم يكتمل التثبيت. هل تريد فعلاً الإلغاء؟</translation> <translation id="2190166659037789668">خطأ في عملية التحقق من التحديث: <ph name="UPDATE_CHECK_ERROR" />.</translation> @@ -197,6 +196,7 @@ <translation id="4053720452172726777">تخصيص Google Chrome والتحكم فيه</translation> <translation id="4106587138345390261">يعمل Chrome على استكشاف ميزات جديدة تتيح للمواقع الإلكترونية توفير تجربة التصفّح ذاتها باستخدام قدر أقل من المعلومات.</translation> <translation id="4110895483821904099">إعداد ملفك الشخصي الجديد على متصفِّح Chrome</translation> +<translation id="4128488089242627000">سيعمل Chrome بشكل أسرع ومن المفترض أن تعمل الميزات التي تستخدِم JavaScript على النحو المطلوب (خيار يُنصَح به).</translation> <translation id="4147555960264124640">إنك تسجل الدخول باستخدام حساب مُدار وتمنح المشرف إمكانية التحكم في ملفك الشخصي في Google Chrome. وسيتم ربط بيانات Chrome التابعة لك، مثل التطبيقات والإشارات المرجعية والسجلّ وكلمات المرور والإعدادات الأخرى بالمستخدم <ph name="USER_NAME" />. وستتمكن من حذف هذه البيانات عبر لوحة تحكم حسابات Google، ولكنك لن تتمكن من إقران هذه البيانات بحساب آخر. <ph name="LEARN_MORE" /></translation> <translation id="4148957013307229264">جارٍ التثبيت...</translation> <translation id="4149882025268051530">فشلت أداة المثبِّت في فك ضغط الأرشيف. يُرجى تنزيل Google Chrome مرة أخرى.</translation> @@ -243,6 +243,7 @@ <translation id="4793679854893018356">تعرّف على الطريقة التي يحافظ بها Chrome على أمانك</translation> <translation id="4828579605166583682">يحاول Google Chrome استبدال كلمات المرور الحالية. للسماح بذلك، يُرجى كتابة كلمة المرور المستخدَمة في Windows.</translation> <translation id="4842397268809523050">تعذَّر على ChromeOS Flex مزامنة البيانات لأنّ ميزة المزامنة غير متاحة لنطاقك.</translation> +<translation id="4873692836499071887">للحصول على تحديثات Google Chrome في المستقبل، يجب استخدام جهاز يعمل بنظام التشغيل macOS 11 أو إصدار أحدث. ويعمل هذا الكمبيوتر بنظام التشغيل macOS 10.15.</translation> <translation id="4873783916118289636">يمكنك مراجعة العناصر الرئيسية للتحكّم في الخصوصية والأمان في Chrome.</translation> <translation id="4891791193823137474">دع Google Chrome يعمل في الخلفية</translation> <translation id="4895437082222824641">فتح الرابط في علامة تبويب جديدة في Chrome</translation> @@ -349,6 +350,7 @@ <translation id="677276454032249905">هل تريد الخروج من Chrome على أي حال؟</translation> <translation id="6794858689789885890">حذف بيانات الموقع الإلكتروني من جهازك دائمًا عند إغلاق Chrome</translation> <translation id="683440813066116847">قاعدة الوارد إلى Google Chrome Canary للسماح بحركة مرور mDNS.</translation> +<translation id="6851981911629679515">يمكنك تفعيل ميزة "الحماية الإضافية" في محرك JavaScript وWebAssembly من Chrome.</translation> <translation id="6881299373831449287">جارٍ تحديث Chrome.</translation> <translation id="6885412569789873916">تطبيقات الإصدار التجريبي من Chrome</translation> <translation id="6933858244219479645">نظام التشغيل Chrome</translation> @@ -468,6 +470,7 @@ <translation id="873133009373065397">يتعذَّر على Google Chrome تحديد المتصفح التلقائي أو تعيينه</translation> <translation id="8765470054473112089">عند الكتابة في شريط العناوين أو مربّع البحث، يرسل Chrome ما تكتبه إلى محرك البحث التلقائي للحصول على اقتراحات أفضل. يتم إيقاف هذا الإعداد في "وضع التصفّح المتخفي".</translation> <translation id="878572486461146056">حدث الخطأ التالي في التثبيت لأنّ مشرف شبكتك طبَّق سياسة مجموعة تمنع إجراء التثبيت: <ph name="INSTALL_ERROR" /></translation> +<translation id="8801657293260363985">V8 هو محرك JavaScript وWebAssembly من Chrome يُستخدَم لتحسين أداء المواقع الإلكترونية.</translation> <translation id="8821043148920470810">للحصول على تحديثات Google Chrome في المستقبل، يجب استخدام جهاز يعمل بنظام التشغيل Windows 10 أو إصدار أحدث. يعمل هذا الكمبيوتر بنظام التشغيل Windows 7.</translation> <translation id="8823341990149967727">إصدار Chrome قديم</translation> <translation id="8825634023950448068">لحماية خصوصيتك، نحذف تلقائيًا اهتماماتك التي يمر عليها أكثر من أربعة أسابيع. وفي حال بحثت عن أحد الاهتمامات مرّة آخرى، سيظهر في القائمة من جديد. يمكنك إزالة أي اهتمام إذا كان تقدير Chrome غير صحيح بشأنه، أو إذا كنت لا تريد رؤية إعلانات معيّنة.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_as.xtb b/chrome/app/resources/google_chrome_strings_as.xtb index 654de94..8d90c26c 100644 --- a/chrome/app/resources/google_chrome_strings_as.xtb +++ b/chrome/app/resources/google_chrome_strings_as.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">ইণ্টাৰনেটৰ লগত সংযোগ কৰিব পৰা নাই। আপুনি যদি কোনো ফায়াৰৱাল ব্যৱহাৰ কৰে, অনুগ্ৰহ কৰি <ph name="PRODUCT_EXE_NAME" />ক অনুমতি দিয়া সূচীত অন্তৰ্ভুক্ত কৰক।</translation> <translation id="2131230230468101642">আপোনাৰ গোপনীয়তা সুৰক্ষিত কৰিবলৈ, আমি ৪ সপ্তাহতকৈ পুৰণি হোৱা আপোনাৰ আগ্ৰহসমূহ স্বয়ংক্ৰিয়ভাৱে মচোঁ। আপুনি ব্ৰাউজ কৰি থাকিলে, সূচীখনত পুনৰ কোনো এটা আগ্ৰহ প্ৰদৰ্শিত হ’ব পাৰে। অথবা আপুনি যিবোৰ আগ্ৰহ Chromeএ বিবেচনা কৰাটো নিবিচাৰে সেইবোৰ আঁতৰাব পাৰে।</translation> <translation id="2139300032719313227">ChromeOS ৰিষ্টাৰ্ট কৰক</translation> -<translation id="2146761408396054429">এই ফাইলটো ক্ষতিকাৰক হ’ব পাৰে<ph name="LINE_BREAK" />যদি আপুনি পাছৱৰ্ডটো প্ৰদান কৰে Chromeএ এই ডাউনল’ডটো আপোনাৰ বাবে পৰীক্ষা কৰিব পাৰে — আপোনাৰ পাছৱৰ্ডটো আপোনাৰ ডিভাইচত থাকে</translation> <translation id="2151406531797534936">অনুগ্ৰহ কৰি Chrome এতিয়া ৰিষ্টাৰ্ট কৰক</translation> <translation id="2174917724755363426">ইনষ্টল কৰাটো সম্পূৰ্ণ হোৱা নাই। আপুনি বাতিল কৰিব বিচাৰে বুলি নিশ্চিতনে?</translation> <translation id="2190166659037789668">আপডে’ট পৰীক্ষা কৰা সম্পৰ্কীয় আসোঁৱাহ: <ph name="UPDATE_CHECK_ERROR" />।</translation>
diff --git a/chrome/app/resources/google_chrome_strings_az.xtb b/chrome/app/resources/google_chrome_strings_az.xtb index ccd69cf3..ad834ec0 100644 --- a/chrome/app/resources/google_chrome_strings_az.xtb +++ b/chrome/app/resources/google_chrome_strings_az.xtb
@@ -71,7 +71,6 @@ <translation id="2130870084309816036">İnternetə qoşulmaq olmur. Qoruyucu divar istifadə edirsinizsə, <ph name="PRODUCT_EXE_NAME" /> məhsulunu icazə verilənlər siyahısına əlavə edin.</translation> <translation id="2131230230468101642">Məxfiliyinizi qorumaq üçün 4 həftədən köhnə maraqlarınızı avtomatik silirik. Baxmağa davam etdikcə, maraq siyahıda yenidən görünə bilər. Və ya Chrome'un nəzərə almasını istəmədiyiniz maraqları silə bilərsiniz.</translation> <translation id="2139300032719313227">ChromeOS'i yenidən başladın</translation> -<translation id="2146761408396054429">Bu fayl təhlükəli ola bilər<ph name="LINE_BREAK" />Parol təmin etsəniz, Chrome bu endirməni yoxlaya bilər (parol cihazda qalır)</translation> <translation id="2151406531797534936">İndi Chrome'u yenidən başladın</translation> <translation id="2174917724755363426">Quraşdırma tamamlanmayıb. Ləğv etmək istədiyinizə əminsiniz?</translation> <translation id="2190166659037789668">Yeniləmə yoxlaması xətası: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_be.xtb b/chrome/app/resources/google_chrome_strings_be.xtb index 03fe30d..f6a0797 100644 --- a/chrome/app/resources/google_chrome_strings_be.xtb +++ b/chrome/app/resources/google_chrome_strings_be.xtb
@@ -73,7 +73,6 @@ <translation id="2130870084309816036">Не ўдалося падключыцца да інтэрнэту. Калі вы выкарыстоўваеце брандмаўар, дадайце <ph name="PRODUCT_EXE_NAME" /> у белы спіс.</translation> <translation id="2131230230468101642">У мэтах аховы вашай прыватнасці старэйшыя за 4 тыдні звесткі пра вашы інтарэсы аўтаматычна выдаляюцца. Па меры прагляду сайтаў у інтэрнэце пэўныя інтарэсы могуць з'яўляцца ў спісе зноў. Вы таксама можаце выдаляць пэўныя інтарэсы, калі не хочаце, каб браўзер Chrome іх улічваў.</translation> <translation id="2139300032719313227">Перазапусціце Chrome OS</translation> -<translation id="2146761408396054429">Гэты файл можа быць небяспечным<ph name="LINE_BREAK" />Chrome можа праверыць спампоўку, калі вы ўведзяце пароль (ён застанецца на прыладзе)</translation> <translation id="2151406531797534936">Перазапусціце Chrome</translation> <translation id="2174917724755363426">Усталяванне не завершана. Вы сапраўды хочаце скасаваць яго?</translation> <translation id="2190166659037789668">Не ўдалося праверыць наяўнасць абнаўленняў: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bg.xtb b/chrome/app/resources/google_chrome_strings_bg.xtb index 2f2cdf4..74f17b2 100644 --- a/chrome/app/resources/google_chrome_strings_bg.xtb +++ b/chrome/app/resources/google_chrome_strings_bg.xtb
@@ -72,7 +72,6 @@ <translation id="2130870084309816036">Не може да се установи връзка с интернет. Ако използвате защитна стена, моля, поставете <ph name="PRODUCT_EXE_NAME" /> в списъка на разрешените.</translation> <translation id="2131230230468101642">С цел защита на поверителността ви автоматично изтриваме интересите, които са по-стари от 4 седмици. Докато сърфирате, даден интерес може отново да се покаже в списъка. Имате възможност също да премахвате интересите, които не искате Chrome да взема предвид.</translation> <translation id="2139300032719313227">Рестартиране на Chrome OS</translation> -<translation id="2146761408396054429">Възможно е този файл да е опасен<ph name="LINE_BREAK" />Chrome може да провери това изтегляне, ако предоставите паролата – тя не напуска устройството ви</translation> <translation id="2151406531797534936">Моля, рестартирайте Chrome сега</translation> <translation id="2174917724755363426">Инсталирането не е завършило. Наистина ли искате да го анулирате?</translation> <translation id="2190166659037789668">Грешка при проверката за актуализации: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bn.xtb b/chrome/app/resources/google_chrome_strings_bn.xtb index 938a41c..26a5c2c 100644 --- a/chrome/app/resources/google_chrome_strings_bn.xtb +++ b/chrome/app/resources/google_chrome_strings_bn.xtb
@@ -72,7 +72,6 @@ <translation id="2130870084309816036">ইন্টারনেটের সাথে কানেক্ট করা যায়নি। আপনি ফায়ারওয়াল ব্যবহার করলে, <ph name="PRODUCT_EXE_NAME" />-কে সাদাতালিকাভুক্ত করুন।</translation> <translation id="2131230230468101642">আপনার গোপনীয়তা রক্ষা করতে, আমরা ৪ সপ্তাহের বেশি পুরনো আপনার আগ্রহগুলি অটোমেটিক মুছে ফেলি। আপনি ব্রাউজিং চালিয়ে যাওয়ার সাথে সাথে তালিকায় আবার আগ্রহগুলি দেখা যেতে পারে। অথবা, আপনি যে আগ্রহগুলি Chrome বিবেচনা করুক বলে চান না সেগুলি সরিয়ে দিতে পারেন।</translation> <translation id="2139300032719313227">ChromeOS রিস্টার্ট করুন</translation> -<translation id="2146761408396054429">এই ফাইল বিপজ্জনক হতে পারে<ph name="LINE_BREAK" />আপনি নিজের পাসওয়ার্ড দিলে Chrome আপনার জন্য এই ডাউনলোড চেক করতে পারবে — আপনার পাসওয়ার্ড ডিভাইসে রয়েছে</translation> <translation id="2151406531797534936">এখনই Chrome রিস্টার্ট করুন</translation> <translation id="2174917724755363426">ইনস্টলেশন শেষ হয়নি। আপনি কি সত্যিই বাতিল করতে চান?</translation> <translation id="2190166659037789668">আপডেট চেক করার সময় সমস্যা হয়েছে: <ph name="UPDATE_CHECK_ERROR" />।</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bs.xtb b/chrome/app/resources/google_chrome_strings_bs.xtb index 543489a2..270be9b 100644 --- a/chrome/app/resources/google_chrome_strings_bs.xtb +++ b/chrome/app/resources/google_chrome_strings_bs.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">Nije moguće povezati se s internetom. Ako koristite zaštitni zid, omogućite listu dozvoljenih <ph name="PRODUCT_EXE_NAME" />.</translation> <translation id="2131230230468101642">Da zaštitimo vašu privatnost, automatski brišemo interesovanja koja su starija od 4 sedmice. Kada nastavite koristiti preglednik, interesovanje se može ponovo pojaviti na listi. Ili možete ukloniti interesovanja koja ne želite dati Chromeu na razmatranje.</translation> <translation id="2139300032719313227">Ponovo pokrenite ChromeOS</translation> -<translation id="2146761408396054429">Fajl je možda opasan<ph name="LINE_BREAK" />Chrome može za vas provjeriti ovo preuzimanje ako navedete lozinku — ona ostaje na uređaju</translation> <translation id="2151406531797534936">Ponovo pokrenite Chrome sada</translation> <translation id="2174917724755363426">Instalacija nije završena. Jeste li sigurni da želite otkazati?</translation> <translation id="2190166659037789668">Greška provjere ažuriranja: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ca.xtb b/chrome/app/resources/google_chrome_strings_ca.xtb index 2ba4668a..831ca2b 100644 --- a/chrome/app/resources/google_chrome_strings_ca.xtb +++ b/chrome/app/resources/google_chrome_strings_ca.xtb
@@ -70,7 +70,6 @@ <translation id="2130870084309816036">No es pot connectar a Internet. Si fas servir un tallafoc, afegeix <ph name="PRODUCT_EXE_NAME" /> a la llista d'accés permès.</translation> <translation id="2131230230468101642">Amb la finalitat de protegir la teva privadesa, suprimim automàticament els interessos que tenen més de 4 setmanes. A mesura que continuïs navegant, és possible que torni a aparèixer un interès a la llista. També pots suprimir els interessos que no vulguis que Chrome tingui en compte.</translation> <translation id="2139300032719313227">Reinicia Chrome OS</translation> -<translation id="2146761408396054429">Aquest fitxer pot ser perillós<ph name="LINE_BREAK" />Chrome pot comprovar aquesta baixada per tu si proporciones la contrasenya (la contrasenya no sortirà del dispositiu)</translation> <translation id="2151406531797534936">Reinicia Chrome ara</translation> <translation id="2174917724755363426">La instal·lació no s'ha completat. Confirmes que vols cancel·lar-la?</translation> <translation id="2190166659037789668">Error de comprovació d'actualització: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_cs.xtb b/chrome/app/resources/google_chrome_strings_cs.xtb index 2eb6ae5..a2796ad 100644 --- a/chrome/app/resources/google_chrome_strings_cs.xtb +++ b/chrome/app/resources/google_chrome_strings_cs.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">Nelze se připojit k internetu. Pokud používáte firewall, přidejte <ph name="PRODUCT_EXE_NAME" /> na seznam povolených.</translation> <translation id="2131230230468101642">Abychom chránili vaše soukromí, vaše zájmy starší než 4 měsíce automaticky mažeme. Jak budete pracovat s internetem, zájmy se mohou na seznamu znovu objevit. Pokud se zájmy nemají zohledňovat, můžete je z Chromu odstranit.</translation> <translation id="2139300032719313227">Restartujte systém ChromeOS</translation> -<translation id="2146761408396054429">Tento soubor může být nebezpečný.<ph name="LINE_BREAK" />Pokud zadáte heslo, může Chrome toto stažení zkontrolovat za vás – heslo zůstane ve vašem zařízení</translation> <translation id="2151406531797534936">Restartujte Chrome</translation> <translation id="2174917724755363426">Instalace není dokončena. Opravdu ji chcete zrušit?</translation> <translation id="2190166659037789668">Chyba kontroly aktualizace: <ph name="UPDATE_CHECK_ERROR" />.</translation> @@ -199,6 +198,7 @@ <translation id="4053720452172726777">Přizpůsobit a ovládat Google Chrome</translation> <translation id="4106587138345390261">Chrome zkoumá nové funkce, které webům umožňují poskytovat stejné prostředí a využívat při tom méně vašich dat a údajů</translation> <translation id="4110895483821904099">Nastavit nový profil prohlížeče Chrome</translation> +<translation id="4128488089242627000">Chrome běží rychleji a funkce využívající JavaScript by měly fungovat tak, jak byly navrženy (doporučeno)</translation> <translation id="4147555960264124640">Přihlašujete se pomocí spravovaného účtu a poskytujete jeho správci kontrolu nad vaším profilem Google Chrome. Vaše údaje prohlížeče Chrome, například aplikace, záložky, historie, hesla a jiná nastavení, budou trvale přidružena k účtu <ph name="USER_NAME" />. Tyto údaje budete moci smazat pomocí Hlavního panelu Google, ale nebudete je moci přidružit k jinému účtu. <ph name="LEARN_MORE" /></translation> <translation id="4148957013307229264">Instalace...</translation> <translation id="4149882025268051530">Instalačnímu programu se nepodařilo rozbalit archiv. Stáhněte prosím Google Chrome ještě jednou.</translation> @@ -245,6 +245,7 @@ <translation id="4793679854893018356">Přečtěte si, jak vás Chrome chrání</translation> <translation id="4828579605166583682">Google Chrome se pokouší nahradit stávající hesla. Tato akce vyžaduje zadání hesla systému Windows.</translation> <translation id="4842397268809523050">Systém ChromeOS Flex nemůže synchronizovat data, protože ve vaší doméně není k dispozici Synchronizace.</translation> +<translation id="4873692836499071887">Pokud chcete v budoucnu dostávat aktualizace prohlížeče Google Chrome, budete potřebovat systém MacOS 11 nebo novější. Tento počítač používá systém macOS 10.15.</translation> <translation id="4873783916118289636">Zkontrolujte klíčové ovládací prvky ochrany soukromí a zabezpečení v Chromu</translation> <translation id="4891791193823137474">Nechat aplikaci Google Chrome spuštěnou na pozadí</translation> <translation id="4895437082222824641">Otevřít odkaz na nové kar&tě Chrome</translation> @@ -353,6 +354,7 @@ <translation id="677276454032249905">Přesto Chrome ukončit?</translation> <translation id="6794858689789885890">Při zavření prohlížeče Chrome ze zařízení vždy vymazat data webů</translation> <translation id="683440813066116847">Pravidlo příchozího provozu pro aplikaci Google Chrome Canary, které povolí provoz mDNS.</translation> +<translation id="6851981911629679515">Zapnout dodatečnou ochranu modulu prohlížeče Chrome pro JavaScript a WebAssembly</translation> <translation id="6881299373831449287">Aktualizace Chromu</translation> <translation id="6885412569789873916">Chrome Beta – aplikace</translation> <translation id="6933858244219479645">Systém ChromeOS</translation> @@ -474,6 +476,7 @@ <translation id="873133009373065397">Google Chrome nemůže určit ani nastavit výchozí prohlížeč</translation> <translation id="8765470054473112089">Při psaní do adresního řádku nebo vyhledávacího pole odesílá Chrome zadaný text do výchozího vyhledávače, aby vám mohl nabízet lepší návrhy. V anonymním režimu je tato funkce vypnutá.</translation> <translation id="878572486461146056">Chyba instalace: Správce sítě použil zásady skupiny, které brání instalaci: <ph name="INSTALL_ERROR" /></translation> +<translation id="8801657293260363985">V8 je modul prohlížeče Chrome pro JavaScript a WebAssembly používaný ke zlepšení výkonu webů</translation> <translation id="8821043148920470810">Pokud chcete v budoucnu dostávat aktualizace prohlížeče Google Chrome, budete potřebovat systém Windows 10 nebo novější. Tento počítač používá Windows 7.</translation> <translation id="8823341990149967727">Chrome je zastaralý</translation> <translation id="8825634023950448068">Abychom chránili vaše soukromí, vaše zájmy starší než 4 měsíce automaticky mažeme. Jak budete pracovat s internetem, zájmy se mohou na seznamu znovu objevit. Pokud Chrome zájem neodhadne správně nebo pokud některé reklamy nechcete vídat, můžete zájem odstranit.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_cy.xtb b/chrome/app/resources/google_chrome_strings_cy.xtb index 1f88ea4..2940ae2 100644 --- a/chrome/app/resources/google_chrome_strings_cy.xtb +++ b/chrome/app/resources/google_chrome_strings_cy.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">Methu â chysylltu â'r Rhyngrwyd. Os ydych yn defnyddio mur cadarn, rhowch <ph name="PRODUCT_EXE_NAME" /> ar y rhestr ganiatáu.</translation> <translation id="2131230230468101642">Er mwyn amddiffyn eich preifatrwydd, rydym yn awtoddileu eich diddordebau sy'n hŷn na 4 wythnos. Wrth i chi barhau i bori, mae'n bosib y bydd diddordeb yn ymddangos ar y rhestr eto. Neu gallwch gael gwared ar ddiddordebau nad ydych am i Chrome eu hystyried.</translation> <translation id="2139300032719313227">Ailgychwyn ChromeOS</translation> -<translation id="2146761408396054429">Mae'n bosib bod y ffeil hon yn beryglus<ph name="LINE_BREAK" />Gall Chrome wirio'r lawrlwythiad hwn i chi os ydych yn darparu'r cyfrinair - mae eich cyfrinair yn aros ar eich dyfais</translation> <translation id="2151406531797534936">Ailgychwynnwch Chrome nawr</translation> <translation id="2174917724755363426">Gosod heb ei gwblhau. Ydych chi'n siŵr eich bod am ganslo?</translation> <translation id="2190166659037789668">Gwall gwiriad diweddaru: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_da.xtb b/chrome/app/resources/google_chrome_strings_da.xtb index c325f33..f76e43bf 100644 --- a/chrome/app/resources/google_chrome_strings_da.xtb +++ b/chrome/app/resources/google_chrome_strings_da.xtb
@@ -70,7 +70,6 @@ <translation id="2130870084309816036">Der kunne ikke oprettes forbindelse til internettet. Hvis du bruger en firewall, skal du føje <ph name="PRODUCT_EXE_NAME" /> til tilladelseslisten.</translation> <translation id="2131230230468101642">Vi sletter automatisk de interesser, der er ældre end 4 uger, for at beskytte dit privatliv. Mens du surfer, kan en interesse vises på listen igen. Du kan også fjerne interesser, som du ikke vil have, at Chrome skal tage med i betragtning.</translation> <translation id="2139300032719313227">Genstart ChromeOS</translation> -<translation id="2146761408396054429">Denne fil kan være skadelig<ph name="LINE_BREAK" />Chrome kan tjekke denne download for dig, hvis du angiver adgangskoden – din adgangskode forbliver på enheden</translation> <translation id="2151406531797534936">Genstart Chrome nu</translation> <translation id="2174917724755363426">Installationen er ikke fuldført. Er du sikker på, at du vil annullere?</translation> <translation id="2190166659037789668">Fejl ved søgning efter opdatering: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_de.xtb b/chrome/app/resources/google_chrome_strings_de.xtb index 31e128da..a57bae7 100644 --- a/chrome/app/resources/google_chrome_strings_de.xtb +++ b/chrome/app/resources/google_chrome_strings_de.xtb
@@ -70,7 +70,6 @@ <translation id="2130870084309816036">Internetverbindung kann nicht hergestellt werden. Falls du eine Firewall verwendest, setz <ph name="PRODUCT_EXE_NAME" /> bitte auf die Zulassungsliste.</translation> <translation id="2131230230468101642">Zum Schutz deiner Daten löschen wir automatisch deine Interessen, die älter als vier Wochen sind. Je nach deinen Browsingaktivitäten können die Interessen wieder in der Liste erscheinen. Du kannst jedoch Interessen entfernen, die Chrome nicht berücksichtigen soll.</translation> <translation id="2139300032719313227">Chrome OS neu starten</translation> -<translation id="2146761408396054429">Diese Datei könnte gefährlich sein<ph name="LINE_BREAK" />Chrome kann diesen Download für dich überprüfen, wenn du das Passwort eingibst – das Passwort bleibt auf deinem Gerät</translation> <translation id="2151406531797534936">Starte Chrome jetzt neu</translation> <translation id="2174917724755363426">Die Installation wurde nicht abgeschlossen. Möchtest du den Vorgang wirklich abbrechen?</translation> <translation id="2190166659037789668">Fehler bei der Prüfung auf Updates: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_el.xtb b/chrome/app/resources/google_chrome_strings_el.xtb index 188e80c..616b36f 100644 --- a/chrome/app/resources/google_chrome_strings_el.xtb +++ b/chrome/app/resources/google_chrome_strings_el.xtb
@@ -72,7 +72,6 @@ <translation id="2130870084309816036">Δεν είναι δυνατή η σύνδεση στο διαδίκτυο. Εάν χρησιμοποιείτε τείχος προστασίας, συμπεριλάβετε στη λίστα επιτρεπόμενων το <ph name="PRODUCT_EXE_NAME" />.</translation> <translation id="2131230230468101642">Για την προστασία του απορρήτου σας, διαγράφουμε αυτόματα τα ενδιαφέροντα που είναι παλαιότερα των 4 εβδομάδων. Καθώς συνεχίζετε την περιήγηση, ενδέχεται να εμφανιστεί ξανά ένα ενδιαφέρον στη λίστα. Εναλλακτικά, μπορείτε να καταργήσετε τα ενδιαφέροντα που δεν θέλετε να λαμβάνει υπόψη το Chrome.</translation> <translation id="2139300032719313227">Επανεκκίνηση Chrome OS</translation> -<translation id="2146761408396054429">Αυτό το αρχείο ενδέχεται να είναι επικίνδυνο<ph name="LINE_BREAK" />Το Chrome μπορεί να ελέγξει αυτή τη λήψη για εσάς εάν καταχωρίσετε τον κωδικό πρόσβασης. Ο κωδικός πρόσβασης θα παραμείνει στη συσκευή σας</translation> <translation id="2151406531797534936">Επανεκκινήστε το Chrome τώρα</translation> <translation id="2174917724755363426">Η εγκατάσταση δεν έχει ολοκληρωθεί. Είστε βέβαιοι ότι θέλετε να την ακυρώσετε;</translation> <translation id="2190166659037789668">Σφάλμα ελέγχου για ενημερώσεις: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_en-GB.xtb b/chrome/app/resources/google_chrome_strings_en-GB.xtb index 1231c12..9a0d892 100644 --- a/chrome/app/resources/google_chrome_strings_en-GB.xtb +++ b/chrome/app/resources/google_chrome_strings_en-GB.xtb
@@ -73,7 +73,6 @@ <translation id="2130870084309816036">Unable to connect to the Internet. If you use a firewall, please allowlist <ph name="PRODUCT_EXE_NAME" />.</translation> <translation id="2131230230468101642">To protect your privacy, we auto-delete your interests that are older than four weeks. As you keep browsing, an interest might appear on the list again. Or you can remove interests that you don't want Chrome to consider.</translation> <translation id="2139300032719313227">Restart Chrome OS</translation> -<translation id="2146761408396054429">This file may be dangerous<ph name="LINE_BREAK" />Chrome can check this download for you if you provide the password – your password stays on your device</translation> <translation id="2151406531797534936">Please restart Chrome now</translation> <translation id="2174917724755363426">Installation is not complete. Are you sure that you want to cancel?</translation> <translation id="2190166659037789668">Update check error: <ph name="UPDATE_CHECK_ERROR" />.</translation> @@ -198,6 +197,7 @@ <translation id="4053720452172726777">Customise and control Google Chrome</translation> <translation id="4106587138345390261">Chrome is exploring new features that allow sites to deliver the same browsing experience using less of your info</translation> <translation id="4110895483821904099">Set up your new Chrome profile</translation> +<translation id="4128488089242627000">Chrome runs faster and features that use JavaScript should work as designed (recommended)</translation> <translation id="4147555960264124640">You are signing in with a managed account and giving its administrator control over your Google Chrome profile. Your Chrome data, such as your apps, bookmarks, history, passwords and other settings will become permanently tied to <ph name="USER_NAME" />. You will be able to delete this data via the Google Accounts Dashboard, but you will not be able to associate this data with another account. <ph name="LEARN_MORE" /></translation> <translation id="4148957013307229264">Installing...</translation> <translation id="4149882025268051530">The installer failed to uncompress archive. Please download Google Chrome again.</translation> @@ -244,6 +244,7 @@ <translation id="4793679854893018356">Learn how Chrome keeps you safe</translation> <translation id="4828579605166583682">Google Chrome is trying to replace existing passwords. Type in your Windows password to allow this.</translation> <translation id="4842397268809523050">Chrome OS Flex could not sync your data because sync is not available for your domain.</translation> +<translation id="4873692836499071887">To get future Google Chrome updates, you'll need macOS 11 or later. This computer is using macOS 10.15.</translation> <translation id="4873783916118289636">Review key privacy and security controls in Chrome</translation> <translation id="4891791193823137474">Let Google Chrome run in the background</translation> <translation id="4895437082222824641">Open link in new Chrome &tab</translation> @@ -352,6 +353,7 @@ <translation id="677276454032249905">Exit Chrome anyway?</translation> <translation id="6794858689789885890">Always delete site data from your device when you close Chrome</translation> <translation id="683440813066116847">Inbound rule for Google Chrome Canary to allow mDNS traffic.</translation> +<translation id="6851981911629679515">Turn on additional protection in Chrome’s JavaScript and WebAssembly engine</translation> <translation id="6881299373831449287">Updating Chrome</translation> <translation id="6885412569789873916">Chrome Beta apps</translation> <translation id="6933858244219479645">Chrome OS system</translation> @@ -473,6 +475,7 @@ <translation id="873133009373065397">Google Chrome cannot determine or set the default browser</translation> <translation id="8765470054473112089">When you type in the address bar or search box, Chrome sends what you type to your default search engine to get better suggestions. This is off in Incognito.</translation> <translation id="878572486461146056">Install error: Your network administrator has applied a Group Policy that prevents installation: <ph name="INSTALL_ERROR" /></translation> +<translation id="8801657293260363985">V8 is Chrome’s JavaScript and WebAssembly engine used to improve site performance</translation> <translation id="8821043148920470810">To get future Google Chrome updates, you'll need Windows 10 or later. This computer is using Windows 7.</translation> <translation id="8823341990149967727">Chrome is Out of Date</translation> <translation id="8825634023950448068">To protect your privacy, we auto-delete your interests that are older than four weeks. As you keep browsing, an interest might appear on the list again. And if Chrome gets it wrong or you don't want to see certain ads, you can remove an interest.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_es-419.xtb b/chrome/app/resources/google_chrome_strings_es-419.xtb index c2ad2dd..0d35032 100644 --- a/chrome/app/resources/google_chrome_strings_es-419.xtb +++ b/chrome/app/resources/google_chrome_strings_es-419.xtb
@@ -70,7 +70,6 @@ <translation id="2130870084309816036">No se puede conectar a Internet. Si usas un firewall, agrega <ph name="PRODUCT_EXE_NAME" /> a la lista de entidades permitidas.</translation> <translation id="2131230230468101642">Para proteger tu privacidad, quitamos los intereses automáticamente luego de 4 semanas. Es posible que, a medida que navegues, un interés vuelva a aparecer en la lista. O bien, puedes quitar los intereses que no quieres que Chrome tenga en cuenta.</translation> <translation id="2139300032719313227">Reiniciar ChromeOS</translation> -<translation id="2146761408396054429">Este archivo puede ser peligroso<ph name="LINE_BREAK" />Chrome puede revisar esta descarga por ti si proporcionas la contraseña; la contraseña permanecerá en el dispositivo</translation> <translation id="2151406531797534936">Reinicia Chrome ahora</translation> <translation id="2174917724755363426">No se completó la instalación. ¿Confirmas que quieres cancelarla?</translation> <translation id="2190166659037789668">Error de comprobación de actualizaciones: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_es.xtb b/chrome/app/resources/google_chrome_strings_es.xtb index 822420b..981e1b7 100644 --- a/chrome/app/resources/google_chrome_strings_es.xtb +++ b/chrome/app/resources/google_chrome_strings_es.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">No se puede conectar a Internet. Si usas un cortafuegos, incluye <ph name="PRODUCT_EXE_NAME" /> en la lista de permitidos.</translation> <translation id="2131230230468101642">Para proteger tu privacidad, eliminamos automáticamente tus intereses que tienen una antigüedad superior a 4 semanas. A medida que sigas navegando, es posible que un interés vuelva a aparecer en la lista. También puedes eliminar los intereses que no quieras que Chrome tenga en cuenta.</translation> <translation id="2139300032719313227">Reiniciar ChromeOS</translation> -<translation id="2146761408396054429">Este archivo podría ser peligroso<ph name="LINE_BREAK" />Chrome puede comprobar esta descarga si proporcionas la contraseña (tu contraseña se guardará en tu dispositivo y no se compartirá externamente)</translation> <translation id="2151406531797534936">Reinicia Chrome ahora</translation> <translation id="2174917724755363426">No se ha completado la instalación. ¿Seguro que quieres cancelarla?</translation> <translation id="2190166659037789668">Error de comprobación de actualizaciones: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_et.xtb b/chrome/app/resources/google_chrome_strings_et.xtb index ea889449..daa1d76 100644 --- a/chrome/app/resources/google_chrome_strings_et.xtb +++ b/chrome/app/resources/google_chrome_strings_et.xtb
@@ -71,7 +71,6 @@ <translation id="2130870084309816036">Internetiga ei saa ühendust. Kui kasutate tulemüüri, lisage <ph name="PRODUCT_EXE_NAME" /> lubatute loendisse.</translation> <translation id="2131230230468101642">Teie privaatsuse kaitsmiseks kustutame automaatselt teie huvid, mis on vanemad kui 4 nädalat. Kui jätkate sirvimist, võib huvi uuesti loendis ilmuda. Võite ka eemaldada huvid, mida te ei soovi lasta Chrome'il arvesse võtta.</translation> <translation id="2139300032719313227">Taaskäivitage Chrome OS</translation> -<translation id="2146761408396054429">See fail võib olla ohtlik<ph name="LINE_BREAK" />Chrome saab seda allalaadimist teie eest kontrollida, kui sisestate parooli — parool jääb teie seadmesse</translation> <translation id="2151406531797534936">Käivitage Chrome kohe uuesti</translation> <translation id="2174917724755363426">Installimine ei ole lõpetatud. Kas soovite kindlasti tühistada?</translation> <translation id="2190166659037789668">Värskenduse kontrolli viga: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_eu.xtb b/chrome/app/resources/google_chrome_strings_eu.xtb index 42975b3..f7336eaf 100644 --- a/chrome/app/resources/google_chrome_strings_eu.xtb +++ b/chrome/app/resources/google_chrome_strings_eu.xtb
@@ -73,7 +73,6 @@ <translation id="2130870084309816036">Ezin da konektatu Internetera. Suebaki bat erabiltzen baduzu, gehitu <ph name="PRODUCT_EXE_NAME" /> baimendutakoen zerrendan.</translation> <translation id="2131230230468101642">Zure pribatutasuna babesteko, lau aste baino gehiago dituzten interesak automatikoki ezabatzen ditugu. Arakatzen jarraitu ahala, baliteke interes bat berriro agertzea zerrendan. Bestela, Chrome-k aintzat hartzea nahi ez duzun interesak ken ditzakezu.</translation> <translation id="2139300032719313227">Berrabiarazi Chrome OS</translation> -<translation id="2146761408396054429">Baliteke fitxategi hau arriskutsua izatea<ph name="LINE_BREAK" />Chrome-k deskarga hau egiazta dezake pasahitza idazten baduzu (pasahitza zure gailuan geratuko da)</translation> <translation id="2151406531797534936">Berrabiarazi Chrome</translation> <translation id="2174917724755363426">Ez da osatu instalazioa. Ziur bertan behera utzi nahi duzula?</translation> <translation id="2190166659037789668">Eguneratzearen egiaztapenaren errorea: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fa.xtb b/chrome/app/resources/google_chrome_strings_fa.xtb index 3781f03e..e3b7086 100644 --- a/chrome/app/resources/google_chrome_strings_fa.xtb +++ b/chrome/app/resources/google_chrome_strings_fa.xtb
@@ -70,7 +70,6 @@ <translation id="2130870084309816036">اتصال به اینترنت امکانپذیر نیست. اگر از دیوار آتش استفاده میکنید، لطفاً <ph name="PRODUCT_EXE_NAME" /> را در فهرست مجازها قرار دهید.</translation> <translation id="2131230230468101642">برای محافظت از حریم خصوصی شما، علایقی را که قدیمیتر از ۴ هفته باشند بهطور خودکار حذف میکنیم. وقتی به مرور کردن ادامه میدهید، ممکن است علاقهای مجدداً به فهرست اضافه شود. یا میتوانید علایقی را که نمیخواهید Chrome مدنظر قرار دهد حذف کنید.</translation> <translation id="2139300032719313227">بازراهاندازی ChromeOS</translation> -<translation id="2146761408396054429">این فایل ممکن است خطرناک باشد<ph name="LINE_BREAK" />اگر گذرواژه را ارائه دهید، Chrome میتواند این بارگیری را برایتان بررسی کند. گذرواژه شما در دستگاهتان میماند.</translation> <translation id="2151406531797534936">لطفاً اکنون Chrome را بازراهاندازی کنید</translation> <translation id="2174917724755363426">نصب کامل نیست. مطمئنید میخواهید آن را لغو کنید؟</translation> <translation id="2190166659037789668">خطای بررسی بهروزرسانی: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fi.xtb b/chrome/app/resources/google_chrome_strings_fi.xtb index 8b38f03a..9734846e 100644 --- a/chrome/app/resources/google_chrome_strings_fi.xtb +++ b/chrome/app/resources/google_chrome_strings_fi.xtb
@@ -70,7 +70,6 @@ <translation id="2130870084309816036">Internetyhteyttä ei voi muodostaa. Jos käytät palomuuria, lisää <ph name="PRODUCT_EXE_NAME" /> sallittujen listalle.</translation> <translation id="2131230230468101642">Yksityisyytesi suojaamiseksi poistamme automaattisesti yli neljä viikkoa vanhat kiinnostuksen kohteet. Kun jatkat selaamista, kiinnostuksen kohde voi näkyä listalla uudelleen. Voit myös poistaa kiinnostuksen kohteet, joita et halua Chromen ottavan huomioon.</translation> <translation id="2139300032719313227">Käynnistä Chrome-käyttöjärjestelmä uudelleen</translation> -<translation id="2146761408396054429">Tämä tiedosto voi olla vaarallinen<ph name="LINE_BREAK" />Chrome voi tarkistaa latauksen puolestasi, jos annat salasanan – salasana pysyy laitteellasi</translation> <translation id="2151406531797534936">Käynnistä Chrome uudelleen nyt</translation> <translation id="2174917724755363426">Asennus ei ole valmis. Haluatko varmasti perua sen?</translation> <translation id="2190166659037789668">Virhe päivityksiä tarkistettaessa: <ph name="UPDATE_CHECK_ERROR" />.</translation> @@ -195,6 +194,7 @@ <translation id="4053720452172726777">Google Chromen muokkaaminen ja hallinta</translation> <translation id="4106587138345390261">Chrome kokeilee uusia ominaisuuksia, joiden avulla sivustot voivat tarjota saman selauskokemuksen vähemmillä tiedoilla.</translation> <translation id="4110895483821904099">Luo uusi Chrome-profiili</translation> +<translation id="4128488089242627000">Chrome toimii nopeammin ja JavaScriptiä käyttävien ominaisuuksien pitäisi toimia suunnitellusti (suositus)</translation> <translation id="4147555960264124640">Olet kirjautumassa sisään hallinnoidulla tilillä ja antamassa tilin järjestelmänvalvojalle oikeuden hallita Google Chrome -profiiliasi. Chrome-tietosi, kuten sovelluksesi, kirjanmerkkisi, historiasi, salasanasi ja muut asetuksesi, yhdistetään pysyvästi käyttäjätiliin <ph name="USER_NAME" />. Voit poistaa nämä tiedot Google-tilien Hallintapaneelissa, mutta et voi liittää tietoja toiseen tiliin. <ph name="LEARN_MORE" /></translation> <translation id="4148957013307229264">Asennetaan...</translation> <translation id="4149882025268051530">Asennusohjelma ei pystynyt purkamaan arkistotiedostoa. Lataa Google Chrome uudelleen.</translation> @@ -241,6 +241,7 @@ <translation id="4793679854893018356">Katso, miten Chrome pitää sinut turvassa</translation> <translation id="4828579605166583682">Google Chrome yrittää korvata nykyiset salasanat. Salli tämä kirjoittamalla Windows-salasanasi.</translation> <translation id="4842397268809523050">ChromeOS Flex ei voinut synkronoida dataa, koska synkronointi ei ole käytettävissä verkkotunnuksessasi.</translation> +<translation id="4873692836499071887">Sinulla on oltava macOS 11 tai uudempi, jotta saat tulevia Google Chromen päivityksiä. Tällä tietokoneella on macOS 10.15.</translation> <translation id="4873783916118289636">Tarkista Chromen tärkeimmät yksityisyys‑ ja turvallisuusasetukset</translation> <translation id="4891791193823137474">Jätä Google Chrome käyntiin taustalle</translation> <translation id="4895437082222824641">Avaa linkki uudella Chromen välilehdellä</translation> @@ -345,6 +346,7 @@ <translation id="677276454032249905">Suljetaanko Chrome silti?</translation> <translation id="6794858689789885890">Poista laitteen sivustodata aina, kun suljet Chromen</translation> <translation id="683440813066116847">Google Chrome Canaryn saapuvien yhteyksien sääntö, joka sallii mDNS-liikenteen.</translation> +<translation id="6851981911629679515">Laita lisäsuojaus päälle Chromen JavaScript- ja WebAssembly-moottorissa</translation> <translation id="6881299373831449287">Päivitetään Chromea</translation> <translation id="6885412569789873916">Chromen betaversion sovellukset</translation> <translation id="6933858244219479645">Chrome-käyttöjärjestelmä</translation> @@ -466,6 +468,7 @@ <translation id="873133009373065397">Google Chrome ei voi tunnistaa tai asettaa oletusselainta.</translation> <translation id="8765470054473112089">Kun kirjoitat osoitepalkkiin tai hakukenttään, Chrome lähettää kirjoittamasi tekstin oletushakukoneellesi, niin saat parempia ehdotuksia. Tämä on poissa päältä incognito-tilassa.</translation> <translation id="878572486461146056">Asennusvirhe: Verkon järjestelmänvalvojan käyttämä ryhmäkäytäntö estää asennuksen: <ph name="INSTALL_ERROR" /></translation> +<translation id="8801657293260363985">V8 on Chromen JavaScript- ja WebAssembly-moottori, jota käytetään sivuston suorituskyvyn parantamiseen</translation> <translation id="8821043148920470810">Jotta saat tulevia Google Chromen päivityksiä, sinulla on oltava Windows 10 tai uudempi. Tietokoneen käyttöjärjestelmä on Windows 7.</translation> <translation id="8823341990149967727">Chrome on vanhentunut</translation> <translation id="8825634023950448068">Yksityisyytesi suojaamiseksi poistamme automaattisesti yli neljä viikkoa vanhat kiinnostuksen kohteet. Kun jatkat selaamista, kiinnostuksen kohde voi näkyä listalla uudelleen. Jos Chromen arvio menee pieleen tai jos et halua nähdä tiettyjä mainoksia, voit poistaa tietyn kiinnostuksen kohteen.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fil.xtb b/chrome/app/resources/google_chrome_strings_fil.xtb index bc7b6614..a5e6efd2 100644 --- a/chrome/app/resources/google_chrome_strings_fil.xtb +++ b/chrome/app/resources/google_chrome_strings_fil.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">Hindi makakonekta sa Internet. Kung gumagamit ka ng firewall, i-allowlist ang <ph name="PRODUCT_EXE_NAME" />.</translation> <translation id="2131230230468101642">Para protektahan ang iyong privacy, awtomatiko naming dine-delete ang mga interes mo na mas matagal sa 4 na linggo. Habang patuloy kang nagba-browse, posibleng lumabas ulit sa listahan ang isang interes. O puwede kang mag-alis ng mga interes na ayaw mong isaalang-alang ng Chrome.</translation> <translation id="2139300032719313227">I-restart ang ChromeOS</translation> -<translation id="2146761408396054429">Posibleng mapanganib ang file na ito<ph name="LINE_BREAK" />Masusuri ng Chrome ang download na ito para sa iyo kung ibibigay mo ang password — mananatili sa iyong device ang password mo</translation> <translation id="2151406531797534936">Paki-restart ang Chrome ngayon</translation> <translation id="2174917724755363426">Hindi nakumpleto ang pag-install. Sigurado ka bang gusto mong kanselahin?</translation> <translation id="2190166659037789668">Error sa pagtingin kung may update: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fr-CA.xtb b/chrome/app/resources/google_chrome_strings_fr-CA.xtb index c05a6c5..dccd3e4 100644 --- a/chrome/app/resources/google_chrome_strings_fr-CA.xtb +++ b/chrome/app/resources/google_chrome_strings_fr-CA.xtb
@@ -73,7 +73,6 @@ <translation id="2130870084309816036">Impossible de se connecter à Internet. Si vous utilisez un pare-feu, veuillez ajouter <ph name="PRODUCT_EXE_NAME" /> à la liste verte.</translation> <translation id="2131230230468101642">Afin de protéger votre confidentialité, nous supprimons automatiquement vos centres d'intérêt ayant plus de quatre semaines. Au fur et à mesure que vous naviguez, un centre d'intérêt peut réapparaître sur la liste. Vous pouvez également retirer des centres d'intérêt si vous ne voulez pas que Chrome les prenne en compte.</translation> <translation id="2139300032719313227">Redémarrer Chrome OS</translation> -<translation id="2146761408396054429">Ce fichier peut être dangereux<ph name="LINE_BREAK" />Chrome peut vérifier ce téléchargement pour vous si vous fournissez le mot de passe (votre mot de passe reste sur votre appareil)</translation> <translation id="2151406531797534936">Veuillez redémarrer Chrome maintenant</translation> <translation id="2174917724755363426">L'installation n'est pas terminée. Voulez-vous vraiment annuler?</translation> <translation id="2190166659037789668">Erreur de vérification de la mise à jour : <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fr.xtb b/chrome/app/resources/google_chrome_strings_fr.xtb index a5a78ec..a899d51 100644 --- a/chrome/app/resources/google_chrome_strings_fr.xtb +++ b/chrome/app/resources/google_chrome_strings_fr.xtb
@@ -73,7 +73,6 @@ <translation id="2130870084309816036">Impossible de se connecter à Internet. Si vous utilisez un pare-feu, veuillez ajouter <ph name="PRODUCT_EXE_NAME" /> à la liste d'autorisation.</translation> <translation id="2131230230468101642">Pour protéger votre confidentialité, nous supprimons automatiquement vos centres d'intérêt s'ils datent de plus de quatre semaines. Au fil de votre navigation, un centre d'intérêt peut réapparaître dans la liste. Vous pouvez aussi supprimer des centres d'intérêt si vous ne souhaitez pas que Chrome les prenne en compte.</translation> <translation id="2139300032719313227">Redémarrer Chrome OS</translation> -<translation id="2146761408396054429">Ce fichier peut être dangereux<ph name="LINE_BREAK" />Si vous fournissez le mot de passe, Chrome peut vérifier ce téléchargement pour vous. Votre mot de passe ne quittera pas votre appareil.</translation> <translation id="2151406531797534936">Veuillez redémarrer Chrome maintenant</translation> <translation id="2174917724755363426">Installation non terminée. Voulez-vous vraiment annuler ?</translation> <translation id="2190166659037789668">Erreur lors de la recherche de mises à jour : <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_gl.xtb b/chrome/app/resources/google_chrome_strings_gl.xtb index 8082587..268f342a 100644 --- a/chrome/app/resources/google_chrome_strings_gl.xtb +++ b/chrome/app/resources/google_chrome_strings_gl.xtb
@@ -73,7 +73,6 @@ <translation id="2130870084309816036">Non se puido establecer conexión con Internet. Se utilizas un firewall, inclúe <ph name="PRODUCT_EXE_NAME" /> na lista de entidades permitidas.</translation> <translation id="2131230230468101642">Para protexer a túa privacidade, eliminamos automaticamente os teus intereses cuxa antigüidade sexa superior a 4 semanas. Algúns poderían volver incluírse na lista ao seguires navegando. Se o prefires, podes quitar os intereses que non queiras que teña en conta Chrome.</translation> <translation id="2139300032719313227">Reiniciar Chrome OS</translation> -<translation id="2146761408396054429">Este ficheiro pode ser perigoso<ph name="LINE_BREAK" />Chrome pode comprobar esta descarga por ti se lle proporcionas o contrasinal, o cal permanecerá no teu dispositivo</translation> <translation id="2151406531797534936">Reinicia Chrome agora</translation> <translation id="2174917724755363426">A instalación non finalizou. Seguro que queres cancelala?</translation> <translation id="2190166659037789668">Produciuse un erro durante a comprobación de actualizacións: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_gu.xtb b/chrome/app/resources/google_chrome_strings_gu.xtb index 3fda598..3fe2b18 100644 --- a/chrome/app/resources/google_chrome_strings_gu.xtb +++ b/chrome/app/resources/google_chrome_strings_gu.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">ઇન્ટરનેટ સાથે કનેક્ટ કરી શકતા નથી. જો તમે કોઈ ફાયરવૉલનો ઉપયોગ કરતા હો, તો કૃપા કરીને <ph name="PRODUCT_EXE_NAME" />ને વ્હાઇટલિસ્ટમાં શામેલ કરો.</translation> <translation id="2131230230468101642">તમારી પ્રાઇવસીની સુરક્ષા કરવા માટે, અમે 4 અઠવાડિયા કરતાં જૂની હોય એવી તમારી રુચિઓને ઑટોમૅટિક રીતે ડિલીટ કરીએ છીએ. તમે જેમ જેમ બ્રાઉઝ કરતા રહો છો, તેમ તેમ તમારી રુચિનો વિષય ફરી સૂચિમાં દેખાઈ શકે છે. અથવા તમે તમારી રુચિના એવા વિષયો કાઢી નાખી શકો છો કે જેમને તમે Chromeની સૂચિમાં શામેલ કરવા માગતા નથી.</translation> <translation id="2139300032719313227">ChromeOS ફરી શરૂ કરો</translation> -<translation id="2146761408396054429">આ ફાઇલ જોખમી હોઈ શકે છે<ph name="LINE_BREAK" />જો તમે પાસવર્ડ પ્રદાન કરો તો ડાઉનલોડ કરેલી આ ફાઇલ જોખમી છે કે નહીં તે Chrome તમારા વતી ચેક કરી શકે છે — તમારો પાસવર્ડ તમારા ડિવાઇસમાં જ રહે છે</translation> <translation id="2151406531797534936">કૃપા કરીને હવે Chrome ફરી શરૂ કરો</translation> <translation id="2174917724755363426">ઇન્સ્ટૉલેશનની પ્રક્રિયા પૂર્ણ થઈ નથી. શું તમે ખરેખર રદ કરવા માગો છો?</translation> <translation id="2190166659037789668">અપડેટ ચેક કરવામાં ભૂલ: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hi.xtb b/chrome/app/resources/google_chrome_strings_hi.xtb index a44c394c..098d181 100644 --- a/chrome/app/resources/google_chrome_strings_hi.xtb +++ b/chrome/app/resources/google_chrome_strings_hi.xtb
@@ -70,7 +70,6 @@ <translation id="2130870084309816036">इंटरनेट से कनेक्ट नहीं किया जा सका. अगर फ़ायरवॉल का इस्तेमाल किया जा रहा है, तो जिन उपयोगकर्ताओं या संगठनों को अनुमति मिली है उनकी सूची में कृपया <ph name="PRODUCT_EXE_NAME" /> को शामिल करें.</translation> <translation id="2131230230468101642">आपकी निजता को सुरक्षित रखने के लिए, हम आपकी पसंद के उन विषयों को ऑटोमैटिकली मिटा देते हैं जिनका अनुमान चार हफ़्ते पहले लगाया गया था. ब्राउज़ करते रहने पर, आपकी पसंद का कोई विषय, सूची में फिर से शामिल किया जा सकता है. इसके अलावा, आपके पास उन विषयों को हटाने का भी विकल्प होता है जिन्हें आपको Chrome की सूची में शामिल नहीं करवाना है.</translation> <translation id="2139300032719313227">ChromeOS को रीस्टार्ट करें</translation> -<translation id="2146761408396054429">यह फ़ाइल खतरनाक हो सकती है<ph name="LINE_BREAK" />आपके पासवर्ड दिए जाने पर, Chrome आपके लिए इस डाउनलोड की जांच कर सकता है — आपका पासवर्ड आपके डिवाइस पर रहता है</translation> <translation id="2151406531797534936">कृपया Chrome को अभी रीस्टार्ट करें</translation> <translation id="2174917724755363426">इंस्टॉल करने की प्रोसेस पूरी नहीं हुई. क्या आपको वाकई इसे रद्द करना है?</translation> <translation id="2190166659037789668">अपडेट जांच में यह गड़बड़ी है: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hr.xtb b/chrome/app/resources/google_chrome_strings_hr.xtb index f505cbc..f047a7d 100644 --- a/chrome/app/resources/google_chrome_strings_hr.xtb +++ b/chrome/app/resources/google_chrome_strings_hr.xtb
@@ -70,7 +70,6 @@ <translation id="2130870084309816036">Povezivanje s internetom nije moguće. Ako upotrebljavate vatrozid, na popis dopuštenih stavite <ph name="PRODUCT_EXE_NAME" />.</translation> <translation id="2131230230468101642">Da bismo zaštitili vašu privatnost, automatski brišemo vaše interese starije od četiri tjedna. Tijekom vašeg daljnjeg pregledavanja neki se interes može ponovo pojaviti na popisu. Možete i ukloniti interese za koje ne želite da ih Chrome razmatra.</translation> <translation id="2139300032719313227">Ponovo pokrenite Chrome OS</translation> -<translation id="2146761408396054429">Datoteka može biti opasna<ph name="LINE_BREAK" />Chrome može provjeriti to preuzimanje za vas ako unesete zaporku — vaša zaporka ostaje na uređaju</translation> <translation id="2151406531797534936">Sada ponovo pokrenite Chrome</translation> <translation id="2174917724755363426">Instaliranje nije dovršeno. Jeste li sigurni da ga želite otkazati?</translation> <translation id="2190166659037789668">Pogreška provjere ažuriranja: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hu.xtb b/chrome/app/resources/google_chrome_strings_hu.xtb index f699101..f02d463 100644 --- a/chrome/app/resources/google_chrome_strings_hu.xtb +++ b/chrome/app/resources/google_chrome_strings_hu.xtb
@@ -70,7 +70,6 @@ <translation id="2130870084309816036">Nem lehet kapcsolódni az internethez. Tűzfal használata esetén helyezze engedélyezőlistára a következőt: <ph name="PRODUCT_EXE_NAME" />.</translation> <translation id="2131230230468101642">Adatai védelme érdekében a négy hétnél régebbi érdeklődési köreit automatikusan töröljük. Böngészési tevékenysége alapján az érdeklődési körök újra megjelenhetnek a listákon. Arra is lehetősége van, hogy eltávolítsa azokat az érdeklődési köröket, amelyeket nem szeretne, hogy a Chrome figyelembe vegyen.</translation> <translation id="2139300032719313227">A ChromeOS újraindítása</translation> -<translation id="2146761408396054429">Ez a fájl veszélyes lehet<ph name="LINE_BREAK" />A Chrome ellenőrizni tudja ezt a letöltést Ön helyett, ha megadja a jelszót – a jelszó az eszközön marad</translation> <translation id="2151406531797534936">Indítsa újra most a Chrome-ot</translation> <translation id="2174917724755363426">A telepítés még nem fejeződött be. Biztosan megszakítja a műveletet?</translation> <translation id="2190166659037789668">Frissítés-ellenőrzési hiba: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hy.xtb b/chrome/app/resources/google_chrome_strings_hy.xtb index 23dfef9..e872256 100644 --- a/chrome/app/resources/google_chrome_strings_hy.xtb +++ b/chrome/app/resources/google_chrome_strings_hy.xtb
@@ -71,7 +71,6 @@ <translation id="2130870084309816036">Հնարավոր չէ միանալ ինտերնետին։ Եթե դուք հրապատ եք օգտագործում, ապա <ph name="PRODUCT_EXE_NAME" /> ֆայլն ավելացրեք թույլատրվածների ցուցակում։</translation> <translation id="2131230230468101642">Ձեր գաղտնիությունը պաշտպանելու նպատակով մենք 4 շաբաթից ավտոմատ ջնջում ենք ձեր հետաքրքրությունները։ Երբ դուք շարունակում եք դիտել վեբ էջեր, համապատասխան հետաքրքրությունը կարող է նորից հայտնվել ցանկում։ Որպեսզի Chrome-ը հաշվի չառնի որոշակի հետաքրքրությունները, կարող եք դրանք հեռացնել։</translation> <translation id="2139300032719313227">ChromeOS-ի վերագործարկում</translation> -<translation id="2146761408396054429">Այս ֆայլը կարող է վտանգավոր լինել<ph name="LINE_BREAK" />Chrome-ը կարող է ստուգել այն, եթե մուտքագրեք ձեր գաղտնաբառը (գաղտնաբառը կմնա ձեր սարքում)</translation> <translation id="2151406531797534936">Վերագործարկեք Chrome-ը</translation> <translation id="2174917724755363426">Տեղադրումը չի ավարտվել։ Իսկապե՞ս ուզում եք չեղարկել։</translation> <translation id="2190166659037789668">Թարմացումների ստուգման սխալ՝ <ph name="UPDATE_CHECK_ERROR" />։</translation>
diff --git a/chrome/app/resources/google_chrome_strings_id.xtb b/chrome/app/resources/google_chrome_strings_id.xtb index 35800f7..11d02741 100644 --- a/chrome/app/resources/google_chrome_strings_id.xtb +++ b/chrome/app/resources/google_chrome_strings_id.xtb
@@ -70,7 +70,6 @@ <translation id="2130870084309816036">Tidak dapat terhubung ke internet. Jika Anda menggunakan firewall, tambahkan <ph name="PRODUCT_EXE_NAME" /> ke daftar yang diizinkan.</translation> <translation id="2131230230468101642">Untuk melindungi privasi Anda, kami otomatis menghapus minat Anda yang tersimpan lebih dari 4 minggu. Saat Anda terus menjelajah, minat dapat kembali muncul di daftar. Atau Anda dapat menghapus minat yang tidak perlu dipertimbangkan oleh Chrome.</translation> <translation id="2139300032719313227">Mulai ulang ChromeOS</translation> -<translation id="2146761408396054429">File ini mungkin berbahaya<ph name="LINE_BREAK" />Chrome dapat memeriksa download ini untuk Anda jika Anda memberikan sandi — sandi Anda disimpan di perangkat</translation> <translation id="2151406531797534936">Mulai ulang Chrome sekarang</translation> <translation id="2174917724755363426">Penginstalan tidak selesai. Yakin ingin membatalkan?</translation> <translation id="2190166659037789668">Error pemeriksaan update: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_is.xtb b/chrome/app/resources/google_chrome_strings_is.xtb index c36bed6..86d4e61c 100644 --- a/chrome/app/resources/google_chrome_strings_is.xtb +++ b/chrome/app/resources/google_chrome_strings_is.xtb
@@ -73,7 +73,6 @@ <translation id="2130870084309816036">Ekki er hægt að tengjast internetinu. Ef þú notar eldvegg skaltu setja <ph name="PRODUCT_EXE_NAME" /> á undanþágulista.</translation> <translation id="2131230230468101642">Til að gæta persónuverndar þinnar eyðum við áhugasviðunum þínum sem eru eldri en 4 vikna sjálfkrafa. Áhugasvið kann að birtast aftur á listanum þegar þú heldur áfram að vafra. Þú getur einnig fjarlægt áhugasvið sem þú vilt ekki að Chrome taki tillit til.</translation> <translation id="2139300032719313227">Endurræsa ChromeOS</translation> -<translation id="2146761408396054429">Þessi skrá kann að vera hættuleg<ph name="LINE_BREAK" />Chrome getur athugað þetta niðurhal fyrir þig ef þú gefur upp aðgangsorðið — aðgangsorðið þitt helst í tækinu þínu</translation> <translation id="2151406531797534936">Endurræstu Chrome núna</translation> <translation id="2174917724755363426">Uppsetningunni er ekki lokið. Ertu viss um að þú viljir hætta við?</translation> <translation id="2190166659037789668">Villa við uppfærsluleit: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_it.xtb b/chrome/app/resources/google_chrome_strings_it.xtb index 77d7c81..ccd7f30 100644 --- a/chrome/app/resources/google_chrome_strings_it.xtb +++ b/chrome/app/resources/google_chrome_strings_it.xtb
@@ -69,7 +69,6 @@ <translation id="2130870084309816036">Impossibile connettersi a internet. Se usi un firewall, aggiungi <ph name="PRODUCT_EXE_NAME" /> alla lista consentita.</translation> <translation id="2131230230468101642">Per tutelare la tua privacy, eliminiamo automaticamente i tuoi interessi risalenti a più di 4 settimane prima della data corrente. Mentre continui a navigare, un interesse potrebbe essere nuovamente visualizzato nell'elenco. Puoi anche rimuovere gli interessi che non vuoi che Chrome prenda in considerazione.</translation> <translation id="2139300032719313227">Riavvia ChromeOS</translation> -<translation id="2146761408396054429">Questo file potrebbe essere pericoloso<ph name="LINE_BREAK" />Chrome può controllare il download per te se fornisci la password (non viene inoltrata dal dispositivo)</translation> <translation id="2151406531797534936">Riavvia subito Chrome</translation> <translation id="2174917724755363426">Installazione non completata. Vuoi annullarla?</translation> <translation id="2190166659037789668">Errore controllo aggiornamenti: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_iw.xtb b/chrome/app/resources/google_chrome_strings_iw.xtb index c466b94..4f59313 100644 --- a/chrome/app/resources/google_chrome_strings_iw.xtb +++ b/chrome/app/resources/google_chrome_strings_iw.xtb
@@ -70,7 +70,6 @@ <translation id="2130870084309816036">לא ניתן להתחבר לאינטרנט. אם משתמשים בחומת אש, יש להוסיף את <ph name="PRODUCT_EXE_NAME" /> לרשימת ההיתרים.</translation> <translation id="2131230230468101642">כדי להגן על הפרטיות שלך, תחומי עניין שהוגדרו לפני יותר מ-4 שבועות נמחקים אוטומטית. עם המשך הגלישה, תחום עניין כלשהו עשוי להופיע שוב ברשימה. יש גם אפשרות להסיר תחומי עניין מ-Chrome כדי שלא יילקחו בחשבון.</translation> <translation id="2139300032719313227">הפעלה מחדש של ChromeOS</translation> -<translation id="2146761408396054429">הקובץ הזה עלול להיות מסוכן<ph name="LINE_BREAK" />Chrome יכול לבדוק את ההורדה הזו אם מזינים את הסיסמה (הסיסמה תישאר במכשיר)</translation> <translation id="2151406531797534936">יש להפעיל מחדש את Chrome עכשיו</translation> <translation id="2174917724755363426">ההתקנה לא הושלמה. להמשיך בביטול?</translation> <translation id="2190166659037789668">השגיאה בבדיקת העדכון: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ja.xtb b/chrome/app/resources/google_chrome_strings_ja.xtb index 0294475..c9a33a9e 100644 --- a/chrome/app/resources/google_chrome_strings_ja.xtb +++ b/chrome/app/resources/google_chrome_strings_ja.xtb
@@ -69,7 +69,6 @@ <translation id="2130870084309816036">インターネットに接続できません。ファイアウォールを使用している場合は、許可リストに <ph name="PRODUCT_EXE_NAME" /> を登録してください。</translation> <translation id="2131230230468101642">ユーザーのプライバシーを保護するため、4 週間以上経過したユーザーの興味 / 関心は自動削除されます。閲覧を続けていると、興味 / 関心がリストに再度表示される場合もあります。Chrome に認識してほしくない興味 / 関心は削除できます。</translation> <translation id="2139300032719313227">Chrome OS を再起動してください</translation> -<translation id="2146761408396054429">このファイルは危険な可能性があります<ph name="LINE_BREAK" />パスワードを入力すると、Chrome でダウンロードを確認します。パスワードは第三者とは共有されません</translation> <translation id="2151406531797534936">Chrome を今すぐ再起動してください</translation> <translation id="2174917724755363426">インストールは完了していません。キャンセルしてもよろしいですか?</translation> <translation id="2190166659037789668">更新確認エラー: <ph name="UPDATE_CHECK_ERROR" />。</translation> @@ -194,6 +193,7 @@ <translation id="4053720452172726777">Google Chrome の設定</translation> <translation id="4106587138345390261">Chrome では、使用するユーザー情報量を減らしながら、これまでと同様にブラウジングできる新機能をテストしています</translation> <translation id="4110895483821904099">新しい Chrome プロファイルの設定</translation> +<translation id="4128488089242627000">Chrome の動作が速くなり、JavaScript を使用する機能が設計どおりに動作します(推奨)</translation> <translation id="4147555960264124640">現在、管理対象アカウントでログインしており、あなたの Google Chrome プロファイルを管理者が制御できる状態になっています。あなたの Chrome データ(アプリ、ブックマーク、履歴、パスワードなどの設定)は永続的に <ph name="USER_NAME" /> に関連付けられます。このデータは Google アカウントのダッシュボードを介して削除できますが、このデータを別のアカウントに関連付けることはできなくなります。<ph name="LEARN_MORE" /></translation> <translation id="4148957013307229264">インストール中...</translation> <translation id="4149882025268051530">インストーラー アーカイブを解凍できませんでした。Google Chrome をダウンロードし直してください。</translation> @@ -240,6 +240,7 @@ <translation id="4793679854893018356">Chrome のユーザー保護の仕組みについて</translation> <translation id="4828579605166583682">Google Chrome が既存のパスワードを置き換えようとしています。続行するには、Windows のパスワードを入力してください。</translation> <translation id="4842397268809523050">お使いのドメインでは同期が利用できないため、ChromeOS Flex はデータを同期できませんでした。</translation> +<translation id="4873692836499071887">今後、Google Chrome のアップデートを受信するには、macOS 11 以降が必要となります。このコンピュータでは macOS 10.15 が実行されています。</translation> <translation id="4873783916118289636">Chrome のプライバシーとセキュリティに関する重要な設定を確認します</translation> <translation id="4891791193823137474">Google Chrome のバックグラウンドでの実行を許可する</translation> <translation id="4895437082222824641">新しい Chrome タブでリンクを開く(&T)</translation> @@ -344,6 +345,7 @@ <translation id="677276454032249905">今すぐ Chrome を終了しますか?</translation> <translation id="6794858689789885890">Chrome を閉じるとき、常にデバイスからサイトデータを削除する</translation> <translation id="683440813066116847">mDNS トラフィックを許可する Google Chrome Canary のインバウンド ルールです。</translation> +<translation id="6851981911629679515">Chrome の JavaScript エンジンと WebAssembly エンジンで追加の保護機能を有効にする</translation> <translation id="6881299373831449287">Chrome を更新しています</translation> <translation id="6885412569789873916">Chrome ベータ版アプリ</translation> <translation id="6933858244219479645">Chrome OS システム</translation> @@ -465,6 +467,7 @@ <translation id="873133009373065397">Google Chrome では既定のブラウザを判定または設定できません</translation> <translation id="8765470054473112089">Chrome でアドレスバーや検索ボックスに入力を始めると、入力内容がデフォルトの検索エンジンに送信され、より関連性の高い検索候補が表示されます。シークレット モードの場合、この設定はオフになっています。</translation> <translation id="878572486461146056">インストール エラー: ネットワーク管理者により、インストールを許可しないというグループ ポリシーが適用されています: <ph name="INSTALL_ERROR" /></translation> +<translation id="8801657293260363985">V8 は、サイトのパフォーマンスを向上させるために使用される Chrome の JavaScript エンジンおよび WebAssembly エンジンです</translation> <translation id="8821043148920470810">今後、Google Chrome のアップデートを受信するには、Windows 10 以降が必要となります。このパソコンでは Windows 7 が実行されています。</translation> <translation id="8823341990149967727">Chrome は古いバージョンです</translation> <translation id="8825634023950448068">ユーザーのプライバシーを保護するため、4 週間以上経過したユーザーの興味 / 関心は自動削除されます。閲覧を続けていると、興味 / 関心がリストに再度表示される場合もあります。Chrome に情報を残したくない場合、または特定の広告を表示させたくない場合は、興味 / 関心を削除できます。</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ka.xtb b/chrome/app/resources/google_chrome_strings_ka.xtb index 0fc0dce..17925fa 100644 --- a/chrome/app/resources/google_chrome_strings_ka.xtb +++ b/chrome/app/resources/google_chrome_strings_ka.xtb
@@ -73,7 +73,6 @@ <translation id="2130870084309816036">ინტერნეტთან დაკავშირება ვერ ხერხდება. თუ ქსელის დაცვას იყენებთ, შეიტანეთ <ph name="PRODUCT_EXE_NAME" /> დაშვებულთა სიაში.</translation> <translation id="2131230230468101642">თქვენი კონფიდენციალურობის დაცვის მიზნით, ჩვენ ავტომატურად ვშლით თქვენს ინტერესებს, რომლებიც 4 კვირაზე ძველია. თქვენ მიერ ვების დათვალიერების პარალელურად, ესა თუ ეს ინტერესი შეიძლება ხელახლა გამოჩნდეს სიაში. სურვილისამებრ, შეგიძლიათ წაშალოთ ინტერესები, რომლებიც არ გსურთ, Chrome-მა რომ გაითვალისწინოს.</translation> <translation id="2139300032719313227">გადატვირთეთ ChromeOS</translation> -<translation id="2146761408396054429">ეს ფაილი, შესაძლოა, სახიფათო იყოს<ph name="LINE_BREAK" />Chrome-ს შეუძლია, თქვენ ნაცვლად შეამოწმოს ეს ჩამოტვირთვა, თუ პაროლს მიუთითებთ (პაროლი თქვენს მოწყობილობაზე დარჩება)</translation> <translation id="2151406531797534936">გთხოვთ, ახლავე გადატვირთოთ Chrome</translation> <translation id="2174917724755363426">ინსტალაცია არ დასრულებულა. ნამდვილად გსურთ გაუქმება?</translation> <translation id="2190166659037789668">შეცდომა განახლების შემოწმებისასr: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_kk.xtb b/chrome/app/resources/google_chrome_strings_kk.xtb index 5a15554..b524e0e7 100644 --- a/chrome/app/resources/google_chrome_strings_kk.xtb +++ b/chrome/app/resources/google_chrome_strings_kk.xtb
@@ -73,7 +73,6 @@ <translation id="2130870084309816036">Интернетке қосылу мүмкін емес. Егер брандмауэр пайдалансаңыз, <ph name="PRODUCT_EXE_NAME" /> кеңейтімін рұқсат тізіміне қосыңыз.</translation> <translation id="2131230230468101642">Құпиялығыңызды сақтау үшін 4 аптадан көп көрсетілген қызығушылықтарды автоматты түрде жойып отырамыз. Интернетті шолу кезінде белгілі бір қызығушылық тізімде қайтадан шығуы мүмкін. Бұл ретте Chrome-ның ескергенін қаламаған қызығушылықтарды өшіруге болады.</translation> <translation id="2139300032719313227">ChromeOS жүйесін өшіріп қосу</translation> -<translation id="2146761408396054429">Бұл файл қауіпті болуы мүмкін.<ph name="LINE_BREAK" />Құпия сөзді көрсетсеңіз, Chrome бұл жүктеп алу әрекетін тексере алады. Құпия сөзіңіз құрылғыда қалады.</translation> <translation id="2151406531797534936">Chrome браузерін өшіріп, қайта қосыңыз</translation> <translation id="2174917724755363426">Орнату аяқталмады. Шынымен бас тартқыңыз келе ме?</translation> <translation id="2190166659037789668">Жаңа нұсқаны тексеру қатесі: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_km.xtb b/chrome/app/resources/google_chrome_strings_km.xtb index 0b61dfd..0547eac 100644 --- a/chrome/app/resources/google_chrome_strings_km.xtb +++ b/chrome/app/resources/google_chrome_strings_km.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">មិនអាចភ្ជាប់ទៅអ៊ីនធឺណិតបានទេ។ ប្រសិនបើអ្នកប្រើជញ្ជាំងភ្លើង សូមអនុញ្ញាតបញ្ជី <ph name="PRODUCT_EXE_NAME" />។</translation> <translation id="2131230230468101642">ដើម្បីការពារឯកជនភាពរបស់អ្នក យើងលុបចំណាប់អារម្មណ៍របស់អ្នកដែលចាស់ជាង 4 សប្ដាហ៍ដោយស្វ័យប្រវត្តិ។ នៅពេលដែលអ្នកបន្តរុករក ចំណាប់អារម្មណ៍ប្រហែលជាបង្ហាញនៅលើបញ្ជីម្ដងទៀត។ ឬអ្នកអាចដកចំណាប់អារម្មណ៍ដែលអ្នកមិនចង់ឱ្យ Chrome ពិចារណាចេញបាន។</translation> <translation id="2139300032719313227">ចាប់ផ្តើម ChromeOS ឡើងវិញ</translation> -<translation id="2146761408396054429">ឯកសារនេះអាចបង្កគ្រោះថ្នាក់<ph name="LINE_BREAK" />Chrome អាចពិនិត្យមើលការទាញយកនេះសម្រាប់អ្នកបាន ប្រសិនបើអ្នកផ្ដល់ពាក្យសម្ងាត់ — ពាក្យសម្ងាត់របស់អ្នកបន្តស្ថិតនៅលើឧបករណ៍របស់អ្នក</translation> <translation id="2151406531797534936">សូមចាប់ផ្ដើម Chrome ឡើងវិញឥឡូវនេះ</translation> <translation id="2174917724755363426">ការដំឡើងមិនទាន់បញ្ចប់ទេ។ តើអ្នកពិតជាចង់បោះបង់មែនឬ?</translation> <translation id="2190166659037789668">បញ្ហាក្នុងការរកមើលកំណែថ្មី៖ <ph name="UPDATE_CHECK_ERROR" />។</translation>
diff --git a/chrome/app/resources/google_chrome_strings_kn.xtb b/chrome/app/resources/google_chrome_strings_kn.xtb index 26b2da0..52ff3f4c 100644 --- a/chrome/app/resources/google_chrome_strings_kn.xtb +++ b/chrome/app/resources/google_chrome_strings_kn.xtb
@@ -71,7 +71,6 @@ <translation id="2130870084309816036">ಇಂಟರ್ನೆಟ್ಗೆ ಕನೆಕ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ನೀವು ಫೈರ್ವಾಲ್ ಅನ್ನು ಬಳಸಿದರೆ, <ph name="PRODUCT_EXE_NAME" /> ಅನುಮತಿಸಿ.</translation> <translation id="2131230230468101642">ನಿಮ್ಮ ಗೌಪ್ಯತೆಯನ್ನು ರಕ್ಷಿಸಲು, 4 ವಾರಗಳಿಗಿಂತ ಹಳೆಯ ಆಸಕ್ತಿಗಳನ್ನು ನಾವು ಸ್ವಯಂ-ಅಳಿಸುತ್ತೇವೆ. ನೀವು ಬ್ರೌಸ್ ಮಾಡುತ್ತಿದ್ದಂತೆ, ಆಸಕ್ತಿಯೊಂದು ಮತ್ತೊಮ್ಮೆ ಪಟ್ಟಿಯಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳಬಹುದು. ಅಥವಾ Chrome ಪರಿಗಣಿಸಬಾರದೆಂದು ನೀವು ಬಯಸುವ ಆಸಕ್ತಿಗಳನ್ನು ನೀವು ತೆಗೆದುಹಾಕಬಹುದು.</translation> <translation id="2139300032719313227">ChromeOS ಮರುಪ್ರಾರಂಭಿಸಿ</translation> -<translation id="2146761408396054429">ಈ ಫೈಲ್ ಅಪಾಯಕಾರಿಯಾಗಬಹುದು<ph name="LINE_BREAK" />ನೀವು ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಒದಗಿಸಿದರೆ Chrome ನಿಮಗಾಗಿ ಈ ಡೌನ್ಲೋಡ್ ಅನ್ನು ಪರಿಶೀಲಿಸಬಹುದು - ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿಯೇ ಉಳಿಯುತ್ತದೆ</translation> <translation id="2151406531797534936">ಇದೀಗ Chrome ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ</translation> <translation id="2174917724755363426">ಇನ್ಸ್ಟಾಲೇಶನ್ ಪೂರ್ಣಗೊಂಡಿಲ್ಲ. ನೀವು ಖಂಡಿತವಾಗಿಯೂ ರದ್ದುಮಾಡಲು ಬಯಸುವಿರಾ?</translation> <translation id="2190166659037789668">ಅಪ್ಡೇಟ್ ಪರಿಶೀಲನೆ ದೋಷ: <ph name="UPDATE_CHECK_ERROR" />.</translation> @@ -196,6 +195,7 @@ <translation id="4053720452172726777">Google Chrome ಅನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ ಮತ್ತು ನಿಯಂತ್ರಿಸಿ</translation> <translation id="4106587138345390261">ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಕಡಿಮೆ ಬಳಸಿಕೊಂಡು ಅದೇ ರೀತಿಯ ಬ್ರೌಸಿಂಗ್ ಅನುಭವವನ್ನು ನೀಡಲು ಸೈಟ್ಗಳಿಗೆ ಅನುಮತಿಸುವ ಹೊಸ ಫೀಚರ್ಗಳನ್ನು Chrome ಎಕ್ಸ್ಪ್ಲೋರ್ ಮಾಡುತ್ತಿದೆ</translation> <translation id="4110895483821904099">ನಿಮ್ಮ ಹೊಸ Chrome ಪ್ರೊಫೈಲ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಿ</translation> +<translation id="4128488089242627000">Chrome ವೇಗವಾಗಿ ರನ್ ಆಗುತ್ತದೆ ಮತ್ತು JavaScript ಅನ್ನು ಬಳಸುವ ಫೀಚರ್ಗಳು, ವಿನ್ಯಾಸಗೊಳಿಸಿದಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸಬೇಕು (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation> <translation id="4147555960264124640">ನಿರ್ವಹಿಸಲಾದ ಖಾತೆ ಮತ್ತು ನಿಮ್ಮ Google Chrome ಪ್ರೊಫೈಲ್ನಾದ್ಯಂತ ಅದರ ನಿರ್ವಾಹಕ ನಿಯಂತ್ರಣವನ್ನು ನೀಡುವುದರ ಮೂಲಕ ನೀವು ಸೈನ್ ಇನ್ ಮಾಡುತ್ತಿರುವಿರಿ. ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ಗಳು, ಬುಕ್ಮಾರ್ಕ್ಗಳು, ಇತಿಹಾಸ, ಪಾಸ್ವರ್ಡ್ಗಳು ಹಾಗೂ ಇತರ ಸೆಟ್ಟಿಂಗ್ಗಳಂತಹ ನಿಮ್ಮ Chrome ಡೇಟಾವನ್ನು <ph name="USER_NAME" /> ಅವರಿಗೆ ಶಾಶ್ವತವಾಗಿ ಬಂಧಿಸಲಾಗುತ್ತದೆ. Google ಖಾತೆಗಳ ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಮೂಲಕ ಈ ಡೇಟಾವನ್ನು ಅಳಿಸಲು ನಿಮಗೆ ಸಾಧ್ಯ, ಆದರೆ ಬೇರೊಂದು ಖಾತೆಯೊಂದಿಗೆ ಈ ಡೇಟಾವನ್ನು ಸಂಯೋಜಿಸಲು ನಿಮಗೆ ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ. <ph name="LEARN_MORE" /></translation> <translation id="4148957013307229264">ಸ್ಥಾಪನೆಗೊಳ್ಳುತ್ತಿದೆ...</translation> <translation id="4149882025268051530">ಆರ್ಕೈವ್ ಅನ್ನು ವಿಕಸನ ಮಾಡಲು ಇನ್ಸ್ಟಾಲರ್ ವಿಫಲವಾಗಿದೆ. ದಯವಿಟ್ಟು ಮತ್ತೊಮ್ಮೆ Google Chrome ಅನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಿ.</translation> @@ -242,6 +242,7 @@ <translation id="4793679854893018356">Chrome ನಿಮ್ಮನ್ನು ಹೇಗೆ ಸುರಕ್ಷಿತವಾಗಿರಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ತಿಳಿಯಿರಿ</translation> <translation id="4828579605166583682">ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಬದಲಾಯಿಸಲು Google Chrome ಪ್ರಯತ್ನಿಸುತ್ತಿದೆ. ಇದನ್ನು ಅನುಮತಿಸಲು ನಿಮ್ಮ Windows ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಟೈಪ್ ಮಾಡಿ.</translation> <translation id="4842397268809523050">ನಿಮ್ಮ ಡೊಮೇನ್ನಲ್ಲಿ ಸಿಂಕ್ ಸೌಲಭ್ಯ ಲಭ್ಯವಿಲ್ಲದ ಕಾರಣ ChromeOS Flex ಗೆ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಿಂಕ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.</translation> +<translation id="4873692836499071887">ಭವಿಷ್ಯದ Google Chrome ಅಪ್ಡೇಟ್ಗಳನ್ನು ಪಡೆಯಲು, ನಿಮಗೆ macOS 11 ಅಥವಾ ಅದರ ನಂತರದ ಆವೃತ್ತಿಗಳ ಅಗತ್ಯವಿದೆ. ಈ ಕಂಪ್ಯೂಟರ್ macOS 10.15 ಅನ್ನು ಬಳಸುತ್ತಿದೆ.</translation> <translation id="4873783916118289636">Chrome ನಲ್ಲಿ ಪ್ರಮುಖ ಗೌಪ್ಯತೆ ಮತ್ತು ಭದ್ರತಾ ನಿಯಂತ್ರಣಗಳನ್ನು ಪರಿಶೀಲಿಸಿ</translation> <translation id="4891791193823137474">Google Chrome ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಚಾಲನೆಯಾಗಲು ಅನುಮತಿಸಿ</translation> <translation id="4895437082222824641">ಹೊಸ Chrome &ಟ್ಯಾಬ್ನಲ್ಲಿ ಲಿಂಕ್ ಅನ್ನು ತೆರೆಯಿರಿ</translation> @@ -346,6 +347,7 @@ <translation id="677276454032249905">ಹೇಗಿದ್ದರೂ Chrome ನಿಂದ ನಿರ್ಗಮಿಸುವುದೇ?</translation> <translation id="6794858689789885890">ನೀವು Chrome ಅನ್ನು ಮುಚ್ಚಿದಾಗ, ನಿಮ್ಮ ಸಾಧನದಿಂದ ಸೈಟ್ ಡೇಟಾವನ್ನು ಯಾವಾಗಲೂ ಅಳಿಸಿ</translation> <translation id="683440813066116847">mDNS ಟ್ರಾಫಿಕ್ಗೆ ಅನುಮತಿಸುವ ನಿಟ್ಟಿನಲ್ಲಿ Google Chrome ಕ್ಯಾನರಿಗೆ ಒಳಬರುವ ನಿಯಮ.</translation> +<translation id="6851981911629679515">Chrome ನ JavaScript ಮತ್ತು WebAssembly ಎಂಜಿನ್ನಲ್ಲಿ ಹೆಚ್ಚುವರಿ ರಕ್ಷಣೆಯನ್ನು ಆನ್ ಮಾಡಿ</translation> <translation id="6881299373831449287">Chrome ಅನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಲಾಗುತ್ತಿದೆ</translation> <translation id="6885412569789873916">Chrome ಬೀಟಾ ಅಪ್ಲಿಕೇಶನ್ಗಳು</translation> <translation id="6933858244219479645">ChromeOS ಸಿಸ್ಟಂ</translation> @@ -468,6 +470,7 @@ <translation id="873133009373065397">ಡಿಫಾಲ್ಟ್ ಬ್ರೌಸರ್ ಅನ್ನು ನಿರ್ಧರಿಸಲು ಅಥವಾ ಹೊಂದಿಸಲು Google Chrome ಗೆ ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ</translation> <translation id="8765470054473112089">ನೀವು ವಿಳಾಸ ಪಟ್ಟಿ ಅಥವಾ ಹುಡುಕಾಟ ಪೆಟ್ಟಿಗೆಯಲ್ಲಿ ಟೈಪ್ ಮಾಡಿದಾಗ, ಉತ್ತಮ ಸಲಹೆಗಳನ್ನು ಪಡೆಯಲು Chrome ನೀವು ಟೈಪ್ ಮಾಡಿದ್ದನ್ನು ನಿಮ್ಮ ಡೀಫಾಲ್ಟ್ ಸರ್ಚ್ ಎಂಜಿನ್ಗೆ ಕಳುಹಿಸುತ್ತದೆ. ಅಜ್ಞಾತ ಮೋಡ್ನಲ್ಲಿ ಇದು ಆಫ್ ಆಗಿರುತ್ತದೆ.</translation> <translation id="878572486461146056">ಇನ್ಸ್ಟಾಲ್ ಮಾಡುವಲ್ಲಿ ದೋಷ: ನಿಮ್ಮ ನೆಟ್ವರ್ಕ್ ನಿರ್ವಾಹಕರು ಇನ್ಸ್ಟಾಲೇಶನ್ ಅನ್ನು ತಡೆಯುವ ಗುಂಪು ನೀತಿಯನ್ನು ಅನ್ವಯಿಸಿದ್ದಾರೆ: <ph name="INSTALL_ERROR" /></translation> +<translation id="8801657293260363985">V8 ಎಂಬುದು Chrome ನ JavaScript ಮತ್ತು WebAssembly ಎಂಜಿನ್ ಆಗಿದ್ದು, ಸೈಟ್ನ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ</translation> <translation id="8821043148920470810">ಭವಿಷ್ಯದ Google Chrome ಅಪ್ಡೇಟ್ಗಳನ್ನು ಪಡೆಯಲು, ನೀವು Windows 10 ಅಥವಾ ಅದರ ನಂತರದ ಆವೃತ್ತಿಯನ್ನು ಹೊಂದಿರಬೇಕಾಗುತ್ತದೆ. ಈ ಕಂಪ್ಯೂಟರ್ ಪ್ರಸ್ತುತ Windows 7 ಅನ್ನು ಬಳಸುತ್ತಿದೆ.</translation> <translation id="8823341990149967727">Chrome ನ ಅವಧಿ ಮುಗಿದಿದೆ</translation> <translation id="8825634023950448068">ನಿಮ್ಮ ಗೌಪ್ಯತೆಯನ್ನು ರಕ್ಷಿಸಲು, 4 ವಾರಗಳಿಗಿಂತ ಹಳೆಯ ಆಸಕ್ತಿಗಳನ್ನು ನಾವು ಸ್ವಯಂ-ಅಳಿಸುತ್ತೇವೆ. ನೀವು ಬ್ರೌಸ್ ಮಾಡುತ್ತಿದ್ದಂತೆ, ಆಸಕ್ತಿಯೊಂದು ಮತ್ತೊಮ್ಮೆ ಪಟ್ಟಿಯಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳಬಹುದು. ಹಾಗೂ Chrome ತಪ್ಪಾಗಿ ಅರ್ಥೈಸಿಕೊಂಡರೆ ಅಥವಾ ನೀವು ಕೆಲವು ಜಾಹೀರಾತುಗಳನ್ನು ನೋಡಲು ಬಯಸದಿದ್ದರೆ, ನೀವು ಆಸಕ್ತಿಯೊಂದನ್ನು ತೆಗೆದುಹಾಕಬಹುದು.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ko.xtb b/chrome/app/resources/google_chrome_strings_ko.xtb index 8b01a57..d351bab9 100644 --- a/chrome/app/resources/google_chrome_strings_ko.xtb +++ b/chrome/app/resources/google_chrome_strings_ko.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">인터넷에 연결할 수 없습니다. 방화벽을 사용하는 경우 <ph name="PRODUCT_EXE_NAME" />을(를) 허용 목록에 추가하세요.</translation> <translation id="2131230230468101642">개인 정보를 보호하기 위해 Chrome에서는 4주가 지난 관심분야를 자동 삭제합니다. 인터넷 사용에 따라 특정 관심분야가 목록에 다시 표시될 수 있습니다. Chrome에서 고려하지 않았으면 하는 관심분야가 있으면 직접 삭제하세요.</translation> <translation id="2139300032719313227">ChromeOS 다시 시작</translation> -<translation id="2146761408396054429">위험한 파일일 수도 있습니다.<ph name="LINE_BREAK" />비밀번호를 제공하면 Chrome에서 이 다운로드 항목을 확인할 수 있습니다. 비밀번호는 기기에 보관됩니다.</translation> <translation id="2151406531797534936">지금 Chrome을 다시 시작하세요</translation> <translation id="2174917724755363426">설치가 완료되지 않았습니다. 취소하시겠습니까?</translation> <translation id="2190166659037789668">업데이트 확인 오류: <ph name="UPDATE_CHECK_ERROR" /></translation> @@ -199,6 +198,7 @@ <translation id="4053720452172726777">Chrome 맞춤설정 및 제어</translation> <translation id="4106587138345390261">Chrome은 사용자의 정보를 더 적게 사용하면서도 사이트에서 동일한 탐색 환경을 제공할 수 있는 새로운 기능을 알아보고 있습니다</translation> <translation id="4110895483821904099">새 Chrome 프로필 설정</translation> +<translation id="4128488089242627000">Chrome이 더 빠르게 실행되며 JavaScript를 사용하는 기능이 의도한 대로 작동함(권장)</translation> <translation id="4147555960264124640">관리 계정으로 로그인하여 관리자에게 Chrome 프로필에 대한 제어권을 부여하려고 합니다. 앱, 북마크, 방문 기록, 비밀번호 및 기타 설정과 같은 Chrome 데이터가 <ph name="USER_NAME" /> 계정에 영구적으로 연결됩니다. 이후 이 데이터를 Google 계정 대시보드에서 삭제할 수는 있지만 다른 계정에 연결할 수는 없습니다. <ph name="LEARN_MORE" /></translation> <translation id="4148957013307229264">설치 중...</translation> <translation id="4149882025268051530">설치 프로그램이 보관 파일 압축 풀기에 실패했습니다. Chrome을 다시 다운로드하세요.</translation> @@ -245,6 +245,7 @@ <translation id="4793679854893018356">Chrome이 사용자를 안전하게 보호하는 방법 알아보기</translation> <translation id="4828579605166583682">Chrome에서 기존 비밀번호를 교체하려고 합니다. 허용하려면 Windows 비밀번호를 입력하세요.</translation> <translation id="4842397268809523050">도메인에 대한 동기화가 허용되지 않아 ChromeOS Flex에서 데이터를 동기화할 수 없습니다.</translation> +<translation id="4873692836499071887">향후 Chrome 업데이트를 받으려면 macOS 11 이상이 필요합니다. 이 컴퓨터에서는 macOS 10.15를 사용 중입니다.</translation> <translation id="4873783916118289636">Chrome의 주요 개인 정보 보호 및 보안 제어 기능을 검토합니다.</translation> <translation id="4891791193823137474">백그라운드에서 Chrome을 실행</translation> <translation id="4895437082222824641">새 Chrome 탭에서 링크 열기(&T)</translation> @@ -353,6 +354,7 @@ <translation id="677276454032249905">Chrome을 종료하시겠습니까?</translation> <translation id="6794858689789885890">Chrome 종료 시 기기에서 사이트 데이터를 항상 삭제</translation> <translation id="683440813066116847">Chrome Canary가 mDNS 트래픽을 허용하는 인바운드 규칙입니다.</translation> +<translation id="6851981911629679515">Chrome의 JavaScript 및 WebAssembly 엔진에서 추가 보호 기능 사용 설정</translation> <translation id="6881299373831449287">Chrome 업데이트 중</translation> <translation id="6885412569789873916">Chrome 베타 앱</translation> <translation id="6933858244219479645">ChromeOS 시스템</translation> @@ -474,6 +476,7 @@ <translation id="873133009373065397">Chrome에서 기본 브라우저를 확인하거나 설정할 수 없습니다.</translation> <translation id="8765470054473112089">주소 표시줄이나 검색창에 검색어를 입력하면 Chrome은 더 나은 추천을 위해 사용자가 입력한 내용을 기본 검색엔진에 전송합니다. 시크릿 모드에서는 이 기능이 사용 중지되어 있습니다.</translation> <translation id="878572486461146056">설치 오류: 네트워크 관리자가 설치를 방지하는 그룹 정책을 적용했습니다: <ph name="INSTALL_ERROR" /></translation> +<translation id="8801657293260363985">V8은 사이트 속도를 개선하는 데 사용되는 Chrome의 JavaScript 및 WebAssembly 엔진입니다.</translation> <translation id="8821043148920470810">향후 Chrome 업데이트를 받으려면 Windows 10 이상이 필요합니다. 이 컴퓨터에서는 Windows 7을 사용 중입니다.</translation> <translation id="8823341990149967727">Chrome이 이전 버전임</translation> <translation id="8825634023950448068">개인 정보를 보호하기 위해 Chrome에서는 4주가 지난 관심분야를 자동 삭제합니다. 인터넷 사용에 따라 특정 관심분야가 목록에 다시 표시될 수 있습니다. Chrome에서 관심분야를 잘못 예측했거나 특정 광고를 보고 싶지 않다면 직접 관심분야를 삭제하세요.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ky.xtb b/chrome/app/resources/google_chrome_strings_ky.xtb index 07b91d2a..d9a6e9a 100644 --- a/chrome/app/resources/google_chrome_strings_ky.xtb +++ b/chrome/app/resources/google_chrome_strings_ky.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">Интернетке туташуу мүмкүн болбой жатат. Эгер тармактык коргоону колдонсоңуз, <ph name="PRODUCT_EXE_NAME" /> кеңейтүүсүнө уруксат бериңиз.</translation> <translation id="2131230230468101642">Купуялыгыңызды камсыздоо үчүн 4 апта мурун кызыккан нерселериңизди автоматтык түрдө жок кылып турабыз. Жаңы сайттарды карап чыккан сайын кызыккан нерселериңиздин тизмеси жаңыланып турат. Же болбосо кызыккан нерселерге кошкуңуз келбегендерин алып салсаңыз болот.</translation> <translation id="2139300032719313227">ChromeOS'ту өчүрүп-күйгүзүңүз</translation> -<translation id="2146761408396054429">Бул файл кооптуу болушу мүмкүн<ph name="LINE_BREAK" />Эгер сырсөздү көрсөтсөңүз, Chrome бул жүктөлүп алынган файды текшере алат. Сырсөзүңүз түзмөгүңүздө кала берет</translation> <translation id="2151406531797534936">Chrome'ду азыр өчүрүп күйгүзүңүз</translation> <translation id="2174917724755363426">Орнотулган жок. Чын эле токтотосузбу?</translation> <translation id="2190166659037789668">Жаңыртууну текшерүү катасы: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lo.xtb b/chrome/app/resources/google_chrome_strings_lo.xtb index 8613560..961afaa 100644 --- a/chrome/app/resources/google_chrome_strings_lo.xtb +++ b/chrome/app/resources/google_chrome_strings_lo.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">ບໍ່ສາມາດເຊື່ອມຕໍ່ກັບອິນເຕີເນັດໄດ້. ຫາກທ່ານໃຊ້ firewall, ກະລຸນາເພີ່ມ <ph name="PRODUCT_EXE_NAME" /> ໃສ່ໃນລາຍຊື່ອະນຸຍາດ.</translation> <translation id="2131230230468101642">ເພື່ອປົກປ້ອງຄວາມເປັນສ່ວນຕົວຂອງທ່ານ, ພວກເຮົາຈະລຶບຄວາມສົນໃຈຂອງທ່ານທີ່ເກົ່າກວ່າ 4 ອາທິດອອກໂດຍອັດຕະໂນມັດ. ໃນເວລາທີ່ທ່ານສືບຕໍ່ການທ່ອງເວັບ, ຄວາມສົນໃຈອາດປາກົດຢູ່ລາຍຊື່ຄືນໃໝ່. ຫຼື ທ່ານສາມາດລຶບຄວາມສົນໃຈອອກໄດ້ຫາກທ່ານບໍ່ຕ້ອງການໃຫ້ Chrome ພິຈາລະນາ.</translation> <translation id="2139300032719313227">ຣີສະຕາດ ChromeOS</translation> -<translation id="2146761408396054429">ໄຟລ໌ນີ້ອາດເປັນອັນຕະລາຍ<ph name="LINE_BREAK" />Chrome ສາມາດກວດສອບການດາວໂຫຼດນີ້ໃຫ້ທ່ານໄດ້ຫາກທ່ານລະບຸລະຫັດຜ່ານ — ລະຫັດຜ່ານຂອງທ່ານຈະຢູ່ໃນອຸປະກອນຂອງທ່ານເທົ່ານັ້ນ</translation> <translation id="2151406531797534936">ກະລຸນາປິດເປີດ Chrome ຄືນໃໝ່ຕອນນີ້ເລີຍ</translation> <translation id="2174917724755363426">ການຕິດຕັ້ງບໍ່ສຳເລັດ. ທ່ານແນ່ໃຈບໍ່ວ່າທ່ານຕ້ອງການຍົກເລີກ?</translation> <translation id="2190166659037789668">ກວດສອບການອັບເດດຜິດພາດ: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lt.xtb b/chrome/app/resources/google_chrome_strings_lt.xtb index cdca822f..adacb3c 100644 --- a/chrome/app/resources/google_chrome_strings_lt.xtb +++ b/chrome/app/resources/google_chrome_strings_lt.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">Nepavyksta prisijungti prie interneto. Jei naudojate užkardą, į leidžiamųjų sąrašą įtraukite <ph name="PRODUCT_EXE_NAME" />.</translation> <translation id="2131230230468101642">Siekdami apsaugoti jūsų privatumą, automatiškai ištriname senesnius nei keturių savaičių pomėgius. Jums naršant toliau, pomėgiai vėl gali atsirasti sąraše. Arba galite pašalinti pomėgius, kurių „Chrome“ įtraukti neturėtų.</translation> <translation id="2139300032719313227">„Chrome“ OS paleidimas iš naujo</translation> -<translation id="2146761408396054429">Šis failas gali būti pavojingas<ph name="LINE_BREAK" />„Chrome“ gali patikrinti šį atsisiuntimą už jus, jei pateiksite slaptažodį. Slaptažodis liks jūsų įrenginyje</translation> <translation id="2151406531797534936">Dabar iš naujo paleiskite „Chrome“</translation> <translation id="2174917724755363426">Diegimas nebaigtas. Ar tikrai norite atšaukti?</translation> <translation id="2190166659037789668">Naujinio patikros klaida: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lv.xtb b/chrome/app/resources/google_chrome_strings_lv.xtb index 32fc7dde..926b469 100644 --- a/chrome/app/resources/google_chrome_strings_lv.xtb +++ b/chrome/app/resources/google_chrome_strings_lv.xtb
@@ -71,7 +71,6 @@ <translation id="2130870084309816036">Nevar izveidot savienojumu ar internetu. Ja izmantojat ugunsmūri, lūdzu, pievienojiet failu <ph name="PRODUCT_EXE_NAME" /> atļaušanas sarakstam.</translation> <translation id="2131230230468101642">Lai aizsargātu jūsu konfidencialitāti, mēs automātiski dzēšam intereses, kas ir glabātas ilgāk par četrām nedēļām. Intereses var tikt atkārtoti pievienotas sarakstam, kad turpināsiet pārlūkošanu. Varat arī noņemt intereses, ja nevēlaties, lai Chrome tās apsvērtu.</translation> <translation id="2139300032719313227">Chrome OS restartēšana</translation> -<translation id="2146761408396054429">Šis fails var būt bīstams.<ph name="LINE_BREAK" />Chrome var pārbaudīt šo lejupielādi, ja norādīsiet paroli, — parole paliks jūsu ierīcē.</translation> <translation id="2151406531797534936">Lūdzu, nekavējoties restartējiet pārlūku Chrome</translation> <translation id="2174917724755363426">Instalēšana nav pabeigta. Vai tiešām vēlaties atcelt?</translation> <translation id="2190166659037789668">Atjauninājumu pārbaudes kļūda: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_mk.xtb b/chrome/app/resources/google_chrome_strings_mk.xtb index fdc33a0..ed2f0a8 100644 --- a/chrome/app/resources/google_chrome_strings_mk.xtb +++ b/chrome/app/resources/google_chrome_strings_mk.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">Не може да се поврзе на интернет. Ако користите заштитен ѕид, ставете ја датотеката <ph name="PRODUCT_EXE_NAME" /> во список со дозволени.</translation> <translation id="2131230230468101642">Заради заштита на вашата приватност, автоматски ги бришеме вашите интереси што се постари од 4 седмици. Додека прелистувате, може да се појави интерес на списокот повторно. Или можете да ги отстраните интересите што не сакате Chrome да ги зема предвид.</translation> <translation id="2139300032719313227">Рестартирајте го Chrome OS</translation> -<translation id="2146761408396054429">Датотекава можеби е опасна<ph name="LINE_BREAK" />Chrome може да го провери преземањево за вас ако ја внесете лозинката. Лозинката ќе остане на уредот.</translation> <translation id="2151406531797534936">Рестартирајте го Chrome сега</translation> <translation id="2174917724755363426">Инсталирањето не е завршено. Дали сигурно сакате да го откажете?</translation> <translation id="2190166659037789668">Грешка при проверка за ажурирање: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ml.xtb b/chrome/app/resources/google_chrome_strings_ml.xtb index 7f0d86d..b576809 100644 --- a/chrome/app/resources/google_chrome_strings_ml.xtb +++ b/chrome/app/resources/google_chrome_strings_ml.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">ഇന്റർനെറ്റിലേക്ക് കണക്റ്റ് ചെയ്യാനാകുന്നില്ല. നിങ്ങൾ ഫയർവാൾ ഉപയോഗിക്കുന്നുണ്ടെങ്കിൽ <ph name="PRODUCT_EXE_NAME" /> എന്നതിനെ വൈറ്റ്ലിസ്റ്റ് ചെയ്യുക.</translation> <translation id="2131230230468101642">നിങ്ങളുടെ സ്വകാര്യത പരിരക്ഷിക്കുന്നതിന് 4 ആഴ്ചയിലധികം പഴക്കമുള്ള താൽപ്പര്യങ്ങൾ ഞങ്ങൾ സ്വയമേവ ഇല്ലാതാക്കുന്നു. നിങ്ങൾ ബ്രൗസ് ചെയ്യുന്നത് തുടരുമ്പോൾ, ഒരു താൽപ്പര്യം ലിസ്റ്റിൽ വീണ്ടും ദൃശ്യമായേക്കാം. അല്ലെങ്കിൽ Chrome പരിഗണിക്കരുതെന്ന് നിങ്ങൾ ആഗ്രഹിക്കുന്ന താൽപ്പര്യങ്ങൾ നീക്കം ചെയ്യാം.</translation> <translation id="2139300032719313227">ChromeOS റീസ്റ്റാർട്ട് ചെയ്യുക</translation> -<translation id="2146761408396054429">ഈ ഫയൽ അപകടകരമായേക്കാം<ph name="LINE_BREAK" />നിങ്ങൾ പാസ്വേഡ് നൽകിയാൽ Chrome-ന് നിങ്ങൾക്കായി ഈ ഡൗൺലോഡ് പരിശോധിക്കാൻ കഴിയും — നിങ്ങളുടെ പാസ്വേഡ് ഉപകരണത്തിൽ തന്നെ നിലനിൽക്കും</translation> <translation id="2151406531797534936">Chrome ഇപ്പോൾ റീസ്റ്റാർട്ട് ചെയ്യുക</translation> <translation id="2174917724755363426">ഇൻസ്റ്റാൾ ചെയ്യൽ പൂർത്തിയായിട്ടില്ല. റദ്ദാക്കണമെന്ന് ഉറപ്പാണോ?</translation> <translation id="2190166659037789668">അപ്ഡേറ്റ് പരിശോധനയിലെ പിശക്: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_mn.xtb b/chrome/app/resources/google_chrome_strings_mn.xtb index c2aadfeb..1b8829b 100644 --- a/chrome/app/resources/google_chrome_strings_mn.xtb +++ b/chrome/app/resources/google_chrome_strings_mn.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">Интернэтэд холбогдох боломжгүй байна. Хэрэв та галт хана ашигладаг бол <ph name="PRODUCT_EXE_NAME" />-г зөвшөөрсөн жагсаалтад оруулна уу.</translation> <translation id="2131230230468101642">Таны нууцлалыг хамгаалахын тулд бид таны 4 долоо хоногоос дээш хугацаатай сонирхлыг автоматаар устгадаг. Таныг үргэлжлүүлэн үзэх үед сонирхол нь жагсаалтад дахин харагдаж магадгүй. Эсвэл та Chrome-г бодож үзэхгүй байхыг хүсэж бй сонирхлоо хасах боломжтой.</translation> <translation id="2139300032719313227">ChromeOS-г дахин эхлүүлнэ үү</translation> -<translation id="2146761408396054429">Энэ файл аюултай байж магадгүй<ph name="LINE_BREAK" />Хэрэв та нууц үгээр хангавал Chrome энэ татаж авсан файлыг шалгах боломжтой бөгөөд таны нууц үг төхөөрөмжид тань үлдэнэ</translation> <translation id="2151406531797534936">Chrome-г одоо дахин эхлүүлнэ үү</translation> <translation id="2174917724755363426">Суулгаж дуусаагүй байна. Та цуцлахдаа итгэлтэй байна уу?</translation> <translation id="2190166659037789668">Шалгалтын алдааг шинэчлэх: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_mr.xtb b/chrome/app/resources/google_chrome_strings_mr.xtb index ee8785e..692255b 100644 --- a/chrome/app/resources/google_chrome_strings_mr.xtb +++ b/chrome/app/resources/google_chrome_strings_mr.xtb
@@ -73,7 +73,6 @@ <translation id="2130870084309816036">इंटरनेटशी कनेक्ट करता आले नाही. तुम्ही फायरवॉल वापरल्यास, कृपया अनुमती सूची <ph name="PRODUCT_EXE_NAME" />.</translation> <translation id="2131230230468101642">तुमच्या गोपनीयतेचे संरक्षण करण्यासाठी, आम्ही तुमची चार आठवड्यांपेक्षा जुनी स्वारस्ये ऑटो-डिलीट करतो. तुम्ही ब्राउझ करत राहाल, तसे सूचीमध्ये स्वारस्य पुन्हा दिसू शकते. किंवा Chrome ने विचारात घेऊ नये असे तुम्हाला वाटत असलेली स्वारस्ये तुम्ही काढून टाकू शकता.</translation> <translation id="2139300032719313227">ChromeOS रीस्टार्ट करा</translation> -<translation id="2146761408396054429">ही फाइल धोकादायक असू शकते<ph name="LINE_BREAK" />तुम्ही पासवर्ड पुरवल्यास, Chrome तुमच्या वतीने हा डाउनलोड तपासू शकते — तुमचा पासवर्ड तुमच्या डिव्हाइसवर राहतो</translation> <translation id="2151406531797534936">कृपया आता Chrome रीस्टार्ट करा</translation> <translation id="2174917724755363426">इंस्टॉलेशन पूर्ण झाले नाही. तुम्हाला नक्की रद्द करायचे आहे का?</translation> <translation id="2190166659037789668">अपडेट तपासणीदरम्यान एरर आली: <ph name="UPDATE_CHECK_ERROR" />.</translation> @@ -198,6 +197,7 @@ <translation id="4053720452172726777">Google Chrome कस्टमाइझ करा आणि नियंत्रित करा</translation> <translation id="4106587138345390261">Chrome नवीन वैशिष्ट्ये एक्सप्लोर करत आहे, ज्यामुळे साइटना तुमची कमी माहिती वापरून समान ब्राउझिंग अनुभव देता येतो</translation> <translation id="4110895483821904099">तुमची नवीन Chrome प्रोफाइल सेट करा</translation> +<translation id="4128488089242627000">Chrome जलद रन होतो आणि JavaScript वापरणारी वैशिष्ट्ये डिझाइन केल्यानुसार काम करतात (शिफारस केलेले)</translation> <translation id="4147555960264124640">तुम्ही एका व्यवस्थापित खात्यासह साइन इन करत आहात आणि तुमच्या Google Chrome प्रोफाइलवर त्याच्या ॲडमिनिस्ट्रेटरला नियंत्रण देत आहात. तुमचा Chrome डेटा, जसे की तुमचे अॅप्स, बुकमार्क, इतिहास, पासवर्ड आणि अन्य सेटिंग्ज <ph name="USER_NAME" /> वर कायमच्या बद्ध होतील. तुम्ही Google खाती डॅशबोर्ड द्वारे हा डेटा हटवण्यात सक्षम व्हाल, परंतु तुम्ही दुसर्या खात्यासह हा डेटा संबद्ध करण्यात सक्षम असणार नाही. <ph name="LEARN_MORE" /></translation> <translation id="4148957013307229264">स्थापना करत आहे...</translation> <translation id="4149882025268051530">संग्रहण संक्षिप्त करण्यास इन्स्टॉलर अयशस्वी. कृपया Google Chrome पुन्हा डाउनलोड करा.</translation> @@ -244,6 +244,7 @@ <translation id="4793679854893018356">Chrome तुम्हाला सुरक्षित कसे ठेवते याबद्दल जाणून घ्या</translation> <translation id="4828579605166583682">Google Chrome सध्याचे पासवर्ड बदलण्याचा प्रयत्न करत आहे. यासाठी अनुमती देण्यासाठी तुमचा Windows पासवर्ड टाइप करा.</translation> <translation id="4842397268809523050">तुमच्या डोमेनसाठी सिंक करणे उपलब्ध नसल्यामुळे ChromeOS Flex ला तुमचा डेटा सिंक करता आला नाही.</translation> +<translation id="4873692836499071887">भविष्यातील Google Chrome अपडेट मिळवण्यासाठी, तुमच्याकडे macOS 11 किंवा त्यानंतरची आवृत्ती असणे आवश्यक आहे. हा कॉंप्युटर macOS 10.15 वापरत आहे.</translation> <translation id="4873783916118289636">Chrome मधील महत्त्वाच्या गोपनीयता आणि सुरक्षा नियंत्रणांचे पुनरावलोकन करा</translation> <translation id="4891791193823137474">बॅकग्राउंडमध्ये Google Chrome सुरू द्या</translation> <translation id="4895437082222824641">लिंक नवीन Chrome &टॅबमध्ये उघडा</translation> @@ -351,6 +352,7 @@ <translation id="677276454032249905">तरीही Chrome बंद करायचे?</translation> <translation id="6794858689789885890">तुम्ही Chrome बंद करता, तेव्हा नेहमी तुमच्या डिव्हाइसवरून साइट डेटा हटवा</translation> <translation id="683440813066116847">mDNS रहदारीस अनुमती देण्यासाठी Google Chrome कॅनरी साठी अंतर्गामी नियम.</translation> +<translation id="6851981911629679515">Chrome च्या JavaScript आणि WebAssembly इंजिनमध्ये अतिरिक्त संरक्षण सुरू करा</translation> <translation id="6881299373831449287">Chrome अपडेट करत आहे</translation> <translation id="6885412569789873916">Chrome बीटा ॲप</translation> <translation id="6933858244219479645">ChromeOS सिस्टीम</translation> @@ -472,6 +474,7 @@ <translation id="873133009373065397">Google Chrome डीफॉल्ट ब्राउझर निर्धारित करू शकत नाही किंवा सेट करू शकत नाही</translation> <translation id="8765470054473112089">तुम्ही अॅड्रेस बार किंवा सर्च बॉक्समध्ये टाइप करता, तेव्हा अधिक चांगल्या सूचना मिळवण्यासाठी तुम्ही जे टाइप करता ते Chrome तुमच्या डीफॉल्ट शोध इंजीनला पाठवते. हे गुप्त मोड मध्ये बंद आहे.</translation> <translation id="878572486461146056">इंस्टॉलसंबंधित एरर: तुमच्या नेटवर्क अॅडमिनिस्ट्रेटरने गट धोरण लागू केले आहे, जे इंस्टॉलेशन प्रतिबंधित करते: <ph name="INSTALL_ERROR" /></translation> +<translation id="8801657293260363985">V8 हे Chrome चे JavaScript आणि WebAssembly इंजिन आहे, जे साइट परफॉर्मन्समध्ये सुधारणा करण्यासाठी वापरले जाते</translation> <translation id="8821043148920470810">भविष्यातील Google Chrome अपडेट मिळवण्यासाठी, तुमच्याकडे Windows 10 किंवा त्यापुढील आवृत्ती असणे आवश्यक आहे. हा कॉंप्युटर Windows 7 वापरत आहे.</translation> <translation id="8823341990149967727">Chrome कालबाह्य आहे</translation> <translation id="8825634023950448068">तुमच्या गोपनीयतेचे संरक्षण करण्यासाठी, आम्ही तुमची चार आठवड्यांपेक्षा जुनी स्वारस्ये ऑटो-डिलीट करतो. तुम्ही ब्राउझ करत राहाल, तसे सूचीमध्ये स्वारस्य पुन्हा दिसू शकते. आणि Chrome ने एखादे स्वारस्य चुकून जोडल्यास किंवा तुम्हाला विशिष्ट जाहिराती पाहायच्या नसल्यास, तुम्ही ते स्वारस्य काढून टाकू शकता.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ms.xtb b/chrome/app/resources/google_chrome_strings_ms.xtb index 6205282..97afc86d 100644 --- a/chrome/app/resources/google_chrome_strings_ms.xtb +++ b/chrome/app/resources/google_chrome_strings_ms.xtb
@@ -70,7 +70,6 @@ <translation id="2130870084309816036">Tidak dapat disambungkan kepada Internet. Jika anda menggunakan tembok api, sila senarai benarkan <ph name="PRODUCT_EXE_NAME" />.</translation> <translation id="2131230230468101642">Untuk melindungi privasi anda, kami memadamkan minat anda yang disimpan melebihi 4 minggu secara automatik. Semasa anda terus menyemak imbas, minat itu mungkin muncul semula dalam senarai. Anda juga boleh mengalih keluar minat yang anda tidak mahu dipertimbangkan oleh Chrome.</translation> <translation id="2139300032719313227">Mulakan semula Chrome OS</translation> -<translation id="2146761408396054429">Fail ini mungkin berbahaya<ph name="LINE_BREAK" />Chrome boleh memeriksa muat turun ini untuk anda jika anda memberikan kata laluan — kata laluan anda kekal pada peranti anda</translation> <translation id="2151406531797534936">Sila mulakan semula Chrome sekarang</translation> <translation id="2174917724755363426">Pemasangan belum selesai. Anda pasti ingin membatalkan?</translation> <translation id="2190166659037789668">Ralat semakan kemaskinian: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_my.xtb b/chrome/app/resources/google_chrome_strings_my.xtb index e6a1fa3..e300c877 100644 --- a/chrome/app/resources/google_chrome_strings_my.xtb +++ b/chrome/app/resources/google_chrome_strings_my.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">အင်တာနက် ချိတ်ဆက်၍ မရပါ။ firewall သုံးပါက <ph name="PRODUCT_EXE_NAME" /> ကို ခွင့်ပြုစာရင်းသို့ ထည့်ပါ။</translation> <translation id="2131230230468101642">သင်၏ကိုယ်ရေးအချက်အလက်လုံခြုံမှုကို ကာကွယ်ရန် ၄ ပတ်ကျော်ပြီဖြစ်သော သင့်စိတ်ဝင်စားမှုများကို အလိုအလျောက်ဖျက်သည်။ သင်ကြည့်ရှုနေသည့်အတွက် စိတ်ဝင်စားမှုက စာရင်းတွင် ထပ်ပေါ်လာနိုင်သည်။ သို့မဟုတ် Chrome ထည့်မတွက်ရမည့် စိတ်ဝင်စားမှုများကို ဖယ်ရှားနိုင်သည်။</translation> <translation id="2139300032719313227">ChromeOS ပြန်စပါ</translation> -<translation id="2146761408396054429">ဤဖိုင်သည် အန္တရာယ်ရှိနိုင်သည်<ph name="LINE_BREAK" />သင်စကားဝှက်ပေးပါက Chrome သည် သင့်အတွက် ဤဒေါင်းလုဒ်ကို စစ်ပေးနိုင်သည် — သင့်စကားဝှက်သည် ဤစက်၌သာ ရှိပါမည်</translation> <translation id="2151406531797534936">Chrome ကို ယခုပြန်စပါ</translation> <translation id="2174917724755363426">ထည့်သွင်းမှု မပြီးဆုံးပါ။ ပယ်ဖျက်လိုသည်မှာ သေချာပါသလား။</translation> <translation id="2190166659037789668">အပ်ဒိတ်စစ်ဆေးရန် အမှား- <ph name="UPDATE_CHECK_ERROR" />။</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ne.xtb b/chrome/app/resources/google_chrome_strings_ne.xtb index d9dbf5a6..f46d715 100644 --- a/chrome/app/resources/google_chrome_strings_ne.xtb +++ b/chrome/app/resources/google_chrome_strings_ne.xtb
@@ -72,7 +72,6 @@ <translation id="2130870084309816036">इन्टरनेटमा कनेक्ट गर्न सकिएन। तपाईंले कुनै फायरवाल प्रयोग गरेका खण्डमा कृपया श्वेतसूचीमा <ph name="PRODUCT_EXE_NAME" /> समावेश गर्नुहोस्।</translation> <translation id="2131230230468101642">तपाईंको गोपनीयताको सुरक्षार्थ हामी ४ हप्ताभन्दा पुराना तपाईंका रुचिहरू स्वतः मेटाउँछौँ। तपाईंले विभिन्न साइटहरू ब्राउज गरिराख्ने क्रममा कुनै रुचि यो सूचीमा फेरि देखिन सक्छ। अथवा तपाईं Chrome ले कुनै रुचिसँग सम्बन्धित सामग्री नदेखाओस् भन्ने चाहनुहुन्छ भने तपाईं उक्त रुचि हटाउन सक्नुहुन्छ।</translation> <translation id="2139300032719313227">ChromeOS रिस्टार्ट गर्नुहोस्</translation> -<translation id="2146761408396054429">यो फाइल खतरनाक हुन सक्छ<ph name="LINE_BREAK" />तपाईंले पासवर्ड प्रदान गर्नुभयो भने Chrome ले तपाईंका तर्फबाट यो फाइलको जाँच गरिदिन सक्छ। तपाईंको पासवर्ड तपाईंकै डिभाइसमा रहन्छ</translation> <translation id="2151406531797534936">कृपया अहिले नै Chrome पुनः सुरु गर्नुहोस्</translation> <translation id="2174917724755363426">इन्स्टल गर्ने प्रक्रिया पूरा भएन। तपाईंले यो प्रक्रिया रद्द गर्न खोज्नुभएकै हो?</translation> <translation id="2190166659037789668">अपडेट उपलब्ध छ कि छैन भन्ने कुरा जाँच्ने क्रममा निम्न त्रुटि भयो: <ph name="UPDATE_CHECK_ERROR" />।</translation>
diff --git a/chrome/app/resources/google_chrome_strings_nl.xtb b/chrome/app/resources/google_chrome_strings_nl.xtb index 4b539dee..e8738667 100644 --- a/chrome/app/resources/google_chrome_strings_nl.xtb +++ b/chrome/app/resources/google_chrome_strings_nl.xtb
@@ -73,7 +73,6 @@ <translation id="2130870084309816036">Kan geen verbinding maken met internet. Zet <ph name="PRODUCT_EXE_NAME" /> op de toelatingslijst als je een firewall gebruikt.</translation> <translation id="2131230230468101642">Ter bescherming van je privacy verwijderen we automatisch interesses die ouder zijn dan 4 weken. Het kan gebeuren dat een interesse weer in de lijst komt te staan als je blijft browsen. Je kunt ook interesses verwijderen waarvan je niet wilt dat Chrome deze overweegt.</translation> <translation id="2139300032719313227">Chrome OS opnieuw opstarten</translation> -<translation id="2146761408396054429">Dit bestand kan gevaarlijk zijn<ph name="LINE_BREAK" />Chrome kan deze download voor je checken als je het wachtwoord verstrekt. Je wachtwoord blijft op je apparaat staan.</translation> <translation id="2151406531797534936">Chrome nu opnieuw opstarten</translation> <translation id="2174917724755363426">Installatie niet afgerond. Weet je zeker dat je wilt annuleren?</translation> <translation id="2190166659037789668">Fout bij updaten: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_no.xtb b/chrome/app/resources/google_chrome_strings_no.xtb index e9447d2..0974914 100644 --- a/chrome/app/resources/google_chrome_strings_no.xtb +++ b/chrome/app/resources/google_chrome_strings_no.xtb
@@ -69,7 +69,6 @@ <translation id="2130870084309816036">Kan ikke koble til internett. Hvis du bruker en brannmur, må du legge til <ph name="PRODUCT_EXE_NAME" /> på godkjenningslisten.</translation> <translation id="2131230230468101642">For å beskytte personvernet ditt sletter vi automatisk interessene dine som er eldre enn fire uker. Når du fortsetter å surfe, kan det hende at interesser havner på listen igjen. Alternativt kan du fjerne interesse du ikke vil at Chrome skal vurdere.</translation> <translation id="2139300032719313227">Start ChromeOS på nytt</translation> -<translation id="2146761408396054429">Denne filen kan være farlig<ph name="LINE_BREAK" />Chrome kan sjekke denne nedlastingen for deg hvis du oppgir passordet. Passordet blir værende på denne enheten.</translation> <translation id="2151406531797534936">Start Chrome på nytt nå</translation> <translation id="2174917724755363426">Installasjonen er ikke fullført. Er du sikker på at du vil avbryte?</translation> <translation id="2190166659037789668">Feil ved oppdateringssjekk: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_or.xtb b/chrome/app/resources/google_chrome_strings_or.xtb index 6fbf87f..12663ade 100644 --- a/chrome/app/resources/google_chrome_strings_or.xtb +++ b/chrome/app/resources/google_chrome_strings_or.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">ଇଣ୍ଟରନେଟ ସହ କନେକ୍ଟ କରିବାରେ ଅସମର୍ଥ। ଯଦି ଆପଣ ଏକ ଫାୟାରୱାଲ ବ୍ୟବହାର କରନ୍ତି, ତେବେ ଦୟାକରି <ph name="PRODUCT_EXE_NAME" />କୁ ଆଲାଉଲିଷ୍ଟ କରନ୍ତୁ।</translation> <translation id="2131230230468101642">ଆପଣଙ୍କ ଗୋପନୀୟତାକୁ ସୁରକ୍ଷିତ ରଖିବା ପାଇଁ, ଆମେ ଆପଣଙ୍କ 4 ସପ୍ତାହରୁ ଅଧିକ ପୁରୁଣା ରୁଚିଗୁଡ଼ିକୁ ସ୍ୱତଃ-ଡିଲିଟ କରୁ। ଆପଣ ବ୍ରାଉଜ କରିବା ଜାରି ରଖିବା ସମୟରେ, ତାଲିକାରେ ଏକ ରୁଚି ପୁଣି ଦେଖାଯାଇପାରେ। କିମ୍ବା Chrome ଯେଉଁ ରୁଚିଗୁଡ଼ିକୁ ବିଚାରକୁ ନେଉ ବୋଲି ଆପଣ ଚାହୁଁନାହାଁନ୍ତି ସେଗୁଡ଼ିକୁ ଆପଣ କାଢ଼ିପାରିବେ।</translation> <translation id="2139300032719313227">ChromeOSକୁ ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ</translation> -<translation id="2146761408396054429">ଏହି ଫାଇଲ ବିପଦଜନକ ହୋଇପାରେ<ph name="LINE_BREAK" />ଯଦି ଆପଣ ପାସୱାର୍ଡ ପ୍ରଦାନ କରନ୍ତି ତେବେ Chrome ଆପଣଙ୍କ ପାଇଁ ଏହି ଡାଉନଲୋଡକୁ ଯାଞ୍ଚ କରିପାରିବ — ଆପଣଙ୍କ ପାସୱାର୍ଡ ଆପଣଙ୍କର ଡିଭାଇସରେ ରହିଥାଏ</translation> <translation id="2151406531797534936">ଦୟାକରି ବର୍ତ୍ତମାନ Chrome ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ</translation> <translation id="2174917724755363426">ଇନଷ୍ଟଲେସନ ସମ୍ପୂର୍ଣ୍ଣ ହୋଇନାହିଁ। ଆପଣ ବାତିଲ କରିବାକୁ ଚାହୁଁଥିବା ନିଶ୍ଚିତ?</translation> <translation id="2190166659037789668">ଅପଡେଟ ଯାଞ୍ଚରେ ତ୍ରୁଟି: <ph name="UPDATE_CHECK_ERROR" />।</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pa.xtb b/chrome/app/resources/google_chrome_strings_pa.xtb index 9577337..f18c766 100644 --- a/chrome/app/resources/google_chrome_strings_pa.xtb +++ b/chrome/app/resources/google_chrome_strings_pa.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">ਇੰਟਰਨੈੱਟ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ। ਜੇ ਤੁਸੀਂ ਫ਼ਾਇਰਵਾਲ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ ਪ੍ਰਵਾਨਿਤ ਸੂਚੀ ਵਿੱਚ <ph name="PRODUCT_EXE_NAME" /> ਨੂੰ ਸ਼ਾਮਲ ਕਰੋ।</translation> <translation id="2131230230468101642">ਤੁਹਾਡੀ ਪਰਦੇਦਾਰੀ ਦੀ ਸੁਰੱਖਿਆ ਲਈ, ਅਸੀਂ ਤੁਹਾਡੀਆਂ ਉਨ੍ਹਾਂ ਦਿਲਚਸਪੀਆਂ ਨੂੰ ਸਵੈਚਲਿਤ-ਮਿਟਾਉਂਦੇ ਹਾਂ ਜੋ 4 ਹਫ਼ਤਿਆਂ ਤੋਂ ਵੱਧ ਪੁਰਾਣੀਆਂ ਹਨ। ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ ਕਰਦੇ ਰਹਿਣ 'ਤੇ, ਸੂਚੀ ਵਿੱਚ ਕੋਈ ਦਿਲਚਸਪੀ ਦੁਬਾਰਾ ਦਿਸ ਸਕਦੀ ਹੈ। ਜਾਂ ਤੁਸੀਂ ਉਨ੍ਹਾਂ ਦਿਲਚਸਪੀਆਂ ਨੂੰ ਹਟਾ ਸਕਦੇ ਹੋ ਜਿਨ੍ਹਾਂ 'ਤੇ ਤੁਸੀਂ ਨਹੀਂ ਚਾਹੁੰਦੇ ਕਿ Chrome ਵਿਚਾਰ ਕਰੇ।</translation> <translation id="2139300032719313227">ChromeOS ਨੂੰ ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ</translation> -<translation id="2146761408396054429">ਇਹ ਫ਼ਾਈਲ ਖਤਰਨਾਕ ਹੋ ਸਕਦੀ ਹੈ<ph name="LINE_BREAK" />ਜੇ ਤੁਸੀਂ ਪਾਸਵਰਡ ਮੁਹੱਈਆ ਕਰਵਾਉਂਦੇ ਹੋ, ਤਾਂ Chrome ਤੁਹਾਡੇ ਲਈ ਇਸ ਡਾਊਨਲੋਡ ਦੀ ਜਾਂਚ ਕਰ ਸਕਦਾ ਹੈ — ਤੁਹਾਡਾ ਪਾਸਵਰਡ ਤੁਹਾਡੇ ਡੀਵਾਈਸ 'ਤੇ ਹੀ ਰਹਿੰਦਾ ਹੈ</translation> <translation id="2151406531797534936">ਕਿਰਪਾ ਕਰਕੇ ਹੁਣੇ Chrome ਨੂੰ ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ</translation> <translation id="2174917724755363426">ਸਥਾਪਨਾ ਪੂਰੀ ਨਹੀਂ ਹੋਈ। ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਰੱਦ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?</translation> <translation id="2190166659037789668">ਅੱਪਡੇਟ ਦੀ ਜਾਂਚ ਸੰਬੰਧੀ ਗੜਬੜੀ: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pl.xtb b/chrome/app/resources/google_chrome_strings_pl.xtb index 8bd4a4e..b84da3d 100644 --- a/chrome/app/resources/google_chrome_strings_pl.xtb +++ b/chrome/app/resources/google_chrome_strings_pl.xtb
@@ -69,7 +69,6 @@ <translation id="2130870084309816036">Nie można połączyć się z internetem. Jeśli używasz zapory sieciowej, dodaj <ph name="PRODUCT_EXE_NAME" /> do listy dozwolonych.</translation> <translation id="2131230230468101642">Aby chronić Twoją prywatność, automatycznie usuwamy Twoje zainteresowania, które są starsze niż 4 tygodnie. Podczas dalszego przeglądania zainteresowanie może się pojawić ponownie na liście. Możesz też usunąć zainteresowania, których Chrome ma nie brać pod uwagę.</translation> <translation id="2139300032719313227">Uruchom ponownie Chrome OS</translation> -<translation id="2146761408396054429">Ten plik może być niebezpieczny<ph name="LINE_BREAK" />Chrome może go sprawdzić, jeśli podasz hasło – pozostanie ono na urządzeniu</translation> <translation id="2151406531797534936">Uruchom Chrome ponownie</translation> <translation id="2174917724755363426">Instalacja nie została ukończona. Czy na pewno chcesz ją anulować?</translation> <translation id="2190166659037789668">Błąd sprawdzania aktualizacji: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pt-BR.xtb b/chrome/app/resources/google_chrome_strings_pt-BR.xtb index 5795e695..0d90edb 100644 --- a/chrome/app/resources/google_chrome_strings_pt-BR.xtb +++ b/chrome/app/resources/google_chrome_strings_pt-BR.xtb
@@ -70,7 +70,6 @@ <translation id="2130870084309816036">Não foi possível se conectar à Internet. Se você usa um firewall, coloque <ph name="PRODUCT_EXE_NAME" /> na lista de permissões.</translation> <translation id="2131230230468101642">Para proteger sua privacidade, excluímos automaticamente seus interesses que têm mais de quatro semanas. Enquanto você navega, um interesse pode aparecer na lista novamente. Você também pode remover interesses que não quer que o Chrome considere.</translation> <translation id="2139300032719313227">Reiniciar o ChromeOS</translation> -<translation id="2146761408396054429">Este arquivo pode ser perigoso<ph name="LINE_BREAK" />O Chrome poderá verificar este download se você fornecer a senha, que não sairá do seu dispositivo</translation> <translation id="2151406531797534936">Reinicie o Chrome agora</translation> <translation id="2174917724755363426">A instalação não foi concluída. Tem certeza de que quer cancelar?</translation> <translation id="2190166659037789668">Erro na verificação de atualização: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pt-PT.xtb b/chrome/app/resources/google_chrome_strings_pt-PT.xtb index 0fc825e..40e80185 100644 --- a/chrome/app/resources/google_chrome_strings_pt-PT.xtb +++ b/chrome/app/resources/google_chrome_strings_pt-PT.xtb
@@ -70,7 +70,6 @@ <translation id="2130870084309816036">Não é possível estabelecer ligação à Internet. Se usar uma firewall, adicione <ph name="PRODUCT_EXE_NAME" /> à lista de autorizações.</translation> <translation id="2131230230468101642">Para proteger a sua privacidade, eliminamos automaticamente os seus interesses com mais de 4 semanas. Enquanto navega, um interesse pode aparecer novamente na lista. Em alternativa, pode remover os interesses que não quer que o Chrome considere.</translation> <translation id="2139300032719313227">Reinicie o ChromeOS</translation> -<translation id="2146761408396054429">Este ficheiro pode ser perigoso<ph name="LINE_BREAK" />O Chrome pode verificar esta transferência se facultar a palavra-passe. A palavra-passe permanece no seu dispositivo</translation> <translation id="2151406531797534936">Reinicie o Chrome agora</translation> <translation id="2174917724755363426">Instalação não concluída. Tem a certeza de que quer cancelar?</translation> <translation id="2190166659037789668">Erro na verificação de atualizações: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ro.xtb b/chrome/app/resources/google_chrome_strings_ro.xtb index 791af67..fe80768a0 100644 --- a/chrome/app/resources/google_chrome_strings_ro.xtb +++ b/chrome/app/resources/google_chrome_strings_ro.xtb
@@ -69,7 +69,6 @@ <translation id="2130870084309816036">Nu se poate realiza conexiunea la internet. Dacă folosești un firewall, adaugă <ph name="PRODUCT_EXE_NAME" /> pe lista cu acces permis.</translation> <translation id="2131230230468101642">Pentru a-ți proteja confidențialitatea, ștergem automat categoriile de interese mai vechi de patru săptămâni. Pe măsură ce navighezi, o categorie de interese poate să reapară în listă. Sau poți elimina categoriile de interese pe care nu dorești ca Chrome să le ia în considerare.</translation> <translation id="2139300032719313227">Repornește sistemul de operare Chrome</translation> -<translation id="2146761408396054429">Fișierul poate fi periculos<ph name="LINE_BREAK" />Chrome poate verifica descărcarea dacă introduci parola. Aceasta rămâne pe dispozitiv</translation> <translation id="2151406531797534936">Repornește Chrome acum</translation> <translation id="2174917724755363426">Instalarea nu este finalizată. Sigur anulezi?</translation> <translation id="2190166659037789668">Eroare de verificare a actualizării: <ph name="UPDATE_CHECK_ERROR" />.</translation> @@ -194,6 +193,7 @@ <translation id="4053720452172726777">Personalizați și controlați Google Chrome</translation> <translation id="4106587138345390261">Chrome explorează noi funcții care le dau site-urilor posibilitatea să ofere aceeași experiență de navigare, folosind mai puține informații despre tine</translation> <translation id="4110895483821904099">Configurează noul profil Chrome</translation> +<translation id="4128488089242627000">Chrome rulează mai rapid și funcțiile care folosesc JavaScript ar trebui să ruleze conform destinației lor (recomandat)</translation> <translation id="4147555960264124640">Vă conectați cu un cont gestionat și îi permiteți administratorului acestuia controlul asupra profilului dvs. Google Chrome. Datele Chrome, cum ar fi aplicațiile, marcajele, istoricul, parolele și alte setări vor fi asociate definitiv cu <ph name="USER_NAME" />. Veți putea să ștergeți aceste date prin intermediul Tabloului de bord pentru Conturi Google, însă nu veți putea să asociați aceste date cu un alt cont. <ph name="LEARN_MORE" /></translation> <translation id="4148957013307229264">Se instalează...</translation> <translation id="4149882025268051530">Programul de instalare nu a putut decomprima arhiva. Descarcă din nou Google Chrome.</translation> @@ -240,6 +240,7 @@ <translation id="4793679854893018356">Află cum te protejează Chrome</translation> <translation id="4828579605166583682">Google Chrome încearcă să înlocuiască parolele existente. Introdu parola Windows pentru a permite acest lucru.</translation> <translation id="4842397268809523050">Sistemul de operare Chrome Flex nu a putut sincroniza datele, deoarece sincronizarea nu este disponibilă pentru domeniu.</translation> +<translation id="4873692836499071887">Pentru a primi actualizările Google Chrome viitoare, vei avea nevoie de macOS 11 sau o versiune ulterioară. Acest computer folosește macOS 10.15.</translation> <translation id="4873783916118289636">Examinează cele mai importante opțiuni de confidențialitate și de securitate din Chrome</translation> <translation id="4891791193823137474">Permite ca Google Chrome să ruleze în fundal</translation> <translation id="4895437082222824641">Deschide linkul într-o &filă Chrome nouă</translation> @@ -344,6 +345,7 @@ <translation id="677276454032249905">Ieși din Chrome oricum?</translation> <translation id="6794858689789885890">Șterge întotdeauna datele privind site-urile de pe dispozitiv când închizi Chrome</translation> <translation id="683440813066116847">Regula de intrare pentru Google Chrome Canary pentru a permite traficul mDNS.</translation> +<translation id="6851981911629679515">Activează protecția suplimentară în motorul JavaScript și WebAssembly din Chrome</translation> <translation id="6881299373831449287">Se actualizează Chrome</translation> <translation id="6885412569789873916">Aplicații Chrome Beta</translation> <translation id="6933858244219479645">Sistemul de operare Chrome</translation> @@ -465,6 +467,7 @@ <translation id="873133009373065397">Google Chrome nu poate determina sau seta browserul prestabilit</translation> <translation id="8765470054473112089">Când introduci text în bara de adrese sau în caseta de căutare, Chrome trimite ceea ce introduci la motorul de căutare prestabilit, pentru a primi sugestii mai bune. Această opțiune este dezactivată în modul incognito.</translation> <translation id="878572486461146056">Eroare la instalare: administratorul de rețea a aplicat o Politică de grup care împiedică instalarea: <ph name="INSTALL_ERROR" /></translation> +<translation id="8801657293260363985">V8 este motorul JavaScript și WebAssembly din Chrome, folosit pentru a îmbunătăți performanța site-ului</translation> <translation id="8821043148920470810">Pentru a primi actualizările Google Chrome viitoare, vei avea nevoie de Windows 10 sau o versiune ulterioară. Acest computer folosește Windows 7.</translation> <translation id="8823341990149967727">Chrome nu este actualizat</translation> <translation id="8825634023950448068">Pentru a-ți proteja confidențialitatea, ștergem automat categoriile de interese mai vechi de patru săptămâni. Pe măsură ce navighezi, o categorie de interese poate să reapară în listă. Iar dacă Chrome alege opțiunea greșită sau nu vrei să vezi anumite anunțuri, poți să elimini o categorie de interese.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ru.xtb b/chrome/app/resources/google_chrome_strings_ru.xtb index 46093ad7..8e73e7c 100644 --- a/chrome/app/resources/google_chrome_strings_ru.xtb +++ b/chrome/app/resources/google_chrome_strings_ru.xtb
@@ -69,7 +69,6 @@ <translation id="2130870084309816036">Не удалось подключиться к интернету. Если вы используете брандмауэр, добавьте приложение <ph name="PRODUCT_EXE_NAME" /> в белый список.</translation> <translation id="2131230230468101642">Для защиты вашей конфиденциальности интересы автоматически удаляются через 4 недели с момента создания. Если после этого вы продолжите использовать браузер, то удаленные интересы могут вновь появиться в списке. Чтобы Chrome не учитывал конкретные интересы, вы можете их удалить.</translation> <translation id="2139300032719313227">Перезапустите Chrome OS</translation> -<translation id="2146761408396054429">Этот файл может быть опасен.<ph name="LINE_BREAK" />Chrome проверит его, если вы введете пароль. Ваш пароль останется на устройстве.</translation> <translation id="2151406531797534936">Перезапустите Chrome</translation> <translation id="2174917724755363426">Установка не завершена. Отменить ее?</translation> <translation id="2190166659037789668">Ошибка проверки обновлений: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_si.xtb b/chrome/app/resources/google_chrome_strings_si.xtb index 32e7146..9529f75 100644 --- a/chrome/app/resources/google_chrome_strings_si.xtb +++ b/chrome/app/resources/google_chrome_strings_si.xtb
@@ -73,7 +73,6 @@ <translation id="2130870084309816036">අන්තර්ජාලය වෙත සම්බන්ධ වීමට නොහැකි වේ. ඔබ ෆයර්වෝලයක් භාවිතා කරන්නේ නම්, <ph name="PRODUCT_EXE_NAME" /> සාධුලේඛනගත කරන්න.</translation> <translation id="2131230230468101642">ඔබගේ පෞද්ගලිකත්වය ආරක්ෂා කිරීමට, අපි සති 4කට වඩා පැරණි ඔබගේ ලැදිකම් ස්වයංක්රියව මකමු. ඔබ දිගටම බ්රවුස් කරන විට, ලැදිකමක් නැවත ලැයිස්තුවේ දිස් විය හැකිය. නැතහොත් ඔබට Chrome සලකා බැලීමට අවශ්ය නොවන ලැදිකම් ඉවත් කළ හැකිය.</translation> <translation id="2139300032719313227">ChromeOS යළි අරඹන්න</translation> -<translation id="2146761408396054429">මෙම ගොනුව අනතුරුදායක විය හැක<ph name="LINE_BREAK" />ඔබ මුරපදය ලබා දෙන්නේ නම් Chrome හට ඔබට මෙම බාගැනීම පරීක්ෂා කළ හැක — ඔබේ මුරපදය ඔබේ උපාංගයෙහි පවතී</translation> <translation id="2151406531797534936">දැන් Chrome යළි අරඹන්න</translation> <translation id="2174917724755363426">ස්ථාපනය සම්පූර්ණ නැත. ඔබට අවලංගු කිරීමට අවශ්ය බව විශ්වාසද?</translation> <translation id="2190166659037789668">යාවත්කාලීන පරීක්ෂාවේ දෝෂය: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sk.xtb b/chrome/app/resources/google_chrome_strings_sk.xtb index af616564..7d70fc46 100644 --- a/chrome/app/resources/google_chrome_strings_sk.xtb +++ b/chrome/app/resources/google_chrome_strings_sk.xtb
@@ -72,7 +72,6 @@ <translation id="2130870084309816036">Nepodarilo sa pripojiť k internetu. Ak používate firewall, pridajte <ph name="PRODUCT_EXE_NAME" /> na zoznam povolených.</translation> <translation id="2131230230468101642">V rámci ochrany vášho súkromia automaticky odstraňujeme záujmy, ktoré sú staršie ako štyri týždne. Pri ďalšom prehliadaní sa v zozname môže znova zobraziť určitý záujem. Prípadne môžete odstrániť záujmy, ktoré nemá Chrome posudzovať.</translation> <translation id="2139300032719313227">Reštartovanie systému Chrome OS</translation> -<translation id="2146761408396054429">Tento súbor môže byť nebezpečný<ph name="LINE_BREAK" />Ak zadáte heslo, Chrome môže tento stiahnutý súbor skontrolovať (vaše heslo zostane v zariadení)</translation> <translation id="2151406531797534936">Reštartujte Chrome</translation> <translation id="2174917724755363426">Inštalácia nie je dokončená. Naozaj ju chcete zrušiť?</translation> <translation id="2190166659037789668">Chyba kontroly aktualizácií: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sl.xtb b/chrome/app/resources/google_chrome_strings_sl.xtb index 6697417f..de383899 100644 --- a/chrome/app/resources/google_chrome_strings_sl.xtb +++ b/chrome/app/resources/google_chrome_strings_sl.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">Internetne povezave ni mogoče vzpostaviti. Če uporabljate požarni zid, dodajte <ph name="PRODUCT_EXE_NAME" /> na seznam dovoljenih.</translation> <translation id="2131230230468101642">Zaradi zaščite vaše varnosti samodejno izbrišemo vaša zanimanja, starejša od 4 tednov. Ko brskate naprej, se zanimanje morda znova prikaže na seznamu. Odstranite lahko tudi zanimanja, za katera ne želite, da jih Chrome predlaga.</translation> <translation id="2139300032719313227">Vnovičen zagon sistema Chrome OS</translation> -<translation id="2146761408396054429">Ta datoteka je morda nevarna<ph name="LINE_BREAK" />Chrome lahko preveri ta prenos, če navedete geslo – geslo ostane v napravi</translation> <translation id="2151406531797534936">Znova zaženite Chrome</translation> <translation id="2174917724755363426">Namestitev še ni končana. Ali ste prepričani, da jo želite preklicati?</translation> <translation id="2190166659037789668">Napaka pri preverjanju posodobitev: <ph name="UPDATE_CHECK_ERROR" />.</translation> @@ -199,6 +198,7 @@ <translation id="4053720452172726777">Prilagajanje in nadziranje Google Chroma</translation> <translation id="4106587138345390261">Chrome raziskuje nove funkcije, ki spletnim mestom omogočajo, da zagotavljajo isto izkušnjo pri brskanju, pri tem pa uporabljajo manj vaših podatkov.</translation> <translation id="4110895483821904099">Nastavitev novega profila v Chromu</translation> +<translation id="4128488089242627000">Chrome se izvaja hitreje, funkcije, ki uporabljajo JavaScript, pa bi morale delovati, kot je predvideno (priporočeno)</translation> <translation id="4147555960264124640">Prijavljate se z upravljanim računom in s tem njegovemu skrbniku omogočate nadzor vašega profila v Google Chromu. Vaši podatki v Chromu, kot so aplikacije, zaznamki, zgodovina, gesla in druge nastavitve, bodo postali trajno povezani z uporabnikom <ph name="USER_NAME" />. Te podatke boste lahko izbrisali z nadzorno ploščo za Google Račune, vendar jih ne boste mogli povezati z drugim računom. <ph name="LEARN_MORE" /></translation> <translation id="4148957013307229264">Nameščanje ...</translation> <translation id="4149882025268051530">Namestitvenemu programu ni uspelo razširiti arhiva. Ponovno prenesite program Google Chrome.</translation> @@ -245,6 +245,7 @@ <translation id="4793679854893018356">Preberite, kako vas Chrome varuje</translation> <translation id="4828579605166583682">Google Chrome poskuša zamenjati obstoječa gesla. Če želite to omogočiti, vnesite geslo za Windows.</translation> <translation id="4842397268809523050">ChromeOS Flex ni mogel sinhronizirati podatkov, ker sinhronizacija ni na voljo za vašo domeno.</translation> +<translation id="4873692836499071887">Če želite prejemati prihodnje posodobitve Googla Chrome, potrebujete macOS 11 ali novejšo različico. V tem računalniku je nameščen macOS 10.15.</translation> <translation id="4873783916118289636">Oglejte si ključne kontrolnike zasebnosti in varnosti v Chromu.</translation> <translation id="4891791193823137474">Naj se Google Chrome izvaja v ozadju</translation> <translation id="4895437082222824641">Odpiranje povezave na novem &zavihku v Chromu</translation> @@ -353,6 +354,7 @@ <translation id="677276454032249905">Želite vseeno zapreti Chrome?</translation> <translation id="6794858689789885890">Podatki spletnih mest se vedno izbrišejo iz naprave, ko zaprete Chrome</translation> <translation id="683440813066116847">Pravilo za dohodni promet za Google Chrome Canary, ki dovoli promet mDNS.</translation> +<translation id="6851981911629679515">Vklopite dodatno zaščito v mehanizmih za JavaScript in WebAssembly za Chrome</translation> <translation id="6881299373831449287">Posodabljanje Chroma</translation> <translation id="6885412569789873916">Aplikacije za Chrome Beta</translation> <translation id="6933858244219479645">Sistem Chrome OS</translation> @@ -474,6 +476,7 @@ <translation id="873133009373065397">Google Chrome ne more določiti ali nastaviti privzetega brskalnika</translation> <translation id="8765470054473112089">Ko tipkate v naslovno vrstico ali iskalno polje, Chrome vaše vnose pošlje v privzeti iskalnik zaradi boljših predlogov. V anonimnem načinu je to izklopljeno.</translation> <translation id="878572486461146056">Napaka pri namestitvi: Skrbnik omrežja je uveljavil pravilnik skupine, ki preprečuje namestitev: <ph name="INSTALL_ERROR" /></translation> +<translation id="8801657293260363985">V8 je mehanizem za JavaScript in WebAssembly za Chrome, ki se uporablja za izboljšanje učinkovitosti delovanja spletnih mest</translation> <translation id="8821043148920470810">Če želite prejemati prihodnje posodobitve Google Chroma, potrebujete Windows 10 ali novejšega. V tem računalniku je nameščen Windows 7.</translation> <translation id="8823341990149967727">Chrome je zastarel</translation> <translation id="8825634023950448068">Zaradi zaščite vaše varnosti samodejno izbrišemo vaša zanimanja, starejša od 4 tednov. Ko brskate naprej, se zanimanje morda znova prikaže na seznamu. Če se Chrome zmoti in ne želite videti nekaterih oglasov, lahko odstranite zanimanje.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sq.xtb b/chrome/app/resources/google_chrome_strings_sq.xtb index 60cb70c..d88e603 100644 --- a/chrome/app/resources/google_chrome_strings_sq.xtb +++ b/chrome/app/resources/google_chrome_strings_sq.xtb
@@ -73,7 +73,6 @@ <translation id="2130870084309816036">Lidhja me internetin nuk mund të kryhej. Nëse përdor një mur mbrojtës, lejo <ph name="PRODUCT_EXE_NAME" /> në listën e lejimeve.</translation> <translation id="2131230230468101642">Për të mbrojtur privatësinë tënde, ne fshijmë automatikisht interesat e tua që janë më të vjetra se 4 javë. Ndërsa vazhdon të shfletosh, një interes mund të shfaqet përsëri në listë. Ndryshe, mund të heqësh interesat që nuk dëshiron që Chrome të marrë parasysh.</translation> <translation id="2139300032719313227">Rinis ChromeOS</translation> -<translation id="2146761408396054429">Ky skedar mund të jetë i rrezikshëm<ph name="LINE_BREAK" />Chrome mund ta kontrollojë këtë shkarkim për ty nëse ti jep fjalëkalimin - fjalëkalimi yt qëndron në pajisjen tënde</translation> <translation id="2151406531797534936">Rinise Chrome tani</translation> <translation id="2174917724755363426">Instalimi nuk përfundoi. E konfirmon që dëshiron ta anulosh?</translation> <translation id="2190166659037789668">Gabim në kontrollin e përditësimeve: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sr-Latn.xtb b/chrome/app/resources/google_chrome_strings_sr-Latn.xtb index 54cfcd5..3432312 100644 --- a/chrome/app/resources/google_chrome_strings_sr-Latn.xtb +++ b/chrome/app/resources/google_chrome_strings_sr-Latn.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">Povezivanje sa internetom nije uspelo. Ako koristite zaštitni zid, na listu dozvoljenih stavite <ph name="PRODUCT_EXE_NAME" />.</translation> <translation id="2131230230468101642">Radi zaštite privatnosti automatski brišemo interesovanja starija od 4 nedelje. Kada nastavite da pregledate, interesovanje će se možda ponovo pojaviti na listi. Možete i da uklanjate interesovanja za koja ne želite da ih Chrome uzima u obzir.</translation> <translation id="2139300032719313227">Restartujte Chrome OS</translation> -<translation id="2146761408396054429">Ovaj fajl je možda opasan<ph name="LINE_BREAK" />Chrome može da proveri ovo preuzimanje umesto vas ako unesete lozinku – lozinka ostaje na uređaju</translation> <translation id="2151406531797534936">Ponovo pokrenite Chrome</translation> <translation id="2174917724755363426">Instalacija nije dovršena. Želite stvarno da je otkažete?</translation> <translation id="2190166659037789668">Greška sa proverom ažuriranja: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sr.xtb b/chrome/app/resources/google_chrome_strings_sr.xtb index 1d163cd..25385c6 100644 --- a/chrome/app/resources/google_chrome_strings_sr.xtb +++ b/chrome/app/resources/google_chrome_strings_sr.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">Повезивање са интернетом није успело. Ако користите заштитни зид, на листу дозвољених ставите <ph name="PRODUCT_EXE_NAME" />.</translation> <translation id="2131230230468101642">Ради заштите приватности аутоматски бришемо интересовања старија од 4 недеље. Када наставите да прегледате, интересовање ће се можда поново појавити на листи. Можете и да уклањате интересовања за која не желите да их Chrome узима у обзир.</translation> <translation id="2139300032719313227">Рестартујте Chrome ОС</translation> -<translation id="2146761408396054429">Овај фајл је можда опасан<ph name="LINE_BREAK" />Chrome може да провери ово преузимање уместо вас ако унесете лозинку – лозинка остаје на уређају</translation> <translation id="2151406531797534936">Поново покрените Chrome</translation> <translation id="2174917724755363426">Инсталација није довршена. Желите стварно да је откажете?</translation> <translation id="2190166659037789668">Грешка са провером ажурирања: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sv.xtb b/chrome/app/resources/google_chrome_strings_sv.xtb index 7c4ab2b..d67d81c 100644 --- a/chrome/app/resources/google_chrome_strings_sv.xtb +++ b/chrome/app/resources/google_chrome_strings_sv.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">Det går inte att ansluta till internet. Om du använder en brandvägg lägger du till <ph name="PRODUCT_EXE_NAME" /> på godkännandelistan.</translation> <translation id="2131230230468101642">För att skydda din integritet raderar vi automatiskt intressen som är äldre än fyra veckor. Medan du surfar kan ett intresse dyka upp på listan igen. Du kan också ta bort intressen som du inte vill att Chrome ska inkludera.</translation> <translation id="2139300032719313227">Starta om Chrome OS</translation> -<translation id="2146761408396054429">Den här filen kan vara farlig<ph name="LINE_BREAK" />Chrome kan kontrollera den här nedladdningen åt dig om du anger lösenordet (lösenordet lämnar inte enheten)</translation> <translation id="2151406531797534936">Starta om Chrome nu</translation> <translation id="2174917724755363426">Installationen är inte klar. Är du säker på att du vill avbryta?</translation> <translation id="2190166659037789668">Fel vid uppdateringskontroll: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sw.xtb b/chrome/app/resources/google_chrome_strings_sw.xtb index c781a98..b740053 100644 --- a/chrome/app/resources/google_chrome_strings_sw.xtb +++ b/chrome/app/resources/google_chrome_strings_sw.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">Imeshindwa kuunganisha kwenye Intaneti. Iwapo unatumia kinga mtandao, tafadhali weka <ph name="PRODUCT_EXE_NAME" /> kwenye orodha ya vilivyoruhusiwa.</translation> <translation id="2131230230468101642">Ili kulinda faragha yako, tunafuta kiotomatiki mambo yanayokuvutia ambayo yapo kwenye orodha kwa zaidi ya wiki nne. Kadiri unavyoendelea kuvinjari, jambo linalokuvutia linaweza kuonekana tena kwenye orodha. Au unaweza kuondoa mambo yanayokuvutia ambayo usingependa Chrome iyazingatie.</translation> <translation id="2139300032719313227">Zima kisha uwashe Mfumo wa Uendeshaji wa Chrome</translation> -<translation id="2146761408396054429">Huenda faili hii ni hatari<ph name="LINE_BREAK" />Chrome inaweza kukukagulia kipakuliwa hiki ikiwa utaweka nenosiri — nenosiri lako hubaki kwenye kifaa chako</translation> <translation id="2151406531797534936">Tafadhali zima kisha uwashe Chrome sasa</translation> <translation id="2174917724755363426">Usakinishaji haujakamilika. Je, una uhakika unataka kughairi?</translation> <translation id="2190166659037789668">Hitilafu ya ukaguzi wa sasisho: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ta.xtb b/chrome/app/resources/google_chrome_strings_ta.xtb index 9af707d8..da45368 100644 --- a/chrome/app/resources/google_chrome_strings_ta.xtb +++ b/chrome/app/resources/google_chrome_strings_ta.xtb
@@ -70,7 +70,6 @@ <translation id="2130870084309816036">இணையத்துடன் இணைக்க முடியவில்லை. ஃபயர்வாலைப் பயன்படுத்தினால் <ph name="PRODUCT_EXE_NAME" /> ஃபைலை ஏற்புப் பட்டியலில் சேர்க்கவும்.</translation> <translation id="2131230230468101642">உங்கள் தனியுரிமையைப் பாதுகாக்க, 4 வாரங்களுக்கு முந்தைய ஆர்வங்களைத் தானாக நீக்குவோம். நீங்கள் தொடர்ந்து உலாவும்போது, ஏதேனுமொரு ஆர்வம் மீண்டும் பட்டியலில் காட்டப்படக்கூடும். Chrome கருத்தில்கொள்ள வேண்டாம் என நீங்கள் நினைக்கும் ஆர்வங்களை நீங்களாகவும் அகற்றலாம்.</translation> <translation id="2139300032719313227">ChromeOSஸை மீண்டும் தொடங்குங்கள்</translation> -<translation id="2146761408396054429">இந்த ஃபைல் ஆபத்தானதாக இருக்கலாம்<ph name="LINE_BREAK" />நீங்கள் கடவுச்சொல்லை வழங்கினால் Chrome உங்களுக்காக இந்தப் பதிவிறக்கத்தைச் சரிபார்க்கும், அத்துடன் உங்கள் கடவுச்சொல் பகிரப்படாமல் உங்கள் சாதனத்திலேயே இருக்கும்</translation> <translation id="2151406531797534936">Chromeமை இப்போது மீண்டும் தொடங்கவும்</translation> <translation id="2174917724755363426">நிறுவல் நிறைவடையவில்லை. நிச்சயமாக ரத்துசெய்ய வேண்டுமா?</translation> <translation id="2190166659037789668">புதுப்பிப்புச் சரிபார்ப்புப் பிழை: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_te.xtb b/chrome/app/resources/google_chrome_strings_te.xtb index 935e30f..ef22327 100644 --- a/chrome/app/resources/google_chrome_strings_te.xtb +++ b/chrome/app/resources/google_chrome_strings_te.xtb
@@ -70,7 +70,6 @@ <translation id="2130870084309816036">ఇంటర్నెట్కు కనెక్ట్ చేయడం సాధ్యపడలేదు. మీరు ఫైర్వాల్ను ఉపయోగిస్తుంటే, దయచేసి <ph name="PRODUCT_EXE_NAME" />ను వైట్లిస్ట్కు జోడించండి.</translation> <translation id="2131230230468101642">మీ గోప్యతను రక్షించడానికి, 4 వారాల కంటే పాతవైన మీ ఆసక్తులను మేము ఆటోమేటిక్గా తొలగిస్తాము. మీరు బ్రౌజ్ చేస్తూ ఉంటే, ఆసక్తి ఉన్న ఆ టాపిక్ మళ్లీ లిస్ట్లో కనిపించవచ్చు. లేదా Chrome పరిగణనలోకి తీసుకోకూడదు అని మీరు భావించే ఆసక్తులను తీసివేయవచ్చు.</translation> <translation id="2139300032719313227">ChromeOSను రీస్టార్ట్ చేయండి</translation> -<translation id="2146761408396054429">ఈ ఫైల్ ప్రమాదకరమైనది కావచ్చు<ph name="LINE_BREAK" />మీరు పాస్వర్డ్ను అందించినట్లయితే Chrome మీ కోసం ఈ డౌన్లోడ్ను చెక్ చేస్తుంది — మీ పాస్వర్డ్ మీ పరికరంలో అలాగే ఉంటుంది</translation> <translation id="2151406531797534936">దయచేసి Chromeను ఇప్పుడే మళ్ళీ ప్రారంభించండి</translation> <translation id="2174917724755363426">ఇన్స్టాలేషన్ పూర్తి కాలేదు. మీరు ఖచ్చితంగా రద్దు చేయాలనుకుంటున్నారా?</translation> <translation id="2190166659037789668">అప్డేట్ల కోసం చెక్ చేసేటప్పుడు ఎర్రర్ ఏర్పడింది: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_th.xtb b/chrome/app/resources/google_chrome_strings_th.xtb index 9575223..52d7ba78 100644 --- a/chrome/app/resources/google_chrome_strings_th.xtb +++ b/chrome/app/resources/google_chrome_strings_th.xtb
@@ -69,7 +69,6 @@ <translation id="2130870084309816036">เชื่อมต่อกับอินเทอร์เน็ตไม่ได้ หากคุณใช้ไฟร์วอลล์ โปรดเพิ่ม <ph name="PRODUCT_EXE_NAME" /> ในรายการที่อนุญาต</translation> <translation id="2131230230468101642">เราลบความสนใจที่เก่ากว่า 4 สัปดาห์โดยอัตโนมัติเพื่อปกป้องความเป็นส่วนตัวของคุณ ความสนใจอาจกลับมาปรากฏในรายการอีกเมื่อคุณท่องเว็บต่อ หรือคุณจะนำความสนใจที่ไม่ต้องการให้ Chrome พิจารณาออกก็ได้</translation> <translation id="2139300032719313227">รีสตาร์ท Chrome OS</translation> -<translation id="2146761408396054429">ไฟล์นี้อาจเป็นอันตราย<ph name="LINE_BREAK" />Chrome ตรวจสอบการดาวน์โหลดนี้ให้คุณได้หากคุณให้รหัสผ่าน โดยรหัสผ่านจะอยู่แค่ในอุปกรณ์ของคุณเท่านั้น</translation> <translation id="2151406531797534936">โปรดรีสตาร์ท Chrome ตอนนี้เลย</translation> <translation id="2174917724755363426">การติดตั้งไม่สมบูรณ์ คุณแน่ใจไหมว่าต้องการยกเลิก</translation> <translation id="2190166659037789668">ข้อผิดพลาดในการตรวจสอบการอัปเดต: <ph name="UPDATE_CHECK_ERROR" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_tr.xtb b/chrome/app/resources/google_chrome_strings_tr.xtb index 098c8b3..58b42fa 100644 --- a/chrome/app/resources/google_chrome_strings_tr.xtb +++ b/chrome/app/resources/google_chrome_strings_tr.xtb
@@ -69,7 +69,6 @@ <translation id="2130870084309816036">İnternete bağlanılamıyor. Güvenlik duvarı kullanıyorsanız <ph name="PRODUCT_EXE_NAME" /> dosyasını izin verilenler listesine ekleyin.</translation> <translation id="2131230230468101642">Gizliliğinizi korumak için 4 haftadan eski ilgi alanlarınızı otomatik olarak sileriz. Siz internette gezindikçe ilgi alanları tekrar listede görünmeye başlayabilir. Dilerseniz Chrome'un dikkate almasını istemediğiniz ilgi alanlarını kaldırabilirsiniz.</translation> <translation id="2139300032719313227">ChromeOS'i yeniden başlat</translation> -<translation id="2146761408396054429">Bu dosya tehlikeli olabilir<ph name="LINE_BREAK" />Şifreyi sağlarsanız Chrome, indirme işlemini sizin için kontrol edebilir. Şifreniz cihazınızda kalır</translation> <translation id="2151406531797534936">Lütfen Chrome'u şimdi yeniden başlatın</translation> <translation id="2174917724755363426">Yükleme işlemi tamamlanmadı. İptal etmek istediğinizden emin misiniz?</translation> <translation id="2190166659037789668">Güncelleme denetimi hatası: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_uk.xtb b/chrome/app/resources/google_chrome_strings_uk.xtb index e1e01b1..0a49e02 100644 --- a/chrome/app/resources/google_chrome_strings_uk.xtb +++ b/chrome/app/resources/google_chrome_strings_uk.xtb
@@ -70,7 +70,6 @@ <translation id="2130870084309816036">Не вдалося підключитися до Інтернету. Якщо ви використовуєте брандмауер, додайте <ph name="PRODUCT_EXE_NAME" /> у білий список.</translation> <translation id="2131230230468101642">З міркувань конфіденційності ми автоматично видаляємо ваші інтереси через 4 тижні. Якщо ви й надалі переглядатимете веб-сторінки, відповідний інтерес може знову з’явитися в списку. Щоб Chrome не враховував певні інтереси, їх можна вилучити.</translation> <translation id="2139300032719313227">Перезапустіть ОС Chrome</translation> -<translation id="2146761408396054429">Цей файл може бути небезпечним.<ph name="LINE_BREAK" />Chrome перевірить його, якщо ви введете пароль. Інформація про пароль залишиться на вашому пристрої.</translation> <translation id="2151406531797534936">Перезапустіть Chrome</translation> <translation id="2174917724755363426">Встановлення не завершено. Скасувати його?</translation> <translation id="2190166659037789668">Помилка перевірки наявності оновлень: <ph name="UPDATE_CHECK_ERROR" />.</translation> @@ -195,6 +194,7 @@ <translation id="4053720452172726777">Налаштування та керування Google Chrome</translation> <translation id="4106587138345390261">Chrome досліджує нові функції, з якими сайти могли б працювати як завжди, але використовувати менше вашої інформації</translation> <translation id="4110895483821904099">Налаштуйте новий профіль Chrome</translation> +<translation id="4128488089242627000">Chrome виконує завдання швидше, а функції, які використовують JavaScript, мають працювати належним чином (рекомендовано)</translation> <translation id="4147555960264124640">Ви входите, використовуючи дані облікового запису, яким керує адміністратор. Адміністратор може контролювати ваш профіль Google Chrome. Ваші дані Chrome, як-от програми, закладки, історія, паролі й інші налаштування, буде назавжди пов’язано з обліковим записом <ph name="USER_NAME" />. Ці дані можна видалити на інформаційній панелі Облікових записів Google, але ви не зможете пов’язати їх з іншим обліковим записом. <ph name="LEARN_MORE" /></translation> <translation id="4148957013307229264">Встановлення...</translation> <translation id="4149882025268051530">Не вдалося відкрити архів за допомогою програми встановлення. Завантажте Google Chrome ще раз.</translation> @@ -241,6 +241,7 @@ <translation id="4793679854893018356">Дізнайтесь, як Chrome дбає про вашу безпеку</translation> <translation id="4828579605166583682">Google Chrome намагається замінити наявні паролі. Щоб дозволити це, введіть пароль Windows.</translation> <translation id="4842397268809523050">ОС Chrome Flex не змогла синхронізувати дані, оскільки ця функція недоступна для вашого домену.</translation> +<translation id="4873692836499071887">Щоб отримувати майбутні оновлення Google Chrome, потрібна операційна система macOS 11 або новішої версії. На цьому комп’ютері встановлено macOS 10.15.</translation> <translation id="4873783916118289636">Перевірте основні елементи керування конфіденційністю та безпекою в Chrome</translation> <translation id="4891791193823137474">Дозволити Google Chrome працювати у фоновому режимі</translation> <translation id="4895437082222824641">Відкрити посилання в новій &вкладці Chrome</translation> @@ -345,6 +346,7 @@ <translation id="677276454032249905">Усе одно вийти з Chrome?</translation> <translation id="6794858689789885890">Завжди видаляти дані сайтів із пристрою, коли ви закриваєте Chrome</translation> <translation id="683440813066116847">Вхідне правило для Google Chrome Canary дозволяє трафік mDNS.</translation> +<translation id="6851981911629679515">Увімкніть додатковий захист у системі JavaScript і WebAssembly для Chrome</translation> <translation id="6881299373831449287">Оновлення Chrome</translation> <translation id="6885412569789873916">Бета-версія додатків Chrome</translation> <translation id="6933858244219479645">ОС Chrome</translation> @@ -466,6 +468,7 @@ <translation id="873133009373065397">Google Chrome не може визначити чи встановити веб-переглядач за умовчанням</translation> <translation id="8765470054473112089">Коли ви вводите текст в адресному рядку або полі пошуку, Chrome надсилає цей запит у пошукову систему за умовчанням, щоб надати вам кращі підказки. В анонімному режимі цю функцію вимкнено.</translation> <translation id="878572486461146056">Сталася помилка. Адміністратор мережі застосував правило для груп, яке забороняє встановлення: <ph name="INSTALL_ERROR" />.</translation> +<translation id="8801657293260363985">V8 – це система JavaScript і WebAssembly для Chrome, яка використовується, щоб покращувати ефективність сайтів.</translation> <translation id="8821043148920470810">Щоб отримувати майбутні оновлення Google Chrome, потрібна операційна система Windows 10 або новішої версії. На цьому комп’ютері встановлено Windows 7.</translation> <translation id="8823341990149967727">Версія Chrome застаріла</translation> <translation id="8825634023950448068">З міркувань конфіденційності ми автоматично видаляємо ваші інтереси через 4 тижні. Якщо ви й надалі переглядатимете веб-сторінки, відповідний інтерес може знову з’явитися в списку. Якщо Chrome неправильно оцінив ваш інтерес або ви не хочете бачити певні оголошення, інтерес можна вилучити.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ur.xtb b/chrome/app/resources/google_chrome_strings_ur.xtb index 7569cba8..6ac406e 100644 --- a/chrome/app/resources/google_chrome_strings_ur.xtb +++ b/chrome/app/resources/google_chrome_strings_ur.xtb
@@ -73,7 +73,6 @@ <translation id="2130870084309816036">انٹرنیٹ سے منسلک ہونے سے قاصر ہے۔ اگر آپ فائر وال استعمال کرتے ہیں تو براہ کرم اجازت یافتہ کی فہرست میں <ph name="PRODUCT_EXE_NAME" /> کو شامل کریں۔</translation> <translation id="2131230230468101642">آپ کی رازداری کے تحفظ کے لئے، ہم 4 ہفتے سے زیادہ پرانی آپ کی دلچسپیوں کو خودکار طور پر حذف کر دیتے ہیں۔ جب تک آپ براؤزنگ جاری رکھتے ہیں، فہرست پر دلچسپی دوبارہ ظاہر ہو سکتی ہے۔ یا آپ ان دلچسپیوں کو ہٹا سکتے ہیں جنہیں آپ چاہتے ہیں کہ Chrome نہ دکھائے۔</translation> <translation id="2139300032719313227">ChromeOS کو ری اسٹارٹ کریں</translation> -<translation id="2146761408396054429">یہ فائل خطرناک ہو سکتی ہے<ph name="LINE_BREAK" />اگر آپ پاس ورڈ فراہم کرتے ہیں تو Chrome آپ کے لیے اس ڈاؤن لوڈ کو چیک کر سکتا ہے — آپ کا پاس ورڈ آپ کے آلے پر رہتا ہے</translation> <translation id="2151406531797534936">براہ کرم ابھی Chrome دوبارہ شروع کریں</translation> <translation id="2174917724755363426">انسٹالیشن مکمل نہیں ہے۔ کیا آپ واقعی منسوخ کرنا چاہتے ہیں؟</translation> <translation id="2190166659037789668">اپ ڈیٹ چیک کرنے میں خرابی: <ph name="UPDATE_CHECK_ERROR" />۔</translation>
diff --git a/chrome/app/resources/google_chrome_strings_uz.xtb b/chrome/app/resources/google_chrome_strings_uz.xtb index 74ed319a..4c12a70 100644 --- a/chrome/app/resources/google_chrome_strings_uz.xtb +++ b/chrome/app/resources/google_chrome_strings_uz.xtb
@@ -71,7 +71,6 @@ <translation id="2130870084309816036">Internetga ulanmadi. Himoya devori ishlatsangiz, <ph name="PRODUCT_EXE_NAME" /> aloqasiga ruxsat bering.</translation> <translation id="2131230230468101642">Maxfiylikni himoya qilish maqsadida biz 4 haftadan uzoq saqlangan qiziqishlarni avtomatik oʻchiramiz. Sahifalar takroriy ochilganida qiziqish roʻyxatda yana chiqishi mumkin. Yoki Chrome foydalanmasligini istasangiz, qiziqishlarni olib tashlashingiz mumkin.</translation> <translation id="2139300032719313227">ChromeOS tizimini qayta ishga tushirish</translation> -<translation id="2146761408396054429">Bu fayl xavfli boʻlishi mumkin<ph name="LINE_BREAK" />Parol bilan tasdiqlasangiz, Chrome bu yuklanmani tekshirishi mumkin — parolingiz qurilmada saqlanadi</translation> <translation id="2151406531797534936">Chromeni hozir qayta ishga tushiring</translation> <translation id="2174917724755363426">Oʻrnatish yakunlanmadi. Haqiqatan ham bekor qilmoqchimisiz?</translation> <translation id="2190166659037789668">Yangilanishni tekshirishda xato: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_vi.xtb b/chrome/app/resources/google_chrome_strings_vi.xtb index e7eb83f..2b79c55 100644 --- a/chrome/app/resources/google_chrome_strings_vi.xtb +++ b/chrome/app/resources/google_chrome_strings_vi.xtb
@@ -72,7 +72,6 @@ <translation id="2130870084309816036">Không kết nối với Internet. Nếu bạn sử dụng tường lửa, vui lòng đưa <ph name="PRODUCT_EXE_NAME" /> vào danh sách cho phép.</translation> <translation id="2131230230468101642">Để bảo vệ quyền riêng tư của bạn, chúng tôi tự động xoá các mối quan tâm không được làm mới sau 4 tuần. Trong quá trình bạn duyệt web, các mối quan tâm có thể xuất hiện lại trong danh sách. Bạn cũng có thể xoá các mối quan tâm mà bạn không muốn Chrome xem xét.</translation> <translation id="2139300032719313227">Khởi động lại ChromeOS</translation> -<translation id="2146761408396054429">Tệp này có thể nguy hiểm<ph name="LINE_BREAK" />Chrome có thể giúp bạn kiểm tra tệp đã tải xuống này nếu bạn cung cấp mật khẩu. Mật khẩu của bạn vẫn được lưu trên thiết bị</translation> <translation id="2151406531797534936">Vui lòng khởi động lại Chrome ngay bây giờ</translation> <translation id="2174917724755363426">Chưa cài đặt xong. Bạn có chắc chắn muốn huỷ không?</translation> <translation id="2190166659037789668">Lỗi khi kiểm tra bản cập nhật: <ph name="UPDATE_CHECK_ERROR" />.</translation> @@ -89,7 +88,7 @@ <translation id="2359808026110333948">Tiếp tục</translation> <translation id="2401189691232800402">Hệ thống ChromeOS</translation> <translation id="2409816192575564775">{NUM_DEVICES,plural, =0{Một hoặc nhiều tiện ích của Chrome đã truy cập vào 1 thiết bị HID}=1{Một hoặc nhiều tiện ích của Chrome đang truy cập vào 1 thiết bị HID}other{Một hoặc nhiều tiện ích của Chrome đang truy cập vào # thiết bị HID}}</translation> -<translation id="2424440923901031101">Tiện ích này vi phạm chính sách của Cửa hàng Chrome trực tuyến và có thể không an toàn. Hãy xoá khỏi Chrome để tiện ích này không thể xem và thay đổi dữ liệu của bạn (bao gồm cả thông tin cá nhân) trên các trang web bạn truy cập nữa.</translation> +<translation id="2424440923901031101">Tiện ích này vi phạm chính sách của Chrome Web Store và có thể không an toàn. Hãy xoá khỏi Chrome để tiện ích này không thể xem và thay đổi dữ liệu của bạn (bao gồm cả thông tin cá nhân) trên các trang web bạn truy cập nữa.</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="2472092250898121027">Tiện ích này chứa phần mềm độc hại và không an toàn. Hãy xoá khỏi Chrome để tiện ích này không thể xem và thay đổi dữ liệu của bạn (bao gồm cả thông tin cá nhân) trên các trang web bạn truy cập nữa.</translation> <translation id="2472163211318554013">Đăng nhập để khai thác tối đa Chrome</translation> @@ -234,7 +233,7 @@ <translation id="4627412468266359539">Không bắt buộc: Giúp cải thiện các tính năng và hiệu suất của ChromeOS Flex bằng cách tự động gửi dữ liệu sử dụng và thông tin chẩn đoán cho Google.</translation> <translation id="4633000520311261472">Để làm cho Chrome an toàn hơn, chúng tôi đã vô hiệu hóa một số tiện ích không được liệt kê trong <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> và có thể đã được thêm mà bạn không biết.</translation> <translation id="4680828127924988555">Huỷ cài đặt</translation> -<translation id="469553575393225953">Các tiện ích, ứng dụng và giao diện không rõ nguồn gốc có thể làm hại thiết bị của bạn. Chrome đề xuất chỉ cài đặt những mục trên qua Cửa hàng Chrome trực tuyến</translation> +<translation id="469553575393225953">Các tiện ích, ứng dụng và giao diện không rõ nguồn gốc có thể làm hại thiết bị của bạn. Chrome đề xuất chỉ cài đặt những mục trên qua Chrome Web Store</translation> <translation id="4724676981607797757">Không cài đặt được do lỗi giao thức không được hỗ trợ.</translation> <translation id="4728575227883772061">Không cài đặt được do lỗi chưa xác định. Nếu Google Chrome hiện đang chạy, vui lòng đóng Google Chrome và thử lại.</translation> <translation id="4747730611090640388">Chrome có thể ước đoán mối quan tâm của bạn. Sau đó, trang web mà bạn truy cập có thể đề nghị Chrome cho biết mối quan tâm của bạn nhằm cá nhân hoá quảng cáo mà bạn thấy.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-CN.xtb b/chrome/app/resources/google_chrome_strings_zh-CN.xtb index 11b68d0..167a94a 100644 --- a/chrome/app/resources/google_chrome_strings_zh-CN.xtb +++ b/chrome/app/resources/google_chrome_strings_zh-CN.xtb
@@ -69,7 +69,6 @@ <translation id="2130870084309816036">无法连接到互联网。如果您使用防火墙,请将 <ph name="PRODUCT_EXE_NAME" /> 加入许可名单。</translation> <translation id="2131230230468101642">为了保护您的隐私,如果您的兴趣保留时间超过 4 周,系统便会自动将其删除。随着您继续浏览,某项兴趣可能会再次出现在列表中。您也可以移除不希望纳入 Chrome 考虑范围的兴趣。</translation> <translation id="2139300032719313227">重启 Chrome 操作系统</translation> -<translation id="2146761408396054429">这可能是个危险文件<ph name="LINE_BREAK" />如果您提供了密码(密码会保存在您的设备上),Chrome 可为您检查此下载内容</translation> <translation id="2151406531797534936">请立即重启 Chrome</translation> <translation id="2174917724755363426">尚未完成安装,确定要取消吗?</translation> <translation id="2190166659037789668">更新检查错误:<ph name="UPDATE_CHECK_ERROR" />。</translation> @@ -194,6 +193,7 @@ <translation id="4053720452172726777">自定义及控制 Google Chrome</translation> <translation id="4106587138345390261">Chrome 团队正在探索各种新功能,以便让网站既能减少使用您的信息,又能提供同样出色的浏览体验</translation> <translation id="4110895483821904099">设置您的新 Chrome 个人资料</translation> +<translation id="4128488089242627000">提高 Chrome 运行速度,让使用 JavaScript 的功能按预期运行(建议)</translation> <translation id="4147555960264124640">您目前登录的账号是一个受管理账号,该账号的管理员将能够控制您的 Google Chrome 个人资料。您的 Chrome 数据(例如您的应用、书签、历史记录、密码和其他设置)将永远与 <ph name="USER_NAME" /> 相关联。您可以通过 Google 账号信息中心删除这些数据,但无法将这些数据与其他账号相关联。<ph name="LEARN_MORE" /></translation> <translation id="4148957013307229264">正在安装...</translation> <translation id="4149882025268051530">安装程序无法解压缩存档文件。请重新下载 Google Chrome。</translation> @@ -240,6 +240,7 @@ <translation id="4793679854893018356">了解 Chrome 如何保障您的安全</translation> <translation id="4828579605166583682">Google Chrome 正在尝试替换现有密码。请输入您的 Windows 密码以允许此操作。</translation> <translation id="4842397268809523050">ChromeOS Flex 无法同步您的数据,因为您的网域不支持同步。</translation> +<translation id="4873692836499071887">若要接收后续 Google Chrome 更新,您需使用 macOS 11 或更高版本。该计算机目前使用的是 macOS 10.15。</translation> <translation id="4873783916118289636">检查 Chrome 中重要的隐私控制设置和安全控件</translation> <translation id="4891791193823137474">让 Google Chrome 浏览器在后台运行</translation> <translation id="4895437082222824641">在 Chrome 新标签页中打开链接(&T)</translation> @@ -344,6 +345,7 @@ <translation id="677276454032249905">仍要退出 Chrome?</translation> <translation id="6794858689789885890">始终在关闭 Chrome 时删除设备上的网站数据</translation> <translation id="683440813066116847">Google Chrome Canary版的入站规则,允许mDNS流量。</translation> +<translation id="6851981911629679515">开启 Chrome 的 JavaScript 和 WebAssembly 引擎额外保护功能</translation> <translation id="6881299373831449287">正在更新 Chrome</translation> <translation id="6885412569789873916">Chrome 测试版应用</translation> <translation id="6933858244219479645">Chrome 操作系统系统</translation> @@ -465,6 +467,7 @@ <translation id="873133009373065397">Google Chrome 无法确定或设置默认浏览器</translation> <translation id="8765470054473112089">当您在地址栏或搜索框中输入内容时,Chrome 会将您输入的内容发送给默认搜索引擎,以便为您提供更好的建议。在无痕模式下,此设置处于关闭状态。</translation> <translation id="878572486461146056">安装时出错:您的网络管理员所应用的一项群组政策阻止了安装进程:<ph name="INSTALL_ERROR" /></translation> +<translation id="8801657293260363985">V8 是 Chrome 的 JavaScript 和 WebAssembly 引擎,用于提升网站性能</translation> <translation id="8821043148920470810">若要接收后续 Google Chrome 更新,您需使用 Windows 10 或更高版本。该计算机目前使用的是 Windows 7。</translation> <translation id="8823341990149967727">Chrome版本太旧</translation> <translation id="8825634023950448068">为了保护您的隐私,如果您的兴趣保留时间超过 4 周,系统便会自动将其删除。随着您继续浏览,某项兴趣可能会再次出现在列表中。如果 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 89297a8..a54cace5 100644 --- a/chrome/app/resources/google_chrome_strings_zh-HK.xtb +++ b/chrome/app/resources/google_chrome_strings_zh-HK.xtb
@@ -73,7 +73,6 @@ <translation id="2130870084309816036">無法連線至互聯網。如果你使用防火牆,請將 <ph name="PRODUCT_EXE_NAME" /> 加入許可名單。</translation> <translation id="2131230230468101642">為保障您的私隱,我們會自動刪除超過 4 星期的興趣。按瀏覽內容而定,某個主題可能會再次在您的興趣清單中顯示。您亦可移除不希望 Chrome 列在興趣喜好清單中的項目。</translation> <translation id="2139300032719313227">重新啟動 Chrome OS</translation> -<translation id="2146761408396054429">此檔案可能不安全<ph name="LINE_BREAK" />如果你提供密碼,Chrome 可為你檢查此下載項目,並將密碼保存在裝置上</translation> <translation id="2151406531797534936">請立即重新啟動 Chrome</translation> <translation id="2174917724755363426">安裝尚未完成。確定要取消嗎?</translation> <translation id="2190166659037789668">更新檢查錯誤:<ph name="UPDATE_CHECK_ERROR" />。</translation> @@ -198,6 +197,7 @@ <translation id="4053720452172726777">自訂及控制 Google Chrome</translation> <translation id="4106587138345390261">Chrome 正在探索新功能,讓網站能在使用較少資料的情況下提供相同的瀏覽體驗</translation> <translation id="4110895483821904099">設定新的 Chrome 設定檔</translation> +<translation id="4128488089242627000">提高 Chrome 執行速度,讓使用 JavaScript 的功能正常運作 (建議)</translation> <translation id="4147555960264124640">您已登入受管理的帳戶,並將管理控制權授予您的 Chrome 設定檔。您的 Chrome 數據 (例如應用程式、書籤、記錄、密碼和其他設定) 均將永久與 <ph name="USER_NAME" /> 建立關聯。您可以透過 Google 帳戶資訊主頁刪除這些數據,但您無法將這些數據與其他帳戶建立關聯。<ph name="LEARN_MORE" /></translation> <translation id="4148957013307229264">安裝中…</translation> <translation id="4149882025268051530">安裝程式無法解壓縮封存檔案,請再次下載 Google Chrome。</translation> @@ -244,6 +244,7 @@ <translation id="4793679854893018356">瞭解 Chrome 如何保護使用者的網上安全</translation> <translation id="4828579605166583682">Google Chrome 正嘗試更換現有密碼。如果允許,請輸入 Windows 密碼。</translation> <translation id="4842397268809523050">您的網域無法使用同步功能,因此 ChromeOS Flex 無法同步處理您的資料。</translation> +<translation id="4873692836499071887">如要取得日後的 Google Chrome 更新,你將需要 macOS 11 或以上版本。此電腦正在使用 macOS 10.15。</translation> <translation id="4873783916118289636">查看 Chrome 中重要的私隱和安全控制項</translation> <translation id="4891791193823137474">讓 Google Chrome 在背景執行</translation> <translation id="4895437082222824641">在 Chrome 新分頁中開啟連結(&T)</translation> @@ -352,6 +353,7 @@ <translation id="677276454032249905">仍要結束 Chrome 嗎?</translation> <translation id="6794858689789885890">在 Chrome 關閉後一律刪除裝置上的網站資料</translation> <translation id="683440813066116847">允許 mDNS 流量的 Google Chrome Canary 輸入規則。</translation> +<translation id="6851981911629679515">開啟 Chrome 的 JavaScript 和 WebAssembly 引擎額外防護</translation> <translation id="6881299373831449287">正在更新 Chrome</translation> <translation id="6885412569789873916">Chrome 測試版應用程式</translation> <translation id="6933858244219479645">Chrome OS 系統</translation> @@ -473,6 +475,7 @@ <translation id="873133009373065397">Google Chrome 無法偵測或設定預設瀏覽器</translation> <translation id="8765470054473112089">在網址列或搜尋框中輸入內容時,Chrome 會將輸入的內容傳送至預設搜尋引擎,以便取得更切合需求的建議。此功能不會在無痕模式下啟用。</translation> <translation id="878572486461146056">安裝錯誤:網絡管理員已套用防止安裝的群組政策:<ph name="INSTALL_ERROR" /></translation> +<translation id="8801657293260363985">V8 是 Chrome 的 JavaScript 和 WebAssembly 引擎,可提升網站效能</translation> <translation id="8821043148920470810">如要取得日後的 Google Chrome 更新,您需要使用 Windows 10 或以上版本。此電腦目前版本為 Windows 7。</translation> <translation id="8823341990149967727">Chrome 版本過舊</translation> <translation id="8825634023950448068">為保障您的私隱,我們會自動刪除超過 4 星期的興趣。按瀏覽內容而定,某個主題可能會再次在您的興趣清單中顯示。如果您認為 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 7c1f943..71cf4c0 100644 --- a/chrome/app/resources/google_chrome_strings_zh-TW.xtb +++ b/chrome/app/resources/google_chrome_strings_zh-TW.xtb
@@ -70,7 +70,6 @@ <translation id="2130870084309816036">無法連線至網際網路。如果有使用防火牆,請將 <ph name="PRODUCT_EXE_NAME" /> 加入許可清單。</translation> <translation id="2131230230468101642">為保護個人隱私,我們會自動刪除 4 週以上的興趣喜好。視瀏覽內容而定,某個主題可能會再次顯示在你的興趣喜好清單中。或者,你可以移除不希望 Chrome 列在興趣喜好清單中的項目。</translation> <translation id="2139300032719313227">重新啟動 Chrome OS</translation> -<translation id="2146761408396054429">這個檔案可能含有危險內容<ph name="LINE_BREAK" />如果你提供密碼,Chrome 可以替你檢查這個下載項目,並將密碼保存在裝置上</translation> <translation id="2151406531797534936">請立即重新啟動 Chrome</translation> <translation id="2174917724755363426">安裝作業尚未完成,確定要取消安裝嗎?</translation> <translation id="2190166659037789668">更新檢查錯誤:<ph name="UPDATE_CHECK_ERROR" />。</translation> @@ -195,6 +194,7 @@ <translation id="4053720452172726777">自訂及管理 Google Chrome</translation> <translation id="4106587138345390261">Chrome 團隊正在研究新功能,設法讓網站減少存取個人資訊的情況,同時讓使用者享有相同的瀏覽體驗。</translation> <translation id="4110895483821904099">設定新的 Chrome 設定檔</translation> +<translation id="4128488089242627000">提高 Chrome 執行速度,讓使用 JavaScript 的功能正常運作 (建議採用)</translation> <translation id="4147555960264124640">你已登入管理化環境下的帳戶,並將管理控制權授予你的 Chrome 設定檔。你的 Chrome 資料 (例如應用程式、書籤、記錄、密碼和其他設定) 均將永久與 <ph name="USER_NAME" /> 建立關聯。你可以透過 Google 帳戶資訊主頁刪除這些資料,但你無法將這些資料與其他帳戶建立關聯。<ph name="LEARN_MORE" /></translation> <translation id="4148957013307229264">安裝中...</translation> <translation id="4149882025268051530">安裝程式無法解壓縮封存檔案,請再次下載 Google Chrome。</translation> @@ -241,6 +241,7 @@ <translation id="4793679854893018356">瞭解 Chrome 如何保護資料安全</translation> <translation id="4828579605166583682">Google Chrome 正嘗試更換現有密碼。如果允許,請輸入 Windows 密碼。</translation> <translation id="4842397268809523050">你的網域無法使用同步功能,因此 ChromeOS Flex 無法同步處理你的資料。</translation> +<translation id="4873692836499071887">如果之後要更新 Google Chrome,請使用 macOS 11 以上版本。這部電腦目前的版本為 macOS 10.15。</translation> <translation id="4873783916118289636">查看 Chrome 中最重要的隱私權和安全性控制項</translation> <translation id="4891791193823137474">讓 Google Chrome 在背景執行</translation> <translation id="4895437082222824641">在新的 Chrome 分頁中開啟連結(&T)</translation> @@ -347,6 +348,7 @@ <translation id="677276454032249905">確定要結束 Chrome 嗎?</translation> <translation id="6794858689789885890">在 Chrome 關閉後一律刪除裝置上的網站資料</translation> <translation id="683440813066116847">允許 mDNS 流量的 Google Chrome Canary 輸入規則。</translation> +<translation id="6851981911629679515">開啟 Chrome 的 JavaScript 和 WebAssembly 引擎額外防護</translation> <translation id="6881299373831449287">正在更新 Chrome</translation> <translation id="6885412569789873916">Chrome 測試版應用程式</translation> <translation id="6933858244219479645">Chrome OS 系統</translation> @@ -468,6 +470,7 @@ <translation id="873133009373065397">Google Chrome 無法偵測或設定預設瀏覽器</translation> <translation id="8765470054473112089">在網址列或搜尋框中輸入時,Chrome 會將你輸入的內容傳送給預設搜尋引擎,提供更符合需求的搜尋建議。這項功能在無痕模式中為關閉狀態。</translation> <translation id="878572486461146056">安裝錯誤:網路管理員採用的「群組原則」不允許安裝應用程式:<ph name="INSTALL_ERROR" /></translation> +<translation id="8801657293260363985">V8 是 Chrome 的 JavaScript 和 WebAssembly 引擎,可提升網站效能</translation> <translation id="8821043148920470810">如要取得日後的 Google Chrome 更新,必須使用 Windows 10 以上版本。這部電腦目前版本為 Windows 7。</translation> <translation id="8823341990149967727">Chrome 版本過舊</translation> <translation id="8825634023950448068">為保護個人隱私,我們會自動刪除 4 週以上的興趣喜好。視瀏覽內容而定,某個主題可能會再次顯示在你的興趣喜好清單中。如果你認為 Chrome 判斷錯誤或不想看到特定廣告,可以移除感興趣的主題。</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zu.xtb b/chrome/app/resources/google_chrome_strings_zu.xtb index 76efc8d8..a66baa1 100644 --- a/chrome/app/resources/google_chrome_strings_zu.xtb +++ b/chrome/app/resources/google_chrome_strings_zu.xtb
@@ -74,7 +74,6 @@ <translation id="2130870084309816036">Ayikwazi ukuxhuma ku-inthanethi Uma usebenzisa uhlelo lokuvikela, sicela uhlu lwabagunyaziwe <ph name="PRODUCT_EXE_NAME" />.</translation> <translation id="2131230230468101642">Ukuze sivikele ubumfihlo bakho, sisula ngokuzenzakalelayo izintshisekelo zakho ezindala kunamaviki ama-4. Njengoba uqhubeka nokubhrawuza, intshisekelo ingase ivele ohlwini futhi. Noma ungasusa izithakazelo ongafuni ukuthi i-Chrome izicabangele.</translation> <translation id="2139300032719313227">Qalisa kabusha i-ChromeOS</translation> -<translation id="2146761408396054429">Leli fayela lingase libe yingozi<ph name="LINE_BREAK" />I-Chrome ingakuhlolela lokhu okudawunilodwayo uma unikeza iphasiwedi — iphasiwedi yakho ihlala kudivayisi yakho</translation> <translation id="2151406531797534936">Sicela uqalise kabusha -Chrome manje</translation> <translation id="2174917724755363426">Ukufaka akuqediwe. Uqinisekile ufuna ukukhansela?</translation> <translation id="2190166659037789668">Buyekeza iphutha lokuchekha: <ph name="UPDATE_CHECK_ERROR" />.</translation>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index 09ce5fb..ed7b1ea 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -2979,7 +2979,6 @@ "android/thin_webview/chrome_thin_webview_initializer.h", "android/trusted_cdn.cc", "android/trusted_cdn.h", - "android/usage_stats/notification_suspender.cc", "android/usage_stats/usage_stats_bridge.cc", "android/usage_stats/usage_stats_bridge.h", "android/usage_stats/usage_stats_database.cc", @@ -3198,6 +3197,7 @@ "metrics/page_load_metrics_provider.h", "notifications/notification_platform_bridge_android.cc", "notifications/notification_platform_bridge_android.h", + "notifications/notification_suspender_android.cc", "notifications/notification_trigger_scheduler_android.cc", "notifications/notification_trigger_scheduler_android.h", "notifications/scheduler/display_agent_android.cc", @@ -4644,6 +4644,10 @@ # TODO(crbug.com/1402145): Remove circular dependencies. "//chrome/browser/web_applications/app_service", + + # Needs //chrome/browser/content_settings, but its sources are in + # //chrome/browser instead. + "//chrome/browser/smart_card", ] if (!is_android && !is_chromeos) { sources += [
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index a18efc3..28801e5 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -11147,6 +11147,14 @@ FEATURE_VALUE_TYPE(switches::kSeedAccountsRevamp)}, #endif // BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(IS_ANDROID) + {"show-identity-errors-for-signed-in-users", + flag_descriptions::kSyncShowIdentityErrorsForSignedInUsersName, + flag_descriptions::kSyncShowIdentityErrorsForSignedInUsersDescription, + kOsAndroid, + FEATURE_VALUE_TYPE(syncer::kSyncShowIdentityErrorsForSignedInUsers)}, +#endif // BUILDFLAG(IS_ANDROID) + // NOTE: Adding a new flag requires adding a corresponding entry to enum // "LoginCustomFlags" in tools/metrics/histograms/enums.xml. See "Flag // Histograms" in tools/metrics/histograms/README.md (run the
diff --git a/chrome/browser/android/history/browsing_history_bridge.cc b/chrome/browser/android/history/browsing_history_bridge.cc index aa7d0ec..21a8c23 100644 --- a/chrome/browser/android/history/browsing_history_bridge.cc +++ b/chrome/browser/android/history/browsing_history_bridge.cc
@@ -52,6 +52,7 @@ const JavaParamRef<jobject>& obj, const JavaParamRef<jobject>& j_result_obj, jstring j_query, + const JavaParamRef<jstring>& j_app_id, jboolean j_host_only) { j_query_result_obj_.Reset(env, j_result_obj); query_history_continuation_.Reset(); @@ -60,7 +61,9 @@ options.max_count = kMaxQueryCount; options.duplicate_policy = history::QueryOptions::REMOVE_DUPLICATES_PER_DAY; options.host_only = j_host_only; - + if (j_app_id) { + options.app_id = base::android::ConvertJavaStringToUTF8(j_app_id); + } browsing_history_service_->QueryHistory( base::android::ConvertJavaStringToUTF16(env, j_query), options); }
diff --git a/chrome/browser/android/history/browsing_history_bridge.h b/chrome/browser/android/history/browsing_history_bridge.h index 4da2b8c1..f738733 100644 --- a/chrome/browser/android/history/browsing_history_bridge.h +++ b/chrome/browser/android/history/browsing_history_bridge.h
@@ -33,6 +33,7 @@ const JavaParamRef<jobject>& obj, const JavaParamRef<jobject>& j_result_obj, jstring j_query, + const JavaParamRef<jstring>& j_app_id, jboolean j_host_only); void QueryHistoryContinuation(JNIEnv* env,
diff --git a/chrome/browser/ash/accessibility/accessibility_event_rewriter_delegate_impl.cc b/chrome/browser/ash/accessibility/accessibility_event_rewriter_delegate_impl.cc index fa203fa..08ca56f7 100644 --- a/chrome/browser/ash/accessibility/accessibility_event_rewriter_delegate_impl.cc +++ b/chrome/browser/ash/accessibility/accessibility_event_rewriter_delegate_impl.cc
@@ -20,7 +20,6 @@ #include "extensions/common/constants.h" #include "ui/accessibility/ax_enums.mojom.h" #include "ui/events/event.h" -#include "ui/events/event_constants.h" namespace ash { namespace { @@ -93,9 +92,6 @@ std::unique_ptr<ui::Event> event) { ax::mojom::Event event_type; - bool is_synthesized = event->IsSynthesized() || - event->source_device_id() == ui::ED_UNKNOWN_DEVICE; - switch (event->type()) { case ui::ET_MOUSE_MOVED: event_type = ax::mojom::Event::kMouseMoved; @@ -108,8 +104,7 @@ return; } - AutomationManagerAura::GetInstance()->HandleEvent( - event_type, /*from_user=*/!is_synthesized); + AutomationManagerAura::GetInstance()->HandleEvent(event_type); } void AccessibilityEventRewriterDelegateImpl::SendSwitchAccessCommand(
diff --git a/chrome/browser/ash/accessibility/spoken_feedback_browsertest.cc b/chrome/browser/ash/accessibility/spoken_feedback_browsertest.cc index 5bd7417..aad4874 100644 --- a/chrome/browser/ash/accessibility/spoken_feedback_browsertest.cc +++ b/chrome/browser/ash/accessibility/spoken_feedback_browsertest.cc
@@ -199,10 +199,6 @@ event_generator_->MoveMouseTo(location.x(), location.y()); } -void LoggedInSpokenFeedbackTest::SetMouseSourceDeviceId(int id) { - event_generator_->set_mouse_source_device_id(id); -} - bool LoggedInSpokenFeedbackTest::PerformAcceleratorAction( AcceleratorAction action) { return AcceleratorController::Get()->PerformActionIfEnabled(action, {}); @@ -704,7 +700,6 @@ // Verifies that speaking text under mouse works for Shelf button and voice // announcements should not be stacked when mouse goes over many Shelf buttons IN_PROC_BROWSER_TEST_P(SpokenFeedbackTest, SpeakingTextUnderMouseForShelfItem) { - SetMouseSourceDeviceId(1); // Add the ShelfItem to the ShelfModel after enabling the ChromeVox. Because // when an extension is enabled, the ShelfItems which are not recorded as // pinned apps in user preference will be removed. @@ -753,38 +748,6 @@ sm_.Replay(); } -IN_PROC_BROWSER_TEST_P(SpokenFeedbackTest, SpeakingTextUnderSynthesizedMouse) { - EnableChromeVox(); - - AutomationTestUtils test_utils(extension_misc::kChromeVoxExtensionId); - sm_.Call([&test_utils]() { - test_utils.SetUpTestSupport(); - // Enable the function of speaking text under mouse. - EventRewriterController::Get()->SetSendMouseEvents(true); - }); - - sm_.Call([this]() { - NavigateToUrl(GURL(R"(data:text/html;charset=utf-8, - <button id="b1" autofocus>First</button> - <button id="b2">Second</button> - <button id="b3">Third</button> - )")); - }); - sm_.ExpectSpeech("First"); - sm_.Call([this, &test_utils]() { - gfx::Rect b2_bounds = test_utils.GetNodeBoundsInRoot("Second", "button"); - SendMouseMoveTo(b2_bounds.CenterPoint()); - }); - sm_.ExpectSpeech("Second"); - sm_.Call([this, &test_utils]() { - gfx::Rect b3_bounds = test_utils.GetNodeBoundsInRoot("Third", "button"); - SendMouseMoveTo(b3_bounds.CenterPoint()); - }); - sm_.ExpectSpeech("Third"); - - sm_.Replay(); -} - // Verifies that an announcement is triggered when focusing a ShelfItem with a // notification badge shown. IN_PROC_BROWSER_TEST_P(SpokenFeedbackTest, ShelfNotificationBadgeAnnouncement) {
diff --git a/chrome/browser/ash/accessibility/spoken_feedback_browsertest.h b/chrome/browser/ash/accessibility/spoken_feedback_browsertest.h index bfbbb8eb..2c4afdf 100644 --- a/chrome/browser/ash/accessibility/spoken_feedback_browsertest.h +++ b/chrome/browser/ash/accessibility/spoken_feedback_browsertest.h
@@ -52,7 +52,6 @@ void SendStickyKeyCommand(); void SendMouseMoveTo(const gfx::Point& location); - void SetMouseSourceDeviceId(int id); bool PerformAcceleratorAction(AcceleratorAction action);
diff --git a/chrome/browser/ash/arc/arc_optin_uma.cc b/chrome/browser/ash/arc/arc_optin_uma.cc index 9451180..3fb01ebb 100644 --- a/chrome/browser/ash/arc/arc_optin_uma.cc +++ b/chrome/browser/ash/arc/arc_optin_uma.cc
@@ -103,6 +103,10 @@ base::UmaHistogramEnumeration("Arc.OptInNetworkErrorAction", type); } +void UpdateOptinTosLoadResultUMA(bool success) { + base::UmaHistogramBoolean("Arc.OptinTosLoadResult", success); +} + void UpdateProvisioningStatusUMA(ProvisioningStatus status, const Profile* profile) { DCHECK_NE(status, ProvisioningStatus::CHROME_SERVER_COMMUNICATION_ERROR);
diff --git a/chrome/browser/ash/arc/arc_optin_uma.h b/chrome/browser/ash/arc/arc_optin_uma.h index bcccd9e..39de096 100644 --- a/chrome/browser/ash/arc/arc_optin_uma.h +++ b/chrome/browser/ash/arc/arc_optin_uma.h
@@ -270,6 +270,7 @@ const Profile* profile); void UpdatePlayStoreLaunchTime(const base::TimeDelta& elapsed_time); void UpdateDeferredLaunchTime(const base::TimeDelta& elapsed_time); +void UpdateOptinTosLoadResultUMA(bool success); void UpdateSilentAuthCodeUMA(OptInSilentAuthCode state); void UpdateSupervisionTransitionResultUMA(mojom::ManagementChangeStatus result); void UpdateReauthorizationSilentAuthCodeUMA(OptInSilentAuthCode state);
diff --git a/chrome/browser/ash/arc/arc_support_host.cc b/chrome/browser/ash/arc/arc_support_host.cc index a61e1cd..369a283 100644 --- a/chrome/browser/ash/arc/arc_support_host.cc +++ b/chrome/browser/ash/arc/arc_support_host.cc
@@ -116,6 +116,14 @@ // button. constexpr char kEventOnRunNetworkTestsClicked[] = "onRunNetworkTestsClicked"; +// "onTosLoadResult" is fired when terms of service page is loaded or fails to +// load. +constexpr char kEventOnTosLoadResult[] = "onTosLoadResult"; + +// "onTosLoadResult" should have the following fields: +// - success +constexpr char kSuccess[] = "success"; + // "onErrorPageShown" is fired when the error page is shown. constexpr char kEventOnErrorPageShown[] = "onErrorPageShown"; @@ -781,6 +789,11 @@ } else if (*event == kEventOnRunNetworkTestsClicked) { DCHECK(error_delegate_); error_delegate_->OnRunNetworkTestsClicked(); + } else if (*event == kEventOnTosLoadResult) { + if (tos_delegate_) { + tos_delegate_->OnTermsLoadResult( + message.FindBool(kSuccess).value_or(false)); + } } else if (*event == kEventOnErrorPageShown) { DCHECK(error_delegate_); error_delegate_->OnErrorPageShown(
diff --git a/chrome/browser/ash/arc/arc_support_host.h b/chrome/browser/ash/arc/arc_support_host.h index 5a699118..ac1b2f3 100644 --- a/chrome/browser/ash/arc/arc_support_host.h +++ b/chrome/browser/ash/arc/arc_support_host.h
@@ -92,6 +92,9 @@ // service negotiation. virtual void OnTermsRetryClicked() = 0; + // Called when terms of service page is loaded or fails to load. + virtual void OnTermsLoadResult(bool success) = 0; + protected: virtual ~TermsOfServiceDelegate() = default; };
diff --git a/chrome/browser/ash/arc/arc_support_host_unittest.cc b/chrome/browser/ash/arc/arc_support_host_unittest.cc index 47fc27fa..d608267 100644 --- a/chrome/browser/ash/arc/arc_support_host_unittest.cc +++ b/chrome/browser/ash/arc/arc_support_host_unittest.cc
@@ -38,6 +38,7 @@ bool is_location_service_enabled)); MOCK_METHOD0(OnTermsRejected, void()); MOCK_METHOD0(OnTermsRetryClicked, void()); + MOCK_METHOD1(OnTermsLoadResult, void(bool success)); }; using MockTermsOfServiceDelegate = @@ -242,4 +243,14 @@ fake_arc_support()->ClickRunNetworkTestsButton(); } +TEST_F(ArcSupportHostTest, TosLoadResult) { + MockTermsOfServiceDelegate* tos_delegate = CreateMockTermsOfServiceDelegate(); + support_host()->SetTermsOfServiceDelegate(tos_delegate); + + support_host()->ShowTermsOfService(); + + EXPECT_CALL(*tos_delegate, OnTermsLoadResult(true)); + fake_arc_support()->TosLoadResult(true); +} + } // namespace
diff --git a/chrome/browser/ash/arc/extensions/fake_arc_support.cc b/chrome/browser/ash/arc/extensions/fake_arc_support.cc index 64a74c6..4c2668b 100644 --- a/chrome/browser/ash/arc/extensions/fake_arc_support.cc +++ b/chrome/browser/ash/arc/extensions/fake_arc_support.cc
@@ -109,6 +109,13 @@ native_message_host_->OnMessage("{\"event\": \"onRunNetworkTestsClicked\"}"); } +void FakeArcSupport::TosLoadResult(bool success) { + DCHECK(native_message_host_); + native_message_host_->OnMessage( + base::StrCat({"{\"event\": \"onTosLoadResult\", \"success\": ", + success ? "true" : "false", "}"})); +} + void FakeArcSupport::AddObserver(Observer* observer) { observer_list_.AddObserver(observer); }
diff --git a/chrome/browser/ash/arc/extensions/fake_arc_support.h b/chrome/browser/ash/arc/extensions/fake_arc_support.h index 3f5e34a..be8407b 100644 --- a/chrome/browser/ash/arc/extensions/fake_arc_support.h +++ b/chrome/browser/ash/arc/extensions/fake_arc_support.h
@@ -53,6 +53,7 @@ void ClickRetryButton(); void ClickSendFeedbackButton(); void ClickRunNetworkTestsButton(); + void TosLoadResult(bool success); bool metrics_mode() const { return metrics_mode_; } bool backup_and_restore_managed() const {
diff --git a/chrome/browser/ash/arc/input_overlay/ui/editing_list.cc b/chrome/browser/ash/arc/input_overlay/ui/editing_list.cc index 4bee137..b5113c16 100644 --- a/chrome/browser/ash/arc/input_overlay/ui/editing_list.cc +++ b/chrome/browser/ash/arc/input_overlay/ui/editing_list.cc
@@ -8,6 +8,7 @@ #include "ash/bubble/bubble_utils.h" #include "ash/constants/notifier_catalogs.h" +#include "ash/public/cpp/new_window_delegate.h" #include "ash/public/cpp/system/anchored_nudge_data.h" #include "ash/resources/vector_icons/vector_icons.h" #include "ash/shell.h" @@ -27,6 +28,7 @@ #include "chrome/browser/ash/arc/input_overlay/ui/action_view_list_item.h" #include "chrome/browser/ash/arc/input_overlay/ui/ui_utils.h" #include "chrome/grit/component_extension_resources.h" +#include "net/base/url_util.h" #include "third_party/skia/include/core/SkColor.h" #include "ui/base/metadata/metadata_impl_macros.h" #include "ui/base/resource/resource_bundle.h" @@ -66,6 +68,8 @@ constexpr size_t kMaxActionCount = 50; constexpr char kKeyEditNudgeID[] = "kGameControlsKeyEditNudge"; +constexpr char kHelpUrl[] = + "https://support.google.com/chromebook/?p=game-controls-help"; } // namespace @@ -325,8 +329,9 @@ } void EditingList::OnHelpButtonPressed() { - // TODO(b/304852280): Implement the function for helper button. - NOTIMPLEMENTED(); + ash::NewWindowDelegate::GetPrimary()->OpenUrl( + GURL(kHelpUrl), ash::NewWindowDelegate::OpenUrlFrom::kUserInteraction, + ash::NewWindowDelegate::Disposition::kNewForegroundTab); } void EditingList::UpdateAddButtonState() {
diff --git a/chrome/browser/ash/arc/optin/arc_terms_of_service_default_negotiator.cc b/chrome/browser/ash/arc/optin/arc_terms_of_service_default_negotiator.cc index 574bb33..1f15c6e 100644 --- a/chrome/browser/ash/arc/optin/arc_terms_of_service_default_negotiator.cc +++ b/chrome/browser/ash/arc/optin/arc_terms_of_service_default_negotiator.cc
@@ -6,6 +6,7 @@ #include <string> +#include "chrome/browser/ash/arc/arc_optin_uma.h" #include "chrome/browser/ash/arc/optin/arc_optin_preference_handler.h" namespace arc { @@ -66,6 +67,10 @@ weak_ptr_factory_.GetWeakPtr())); } +void ArcTermsOfServiceDefaultNegotiator::OnTermsLoadResult(bool success) { + UpdateOptinTosLoadResultUMA(success); +} + void ArcTermsOfServiceDefaultNegotiator::OnTermsRetryClicked() { support_host_->ShowTermsOfService(); }
diff --git a/chrome/browser/ash/arc/optin/arc_terms_of_service_default_negotiator.h b/chrome/browser/ash/arc/optin/arc_terms_of_service_default_negotiator.h index fa3abc28..ac4166c9 100644 --- a/chrome/browser/ash/arc/optin/arc_terms_of_service_default_negotiator.h +++ b/chrome/browser/ash/arc/optin/arc_terms_of_service_default_negotiator.h
@@ -49,6 +49,7 @@ bool is_location_service_enabled) override; void OnTermsRejected() override; void OnTermsRetryClicked() override; + void OnTermsLoadResult(bool success) override; // ArcOptInPreferenceHandlerObserver: void OnMetricsModeChanged(bool enabled, bool managed) override;
diff --git a/chrome/browser/ash/login/oobe_quick_start/connectivity/connection.cc b/chrome/browser/ash/login/oobe_quick_start/connectivity/connection.cc index 2a7cde99..1c6ac14 100644 --- a/chrome/browser/ash/login/oobe_quick_start/connectivity/connection.cc +++ b/chrome/browser/ash/login/oobe_quick_start/connectivity/connection.cc
@@ -115,11 +115,6 @@ // NearbyConnection immediately after. SendMessageWithoutResponse(requests::BuildBootstrapStateCancelMessage(), QuickStartResponseType::kBootstrapStateCancel); - } else if (authenticated_ && reason == - TargetDeviceConnectionBroker:: - ConnectionClosedReason::kComplete) { - SendMessageWithoutResponse(requests::BuildBootstrapStateCompleteMessage(), - QuickStartResponseType::kBootstrapStateComplete); } connection_state_ = State::kClosing; @@ -458,6 +453,11 @@ return session_context_.GetPrepareForUpdateInfo(); } +void Connection::NotifyPhoneSetupComplete() { + SendMessageWithoutResponse(requests::BuildBootstrapStateCompleteMessage(), + QuickStartResponseType::kBootstrapStateComplete); +} + void Connection::DecodeQuickStartMessage( OnDecodingCompleteCallback on_decoding_complete, std::optional<std::vector<uint8_t>> data) {
diff --git a/chrome/browser/ash/login/oobe_quick_start/connectivity/connection.h b/chrome/browser/ash/login/oobe_quick_start/connectivity/connection.h index 139ce41..3572ede1 100644 --- a/chrome/browser/ash/login/oobe_quick_start/connectivity/connection.h +++ b/chrome/browser/ash/login/oobe_quick_start/connectivity/connection.h
@@ -126,6 +126,7 @@ RequestAccountTransferAssertionCallback callback) override; void WaitForUserVerification(AwaitUserVerificationCallback callback) override; base::Value::Dict GetPrepareForUpdateInfo() override; + void NotifyPhoneSetupComplete() override; void DoWaitForUserVerification(size_t attempt_number, AwaitUserVerificationCallback callback);
diff --git a/chrome/browser/ash/login/oobe_quick_start/connectivity/connection_unittest.cc b/chrome/browser/ash/login/oobe_quick_start/connectivity/connection_unittest.cc index 70dcfea..2a439b54 100644 --- a/chrome/browser/ash/login/oobe_quick_start/connectivity/connection_unittest.cc +++ b/chrome/browser/ash/login/oobe_quick_start/connectivity/connection_unittest.cc
@@ -998,10 +998,9 @@ EXPECT_FALSE(read_result.has_value()); } -TEST_F(ConnectionTest, CloseFromCompleteNotifiesPhoneWhenAuthenticated) { +TEST_F(ConnectionTest, NotifyPhoneSetupComplete) { MarkConnectionAuthenticated(); - connection_->Close( - TargetDeviceConnectionBroker::ConnectionClosedReason::kComplete); + authenticated_connection_->NotifyPhoneSetupComplete(); std::vector<uint8_t> notify_source_data = fake_nearby_connection_->GetWrittenData(); @@ -1019,18 +1018,6 @@ /*error_code=*/std::nullopt, /*response_expected=*/false); } -TEST_F(ConnectionTest, CloseFromCompleteDoesNotNotifyPhoneWhenUnauthenticated) { - connection_->Close( - TargetDeviceConnectionBroker::ConnectionClosedReason::kComplete); - - std::vector<uint8_t> notify_source_data = - fake_nearby_connection_->GetWrittenData(); - QuickStartMessage::ReadResult read_result = - ash::quick_start::QuickStartMessage::ReadMessage( - notify_source_data, QuickStartMessageType::kBootstrapState); - EXPECT_FALSE(read_result.has_value()); -} - TEST_F(ConnectionTest, NoResponseAfterClose) { // Close the connection while waiting for a response and ensure the response // callback is not invoked.
diff --git a/chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker.h b/chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker.h index 19d988e0..c9b06d2 100644 --- a/chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker.h +++ b/chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker.h
@@ -99,6 +99,8 @@ // AuthenticatedConnection caller. virtual base::Value::Dict GetPrepareForUpdateInfo() = 0; + virtual void NotifyPhoneSetupComplete() = 0; + // Retrieve Instance ID (CryptAuth device ID) from BootstrapConfigurations // response. std::string get_phone_instance_id() { return phone_instance_id_; }
diff --git a/chrome/browser/ash/login/oobe_quick_start/target_device_bootstrap_controller.cc b/chrome/browser/ash/login/oobe_quick_start/target_device_bootstrap_controller.cc index 4faeed9a..4a5c9f0 100644 --- a/chrome/browser/ash/login/oobe_quick_start/target_device_bootstrap_controller.cc +++ b/chrome/browser/ash/login/oobe_quick_start/target_device_bootstrap_controller.cc
@@ -167,14 +167,21 @@ } void TargetDeviceBootstrapController::OnConnectionClosed( - TargetDeviceConnectionBroker::ConnectionClosedReason reason) { + ConnectionClosedReason reason) { if (status_.step == Step::REQUESTING_WIFI_CREDENTIALS) { QuickStartMetrics::RecordWifiTransferResult( /*succeeded=*/false, /*failure_reason=*/QuickStartMetrics:: WifiTransferResultFailureReason::kConnectionDroppedDuringAttempt); } - UpdateStatus(/*step=*/Step::ERROR, /*payload=*/ErrorCode::CONNECTION_CLOSED); + // UI observer will automatically exit the QuickStartScreen if there's an + // error. We want the user to manually exit the Quick Start screen when the + // setup is complete, so don't update the status to Step::Error in this case. + if (status_.step != Step::SETUP_COMPLETE) { + UpdateStatus(/*step=*/Step::ERROR, + /*payload=*/ErrorCode::CONNECTION_CLOSED); + } + authenticated_connection_.reset(); CleanupIfNeeded(); } @@ -244,9 +251,7 @@ prefs->CommitPendingWrite(); } - authenticated_connection_->Close( - TargetDeviceConnectionBroker::ConnectionClosedReason:: - kTargetDeviceUpdate); + authenticated_connection_->Close(ConnectionClosedReason::kTargetDeviceUpdate); } void TargetDeviceBootstrapController::WaitForUserVerification() { @@ -330,6 +335,12 @@ CleanupIfNeeded(); } +void TargetDeviceBootstrapController::OnSetupComplete() { + CHECK(authenticated_connection_); + UpdateStatus(/*step=*/Step::SETUP_COMPLETE, /*payload=*/absl::monostate()); + authenticated_connection_->NotifyPhoneSetupComplete(); +} + void TargetDeviceBootstrapController::OnChallengeBytesReceived( SecondDeviceAuthBroker::ChallengeBytesOrError challenge) { if (!challenge.has_value()) { @@ -494,6 +505,9 @@ TRANSFERRED_GOOGLE_ACCOUNT_DETAILS: stream << "[transferred Google account details]"; break; + case TargetDeviceBootstrapController::Step::SETUP_COMPLETE: + stream << "[setup complete]"; + break; } return stream;
diff --git a/chrome/browser/ash/login/oobe_quick_start/target_device_bootstrap_controller.h b/chrome/browser/ash/login/oobe_quick_start/target_device_bootstrap_controller.h index 295ef4b..b3323c5 100644 --- a/chrome/browser/ash/login/oobe_quick_start/target_device_bootstrap_controller.h +++ b/chrome/browser/ash/login/oobe_quick_start/target_device_bootstrap_controller.h
@@ -46,6 +46,7 @@ GOOGLE_ACCOUNT_INFO_RECEIVED, TRANSFERRING_GOOGLE_ACCOUNT_DETAILS, TRANSFERRED_GOOGLE_ACCOUNT_DETAILS, + SETUP_COMPLETE, }; enum class ErrorCode { @@ -160,8 +161,7 @@ base::WeakPtr<TargetDeviceConnectionBroker::AuthenticatedConnection> authenticated_connection) override; void OnConnectionRejected() override; - void OnConnectionClosed( - TargetDeviceConnectionBroker::ConnectionClosedReason reason) override; + void OnConnectionClosed(ConnectionClosedReason reason) override; std::string GetDiscoverableName(); void AttemptWifiCredentialTransfer(); @@ -178,6 +178,9 @@ // Called when the flow is aborted due to an error, or cancelled by the user. void Cleanup(); + // Called when account transfer is complete. + void OnSetupComplete(); + private: friend class TargetDeviceBootstrapControllerTest;
diff --git a/chrome/browser/ash/login/quickstart_controller.cc b/chrome/browser/ash/login/quickstart_controller.cc index 6a496073..b8b864e 100644 --- a/chrome/browser/ash/login/quickstart_controller.cc +++ b/chrome/browser/ash/login/quickstart_controller.cc
@@ -329,7 +329,8 @@ QS_LOG(ERROR) << "Missing ErrorCode."; } AbortFlow(AbortFlowReason::ERROR); - + return; + case Step::SETUP_COMPLETE: return; } } @@ -444,6 +445,7 @@ // show the last step of the flow. if (controller_state_ == ControllerState::SETUP_COMPLETE) { UpdateUiState(UiState::SETUP_COMPLETE); + bootstrap_controller_->OnSetupComplete(); return; }
diff --git a/chrome/browser/ash/login/supervised_user_login_integration_test.cc b/chrome/browser/ash/login/supervised_user_login_integration_test.cc index 5a5451ea..a4245f2 100644 --- a/chrome/browser/ash/login/supervised_user_login_integration_test.cc +++ b/chrome/browser/ash/login/supervised_user_login_integration_test.cc
@@ -87,7 +87,7 @@ // TODO(b/318616623): Re-enable when flaky timeout is resolved. IN_PROC_BROWSER_TEST_F(SupervisedUserLoginIntegrationTest, - DISABLE_TestUnicornLogin) { + DISABLED_TestUnicornLogin) { SetupContextWidget(); login_mixin().Login(); @@ -99,7 +99,7 @@ // TODO(b/318616623): Re-enable when flaky timeout is resolved. IN_PROC_BROWSER_TEST_F(SupervisedUserLoginIntegrationTest, - DISABLE_TestGellerLogin) { + DISABLED_TestGellerLogin) { SetupContextWidget(); delegate_.set_user_type( @@ -113,7 +113,7 @@ // TODO(b/318616623): Re-enable when flaky timeout is resolved. IN_PROC_BROWSER_TEST_F(SupervisedUserLoginIntegrationTest, - DISABLE_TestGriffinLogin) { + DISABLED_TestGriffinLogin) { SetupContextWidget(); delegate_.set_user_type(
diff --git a/chrome/browser/ash/login/test/js_checker.cc b/chrome/browser/ash/login/test/js_checker.cc index 2f5c7e2b..28f8b84 100644 --- a/chrome/browser/ash/login/test/js_checker.cc +++ b/chrome/browser/ash/login/test/js_checker.cc
@@ -490,7 +490,7 @@ std::initializer_list<base::StringPiece> element_ids) { ExpectVisiblePath(element_ids); // Polymer radio buttons only support click events. - Evaluate(GetOobeElementPath(element_ids) + ".fire('click')"); + Evaluate(GetOobeElementPath(element_ids) + ".click()"); } void JSChecker::TypeIntoPath(
diff --git a/chrome/browser/ash/policy/remote_commands/ARC_OWNERS b/chrome/browser/ash/policy/remote_commands/ARC_OWNERS new file mode 100644 index 0000000..af73c7e --- /dev/null +++ b/chrome/browser/ash/policy/remote_commands/ARC_OWNERS
@@ -0,0 +1,6 @@ +batoon@google.com +jhorwich@chromium.org +mhasank@chromium.org +preranap@google.com +vraheja@chromium.org +yaohuali@google.com
diff --git a/chrome/browser/ash/policy/remote_commands/HEALTHD_OWNERS b/chrome/browser/ash/policy/remote_commands/HEALTHD_OWNERS new file mode 100644 index 0000000..17877d8 --- /dev/null +++ b/chrome/browser/ash/policy/remote_commands/HEALTHD_OWNERS
@@ -0,0 +1,7 @@ +menghuan@chromium.org +kerker@chromium.org +chungsheng@google.com +dennyh@google.com +weiluanwang@google.com +byronlee@chromium.org +yycheng@google.com
diff --git a/chrome/browser/ash/policy/remote_commands/OWNERS b/chrome/browser/ash/policy/remote_commands/OWNERS index d7d271d..f3e959d 100644 --- a/chrome/browser/ash/policy/remote_commands/OWNERS +++ b/chrome/browser/ash/policy/remote_commands/OWNERS
@@ -1,15 +1,46 @@ -# For reboot and powerwash. Please report issues at -# https://issuetracker.google.com/issues/new?component=1206077 (internal) or at -# https://issuetracker.google.com/issues/new?component=1185521 (public). +# For COMMAND_ECHO_TEST, DEVICE_REBOOT and DEVICE_REMOTE_POWERWASH commands. +# Report issues at +# - https://issuetracker.google.com/issues/new?component=1206077 (internal) or +# - https://issuetracker.google.com/issues/new?component=1185521 (public). per-file device_command_reboot_job*=file://chromeos/ash/components/policy/REMOTE_MANAGEMENT_OWNERS per-file device_command_remote_powerwash_job*=file://chromeos/ash/components/policy/REMOTE_MANAGEMENT_OWNERS -# For refreshing machine certificate. Please report issues at -# https://issuetracker.google.com/issues/new?component=1111632 (internal) or at -# https://issuetracker.google.com/issues/new?component=1185302 (public). +# For DEVICE_SCREENSHOT and DEVICE_SET_VOLUME commands. Report issues at +# - https://issuetracker.google.com/issues/new?component=892153 (internal) or +# - https://issuetracker.google.com/issues/new?component=1227365 (public). +per-file device_command_screenshot_job**=file://chrome/browser/ash/app_mode/OWNERS +per-file device_command_set_volume_job**=file://chrome/browser/ash/app_mode/OWNERS + +# For DEVICE_FETCH_STATUS command. Report issues at +# - https://issuetracker.google.com/issues/new?component=817866 (internal) or +# - https://issuetracker.google.com/issues/new?component=1240924 (public). +per-file device_command_fetch_status_job*=file://components/reporting/OWNERS + +# For USER_ARC_COMMAND. Report issues at +# - https://issuetracker.google.com/issues/new?component=157100 (internal). +per-file user_command_arc_job*=file://chrome/browser/ash/policy/remote_commands/ARC_OWNERS + +# For DEVICE_WIPE_USERS command. Report issues at +# - https://issuetracker.google.com/issues/new?component=1207311 (internal). +per-file device_command_wipe_users_job*=file://ash/login/LOGIN_LOCK_OWNERS + +# For DEVICE_REFRESH_ENTERPRISE_MACHINE_CERTIFICATE command. Report issues at +# - https://issuetracker.google.com/issues/new?component=1111632 (internal) or +# - https://issuetracker.google.com/issues/new?component=1185302 (public). per-file device_command_refresh_machine_certificate_job*=file://chromeos/ash/components/policy/REMOTE_MANAGEMENT_OWNERS -# For device status fetch. Please report issues at -# https://issuetracker.google.com/issues/new?component=817866 (internal) or at -# https://issuetracker.google.com/issues/new?component=1240924 (public). -per-file device_command_fetch_status_job*=file://components/reporting/OWNERS +# For DEVICE_GET_AVAILABLE_DIAGNOSTIC_ROUTINES, DEVICE_RUN_DIAGNOSTIC_ROUTINE +# and DEVICE_GET_DIAGNOSTIC_ROUTINE_UPDATE commands. Report issues at +# - https://issuetracker.google.com/issues/new?component=982097 (internal). +per-file device_command_get_available_routines_job*=file://chrome/browser/ash/policy/remote_commands/HEALTHD_OWNERS +per-file device_command_run_routine_job*=file://chrome/browser/ash/policy/remote_commands/HEALTHD_OWNERS +per-file device_command_get_routine_update_job*=file://chrome/browser/ash/policy/remote_commands/HEALTHD_OWNERS + +# For DEVICE_RESET_EUICC command. Report issues at +# - https://issuetracker.google.com/issues/new?component=1131774 (internal). +per-file device_command_reset_euicc_job*=file://ash/system/network/OWNERS + +# For FETCH_SUPPORT_PACKET command. Report issues at +# - https://issuetracker.google.com/issues/new?component=1111615 (internal) or +# - https://issuetracker.google.com/issues/new?component=1199457 (public). +per-file device_command_fetch_support_packet_job*=file://chrome/browser/support_tool/OWNERS
diff --git a/chrome/browser/ash/policy/remote_commands/crd/OWNERS b/chrome/browser/ash/policy/remote_commands/crd/OWNERS index 471d601..3a9d934 100644 --- a/chrome/browser/ash/policy/remote_commands/crd/OWNERS +++ b/chrome/browser/ash/policy/remote_commands/crd/OWNERS
@@ -1 +1,3 @@ +# Report issues at +# - https://issuetracker.google.com/issues/new?component=1047865 (internal). file://chrome/browser/ash/app_mode/OWNERS
diff --git a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_base.cc b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_base.cc index f5292c18..f706d95 100644 --- a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_base.cc +++ b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_base.cc
@@ -11,6 +11,7 @@ #include <vector> #include "ash/constants/ash_features.h" +#include "ash/controls/contextual_tooltip.h" #include "ash/public/cpp/image_util.h" #include "ash/wallpaper/wallpaper_constants.h" #include "ash/wallpaper/wallpaper_utils/wallpaper_resizer.h" @@ -318,4 +319,31 @@ /*autofill_data=*/base::Value::Dict(), std::move(ai_metadata)); } +void PersonalizationAppSeaPenProviderBase::ShouldShowSeaPenTermsOfServiceDialog( + ShouldShowSeaPenTermsOfServiceDialogCallback callback) { + if (!features::IsSeaPenEnabled() && + !features::IsVcBackgroundReplaceEnabled()) { + sea_pen_receiver_.ReportBadMessage( + "Cannot call `ShouldShowSeaPenWallpaperTermsDialog()` without Sea Pen " + "feature enabled"); + return; + } + + // TODO(b/315032845): confirm how to store and retrieve the terms of service + // records instead of using contextual tooltip. + std::move(callback).Run(contextual_tooltip::ShouldShowNudge( + profile_->GetPrefs(), + contextual_tooltip::TooltipType::kSeaPenWallpaperTermsDialog, + /*recheck_delay=*/nullptr)); +} + +void PersonalizationAppSeaPenProviderBase:: + HandleSeaPenTermsOfServiceAccepted() { + // TODO(b/315032845): confirm how to store and retrieve the terms of service + // records instead of using contextual tooltip. + contextual_tooltip::HandleGesturePerformed( + profile_->GetPrefs(), + contextual_tooltip::TooltipType::kSeaPenWallpaperTermsDialog); +} + } // namespace ash::personalization_app
diff --git a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_base.h b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_base.h index 05be4c4..ff78fd3 100644 --- a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_base.h +++ b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_base.h
@@ -75,6 +75,11 @@ void OpenFeedbackDialog(mojom::SeaPenFeedbackMetadataPtr metadata) override; + void ShouldShowSeaPenTermsOfServiceDialog( + ShouldShowSeaPenTermsOfServiceDialogCallback callback) override; + + void HandleSeaPenTermsOfServiceAccepted() override; + protected: virtual void SelectRecentSeaPenImageInternal( const base::FilePath& path,
diff --git a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_impl_unittest.cc b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_impl_unittest.cc index aed0074..c40d483 100644 --- a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_impl_unittest.cc +++ b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_impl_unittest.cc
@@ -383,6 +383,26 @@ testing::HasSubstr(DictToMetadataDescription(expected_metadata))); } +TEST_F(PersonalizationAppSeaPenProviderImplTest, + ShouldShowSeaPenTermsOfServiceDialog) { + test_wallpaper_controller()->ClearCounts(); + base::test::ScopedFeatureList features; + features.InitWithFeatures({features::kSeaPen}, {}); + + base::test::TestFuture<bool> should_show_dialog_future; + sea_pen_provider_remote()->ShouldShowSeaPenTermsOfServiceDialog( + should_show_dialog_future.GetCallback()); + // Expects to return true before the terms are accepted. + EXPECT_TRUE(should_show_dialog_future.Take()); + + sea_pen_provider_remote()->HandleSeaPenTermsOfServiceAccepted(); + + sea_pen_provider_remote()->ShouldShowSeaPenTermsOfServiceDialog( + should_show_dialog_future.GetCallback()); + // Expects to return false after the terms are accepted. + EXPECT_FALSE(should_show_dialog_future.Take()); +} + } // namespace } // namespace ash::personalization_app
diff --git a/chrome/browser/autofill/android/save_update_address_profile_prompt_controller.cc b/chrome/browser/autofill/android/save_update_address_profile_prompt_controller.cc index 1b1d6a3..9436613 100644 --- a/chrome/browser/autofill/android/save_update_address_profile_prompt_controller.cc +++ b/chrome/browser/autofill/android/save_update_address_profile_prompt_controller.cc
@@ -149,8 +149,7 @@ std::u16string SaveUpdateAddressProfilePromptController::GetAddress() { if (is_migration_to_account_) { const std::u16string name = - profile_.GetInfo(NAME_FULL_WITH_HONORIFIC_PREFIX, - g_browser_process->GetApplicationLocale()); + profile_.GetInfo(NAME_FULL, g_browser_process->GetApplicationLocale()); const std::u16string address = profile_.GetInfo( ADDRESS_HOME_LINE1, g_browser_process->GetApplicationLocale()); const std::u16string separator =
diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browser/bookmarks/android/bookmark_bridge.cc index b9a2ad7..4b07a81 100644 --- a/chrome/browser/bookmarks/android/bookmark_bridge.cc +++ b/chrome/browser/bookmarks/android/bookmark_bridge.cc
@@ -460,10 +460,6 @@ JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); const BookmarkNode* mobile_node = bookmark_model_->account_mobile_node(); - if (!mobile_node) { - return nullptr; - } - ScopedJavaLocalRef<jobject> folder_id_obj = JavaBookmarkIdCreateBookmarkId( env, mobile_node->id(), GetBookmarkType(mobile_node)); return folder_id_obj; @@ -473,10 +469,6 @@ JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); const BookmarkNode* other_node = bookmark_model_->account_other_node(); - if (!other_node) { - return nullptr; - } - ScopedJavaLocalRef<jobject> folder_id_obj = JavaBookmarkIdCreateBookmarkId( env, other_node->id(), GetBookmarkType(other_node)); return folder_id_obj; @@ -487,10 +479,6 @@ DCHECK_CURRENTLY_ON(BrowserThread::UI); const BookmarkNode* desktop_node = bookmark_model_->account_bookmark_bar_node(); - if (!desktop_node) { - return nullptr; - } - ScopedJavaLocalRef<jobject> folder_id_obj = JavaBookmarkIdCreateBookmarkId( env, desktop_node->id(), GetBookmarkType(desktop_node)); return folder_id_obj;
diff --git a/chrome/browser/bookmarks/android/bookmark_bridge_unittest.cc b/chrome/browser/bookmarks/android/bookmark_bridge_unittest.cc index 826baee..088b4c4 100644 --- a/chrome/browser/bookmarks/android/bookmark_bridge_unittest.cc +++ b/chrome/browser/bookmarks/android/bookmark_bridge_unittest.cc
@@ -210,10 +210,9 @@ bookmark_bridge()->GetMostRecentlyAddedUserBookmarkIdForUrlImpl(url)); // Add to the reading list and verify that it's the most recently added. - recently_added = local_or_syncable_reading_list_manager()->Add(url, "fourth"); - ASSERT_EQ( - recently_added, - bookmark_bridge()->GetMostRecentlyAddedUserBookmarkIdForUrlImpl(url)); + // recently_added = local_or_syncable_reading_list_manager()->Add(url, + // "fourth"); ASSERT_EQ(recently_added, + // bookmark_bridge()->GetMostRecentlyAddedUserBookmarkIdForUrlImpl(url)); } TEST_F(BookmarkBridgeTest, TestGetTopLevelFolderIds) { @@ -250,14 +249,6 @@ EXPECT_EQ(u"Reading list", folders[2]->GetTitle()); } -TEST_F(BookmarkBridgeTest, AccountFoldersNullWhileNotEnabled) { - JNIEnv* const env = AttachCurrentThread(); - EXPECT_TRUE(bookmark_bridge()->GetAccountMobileFolderId(env).is_null()); - EXPECT_TRUE(bookmark_bridge()->GetAccountOtherFolderId(env).is_null()); - EXPECT_TRUE(bookmark_bridge()->GetAccountDesktopFolderId(env).is_null()); - EXPECT_TRUE(bookmark_bridge()->GetAccountReadingListFolder(env).is_null()); -} - // TODO(crbug.com/1509189): Also enable bookmark account folders here. TEST_F(BookmarkBridgeTest, TestGetTopLevelFolderIdsAccountActive) { CreateBookmarkBridge(/*enable_account_bookmarks=*/true); @@ -295,15 +286,6 @@ EXPECT_FALSE(bookmark_bridge()->IsAccountBookmarkImpl(folders[4])); } -TEST_F(BookmarkBridgeTest, AccountFoldersNonNullWhileEnabled) { - CreateBookmarkBridge(/*enable_account_bookmarks=*/true); - JNIEnv* const env = AttachCurrentThread(); - EXPECT_FALSE(bookmark_bridge()->GetAccountMobileFolderId(env).is_null()); - EXPECT_FALSE(bookmark_bridge()->GetAccountOtherFolderId(env).is_null()); - EXPECT_FALSE(bookmark_bridge()->GetAccountDesktopFolderId(env).is_null()); - EXPECT_FALSE(bookmark_bridge()->GetAccountReadingListFolder(env).is_null()); -} - TEST_F(BookmarkBridgeTest, GetChildIdsMobileShowsPartner) { std::vector<const BookmarkNode*> children = bookmark_bridge()->GetChildIdsImpl(bookmark_model()->mobile_node());
diff --git a/chrome/browser/bookmarks/chrome_bookmark_client.cc b/chrome/browser/bookmarks/chrome_bookmark_client.cc index ae51717..7606f514b 100644 --- a/chrome/browser/bookmarks/chrome_bookmark_client.cc +++ b/chrome/browser/bookmarks/chrome_bookmark_client.cc
@@ -202,7 +202,7 @@ } std::string ChromeBookmarkClient::EncodeBookmarkSyncMetadata() { - // TODO(crbug.com/1494120): Also encode metadata produced by + // TODO(crbug.com/1520418): Also encode metadata produced by // `account_bookmark_sync_service_` once BookmarkClient API allows it. return local_or_syncable_bookmark_sync_service_->EncodeBookmarkSyncMetadata(); } @@ -214,7 +214,7 @@ metadata_str, schedule_save_closure, std::make_unique< sync_bookmarks::BookmarkModelViewUsingLocalOrSyncableNodes>(model_)); - // TODO(crbug.com/1494120): Pass along sync metadata once BookmarkClient API + // TODO(crbug.com/1520418): Pass along sync metadata once BookmarkClient API // is capable of reading it from BookmarkModel. if (account_bookmark_sync_service_) { account_bookmark_sync_service_->DecodeBookmarkSyncMetadata(
diff --git a/chrome/browser/content_settings/one_time_permission_provider.cc b/chrome/browser/content_settings/one_time_permission_provider.cc index a7f1300..11da418a 100644 --- a/chrome/browser/content_settings/one_time_permission_provider.cc +++ b/chrome/browser/content_settings/one_time_permission_provider.cc
@@ -80,19 +80,18 @@ base::Value&& value, const content_settings::ContentSettingConstraints& constraints, const content_settings::PartitionKey& partition_key) { - // The current implementation of this method doesn't handle website settings - // because this method doesn't know how to read the state in value for them. - // Additionally the transitions as well as responsibility sharing between this - // provider and the pref provider may be different in those cases. Such - // settings are currently rejected by - // `PermissionUtil::CanPermissionBeAllowedOnce`. If in the future such - // settings should be supported, this method will need to be amended - // accordingly. if (!permissions::PermissionUtil::CanPermissionBeAllowedOnce( content_settings_type)) { return false; } + if (!content_settings::ContentSettingsRegistry::GetInstance()->Get( + content_settings_type)) { + // Object permissions cannot be mapped to a ContentSetting and thus cannot + // be handled by this provider. + return false; + } + auto content_setting = content_settings::ValueToContentSetting(value); // For transitions to block and resetting to default, clear the grant and let
diff --git a/chrome/browser/content_settings/page_specific_content_settings_delegate.cc b/chrome/browser/content_settings/page_specific_content_settings_delegate.cc index d704da3fb..9364012 100644 --- a/chrome/browser/content_settings/page_specific_content_settings_delegate.cc +++ b/chrome/browser/content_settings/page_specific_content_settings_delegate.cc
@@ -61,22 +61,23 @@ void PageSpecificContentSettingsDelegate::OnIsCapturingVideoChanged( content::WebContents* web_contents, bool is_capturing_video) { - PageSpecificContentSettings* pscs = PageSpecificContentSettings::GetForFrame( - web_contents->GetPrimaryMainFrame()); - - if (pscs == nullptr) { - // There are cases, e.g. MPArch, where there is no active instance of - // PageSpecificContentSettings for a frame. - return; - } - - pscs->OnCapturingStateChanged(ContentSettingsType::MEDIASTREAM_CAMERA, - is_capturing_video); + OnCapturingStateChanged(web_contents, ContentSettingsType::MEDIASTREAM_CAMERA, + is_capturing_video); } void PageSpecificContentSettingsDelegate::OnIsCapturingAudioChanged( content::WebContents* web_contents, bool is_capturing_audio) { + OnCapturingStateChanged(web_contents, ContentSettingsType::MEDIASTREAM_MIC, + is_capturing_audio); +} + +void PageSpecificContentSettingsDelegate::OnCapturingStateChanged( + content::WebContents* web_contents, + ContentSettingsType type, + bool is_capturing) { + DCHECK(web_contents); + PageSpecificContentSettings* pscs = PageSpecificContentSettings::GetForFrame( web_contents->GetPrimaryMainFrame()); @@ -86,8 +87,13 @@ return; } - pscs->OnCapturingStateChanged(ContentSettingsType::MEDIASTREAM_MIC, - is_capturing_audio); + pscs->OnCapturingStateChanged(type, is_capturing); + + content::WebContents* pip_web_contents = + PictureInPictureWindowManager::GetInstance()->GetChildWebContents(); + if (pip_web_contents && pip_web_contents != web_contents) { + OnCapturingStateChanged(pip_web_contents, type, is_capturing); + } } void PageSpecificContentSettingsDelegate::UpdateLocationBar() {
diff --git a/chrome/browser/content_settings/page_specific_content_settings_delegate.h b/chrome/browser/content_settings/page_specific_content_settings_delegate.h index 0303483..9703f72 100644 --- a/chrome/browser/content_settings/page_specific_content_settings_delegate.h +++ b/chrome/browser/content_settings/page_specific_content_settings_delegate.h
@@ -99,6 +99,12 @@ // content::WebContentsObserver: void PrimaryPageChanged(content::Page& page) override; + // Notify `PageSpecificContentSettings` about changes in capturing audio and + // video. + void OnCapturingStateChanged(content::WebContents* web_contents, + ContentSettingsType type, + bool is_capturing); + // The pending protocol handler, if any. This can be set if // registerProtocolHandler was invoked without user gesture. // The |IsEmpty| method will be true if no protocol handler is
diff --git a/chrome/browser/enterprise/remote_commands/OWNERS b/chrome/browser/enterprise/remote_commands/OWNERS index f1300224..f175eab 100644 --- a/chrome/browser/enterprise/remote_commands/OWNERS +++ b/chrome/browser/enterprise/remote_commands/OWNERS
@@ -1,2 +1,10 @@ +# For BROWSER_CLEAR_BROWSING_DATA command and other files in this directory. +# Report issues at +# - https://issuetracker.google.com/issues/new?component=395684 (internal) or +# - https://issuetracker.google.com/issues/new?component=1227364 (public). seblalancette@chromium.org zmin@chromium.org + +# For BROWSER_ROTATE_ATTESTATION_CREDENTIAL command. Report issues at +# - https://issuetracker.google.com/issues/new?component=1163683 (internal). +per-file rotate_attestation_credential_job*=file://components/device_signals/OWNERS
diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc index 6d30179..5aee224 100644 --- a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc +++ b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc
@@ -1112,24 +1112,23 @@ content_settings_ = base::WrapRefCounted( HostContentSettingsMapFactory::GetForProfile(profile_)); + // TODO(crbug.com/1520037): Disabled temporarily on Android, as accessing + // FS content settings, which are not enabled on Android, causes a crash. + // Instead of disabling this logic, ChromeFileSystemAccessPermissionContext + // should not be created on Android. #if !BUILDFLAG(IS_ANDROID) auto* provider = web_app::WebAppProvider::GetForWebApps( Profile::FromBrowserContext(profile_)); if (provider) { install_manager_observation_.Observe(&provider->install_manager()); } -#endif - // TODO(crbug.com/1467574): Remove `kFileSystemAccessPersistentPermissions` - // flag after FSA Persistent Permissions feature launch. if (base::FeatureList::IsEnabled( features::kFileSystemAccessPersistentPermissions)) { -#if !BUILDFLAG(IS_ANDROID) if (base::FeatureList::IsEnabled( permissions::features::kOneTimePermission)) { one_time_permissions_tracker_.Observe( OneTimePermissionsTrackerFactory::GetForBrowserContext(context)); } -#endif // Deprecated persisted permission objects contains a timestamp key, used // in old implementation. Revoke them so that the state is reset for the new // persisted permission implementation. @@ -1144,6 +1143,7 @@ } } } +#endif } ChromeFileSystemAccessPermissionContext::
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index d620fbc1..0aa6159 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -7481,6 +7481,11 @@ "expiry_milestone": 130 }, { + "name": "show-identity-errors-for-signed-in-users", + "owners": ["ankushkush@google.com", "chrome-sync-dev@google.com"], + "expiry_milestone": 125 + }, + { "name": "show-metered-toggle", "owners": [ "stevenjb@chromium.org", "azeemarshad@chromium.org", "cros-connectivity@google.com" ], "expiry_milestone": 122 @@ -8288,23 +8293,23 @@ }, { "name": "username-first-flow-store-several-values", - "owners": [ "kolos@chromium.org", "shaikhitdin@google.com", "kazinova@google.com"], - "expiry_milestone": 123 + "owners": [ "kazinova@google.com", "shaikhitdin@google.com"], + "expiry_milestone": 130 }, { "name": "username-first-flow-with-intermediate-values", - "owners": [ "kolos@chromium.org", "shaikhitdin@google.com" ], - "expiry_milestone": 122 + "owners": [ "kazinova@google.com", "shaikhitdin@google.com" ], + "expiry_milestone": 130 }, { "name": "username-first-flow-with-intermediate-values-predictions", "owners": [ "kazinova@google.com", "shaikhitdin@google.com" ], - "expiry_milestone": 123 + "expiry_milestone": 130 }, { "name": "username-first-flow-with-intermediate-values-voting", "owners": [ "kazinova@google.com", "shaikhitdin@google.com" ], - "expiry_milestone": 122 + "expiry_milestone": 130 }, { "name": "vc-background-replace",
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 5488b94..9c1faa98 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -3297,6 +3297,11 @@ const char kSyncSessionOnVisibilityChangedDescription[] = "This flag enables session syncing when the visibility of a tab changes."; +const char kSyncShowIdentityErrorsForSignedInUsersName[] = + "SyncShowIdentityErrorsForSignedInUsers"; +const char kSyncShowIdentityErrorsForSignedInUsersDescription[] = + "Enables showing identitiy errors signed in non-syncing users on Android."; + const char kSyncTrustedVaultPassphrasePromoName[] = "Enable promos for sync trusted vault passphrase."; const char kSyncTrustedVaultPassphrasePromoDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index ef7f6ed..d50271d 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -1909,6 +1909,9 @@ extern const char kSyncSessionOnVisibilityChangedName[]; extern const char kSyncSessionOnVisibilityChangedDescription[]; +extern const char kSyncShowIdentityErrorsForSignedInUsersName[]; +extern const char kSyncShowIdentityErrorsForSignedInUsersDescription[]; + extern const char kSyncTrustedVaultPassphrasePromoName[]; extern const char kSyncTrustedVaultPassphrasePromoDescription[];
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc index 9e586160..85c1779 100644 --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -350,6 +350,7 @@ &syncer::kSyncAndroidLimitNTPPromoImpressions, &syncer::kSyncDecoupleAddressPaymentSettings, &syncer::kSyncEnableContactInfoDataTypeInTransportMode, + &syncer::kSyncShowIdentityErrorsForSignedInUsers, &webapps::features::kWebApkInstallFailureNotification, &webapps::features::kAmbientBadgeSuppressFirstVisit, &network::features::kPrivateStateTokens,
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java index e7f4318..a0d72ef2 100644 --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
@@ -446,6 +446,8 @@ "SyncDecoupleAddressPaymentSettings"; public static final String SYNC_ENABLE_CONTACT_INFO_DATA_TYPE_IN_TRANSPORT_MODE = "SyncEnableContactInfoDataTypeInTransportMode"; + public static final String SYNC_SHOW_IDENTITY_ERRORS_FOR_SIGNED_IN_USERS = + "SyncShowIdentityErrorsForSignedInUsers"; public static final String TAB_DRAG_DROP_ANDROID = "TabDragDropAndroid"; public static final String TAB_GROUP_PARITY_ANDROID = "TabGroupParityAndroid"; public static final String TAB_LINK_DRAG_DROP_ANDROID = "TabAndLinkDragDropAndroid";
diff --git a/chrome/browser/guest_view/mime_handler_view/chrome_mime_handler_view_interactive_uitest.cc b/chrome/browser/guest_view/mime_handler_view/chrome_mime_handler_view_interactive_uitest.cc index d29c18c..7635b3d 100644 --- a/chrome/browser/guest_view/mime_handler_view/chrome_mime_handler_view_interactive_uitest.cc +++ b/chrome/browser/guest_view/mime_handler_view/chrome_mime_handler_view_interactive_uitest.cc
@@ -7,7 +7,7 @@ #include "base/location.h" #include "base/run_loop.h" #include "base/task/single_thread_task_runner.h" -#include "base/test/test_timeouts.h" +#include "base/test/run_until.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "chrome/browser/extensions/extension_apitest.h" @@ -156,13 +156,8 @@ embedder_contents, 0, blink::WebMouseEvent::Button::kLeft, guest_rwh->GetView()->TransformPointToRootCoordSpace(gfx::Point(7, 7))); - while (!IsRenderWidgetHostFocused(guest_rwh)) { - base::RunLoop run_loop; - base::SingleThreadTaskRunner::GetCurrentDefault()->PostDelayedTask( - FROM_HERE, run_loop.QuitClosure(), TestTimeouts::tiny_timeout()); - run_loop.Run(); - } - + EXPECT_TRUE(base::test::RunUntil( + [&]() { return IsRenderWidgetHostFocused(guest_rwh); })); EXPECT_EQ(embedder_contents->GetFocusedFrame(), guest_view->GetGuestMainFrame());
diff --git a/chrome/browser/history/BUILD.gn b/chrome/browser/history/BUILD.gn new file mode 100644 index 0000000..4041fd029 --- /dev/null +++ b/chrome/browser/history/BUILD.gn
@@ -0,0 +1,27 @@ +# Copyright 2024 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/config/android/config.gni") +import("//build/config/android/rules.gni") +import("//chrome/browser/buildflags.gni") +import("//third_party/jni_zero/jni_zero.gni") + +android_library("java") { + srcjar_deps = [ ":jni_headers" ] + sources = + [ "java/src/org/chromium/chrome/browser/history/HistoryTabHelper.java" ] + + deps = [ + "//base:base_java", + "//chrome/browser/tab:java", + "//content/public/android:content_java", + "//third_party/androidx:androidx_annotation_annotation_java", + "//third_party/jni_zero:jni_zero_java", + ] +} + +generate_jni("jni_headers") { + sources = + [ "java/src/org/chromium/chrome/browser/history/HistoryTabHelper.java" ] +}
diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/history/history_tab_helper.cc index d027c15..8c44f57 100644 --- a/chrome/browser/history/history_tab_helper.cc +++ b/chrome/browser/history/history_tab_helper.cc
@@ -31,13 +31,16 @@ #include "ui/base/page_transition_types.h" #if BUILDFLAG(IS_ANDROID) +#include "base/android/jni_string.h" #include "chrome/browser/android/background_tab_manager.h" #include "chrome/browser/feed/feed_service_factory.h" #include "chrome/browser/flags/android/chrome_session_state.h" +#include "chrome/browser/history/jni_headers/HistoryTabHelper_jni.h" #include "chrome/browser/ui/android/tab_model/tab_model.h" #include "chrome/browser/ui/android/tab_model/tab_model_list.h" #include "components/feed/core/v2/public/feed_api.h" #include "components/feed/core/v2/public/feed_service.h" +#include "content/public/browser/web_contents.h" #else #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" @@ -287,7 +290,7 @@ navigation_handle->GetPreviousPrimaryMainFrameURL())) : std::nullopt), chrome_ui_data == nullptr ? std::nullopt : chrome_ui_data->bookmark_id(), - std::move(context_annotations)); + app_id_, std::move(context_annotations)); if (ui::PageTransitionIsMainFrame(page_transition) && virtual_url != navigation_handle->GetURL()) { @@ -494,4 +497,14 @@ #endif } +#if BUILDFLAG(IS_ANDROID) +static void JNI_HistoryTabHelper_SetAppIdNative( + JNIEnv* env, + const base::android::JavaParamRef<jstring>& japp_id, + const base::android::JavaParamRef<jobject>& jweb_contents) { + auto* web_contents = content::WebContents::FromJavaWebContents(jweb_contents); + auto* history_tab_helper = HistoryTabHelper::FromWebContents(web_contents); + history_tab_helper->SetAppId(base::android::ConvertJavaStringToUTF8(japp_id)); +} +#endif WEB_CONTENTS_USER_DATA_KEY_IMPL(HistoryTabHelper);
diff --git a/chrome/browser/history/history_tab_helper.h b/chrome/browser/history/history_tab_helper.h index 480de016..3fc5d3b1 100644 --- a/chrome/browser/history/history_tab_helper.h +++ b/chrome/browser/history/history_tab_helper.h
@@ -31,11 +31,6 @@ ~HistoryTabHelper() override; - // Updates history with the specified navigation. This is called by - // DidFinishNavigation to update history state. - void UpdateHistoryForNavigation( - const history::HistoryAddPageArgs& add_page_args); - // Returns the history::HistoryAddPageArgs to use for adding a page to // history. history::HistoryAddPageArgs CreateHistoryAddPageArgs( @@ -54,6 +49,11 @@ force_eligible_tab_for_testing_ = force; } +#if BUILDFLAG(IS_ANDROID) + // Sets App ID that that goes into visit database. + void SetAppId(const std::string& app_id) { app_id_ = app_id; } +#endif + private: explicit HistoryTabHelper(content::WebContents* web_contents); friend class content::WebContentsUserData<HistoryTabHelper>; @@ -64,6 +64,11 @@ FRIEND_TEST_ALL_PREFIXES(HistoryFencedFrameBrowserTest, FencedFrameDoesNotAffectLoadingState); + // Updates history with the specified navigation. This is called by + // DidFinishNavigation to update history state. + void UpdateHistoryForNavigation( + const history::HistoryAddPageArgs& add_page_args); + // content::WebContentsObserver implementation. void DidFinishNavigation( content::NavigationHandle* navigation_handle) override; @@ -116,6 +121,9 @@ }; std::optional<NavigationState> cached_navigation_state_; + // The package name of an app that opens a Custom Tab and visits a URL. + absl::optional<std::string> app_id_ = absl::nullopt; + // Set to true in unit tests to avoid need for a Browser instance. bool force_eligible_tab_for_testing_ = false;
diff --git a/chrome/browser/history/history_tab_helper_unittest.cc b/chrome/browser/history/history_tab_helper_unittest.cc index ee66a15..7fb2bc22 100644 --- a/chrome/browser/history/history_tab_helper_unittest.cc +++ b/chrome/browser/history/history_tab_helper_unittest.cc
@@ -438,6 +438,26 @@ #if BUILDFLAG(IS_ANDROID) +TEST_F(HistoryTabHelperTest, CreateAddPageArgsPopulatesAppId) { + NiceMock<content::MockNavigationHandle> navigation_handle(web_contents()); + navigation_handle.set_redirect_chain({GURL("https://someurl.com")}); + + std::string raw_response_headers = "HTTP/1.1 234 OK\r\n\r\n"; + scoped_refptr<net::HttpResponseHeaders> response_headers = + net::HttpResponseHeaders::TryToCreate(raw_response_headers); + DCHECK(response_headers); + navigation_handle.set_response_headers(response_headers); + + history_tab_helper()->SetAppId("org.chromium.testapp"); + + history::HistoryAddPageArgs args = + history_tab_helper()->CreateHistoryAddPageArgs( + GURL("https://someurl.com"), base::Time(), 1, &navigation_handle); + + // Make sure the `app_id` is populated. + ASSERT_EQ(*args.app_id, "org.chromium.testapp"); +} + TEST_F(HistoryTabHelperTest, NonFeedNavigationsDoContributeToMostVisited) { GURL new_url("http://newurl.com");
diff --git a/chrome/browser/history/java/src/org/chromium/chrome/browser/history/HistoryTabHelper.java b/chrome/browser/history/java/src/org/chromium/chrome/browser/history/HistoryTabHelper.java new file mode 100644 index 0000000..2b0ce7d --- /dev/null +++ b/chrome/browser/history/java/src/org/chromium/chrome/browser/history/HistoryTabHelper.java
@@ -0,0 +1,67 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.history; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import org.jni_zero.NativeMethods; + +import org.chromium.chrome.browser.tab.Tab; +import org.chromium.chrome.browser.tab.TabWebContentsUserData; +import org.chromium.content_public.browser.WebContents; + +/** + * History helper class. Configures native WebContents objects at initialization or when switched to + * a new one. + */ +public class HistoryTabHelper extends TabWebContentsUserData { + + private static final Class<HistoryTabHelper> USER_DATA_KEY = HistoryTabHelper.class; + private String mAppId; + + public static HistoryTabHelper from(Tab tab) { + HistoryTabHelper handler = get(tab); + if (handler == null) { + handler = tab.getUserDataHost().setUserData(USER_DATA_KEY, new HistoryTabHelper(tab)); + } + return handler; + } + + private static @Nullable HistoryTabHelper get(Tab tab) { + return tab.getUserDataHost().getUserData(USER_DATA_KEY); + } + + private HistoryTabHelper(Tab tab) { + super(tab); + } + + /** + * @param appId App ID + * @param webContents + */ + public void setAppId(String appId, @NonNull WebContents webContents) { + mAppId = appId; + setAppId(webContents); + } + + private void setAppId(WebContents webContents) { + assert webContents != null : "WebContents should be non-null"; + HistoryTabHelperJni.get().setAppIdNative(mAppId, webContents); + } + + @Override + public void initWebContents(WebContents webContents) { + setAppId(webContents); + } + + @Override + public void cleanupWebContents(WebContents webContents) {} + + @NativeMethods + interface Natives { + void setAppIdNative(String appId, WebContents webContents); + } +}
diff --git a/chrome/browser/incognito/BUILD.gn b/chrome/browser/incognito/BUILD.gn index bd44138..b714b83 100644 --- a/chrome/browser/incognito/BUILD.gn +++ b/chrome/browser/incognito/BUILD.gn
@@ -38,6 +38,7 @@ "//chrome/browser/dependency_injection:java", "//chrome/browser/device_reauth/android:java", "//chrome/browser/flags:java", + "//chrome/browser/hub:java", "//chrome/browser/preferences:java", "//chrome/browser/profiles/android:java", "//chrome/browser/tab:java", @@ -152,6 +153,7 @@ "//chrome/browser/android/lifecycle:java", "//chrome/browser/device_reauth/android:java", "//chrome/browser/flags:java", + "//chrome/browser/hub:java", "//chrome/browser/preferences:java", "//chrome/browser/profiles/android:java", "//chrome/browser/tab:java",
diff --git a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthCoordinatorFactory.java b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthCoordinatorFactory.java index c552dd09..29b48279 100644 --- a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthCoordinatorFactory.java +++ b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthCoordinatorFactory.java
@@ -12,6 +12,10 @@ import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; +import org.chromium.base.supplier.OneshotSupplier; +import org.chromium.chrome.browser.hub.HubFieldTrial; +import org.chromium.chrome.browser.hub.HubManager; +import org.chromium.chrome.browser.hub.PaneId; import org.chromium.chrome.browser.incognito.reauth.IncognitoReauthManager.IncognitoReauthCallback; import org.chromium.chrome.browser.layouts.LayoutManager; import org.chromium.chrome.browser.layouts.LayoutType; @@ -67,6 +71,9 @@ */ private @Nullable LayoutManager mLayoutManager; + /** Supplier for the HubManager. Non-null for tabbed mode. */ + private final @Nullable OneshotSupplier<HubManager> mHubManagerSupplier; + /** An {@link Intent} which allows to opens regular overview mode from a non-tabbed Activity. */ private @Nullable Intent mShowRegularOverviewIntent; @@ -75,17 +82,18 @@ /** * @param context The {@link Context} to use for fetching the re-auth resources. - * @param tabModelSelector The {@link TabModelSelector} to use for toggling between regular - * and incognito model and to close all Incognito tabs. + * @param tabModelSelector The {@link TabModelSelector} to use for toggling between regular and + * incognito model and to close all Incognito tabs. * @param modalDialogManager The {@link ModalDialogManager} to use for firing the dialog - * containing the Incognito re-auth view. - * @param incognitoReauthManager The {@link IncognitoReauthManager} instance which would be - * used to initiate re-authentication. - * @param settingsLauncher A {@link SettingsLauncher} to use for launching {@link - * SettingsActivity} from 3 dots menu inside full-screen re-auth. + * containing the Incognito re-auth view. + * @param incognitoReauthManager The {@link IncognitoReauthManager} instance which would be used + * to initiate re-authentication. + * @param settingsLauncher A {@link SettingsLauncher} to use for launching {@link + * SettingsActivity} from 3 dots menu inside full-screen re-auth. * @param incognitoReauthTopToolbarDelegate A {@link IncognitoReauthTopToolbarDelegate} to use - * for disabling/enabling few top toolbar elements inside tab switcher. + * for disabling/enabling few top toolbar elements inside tab switcher. * @param layoutManager {@link LayoutManager} to use for showing the regular overview mode. + * @param hubManagerSupplier The supplier of the {@link HubManager}. * @param showRegularOverviewIntent An {@link Intent} to show the regular overview mode. * @param isTabbedActivity A boolean to indicate if the re-auth screen being fired from */ @@ -97,6 +105,7 @@ @NonNull SettingsLauncher settingsLauncher, @Nullable IncognitoReauthTopToolbarDelegate incognitoReauthTopToolbarDelegate, @Nullable LayoutManager layoutManager, + @Nullable OneshotSupplier<HubManager> hubManagerSupplier, @Nullable Intent showRegularOverviewIntent, boolean isTabbedActivity) { mContext = context; @@ -106,6 +115,7 @@ mSettingsLauncher = settingsLauncher; mIncognitoReauthTopToolbarDelegate = incognitoReauthTopToolbarDelegate; mLayoutManager = layoutManager; + mHubManagerSupplier = hubManagerSupplier; mShowRegularOverviewIntent = showRegularOverviewIntent; mIsTabbedActivity = isTabbedActivity; @@ -154,6 +164,11 @@ if (mIsTabbedActivity) { return () -> { mTabModelSelector.selectModel(/* incognito= */ false); + if (HubFieldTrial.isHubEnabled() + && mLayoutManager.isLayoutVisible(LayoutType.TAB_SWITCHER)) { + mHubManagerSupplier.get().getPaneManager().focusPane(PaneId.TAB_SWITCHER); + return; + } mLayoutManager.showLayout(LayoutType.TAB_SWITCHER, /* animate= */ false); }; } else {
diff --git a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthCoordinatorFactoryTest.java b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthCoordinatorFactoryTest.java index 3c874a9..ddfa2aa 100644 --- a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthCoordinatorFactoryTest.java +++ b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthCoordinatorFactoryTest.java
@@ -10,6 +10,7 @@ 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.base.test.util.Batch.UNIT_TESTS; @@ -23,6 +24,7 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; +import org.junit.rules.TestRule; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -30,8 +32,16 @@ import org.robolectric.annotation.Config; import org.robolectric.annotation.LooperMode; +import org.chromium.base.supplier.OneshotSupplierImpl; import org.chromium.base.test.BaseRobolectricTestRule; import org.chromium.base.test.util.Batch; +import org.chromium.base.test.util.Features; +import org.chromium.base.test.util.Features.DisableFeatures; +import org.chromium.base.test.util.Features.EnableFeatures; +import org.chromium.chrome.browser.flags.ChromeFeatureList; +import org.chromium.chrome.browser.hub.HubManager; +import org.chromium.chrome.browser.hub.PaneId; +import org.chromium.chrome.browser.hub.PaneManager; import org.chromium.chrome.browser.layouts.LayoutManager; import org.chromium.chrome.browser.layouts.LayoutType; import org.chromium.chrome.browser.tabmodel.IncognitoTabHost; @@ -55,9 +65,13 @@ @LooperMode(LooperMode.Mode.PAUSED) @Batch(UNIT_TESTS) public class IncognitoReauthCoordinatorFactoryTest { + @Rule public TestRule mProcessor = new Features.JUnitProcessor(); + @Rule(order = -2) public BaseRobolectricTestRule mBaseRule = new BaseRobolectricTestRule(); + private final OneshotSupplierImpl<HubManager> mHubManagerSupplier = new OneshotSupplierImpl<>(); + @Mock private Context mContextMock; @Mock private TabModelSelector mTabModelSelectorMock; @Mock private ModalDialogManager mModalDialogManagerMock; @@ -71,6 +85,8 @@ @Mock private IncognitoReauthManager.IncognitoReauthCallback mIncognitoReauthCallbackMock; @Mock private IncognitoReauthMenuDelegate mIncognitoReauthMenuDelegateMock; @Mock private IncognitoTabHost mIncognitoTabHostMock; + @Mock private HubManager mHubManagerMock; + @Mock private PaneManager mPaneManagerMock; private OnBackPressedCallback mOnBackPressedCallbackMock = new OnBackPressedCallback(false) { @@ -94,6 +110,10 @@ @Before public void setUp() { MockitoAnnotations.initMocks(this); + + when(mHubManagerMock.getPaneManager()).thenReturn(mPaneManagerMock); + mHubManagerSupplier.set(mHubManagerMock); + mIncognitoReauthCoordinatorFactory = new IncognitoReauthCoordinatorFactory( mContextMock, @@ -103,6 +123,7 @@ mSettingsLauncherMock, mIncognitoReauthTopToolbarDelegateMock, mLayoutManagerMock, + mHubManagerSupplier, mIntentMock, mIsTabbedActivity); @@ -129,11 +150,13 @@ mTabSwitcherCustomViewManagerMock, mIncognitoReauthTopToolbarDelegateMock, mLayoutManagerMock, + mPaneManagerMock, mIncognitoTabHostMock); } @Test @SmallTest + @DisableFeatures(ChromeFeatureList.ANDROID_HUB) public void testSeeOtherTabsRunnable_IsInvokedCorrectly() { Runnable seeOtherTabsRunnable = mIncognitoReauthCoordinatorFactory.getSeeOtherTabsRunnable(); @@ -157,6 +180,57 @@ @Test @SmallTest + @EnableFeatures(ChromeFeatureList.ANDROID_HUB) + public void testSeeOtherTabsRunnable_IsInvokedCorrectly_Hub_LayoutNotVisible() { + Runnable seeOtherTabsRunnable = + mIncognitoReauthCoordinatorFactory.getSeeOtherTabsRunnable(); + if (mIsTabbedActivity) { + when(mLayoutManagerMock.isLayoutVisible(LayoutType.TAB_SWITCHER)).thenReturn(false); + doNothing().when(mTabModelSelectorMock).selectModel(/* incognito= */ false); + doNothing() + .when(mLayoutManagerMock) + .showLayout(eq(LayoutType.TAB_SWITCHER), /* animate= */ eq(false)); + + seeOtherTabsRunnable.run(); + + verify(mLayoutManagerMock).isLayoutVisible(LayoutType.TAB_SWITCHER); + verify(mTabModelSelectorMock, times(1)).selectModel(/* incognito= */ eq(false)); + verify(mLayoutManagerMock, times(1)) + .showLayout(eq(LayoutType.TAB_SWITCHER), /* animate= */ eq(false)); + } else { + doNothing().when(mContextMock).startActivity(mIntentMock); + seeOtherTabsRunnable.run(); + verify(mContextMock, times(1)).startActivity(mIntentMock); + } + } + + @Test + @SmallTest + @EnableFeatures(ChromeFeatureList.ANDROID_HUB) + public void testSeeOtherTabsRunnable_IsInvokedCorrectly_Hub_LayoutVisible() { + Runnable seeOtherTabsRunnable = + mIncognitoReauthCoordinatorFactory.getSeeOtherTabsRunnable(); + if (mIsTabbedActivity) { + when(mLayoutManagerMock.isLayoutVisible(LayoutType.TAB_SWITCHER)).thenReturn(true); + doNothing().when(mTabModelSelectorMock).selectModel(/* incognito= */ false); + doNothing() + .when(mLayoutManagerMock) + .showLayout(eq(LayoutType.TAB_SWITCHER), /* animate= */ eq(false)); + + seeOtherTabsRunnable.run(); + + verify(mLayoutManagerMock).isLayoutVisible(LayoutType.TAB_SWITCHER); + verify(mTabModelSelectorMock, times(1)).selectModel(/* incognito= */ eq(false)); + verify(mPaneManagerMock).focusPane(PaneId.TAB_SWITCHER); + } else { + doNothing().when(mContextMock).startActivity(mIntentMock); + seeOtherTabsRunnable.run(); + verify(mContextMock, times(1)).startActivity(mIntentMock); + } + } + + @Test + @SmallTest public void testCloseAllIncognitoTabsRunnable_IsInvokedCorrectly() { Runnable closeAllIncognitoTabsRunnable = mIncognitoReauthCoordinatorFactory.getCloseAllIncognitoTabsRunnable(); @@ -168,6 +242,7 @@ @Test @SmallTest + @DisableFeatures(ChromeFeatureList.ANDROID_HUB) public void testBackPressRunnable_IsInvokedCorrectly() { Runnable backPressRunnable = mIncognitoReauthCoordinatorFactory.getBackPressRunnable(); // Does the same thing as see other tabs runnable. @@ -191,6 +266,57 @@ @Test @SmallTest + @EnableFeatures(ChromeFeatureList.ANDROID_HUB) + public void testBackPressRunnable_IsInvokedCorrectly_Hub_LayoutNotVisible() { + Runnable backPressRunnable = mIncognitoReauthCoordinatorFactory.getBackPressRunnable(); + // Does the same thing as see other tabs runnable. + if (mIsTabbedActivity) { + when(mLayoutManagerMock.isLayoutVisible(LayoutType.TAB_SWITCHER)).thenReturn(false); + doNothing().when(mTabModelSelectorMock).selectModel(/* incognito= */ false); + doNothing() + .when(mLayoutManagerMock) + .showLayout(eq(LayoutType.TAB_SWITCHER), /* animate= */ eq(false)); + + backPressRunnable.run(); + + verify(mLayoutManagerMock).isLayoutVisible(LayoutType.TAB_SWITCHER); + verify(mTabModelSelectorMock, times(1)).selectModel(/* incognito= */ eq(false)); + verify(mLayoutManagerMock) + .showLayout(eq(LayoutType.TAB_SWITCHER), /* animate= */ eq(false)); + } else { + doNothing().when(mContextMock).startActivity(mIntentMock); + backPressRunnable.run(); + verify(mContextMock, times(1)).startActivity(mIntentMock); + } + } + + @Test + @SmallTest + @EnableFeatures(ChromeFeatureList.ANDROID_HUB) + public void testBackPressRunnable_IsInvokedCorrectly_Hub_LayoutVisible() { + Runnable backPressRunnable = mIncognitoReauthCoordinatorFactory.getBackPressRunnable(); + // Does the same thing as see other tabs runnable. + if (mIsTabbedActivity) { + when(mLayoutManagerMock.isLayoutVisible(LayoutType.TAB_SWITCHER)).thenReturn(true); + doNothing().when(mTabModelSelectorMock).selectModel(/* incognito= */ false); + doNothing() + .when(mLayoutManagerMock) + .showLayout(eq(LayoutType.TAB_SWITCHER), /* animate= */ eq(false)); + + backPressRunnable.run(); + + verify(mLayoutManagerMock).isLayoutVisible(LayoutType.TAB_SWITCHER); + verify(mTabModelSelectorMock, times(1)).selectModel(/* incognito= */ eq(false)); + verify(mPaneManagerMock).focusPane(PaneId.TAB_SWITCHER); + } else { + doNothing().when(mContextMock).startActivity(mIntentMock); + backPressRunnable.run(); + verify(mContextMock, times(1)).startActivity(mIntentMock); + } + } + + @Test + @SmallTest public void testCreateIncognitoReauthCoordinator_ForFullScreen_ReturnsFullScreenCoordinator() { if (mIsTabbedActivity) { IncognitoReauthCoordinator coordinator =
diff --git a/chrome/browser/media/webrtc/desktop_capture_devices_util.cc b/chrome/browser/media/webrtc/desktop_capture_devices_util.cc index 60957e2..d5282f5 100644 --- a/chrome/browser/media/webrtc/desktop_capture_devices_util.cc +++ b/chrome/browser/media/webrtc/desktop_capture_devices_util.cc
@@ -26,6 +26,7 @@ #include "media/audio/audio_device_description.h" #include "media/mojo/mojom/capture_handle.mojom.h" #include "media/mojo/mojom/display_media_information.mojom.h" +#include "third_party/blink/public/common/features_generated.h" #include "third_party/blink/public/common/page/page_zoom.h" #include "third_party/blink/public/mojom/media/capture_handle_config.mojom.h" #include "third_party/blink/public/mojom/mediastream/media_stream.mojom.h" @@ -103,7 +104,6 @@ } absl::optional<int> GetZoomLevel(content::WebContents* capturer, - const url::Origin& capturer_origin, const content::DesktopMediaID& captured_id) { content::RenderFrameHost* const captured_rfh = content::RenderFrameHost::FromID( @@ -158,8 +158,10 @@ display_surface = media::mojom::DisplayCaptureSurfaceType::BROWSER; cursor = media::mojom::CursorCaptureType::MOTION; capture_handle = CreateCaptureHandle(capturer, capturer_origin, media_id); - zoom_level = - GetZoomLevel(capturer, capturer_origin, media_id).value_or(100); + if (base::FeatureList::IsEnabled( + blink::features::kCapturedSurfaceControl)) { + zoom_level = GetZoomLevel(capturer, media_id).value_or(zoom_level); + } break; case content::DesktopMediaID::TYPE_NONE: break;
diff --git a/chrome/browser/android/usage_stats/notification_suspender.cc b/chrome/browser/notifications/notification_suspender_android.cc similarity index 98% rename from chrome/browser/android/usage_stats/notification_suspender.cc rename to chrome/browser/notifications/notification_suspender_android.cc index 1b94f898..e35da820 100644 --- a/chrome/browser/android/usage_stats/notification_suspender.cc +++ b/chrome/browser/notifications/notification_suspender_android.cc
@@ -66,8 +66,6 @@ } // namespace -namespace usage_stats { - // Stores the given |j_resources| to be displayed later again. Note that // |j_resources| is expected to have 3 entries (icon, badge, image in that // order) for each notification id in |j_notification_ids|. If a notification @@ -140,5 +138,3 @@ base::DoNothing()); } } - -} // namespace usage_stats
diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java index 879f863..6d55ceef 100644 --- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java +++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java
@@ -306,7 +306,7 @@ */ public static void runPasswordCheckupInBackground( @PasswordCheckReferrer int referrer, - Optional<String> accountName, + String accountName, Callback<Void> successCallback, Callback<Exception> failureCallback) { assert canUseUpm(); @@ -347,7 +347,7 @@ */ public static void getBreachedCredentialsCount( @PasswordCheckReferrer int referrer, - Optional<String> accountName, + String accountName, Callback<Integer> successCallback, Callback<Exception> failureCallback) { assert canUseUpm();
diff --git a/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelperTest.java b/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelperTest.java index 2b27e44..d956972c 100644 --- a/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelperTest.java +++ b/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelperTest.java
@@ -1028,7 +1028,7 @@ PasswordManagerHelper.runPasswordCheckupInBackground( PasswordCheckReferrer.SAFETY_CHECK, - Optional.of(TEST_EMAIL_ADDRESS), + TEST_EMAIL_ADDRESS, mock(Callback.class), mock(Callback.class)); checkPasswordCheckupSuccessHistogramsForOperation( @@ -1043,7 +1043,7 @@ PasswordManagerHelper.runPasswordCheckupInBackground( PasswordCheckReferrer.SAFETY_CHECK, - Optional.of(TEST_EMAIL_ADDRESS), + TEST_EMAIL_ADDRESS, mock(Callback.class), mock(Callback.class)); checkPasswordCheckupFailureHistogramsForOperation( @@ -1060,7 +1060,7 @@ PasswordManagerHelper.runPasswordCheckupInBackground( PasswordCheckReferrer.SAFETY_CHECK, - Optional.of(TEST_EMAIL_ADDRESS), + TEST_EMAIL_ADDRESS, mock(Callback.class), mock(Callback.class)); checkPasswordCheckupFailureHistogramsForOperation( @@ -1076,7 +1076,7 @@ PasswordManagerHelper.getBreachedCredentialsCount( PasswordCheckReferrer.SAFETY_CHECK, - Optional.of(TEST_EMAIL_ADDRESS), + TEST_EMAIL_ADDRESS, mock(Callback.class), mock(Callback.class)); checkPasswordCheckupSuccessHistogramsForOperation( @@ -1091,7 +1091,7 @@ PasswordManagerHelper.getBreachedCredentialsCount( PasswordCheckReferrer.SAFETY_CHECK, - Optional.of(TEST_EMAIL_ADDRESS), + TEST_EMAIL_ADDRESS, mock(Callback.class), mock(Callback.class)); checkPasswordCheckupFailureHistogramsForOperation( @@ -1108,7 +1108,7 @@ PasswordManagerHelper.getBreachedCredentialsCount( PasswordCheckReferrer.SAFETY_CHECK, - Optional.of(TEST_EMAIL_ADDRESS), + TEST_EMAIL_ADDRESS, mock(Callback.class), mock(Callback.class)); checkPasswordCheckupFailureHistogramsForOperation( @@ -1722,7 +1722,7 @@ PasswordManagerHelper.runPasswordCheckupInBackground( PasswordCheckReferrer.SAFETY_CHECK, - Optional.of(TEST_EMAIL_ADDRESS), + TEST_EMAIL_ADDRESS, mock(Callback.class), mock(Callback.class)); } @@ -1736,7 +1736,7 @@ PasswordManagerHelper.getBreachedCredentialsCount( PasswordCheckReferrer.SAFETY_CHECK, - Optional.of(TEST_EMAIL_ADDRESS), + TEST_EMAIL_ADDRESS, mock(Callback.class), mock(Callback.class)); } @@ -2047,10 +2047,7 @@ }) .when(mPasswordCheckupClientHelperMock) .runPasswordCheckupInBackground( - anyInt(), - eq(Optional.of(TEST_EMAIL_ADDRESS)), - any(Callback.class), - any(Callback.class)); + anyInt(), eq(TEST_EMAIL_ADDRESS), any(Callback.class), any(Callback.class)); } private void setUpSuccessfulGetBreachedCredentialsCount() { @@ -2062,10 +2059,7 @@ }) .when(mPasswordCheckupClientHelperMock) .getBreachedCredentialsCount( - anyInt(), - eq(Optional.of(TEST_EMAIL_ADDRESS)), - any(Callback.class), - any(Callback.class)); + anyInt(), eq(TEST_EMAIL_ADDRESS), any(Callback.class), any(Callback.class)); } private void returnErrorWhenRunningPasswordCheckup(Exception error) { @@ -2077,10 +2071,7 @@ }) .when(mPasswordCheckupClientHelperMock) .runPasswordCheckupInBackground( - anyInt(), - eq(Optional.of(TEST_EMAIL_ADDRESS)), - any(Callback.class), - any(Callback.class)); + anyInt(), eq(TEST_EMAIL_ADDRESS), any(Callback.class), any(Callback.class)); } private void returnErrorWhenGettingBreachedCredentialsCount(Exception error) { @@ -2092,10 +2083,7 @@ }) .when(mPasswordCheckupClientHelperMock) .getBreachedCredentialsCount( - anyInt(), - eq(Optional.of(TEST_EMAIL_ADDRESS)), - any(Callback.class), - any(Callback.class)); + anyInt(), eq(TEST_EMAIL_ADDRESS), any(Callback.class), any(Callback.class)); } private void checkPasswordCheckupSuccessHistogramsForOperation(
diff --git a/chrome/browser/password_manager/android/password_store_android_backend.cc b/chrome/browser/password_manager/android/password_store_android_backend.cc index 59e91eed..7160d7b 100644 --- a/chrome/browser/password_manager/android/password_store_android_backend.cc +++ b/chrome/browser/password_manager/android/password_store_android_backend.cc
@@ -13,6 +13,7 @@ #include <utility> #include <vector> +#include "base/android/build_info.h" #include "base/barrier_callback.h" #include "base/containers/flat_set.h" #include "base/functional/bind.h" @@ -49,6 +50,8 @@ #include "components/password_manager/core/browser/password_sync_util.h" #include "components/password_manager/core/common/password_manager_pref_names.h" #include "components/prefs/pref_service.h" +#include "components/sync/android/explicit_passphrase_platform_client.h" +#include "components/sync/base/features.h" #include "components/sync/model/proxy_model_type_controller_delegate.h" #include "components/sync/service/sync_service.h" @@ -68,6 +71,7 @@ // should be delayed. constexpr base::TimeDelta kPasswordStoreCallDelaySeconds = base::Seconds(5); constexpr int kMaxReportedRetryAttempts = 10; +constexpr int kMinGmsVersionCodeWithCustomPassphraseApi = 235204000; using base::UTF8ToUTF16; using password_manager::GetExpressionForFederatedMatching; @@ -327,6 +331,8 @@ kEvict, // See prefs::kSavePasswordsSuspendedByError. kDisableSaving, + // See PasswordStoreAndroidBackend::TryFixPassphraseErrorCb. + kTryFixPassphraseError, kRetry, kNone, }; @@ -334,18 +340,16 @@ ActionOnApiError GetActionOnApiError(AndroidBackendAPIErrorCode api_error_code, PasswordStoreOperation operation, base::TimeDelta delay, - bool can_remove_unenrollment) { + bool can_remove_unenrollment, + bool supports_passphrase_error_fix) { switch (api_error_code) { case AndroidBackendAPIErrorCode::kAuthErrorResolvable: case AndroidBackendAPIErrorCode::kAuthErrorUnresolvable: return ActionOnApiError::kDisableSaving; case AndroidBackendAPIErrorCode::kPassphraseRequired: { - // kPassphraseRequired is treated separately from most errors leading to - // eviction - CanRemoveUnenrollment() branch below - to allow a rollout - // independent of kRemoveUPMUnenrollment. - // TODO(crbug.com/1511304): Send passphrase to platform client if flag - // enabled. - return ActionOnApiError::kEvict; + return supports_passphrase_error_fix + ? ActionOnApiError::kTryFixPassphraseError + : ActionOnApiError::kEvict; } case AndroidBackendAPIErrorCode::kNetworkError: case AndroidBackendAPIErrorCode::kApiNotConnected: @@ -431,7 +435,8 @@ const AndroidBackendError& error, PasswordStoreOperation operation, base::TimeDelta delay, - bool can_remove_unenrollment) { + bool can_remove_unenrollment, + bool supports_passphrase_error_fix) { if (error.type != AndroidBackendErrorType::kExternalError) { return PasswordStoreBackendError( PasswordStoreBackendErrorType::kUncategorized, @@ -452,7 +457,8 @@ APIErrorCodeToErrorType(api_error_code, can_remove_unenrollment); switch (GetActionOnApiError(api_error_code, operation, delay, - can_remove_unenrollment)) { + can_remove_unenrollment, + supports_passphrase_error_fix)) { case ActionOnApiError::kRetry: return PasswordStoreBackendError( error_type, PasswordStoreBackendErrorRecoveryType::kRetriable); @@ -463,6 +469,7 @@ // reserved for eviction. case ActionOnApiError::kDisableSaving: case ActionOnApiError::kNone: + case ActionOnApiError::kTryFixPassphraseError: return PasswordStoreBackendError( error_type, PasswordStoreBackendErrorRecoveryType::kRecoverable); } @@ -518,11 +525,30 @@ return operation_; } +bool IsExplicitPassphrasePlatformClientSupported() { + // TODO(crbug.com/1511304): Don't duplicate these checks. Instead, have + // SyncService::GetExplicitPassphraseClient() which returns null if they are + // not satisfied. Then try_fix_passphrase_error_cb_ can also be replaced with + // faking a ExplicitPassphraseClient method. + std::string version_code_str = + base::android::BuildInfo::GetInstance()->gms_version_code(); + int version_code = 0; + return base::StringToInt(version_code_str, &version_code) && + version_code >= kMinGmsVersionCodeWithCustomPassphraseApi && + base::FeatureList::IsEnabled( + syncer::kPassExplicitSyncPassphraseToGmsCore); +} + PasswordStoreAndroidBackend::PasswordStoreAndroidBackend( PrefService* prefs, AffiliationsPrefetcher* affiliations_prefetcher) : lifecycle_helper_(std::make_unique<PasswordManagerLifecycleHelperImpl>()), bridge_helper_(PasswordStoreAndroidBackendBridgeHelper::Create()), + try_fix_passphrase_error_cb_( + IsExplicitPassphrasePlatformClientSupported() + ? base::BindRepeating( + &syncer::SendExplicitPassphraseToJavaPlatformClient) + : base::NullCallback()), affiliations_prefetcher_(affiliations_prefetcher) { DCHECK(bridge_helper_); prefs_ = prefs; @@ -542,10 +568,12 @@ std::unique_ptr<PasswordSyncControllerDelegateAndroid> sync_controller_delegate, PrefService* prefs, + const TryFixPassphraseErrorCb& try_fix_passphrase_error_cb, AffiliationsPrefetcher* affiliations_prefetcher) : lifecycle_helper_(std::move(lifecycle_helper)), bridge_helper_(std::move(bridge_helper)), sync_controller_delegate_(std::move(sync_controller_delegate)), + try_fix_passphrase_error_cb_(try_fix_passphrase_error_cb), affiliations_prefetcher_(affiliations_prefetcher) { DCHECK(bridge_helper_); prefs_ = prefs; @@ -969,7 +997,8 @@ base::TimeDelta delay = reply->GetDelay(); PasswordStoreBackendError reported_error = BackendErrorFromAndroidBackendError( - error, operation, delay, bridge_helper_->CanRemoveUnenrollment()); + error, operation, delay, bridge_helper_->CanRemoveUnenrollment(), + !!try_fix_passphrase_error_cb_); if (error.api_error_code.has_value() && sync_service_) { // TODO(crbug.com/1324588): DCHECK_EQ(api_error_code, @@ -984,7 +1013,8 @@ // Retry the call if the performed operation in combination with the error // was retriable and the time limit was not reached. switch (GetActionOnApiError(api_error_code, operation, delay, - bridge_helper_->CanRemoveUnenrollment())) { + bridge_helper_->CanRemoveUnenrollment(), + !!try_fix_passphrase_error_cb_)) { case ActionOnApiError::kRetry: { RecordRetryHistograms(operation, api_error_code, delay); CHECK(operation == PasswordStoreOperation::kGetAllLoginsAsync || @@ -1010,6 +1040,10 @@ case ActionOnApiError::kDisableSaving: prefs_->SetBoolean(prefs::kSavePasswordsSuspendedByError, true); break; + case ActionOnApiError::kTryFixPassphraseError: + CHECK(try_fix_passphrase_error_cb_); + try_fix_passphrase_error_cb_.Run(sync_service_); + break; case ActionOnApiError::kNone: break; } @@ -1218,8 +1252,8 @@ } // Erase each timed out job and record that it was cleaned up. base::ranges::for_each(timed_out_job_ids, [&](const JobId& job_id) { - GetAndEraseJob(job_id)->RecordMetrics(AndroidBackendError( - AndroidBackendErrorType::kCleanedUpWithoutResponse)); + GetAndEraseJob(job_id)->RecordMetrics(AndroidBackendError{ + .type = AndroidBackendErrorType::kCleanedUpWithoutResponse}); }); }
diff --git a/chrome/browser/password_manager/android/password_store_android_backend.h b/chrome/browser/password_manager/android/password_store_android_backend.h index 58955c4..b049554 100644 --- a/chrome/browser/password_manager/android/password_store_android_backend.h +++ b/chrome/browser/password_manager/android/password_store_android_backend.h
@@ -98,6 +98,11 @@ : public PasswordStoreBackend, public PasswordStoreAndroidBackendReceiverBridge::Consumer { public: + // Can be invoked upon AndroidBackendAPIErrorCode::kPassphraseRequired errors + // to attempt to resolve the error. + using TryFixPassphraseErrorCb = + base::RepeatingCallback<void(const syncer::SyncService*)>; + PasswordStoreAndroidBackend( PrefService* prefs, AffiliationsPrefetcher* affiliations_prefetcher); @@ -108,6 +113,7 @@ std::unique_ptr<PasswordSyncControllerDelegateAndroid> sync_controller_delegate, PrefService* prefs, + const TryFixPassphraseErrorCb& try_fix_passphrase_error_cb, AffiliationsPrefetcher* affiliations_prefetcher); ~PasswordStoreAndroidBackend() override; @@ -377,6 +383,9 @@ raw_ptr<PrefService> prefs_ = nullptr; + // Nullable. + const TryFixPassphraseErrorCb try_fix_passphrase_error_cb_; + raw_ptr<AffiliationsPrefetcher> affiliations_prefetcher_ = nullptr; base::Time initialized_at_ = base::Time::Now();
diff --git a/chrome/browser/password_manager/android/password_store_android_backend_unittest.cc b/chrome/browser/password_manager/android/password_store_android_backend_unittest.cc index 3225ee9..1131e49 100644 --- a/chrome/browser/password_manager/android/password_store_android_backend_unittest.cc +++ b/chrome/browser/password_manager/android/password_store_android_backend_unittest.cc
@@ -69,6 +69,8 @@ "android://hash@com.example.android/"; constexpr char kBackendErrorCodeMetric[] = "PasswordManager.PasswordStoreAndroidBackend.ErrorCode"; +constexpr char kBackendApiErrorMetric[] = + "PasswordManager.PasswordStoreAndroidBackend.APIError"; constexpr char kUnenrollmentHistogram[] = "PasswordManager.UnenrolledFromUPMDueToErrors"; constexpr char kUPMActiveHistogram[] = @@ -213,11 +215,7 @@ prefs_.registry()->RegisterDoublePref(prefs::kTimeOfLastMigrationAttempt, 20.22); - backend_ = std::make_unique<PasswordStoreAndroidBackend>( - base::PassKey<class PasswordStoreAndroidBackendTest>(), - CreateMockBridgeHelper(), CreateFakeLifecycleHelper(), - CreatePasswordSyncControllerDelegate(), &prefs_, - affiliations_prefetcher_.get()); + ResetBackend(/*try_fix_passphrase_error_cb=*/base::NullCallback()); } ~PasswordStoreAndroidBackendTest() override { @@ -263,6 +261,16 @@ base::test::TaskEnvironment::MainThreadType::UI, base::test::TaskEnvironment::TimeSource::MOCK_TIME}; + // Prefer using the already created `backend()` when possible. + void ResetBackend(const PasswordStoreAndroidBackend::TryFixPassphraseErrorCb& + try_fix_passphrase_error_cb) { + backend_ = std::make_unique<PasswordStoreAndroidBackend>( + base::PassKey<class PasswordStoreAndroidBackendTest>(), + CreateMockBridgeHelper(), CreateFakeLifecycleHelper(), + CreatePasswordSyncControllerDelegate(), &prefs_, + try_fix_passphrase_error_cb, affiliations_prefetcher_.get()); + } + private: std::unique_ptr<PasswordStoreAndroidBackendBridgeHelper> CreateMockBridgeHelper() { @@ -773,13 +781,9 @@ 0); EXPECT_EQ(prefs()->GetDouble(prefs::kTimeOfLastMigrationAttempt), 0.0); - const char kErrorCodeMetric[] = - "PasswordManager.PasswordStoreAndroidBackend.ErrorCode"; - const char kAPIErrorMetric[] = - "PasswordManager.PasswordStoreAndroidBackend.APIError"; - - histogram_tester.ExpectBucketCount(kErrorCodeMetric, 7, 1); - histogram_tester.ExpectBucketCount(kAPIErrorMetric, kInternalErrorCode, 1); + histogram_tester.ExpectBucketCount(kBackendErrorCodeMetric, 7, 1); + histogram_tester.ExpectBucketCount(kBackendApiErrorMetric, kInternalErrorCode, + 1); histogram_tester.ExpectBucketCount(kUnenrollmentHistogram, true, 1); } @@ -817,14 +821,9 @@ 0); EXPECT_NE(prefs()->GetDouble(prefs::kTimeOfLastMigrationAttempt), 0.0); - const char kErrorCodeMetric[] = - "PasswordManager.PasswordStoreAndroidBackend.ErrorCode"; - const char kAPIErrorMetric[] = - "PasswordManager.PasswordStoreAndroidBackend.APIError"; - - histogram_tester.ExpectBucketCount(kErrorCodeMetric, 7, 1); - histogram_tester.ExpectBucketCount(kAPIErrorMetric, kAuthErrorResolvableCode, - 1); + histogram_tester.ExpectBucketCount(kBackendErrorCodeMetric, 7, 1); + histogram_tester.ExpectBucketCount(kBackendApiErrorMetric, + kAuthErrorResolvableCode, 1); } TEST_F( @@ -870,14 +869,10 @@ 0); EXPECT_EQ(prefs()->GetDouble(prefs::kTimeOfLastMigrationAttempt), 0.0); - const char kErrorCodeMetric[] = - "PasswordManager.PasswordStoreAndroidBackend.ErrorCode"; - const char kAPIErrorMetric[] = - "PasswordManager.PasswordStoreAndroidBackend.APIError"; - histogram_tester.ExpectBucketCount( - kErrorCodeMetric, AndroidBackendErrorType::kExternalError, 1); - histogram_tester.ExpectBucketCount(kAPIErrorMetric, kNetworkErrorCode, 1); + kBackendErrorCodeMetric, AndroidBackendErrorType::kExternalError, 1); + histogram_tester.ExpectBucketCount(kBackendApiErrorMetric, kNetworkErrorCode, + 1); histogram_tester.ExpectBucketCount(kUnenrollmentHistogram, true, 1); // Per-operation retry histograms @@ -938,14 +933,9 @@ 0); EXPECT_NE(prefs()->GetDouble(prefs::kTimeOfLastMigrationAttempt), 0.0); - const char kErrorCodeMetric[] = - "PasswordManager.PasswordStoreAndroidBackend.ErrorCode"; - const char kAPIErrorMetric[] = - "PasswordManager.PasswordStoreAndroidBackend.APIError"; - - histogram_tester.ExpectBucketCount(kErrorCodeMetric, 7, 1); + histogram_tester.ExpectBucketCount(kBackendErrorCodeMetric, 7, 1); histogram_tester.ExpectBucketCount( - kAPIErrorMetric, + kBackendApiErrorMetric, static_cast<int>(AndroidBackendAPIErrorCode::kNetworkError), 1); // Per-operation retry histograms @@ -1085,7 +1075,7 @@ } TEST_F(PasswordStoreAndroidBackendTest, - OnExternalPassphraseRequiredCausingExperimentUnenrollment) { + PassphraseRequiredErrorCausesUnenrollmentIfFixUnsupported) { base::HistogramTester histogram_tester; backend().InitBackend(/*affiliated_match_helper=*/nullptr, @@ -1100,12 +1090,11 @@ mock_reply, Run(ExpectError(PasswordStoreBackendErrorType::kUncategorized, PasswordStoreBackendErrorRecoveryType::kUnrecoverable))); - AndroidBackendError error{AndroidBackendErrorType::kExternalError}; // Simulate receiving PASSPHRASE_REQUIRED code. int kPassphraseRequiredErrorCode = static_cast<int>(AndroidBackendAPIErrorCode::kPassphraseRequired); - error.api_error_code = std::optional<int>(kPassphraseRequiredErrorCode); - consumer().OnError(kJobId, std::move(error)); + consumer().OnError(kJobId, {.type = AndroidBackendErrorType::kExternalError, + .api_error_code = kPassphraseRequiredErrorCode}); RunUntilIdle(); EXPECT_TRUE(prefs()->GetBoolean( @@ -1116,20 +1105,58 @@ EXPECT_EQ(prefs()->GetInteger( prefs::kCurrentMigrationVersionToGoogleMobileServices), 0); + EXPECT_FALSE(prefs()->GetBoolean(prefs::kSavePasswordsSuspendedByError)); EXPECT_EQ(prefs()->GetDouble(prefs::kTimeOfLastMigrationAttempt), 0.0); - - const char kErrorCodeMetric[] = - "PasswordManager.PasswordStoreAndroidBackend.ErrorCode"; - const char kAPIErrorMetric[] = - "PasswordManager.PasswordStoreAndroidBackend.APIError"; - - histogram_tester.ExpectBucketCount(kErrorCodeMetric, 7, 1); - histogram_tester.ExpectBucketCount(kAPIErrorMetric, + histogram_tester.ExpectBucketCount(kBackendErrorCodeMetric, 7, 1); + histogram_tester.ExpectBucketCount(kBackendApiErrorMetric, kPassphraseRequiredErrorCode, 1); histogram_tester.ExpectBucketCount(kUnenrollmentHistogram, true, 1); } TEST_F(PasswordStoreAndroidBackendTest, + PassphraseRequiredErrorCausesNoUnenrollmentIfFixSupported) { + base::HistogramTester histogram_tester; + + base::MockCallback<PasswordStoreAndroidBackend::TryFixPassphraseErrorCb> + try_fix_passphrase_error_cb; + ResetBackend(try_fix_passphrase_error_cb.Get()); + backend().InitBackend(/*affiliated_match_helper=*/nullptr, + PasswordStoreAndroidBackend::RemoteChangesReceived(), + base::NullCallback(), base::DoNothing()); + backend().OnSyncServiceInitialized(sync_service()); + + base::MockCallback<LoginsOrErrorReply> mock_reply; + EXPECT_CALL(*bridge_helper(), GetAllLogins).WillOnce(Return(kJobId)); + backend().GetAllLoginsAsync(mock_reply.Get()); + EXPECT_CALL( + mock_reply, + Run(ExpectError(PasswordStoreBackendErrorType::kUncategorized, + PasswordStoreBackendErrorRecoveryType::kRecoverable))); + EXPECT_CALL(try_fix_passphrase_error_cb, Run); + // Simulate receiving PASSPHRASE_REQUIRED code. + int kPassphraseRequiredErrorCode = + static_cast<int>(AndroidBackendAPIErrorCode::kPassphraseRequired); + consumer().OnError(kJobId, {.type = AndroidBackendErrorType::kExternalError, + .api_error_code = kPassphraseRequiredErrorCode}); + RunUntilIdle(); + + EXPECT_FALSE(prefs()->GetBoolean( + prefs::kUnenrolledFromGoogleMobileServicesDueToErrors)); + EXPECT_EQ(prefs()->GetInteger( + prefs::kUnenrolledFromGoogleMobileServicesAfterApiErrorCode), + 0); + EXPECT_NE(prefs()->GetInteger( + prefs::kCurrentMigrationVersionToGoogleMobileServices), + 0); + EXPECT_NE(prefs()->GetDouble(prefs::kTimeOfLastMigrationAttempt), 0.0); + EXPECT_FALSE(prefs()->GetBoolean(prefs::kSavePasswordsSuspendedByError)); + histogram_tester.ExpectBucketCount(kBackendErrorCodeMetric, 7, 1); + histogram_tester.ExpectBucketCount(kBackendApiErrorMetric, + kPassphraseRequiredErrorCode, 1); + histogram_tester.ExpectTotalCount(kUnenrollmentHistogram, 0); +} + +TEST_F(PasswordStoreAndroidBackendTest, OnExternalErrorInCombinationWithNoSyncError) { base::HistogramTester histogram_tester;
diff --git a/chrome/browser/password_manager/android/pwd_check_wrapper/java/src/org/chromium/chrome/browser/pwd_check_wrapper/FakePasswordCheckController.java b/chrome/browser/password_manager/android/pwd_check_wrapper/java/src/org/chromium/chrome/browser/pwd_check_wrapper/FakePasswordCheckController.java index 0697527..9e62f2b 100644 --- a/chrome/browser/password_manager/android/pwd_check_wrapper/java/src/org/chromium/chrome/browser/pwd_check_wrapper/FakePasswordCheckController.java +++ b/chrome/browser/password_manager/android/pwd_check_wrapper/java/src/org/chromium/chrome/browser/pwd_check_wrapper/FakePasswordCheckController.java
@@ -4,30 +4,35 @@ package org.chromium.chrome.browser.pwd_check_wrapper; +import java.util.HashMap; import java.util.concurrent.CompletableFuture; public class FakePasswordCheckController implements PasswordCheckController { - private CompletableFuture<PasswordCheckResult> mPasswordCheckResult; + private HashMap<Integer, CompletableFuture<PasswordCheckResult>> mPasswordCheckResults = + new HashMap<>(); - public void setPasswordCheckResult(PasswordCheckResult result) { - mPasswordCheckResult.complete(result); + public void setPasswordCheckResult( + @PasswordStorageType int passwordStorageType, PasswordCheckResult result) { + mPasswordCheckResults.get(passwordStorageType).complete(result); } - public CompletableFuture<PasswordCheckResult> getFuturePasswordCheckResult() { - return mPasswordCheckResult; + public CompletableFuture<PasswordCheckResult> getFuturePasswordCheckResultForStorageType( + @PasswordStorageType int passwordStorageType) { + return mPasswordCheckResults.get(passwordStorageType); } @Override - public CompletableFuture<PasswordCheckResult> checkPasswords(int passwordStoreType) { - mPasswordCheckResult = new CompletableFuture<>(); - return mPasswordCheckResult; + public CompletableFuture<PasswordCheckResult> checkPasswords( + @PasswordStorageType int passwordStoreType) { + mPasswordCheckResults.put(passwordStoreType, new CompletableFuture<>()); + return mPasswordCheckResults.get(passwordStoreType); } @Override public CompletableFuture<PasswordCheckResult> getBreachedCredentialsCount( - int passwordStoreType) { - mPasswordCheckResult = new CompletableFuture<>(); - return mPasswordCheckResult; + @PasswordStorageType int passwordStoreType) { + mPasswordCheckResults.put(passwordStoreType, new CompletableFuture<>()); + return mPasswordCheckResults.get(passwordStoreType); } @Override
diff --git a/chrome/browser/password_manager/android/pwd_check_wrapper/java/src/org/chromium/chrome/browser/pwd_check_wrapper/GmsCorePasswordCheckController.java b/chrome/browser/password_manager/android/pwd_check_wrapper/java/src/org/chromium/chrome/browser/pwd_check_wrapper/GmsCorePasswordCheckController.java index 1297722..15acdf8 100644 --- a/chrome/browser/password_manager/android/pwd_check_wrapper/java/src/org/chromium/chrome/browser/pwd_check_wrapper/GmsCorePasswordCheckController.java +++ b/chrome/browser/password_manager/android/pwd_check_wrapper/java/src/org/chromium/chrome/browser/pwd_check_wrapper/GmsCorePasswordCheckController.java
@@ -11,11 +11,9 @@ import org.chromium.chrome.browser.password_manager.PasswordStoreBridge; import org.chromium.chrome.browser.password_manager.PasswordStoreCredential; import org.chromium.components.prefs.PrefService; -import org.chromium.components.signin.base.CoreAccountInfo; import org.chromium.components.sync.SyncService; import java.lang.ref.WeakReference; -import java.util.Optional; import java.util.concurrent.CompletableFuture; /** @@ -49,7 +47,8 @@ CompletableFuture<PasswordCheckResult> passwordCheckResult = new CompletableFuture<>(); PasswordManagerHelper.runPasswordCheckupInBackground( PasswordCheckReferrer.SAFETY_CHECK, - getAccountNameForStorageType(passwordStorageType), + PasswordCheckController.getAccountNameForPasswordStorageType( + passwordStorageType, mSyncService), unused -> { GmsCorePasswordCheckController controller = weakRef.get(); if (controller == null) return; @@ -78,7 +77,8 @@ WeakReference<GmsCorePasswordCheckController> weakRef = new WeakReference(this); PasswordManagerHelper.getBreachedCredentialsCount( PasswordCheckReferrer.SAFETY_CHECK, - getAccountNameForStorageType(passwordStorageType), + PasswordCheckController.getAccountNameForPasswordStorageType( + passwordStorageType, mSyncService), count -> { GmsCorePasswordCheckController controller = weakRef.get(); if (controller == null) return; @@ -127,18 +127,6 @@ passwordCheckResult.complete(new PasswordCheckResult(error)); } - private Optional<String> getAccountNameForStorageType( - @PasswordStorageType int passwordStoreType) { - switch (passwordStoreType) { - case PasswordStorageType.LOCAL_STORAGE: - return Optional.empty(); - case PasswordStorageType.ACCOUNT_STORAGE: - return Optional.of(CoreAccountInfo.getEmailFrom(mSyncService.getAccountInfo())); - } - assert false : "Unknown PasswordStorageType: " + passwordStoreType; - return null; - } - @Override public void onSavedPasswordsChanged(int count) { // The count here is the total count for both account and local storage. If this method is
diff --git a/chrome/browser/password_manager/android/pwd_check_wrapper/java/src/org/chromium/chrome/browser/pwd_check_wrapper/PasswordCheckController.java b/chrome/browser/password_manager/android/pwd_check_wrapper/java/src/org/chromium/chrome/browser/pwd_check_wrapper/PasswordCheckController.java index a8f954e..e9c7d7d 100644 --- a/chrome/browser/password_manager/android/pwd_check_wrapper/java/src/org/chromium/chrome/browser/pwd_check_wrapper/PasswordCheckController.java +++ b/chrome/browser/password_manager/android/pwd_check_wrapper/java/src/org/chromium/chrome/browser/pwd_check_wrapper/PasswordCheckController.java
@@ -6,6 +6,10 @@ import androidx.annotation.IntDef; +import org.chromium.chrome.browser.password_manager.PasswordManagerHelper; +import org.chromium.components.signin.base.CoreAccountInfo; +import org.chromium.components.sync.SyncService; + import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.OptionalInt; @@ -55,6 +59,20 @@ } } + static String getAccountNameForPasswordStorageType( + @PasswordStorageType int passwordStorageType, SyncService syncService) { + switch (passwordStorageType) { + case PasswordStorageType.LOCAL_STORAGE: + return null; + case PasswordStorageType.ACCOUNT_STORAGE: + assert PasswordManagerHelper.hasChosenToSyncPasswords(syncService) + : "The account storage is only available if password sync is on."; + return CoreAccountInfo.getEmailFrom(syncService.getAccountInfo()); + } + assert false : "Unknown PasswordStorageType: " + passwordStorageType; + return null; + } + /** Triggers the password check. */ CompletableFuture<PasswordCheckResult> checkPasswords( @PasswordStorageType int passwordStorageType);
diff --git a/chrome/browser/password_manager/android/test_support/java/src/org/chromium/chrome/browser/password_manager/FakePasswordCheckupClientHelper.java b/chrome/browser/password_manager/android/test_support/java/src/org/chromium/chrome/browser/password_manager/FakePasswordCheckupClientHelper.java index bbd6925c..3b3ec8d 100644 --- a/chrome/browser/password_manager/android/test_support/java/src/org/chromium/chrome/browser/password_manager/FakePasswordCheckupClientHelper.java +++ b/chrome/browser/password_manager/android/test_support/java/src/org/chromium/chrome/browser/password_manager/FakePasswordCheckupClientHelper.java
@@ -63,6 +63,19 @@ } @Override + public void runPasswordCheckupInBackground( + @PasswordCheckReferrer int referrer, + String accountName, + Callback<Void> successCallback, + Callback<Exception> failureCallback) { + if (mError != null) { + failureCallback.onResult(mError); + return; + } + successCallback.onResult(null); + } + + @Override public void getBreachedCredentialsCount( @PasswordCheckReferrer int referrer, Optional<String> accountName, @@ -74,4 +87,17 @@ } successCallback.onResult(mBreachedCredentialsCount); } + + @Override + public void getBreachedCredentialsCount( + @PasswordCheckReferrer int referrer, + String accountName, + Callback<Integer> successCallback, + Callback<Exception> failureCallback) { + if (mError != null) { + failureCallback.onResult(mError); + return; + } + successCallback.onResult(mBreachedCredentialsCount); + } }
diff --git a/chrome/browser/password_manager/password_manager_interactive_uitest.cc b/chrome/browser/password_manager/password_manager_interactive_uitest.cc index 19a00d52..0c715cb 100644 --- a/chrome/browser/password_manager/password_manager_interactive_uitest.cc +++ b/chrome/browser/password_manager/password_manager_interactive_uitest.cc
@@ -6,11 +6,10 @@ #include "base/functional/bind.h" #include "base/location.h" -#include "base/run_loop.h" #include "base/strings/utf_string_conversions.h" #include "base/task/single_thread_task_runner.h" #include "base/test/metrics/histogram_tester.h" -#include "base/test/test_timeouts.h" +#include "base/test/run_until.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "chrome/browser/password_manager/chrome_password_manager_client.h" @@ -41,18 +40,6 @@ namespace { -#if BUILDFLAG(ENABLE_DICE_SUPPORT) -// Wait until |condition| returns true. -void WaitForCondition(base::RepeatingCallback<bool()> condition) { - while (!condition.Run()) { - base::RunLoop run_loop; - base::SingleThreadTaskRunner::GetCurrentDefault()->PostDelayedTask( - FROM_HERE, run_loop.QuitClosure(), TestTimeouts::tiny_timeout()); - run_loop.Run(); - } -} -#endif // BUILDFLAG(ENABLE_DICE_SUPPORT) - constexpr autofill::FieldRendererId kElementId(1000); } // namespace @@ -620,9 +607,9 @@ const PasswordManager* password_manager = ChromePasswordManagerClient::FromWebContents(WebContents()) ->GetPasswordManager(); - WaitForCondition( - base::BindRepeating(&PasswordManager::IsFormManagerPendingPasswordUpdate, - base::Unretained(password_manager))); + EXPECT_TRUE(base::test::RunUntil([&]() { + return password_manager->IsFormManagerPendingPasswordUpdate(); + })); // Start the navigation. PasswordsNavigationObserver navigation_observer(WebContents());
diff --git a/chrome/browser/permissions/one_time_permissions_tracker.cc b/chrome/browser/permissions/one_time_permissions_tracker.cc index aea9c18..bdfeee2 100644 --- a/chrome/browser/permissions/one_time_permissions_tracker.cc +++ b/chrome/browser/permissions/one_time_permissions_tracker.cc
@@ -104,9 +104,7 @@ origin_tracker_[origin].undiscarded_tab_counter--; DCHECK(!(origin_tracker_[origin].undiscarded_tab_counter < 0)); if (origin_tracker_[origin].undiscarded_tab_counter == 0) { - for (auto& observer : observer_list_) { - observer.OnLastPageFromOriginClosed(origin); - } + NotifyLastPageFromOriginClosed(origin); } } } @@ -255,6 +253,13 @@ } } +void OneTimePermissionsTracker::NotifyLastPageFromOriginClosed( + const url::Origin& origin) { + for (auto& observer : observer_list_) { + observer.OnLastPageFromOriginClosed(origin); + } +} + bool OneTimePermissionsTracker::ShouldIgnoreOrigin(const url::Origin& origin) { // There are cases where chrome://newtab/ and chrome://new-tab-page/ are // used synonymously causing inconsistencies in the map. So we just ignore
diff --git a/chrome/browser/permissions/one_time_permissions_tracker.h b/chrome/browser/permissions/one_time_permissions_tracker.h index 0a4c059..73d5b34 100644 --- a/chrome/browser/permissions/one_time_permissions_tracker.h +++ b/chrome/browser/permissions/one_time_permissions_tracker.h
@@ -72,6 +72,9 @@ // Fires all running timers for testing purposes. void FireRunningTimersForTesting(); + protected: + void NotifyLastPageFromOriginClosed(const url::Origin& origin); + private: // Struct to hold the state of an origin struct OriginTrackEntry {
diff --git a/chrome/browser/privacy_sandbox/android/BUILD.gn b/chrome/browser/privacy_sandbox/android/BUILD.gn index 0e87de43..c71b551 100644 --- a/chrome/browser/privacy_sandbox/android/BUILD.gn +++ b/chrome/browser/privacy_sandbox/android/BUILD.gn
@@ -146,7 +146,27 @@ "java/res/drawable/privacy_sandbox_interests_illustration.xml", "java/res/drawable/privacy_sandbox_notice_eea_illustration.xml", "java/res/drawable/topic_taxonomy_2_id_1.xml", + "java/res/drawable/topic_taxonomy_2_id_100.xml", + "java/res/drawable/topic_taxonomy_2_id_103.xml", + "java/res/drawable/topic_taxonomy_2_id_126.xml", + "java/res/drawable/topic_taxonomy_2_id_149.xml", + "java/res/drawable/topic_taxonomy_2_id_172.xml", + "java/res/drawable/topic_taxonomy_2_id_180.xml", + "java/res/drawable/topic_taxonomy_2_id_196.xml", + "java/res/drawable/topic_taxonomy_2_id_207.xml", + "java/res/drawable/topic_taxonomy_2_id_215.xml", + "java/res/drawable/topic_taxonomy_2_id_226.xml", + "java/res/drawable/topic_taxonomy_2_id_239.xml", + "java/res/drawable/topic_taxonomy_2_id_243.xml", + "java/res/drawable/topic_taxonomy_2_id_250.xml", + "java/res/drawable/topic_taxonomy_2_id_254.xml", + "java/res/drawable/topic_taxonomy_2_id_263.xml", + "java/res/drawable/topic_taxonomy_2_id_272.xml", + "java/res/drawable/topic_taxonomy_2_id_289.xml", + "java/res/drawable/topic_taxonomy_2_id_299.xml", + "java/res/drawable/topic_taxonomy_2_id_332.xml", "java/res/drawable/topic_taxonomy_2_id_57.xml", + "java/res/drawable/topic_taxonomy_2_id_86.xml", "java/res/drawable/topic_taxonomy_placeholder.xml", "java/res/layout/category_with_clickable_summary_preference.xml", "java/res/layout/privacy_sandbox_consent_eea.xml",
diff --git a/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_100.xml b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_100.xml new file mode 100644 index 0000000..25a8499 --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_100.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="UnusedResources" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <path + android:fillColor="@macro/default_icon_color" + android:pathData="M480,800Q432,762 376,741Q320,720 260,720Q218,720 177.5,731Q137,742 100,762Q79,773 59.5,761Q40,749 40,726L40,244Q40,233 45.5,223Q51,213 62,208Q108,184 158,172Q208,160 260,160Q318,160 373.5,175Q429,190 480,220L480,704Q531,672 587,656Q643,640 700,640Q736,640 770.5,646Q805,652 840,664Q840,664 840,664Q840,664 840,664L840,184Q855,189 869.5,194.5Q884,200 898,208Q909,213 914.5,223Q920,233 920,244L920,726Q920,749 900.5,761Q881,773 860,762Q823,742 782.5,731Q742,720 700,720Q640,720 584,741Q528,762 480,800ZM560,600L560,220L760,20L760,420L560,600ZM400,665L400,269Q367,255 331.5,247.5Q296,240 260,240Q223,240 188,247Q153,254 120,268Q120,268 120,268Q120,268 120,268L120,665Q120,665 120,665Q120,665 120,665Q155,652 189.5,646Q224,640 260,640Q296,640 330.5,646Q365,652 400,665ZM400,665Q400,665 400,665Q400,665 400,665Q400,665 400,665Q400,665 400,665Q400,665 400,665Q400,665 400,665L400,269Q400,269 400,269Q400,269 400,269Q400,269 400,269Q400,269 400,269Q400,269 400,269Q400,269 400,269L400,665Z"/> +</vector>
diff --git a/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_103.xml b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_103.xml new file mode 100644 index 0000000..0bca1ed5 --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_103.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="UnusedResources" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <path + android:fillColor="@macro/default_icon_color" + android:pathData="M160,840Q127,840 103.5,816.5Q80,793 80,760L80,320Q80,287 103.5,263.5Q127,240 160,240L320,240L320,160Q320,127 343.5,103.5Q367,80 400,80L560,80Q593,80 616.5,103.5Q640,127 640,160L640,240L800,240Q833,240 856.5,263.5Q880,287 880,320L880,760Q880,793 856.5,816.5Q833,840 800,840L160,840ZM400,240L560,240L560,160Q560,160 560,160Q560,160 560,160L400,160Q400,160 400,160Q400,160 400,160L400,240ZM800,600L600,600L600,680L360,680L360,600L160,600L160,760Q160,760 160,760Q160,760 160,760L800,760Q800,760 800,760Q800,760 800,760L800,600ZM440,600L520,600L520,520L440,520L440,600ZM160,520L360,520L360,440L600,440L600,520L800,520L800,320Q800,320 800,320Q800,320 800,320L160,320Q160,320 160,320Q160,320 160,320L160,520ZM480,560L480,560L480,560L480,560L480,560L480,560Q480,560 480,560Q480,560 480,560L480,560Q480,560 480,560Q480,560 480,560L480,560L480,560L480,560L480,560L480,560Q480,560 480,560Q480,560 480,560L480,560Q480,560 480,560Q480,560 480,560Z"/> +</vector>
diff --git a/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_126.xml b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_126.xml new file mode 100644 index 0000000..d48da89 --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_126.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="UnusedResources" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <path + android:fillColor="@macro/default_icon_color" + android:pathData="M160,760Q127,760 103.5,736.5Q80,713 80,680L80,280Q80,247 103.5,223.5Q127,200 160,200L800,200Q833,200 856.5,223.5Q880,247 880,280L880,680Q880,713 856.5,736.5Q833,760 800,760L160,760ZM160,680L800,680Q800,680 800,680Q800,680 800,680L800,280Q800,280 800,280Q800,280 800,280L160,280Q160,280 160,280Q160,280 160,280L160,680Q160,680 160,680Q160,680 160,680ZM320,640L640,640L640,560L320,560L320,640ZM200,520L280,520L280,440L200,440L200,520ZM320,520L400,520L400,440L320,440L320,520ZM440,520L520,520L520,440L440,440L440,520ZM560,520L640,520L640,440L560,440L560,520ZM680,520L760,520L760,440L680,440L680,520ZM200,400L280,400L280,320L200,320L200,400ZM320,400L400,400L400,320L320,320L320,400ZM440,400L520,400L520,320L440,320L440,400ZM560,400L640,400L640,320L560,320L560,400ZM680,400L760,400L760,320L680,320L680,400ZM160,680Q160,680 160,680Q160,680 160,680L160,280Q160,280 160,280Q160,280 160,280L160,280Q160,280 160,280Q160,280 160,280L160,680Q160,680 160,680Q160,680 160,680L160,680Z"/> +</vector>
diff --git a/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_149.xml b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_149.xml new file mode 100644 index 0000000..245523ee --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_149.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="UnusedResources" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <path + android:fillColor="@macro/default_icon_color" + android:pathData="M320,546L320,240L440,240L440,546L380,490L320,546ZM520,606L520,80L640,80L640,486L520,606ZM120,744L120,400L240,400L240,624L120,744ZM120,842L378,584L520,706L744,482L680,482L680,402L880,402L880,602L800,602L800,538L524,814L382,692L232,842L120,842Z"/> +</vector>
diff --git a/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_172.xml b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_172.xml new file mode 100644 index 0000000..4ebab75 --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_172.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="UnusedResources" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <path + android:fillColor="@macro/default_icon_color" + android:pathData="M533,520Q501,475 448.5,457.5Q396,440 340,440Q284,440 231.5,457.5Q179,475 147,520L533,520ZM40,600Q40,491 131,425.5Q222,360 340,360Q458,360 549,425.5Q640,491 640,600L40,600ZM40,760L40,680L640,680L640,760L40,760ZM720,920L720,840L776,840L832,280L450,280L440,200L640,200L640,40L720,40L720,200L920,200L854,862Q851,887 832,903.5Q813,920 788,920L720,920ZM720,840L776,840L776,840L720,840L720,840Q720,840 720,840Q720,840 720,840L720,840ZM80,920Q63,920 51.5,908.5Q40,897 40,880L40,840L640,840L640,880Q640,897 628.5,908.5Q617,920 600,920L80,920ZM340,520Q340,520 340,520Q340,520 340,520Q340,520 340,520Q340,520 340,520L340,520Z"/> +</vector>
diff --git a/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_180.xml b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_180.xml new file mode 100644 index 0000000..260258eb --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_180.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="UnusedResources" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <path + android:fillColor="@macro/default_icon_color" + android:pathData="M160,720Q127,720 103.5,696.5Q80,673 80,640L80,320Q80,287 103.5,263.5Q127,240 160,240L800,240Q833,240 856.5,263.5Q880,287 880,320L880,640Q880,673 856.5,696.5Q833,720 800,720L160,720ZM160,640L800,640Q800,640 800,640Q800,640 800,640L800,320Q800,320 800,320Q800,320 800,320L160,320Q160,320 160,320Q160,320 160,320L160,640Q160,640 160,640Q160,640 160,640ZM280,600L360,600L360,520L440,520L440,440L360,440L360,360L280,360L280,440L200,440L200,520L280,520L280,600ZM580,600Q605,600 622.5,582.5Q640,565 640,540Q640,515 622.5,497.5Q605,480 580,480Q555,480 537.5,497.5Q520,515 520,540Q520,565 537.5,582.5Q555,600 580,600ZM700,480Q725,480 742.5,462.5Q760,445 760,420Q760,395 742.5,377.5Q725,360 700,360Q675,360 657.5,377.5Q640,395 640,420Q640,445 657.5,462.5Q675,480 700,480ZM160,640Q160,640 160,640Q160,640 160,640L160,320Q160,320 160,320Q160,320 160,320L160,320Q160,320 160,320Q160,320 160,320L160,640Q160,640 160,640Q160,640 160,640L160,640Z"/> +</vector>
diff --git a/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_196.xml b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_196.xml new file mode 100644 index 0000000..5a22b46 --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_196.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="UnusedResources" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <path + android:fillColor="@macro/default_icon_color" + android:pathData="M120,540L440,80L440,540L120,540ZM273,460L360,460L360,335L273,460ZM500,540Q512,512 526,442Q540,372 540,300Q540,228 526.5,152Q513,76 500,40Q561,58 621.5,107Q682,156 730.5,224Q779,292 809.5,373.5Q840,455 840,540L500,540ZM604,460L752,460Q735,383 696.5,319Q658,255 615,210Q617,231 618.5,253.5Q620,276 620,300Q620,347 615.5,387Q611,427 604,460ZM360,760Q324,760 293,743Q262,726 240,700Q226,715 209.5,728Q193,741 173,749Q138,723 113.5,684.5Q89,646 80,600L880,600Q871,646 846.5,684.5Q822,723 787,749Q767,741 750.5,728Q734,715 720,700Q697,726 666.5,743Q636,760 600,760Q564,760 533,743Q502,726 480,700Q458,726 427,743Q396,760 360,760ZM80,920L80,840L120,840Q152,840 182.5,830Q213,820 240,800Q267,820 297.5,829.5Q328,839 360,839Q392,839 422,829.5Q452,820 480,800Q507,820 537.5,829.5Q568,839 600,839Q632,839 662,829.5Q692,820 720,800Q748,820 778,830Q808,840 840,840L880,840L880,920L840,920Q809,920 779,912.5Q749,905 720,890Q691,905 661,912.5Q631,920 600,920Q569,920 539,912.5Q509,905 480,890Q451,905 421,912.5Q391,920 360,920Q329,920 299,912.5Q269,905 240,890Q211,905 181,912.5Q151,920 120,920L80,920ZM360,460L360,460L360,460L360,460ZM604,460Q604,460 604,460Q604,460 604,460Q604,460 604,460Q604,460 604,460Q604,460 604,460Q604,460 604,460L604,460Z"/> +</vector>
diff --git a/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_207.xml b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_207.xml new file mode 100644 index 0000000..2d66299 --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_207.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="UnusedResources" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <path + android:fillColor="@macro/default_icon_color" + android:pathData="M641,934Q621,946 599.5,953Q578,960 555,960Q491,960 446,914.5Q401,869 401,804Q401,781 407.5,760Q414,739 427,720Q414,701 407.5,679Q401,657 401,634Q401,570 446,525Q491,480 555,480Q578,480 600,486.5Q622,493 641,506Q660,493 682,486.5Q704,480 727,480Q791,480 836,524.5Q881,569 881,632Q881,655 874.5,677Q868,699 855,718Q868,738 874.5,760.5Q881,783 881,806Q881,870 835.5,915Q790,960 725,960Q702,960 681,953Q660,946 641,934ZM775,751L739,719L779,685Q790,676 795.5,662.5Q801,649 801,634Q801,603 779.5,581.5Q758,560 727,560Q711,560 697.5,565.5Q684,571 675,582L640,622L606,582Q597,571 583.5,565.5Q570,560 554,560Q524,560 502.5,582Q481,604 481,636Q481,651 487.5,664.5Q494,678 506,689L542,719L502,753Q492,762 486.5,775Q481,788 481,804Q481,836 502.5,858Q524,880 554,880Q569,880 583.5,873Q598,866 610,852L640,818L675,858Q684,869 697.5,874.5Q711,880 727,880Q758,880 779.5,858Q801,836 801,804Q801,790 794.5,776Q788,762 775,751ZM641,776Q664,776 680.5,759.5Q697,743 697,720Q697,697 680.5,680.5Q664,664 641,664Q618,664 601.5,680.5Q585,697 585,720Q585,743 601.5,759.5Q618,776 641,776ZM160,800L160,398L40,398L480,40L920,398L800,398L800,440L720,440L720,338L480,142L240,338L240,720L360,720L360,800L160,800ZM641,720Q641,720 641,720Q641,720 641,720Q641,720 641,720Q641,720 641,720Q641,720 641,720Q641,720 641,720L641,720L641,720Q641,720 641,720Q641,720 641,720Q641,720 641,720Q641,720 641,720Q641,720 641,720Q641,720 641,720L641,720L641,720Q641,720 641,720Q641,720 641,720Q641,720 641,720Q641,720 641,720Q641,720 641,720Q641,720 641,720L641,720L641,720Q641,720 641,720Q641,720 641,720Q641,720 641,720Q641,720 641,720Q641,720 641,720Q641,720 641,720L641,720L641,720Z"/> +</vector>
diff --git a/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_215.xml b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_215.xml new file mode 100644 index 0000000..97403ac --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_215.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="UnusedResources" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <path + android:fillColor="@macro/default_icon_color" + android:pathData="M198,682Q141,625 110.5,552.5Q80,480 80,400Q80,320 110.5,247.5Q141,175 198,118L246,166Q199,213 173.5,273.5Q148,334 148,400Q148,466 173.5,526.5Q199,587 246,634L198,682ZM290,590Q252,552 232,503Q212,454 212,400Q212,346 232,297Q252,248 290,210L338,258Q309,287 294.5,323.5Q280,360 280,400Q280,440 294.5,476.5Q309,513 338,542L290,590ZM440,840L440,492Q413,480 396.5,455Q380,430 380,400Q380,358 409,329Q438,300 480,300Q522,300 551,329Q580,358 580,400Q580,430 563.5,455Q547,480 520,492L520,840L440,840ZM670,590L622,542Q651,513 665.5,476.5Q680,440 680,400Q680,360 665.5,323.5Q651,287 622,258L670,210Q708,248 728,297Q748,346 748,400Q748,454 728,503Q708,552 670,590ZM762,682L714,634Q761,587 786.5,526.5Q812,466 812,400Q812,334 786.5,273.5Q761,213 714,166L762,118Q819,175 849.5,247.5Q880,320 880,400Q880,480 849.5,552.5Q819,625 762,682Z"/> +</vector>
diff --git a/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_226.xml b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_226.xml new file mode 100644 index 0000000..53930a5 --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_226.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="UnusedResources" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <path + android:fillColor="@macro/default_icon_color" + android:pathData="M480,840L200,688L200,448L40,360L480,120L920,360L920,680L840,680L840,404L760,448L760,688L480,840ZM480,508L754,360L480,212L206,360L480,508ZM480,749L680,641L680,490L480,600L280,490L280,641L480,749ZM480,508L480,508L480,508L480,508L480,508ZM480,598L480,598L480,598L480,598L480,598L480,598L480,598L480,598L480,598ZM480,598L480,598L480,598L480,598L480,598L480,598L480,598L480,598L480,598Z"/> +</vector>
diff --git a/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_239.xml b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_239.xml new file mode 100644 index 0000000..9bf5323 --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_239.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="UnusedResources" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <path + android:fillColor="@macro/default_icon_color" + android:pathData="M160,840L160,760L640,760L640,840L160,840ZM386,646L160,420L244,334L472,560L386,646ZM640,392L414,164L500,80L726,306L640,392ZM824,800L302,278L358,222L880,744L824,800Z"/> +</vector>
diff --git a/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_243.xml b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_243.xml new file mode 100644 index 0000000..59da2cd --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_243.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="UnusedResources" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <path + android:fillColor="@macro/default_icon_color" + android:pathData="M160,840Q127,840 103.5,816.5Q80,793 80,760L80,200Q80,167 103.5,143.5Q127,120 160,120L800,120Q833,120 856.5,143.5Q880,167 880,200L880,760Q880,793 856.5,816.5Q833,840 800,840L160,840ZM160,760L800,760Q800,760 800,760Q800,760 800,760L800,200Q800,200 800,200Q800,200 800,200L160,200Q160,200 160,200Q160,200 160,200L160,760Q160,760 160,760Q160,760 160,760ZM240,680L720,680L720,600L240,600L240,680ZM240,520L400,520L400,280L240,280L240,520ZM480,520L720,520L720,440L480,440L480,520ZM480,360L720,360L720,280L480,280L480,360ZM160,760Q160,760 160,760Q160,760 160,760L160,200Q160,200 160,200Q160,200 160,200L160,200Q160,200 160,200Q160,200 160,200L160,760Q160,760 160,760Q160,760 160,760L160,760Z"/> +</vector>
diff --git a/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_250.xml b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_250.xml new file mode 100644 index 0000000..71a7a22 --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_250.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="UnusedResources" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <path + android:fillColor="@macro/default_icon_color" + android:pathData="M360,640Q393,640 416.5,616.5Q440,593 440,560Q440,527 416.5,503.5Q393,480 360,480Q327,480 303.5,503.5Q280,527 280,560Q280,593 303.5,616.5Q327,640 360,640ZM600,640Q633,640 656.5,616.5Q680,593 680,560Q680,527 656.5,503.5Q633,480 600,480Q567,480 543.5,503.5Q520,527 520,560Q520,593 543.5,616.5Q567,640 600,640ZM480,440Q513,440 536.5,416.5Q560,393 560,360Q560,327 536.5,303.5Q513,280 480,280Q447,280 423.5,303.5Q400,327 400,360Q400,393 423.5,416.5Q447,440 480,440ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM480,800Q614,800 707,707Q800,614 800,480Q800,346 707,253Q614,160 480,160Q346,160 253,253Q160,346 160,480Q160,614 253,707Q346,800 480,800ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Z"/> +</vector>
diff --git a/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_254.xml b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_254.xml new file mode 100644 index 0000000..82249b0 --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_254.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="UnusedResources" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <path + android:fillColor="@macro/default_icon_color" + android:pathData="M660,390Q635,390 617.5,372.5Q600,355 600,330Q600,305 617.5,287.5Q635,270 660,270Q685,270 702.5,287.5Q720,305 720,330Q720,355 702.5,372.5Q685,390 660,390ZM300,390Q275,390 257.5,372.5Q240,355 240,330Q240,305 257.5,287.5Q275,270 300,270Q325,270 342.5,287.5Q360,305 360,330Q360,355 342.5,372.5Q325,390 300,390ZM480,500Q455,500 437.5,482.5Q420,465 420,440Q420,415 437.5,397.5Q455,380 480,380Q505,380 522.5,397.5Q540,415 540,440Q540,465 522.5,482.5Q505,500 480,500ZM480,280Q455,280 437.5,262.5Q420,245 420,220Q420,195 437.5,177.5Q455,160 480,160Q505,160 522.5,177.5Q540,195 540,220Q540,245 522.5,262.5Q505,280 480,280ZM480,800Q460,800 439.5,797Q419,794 400,789L400,646Q400,611 423.5,585.5Q447,560 480,560Q513,560 536.5,585.5Q560,611 560,646L560,789Q541,794 520.5,797Q500,800 480,800ZM340,768Q320,760 301.5,750Q283,740 266,728Q238,708 221.5,676Q205,644 205,608Q205,582 199.5,559.5Q194,537 180,517Q170,504 142.5,477.5Q115,451 92,428Q81,417 81,400Q81,383 92,372Q103,361 120,361Q137,361 148,372L301,517Q321,535 330.5,559.5Q340,584 340,610L340,768ZM620,768L620,610Q620,584 630,559Q640,534 659,517L812,372Q824,361 840.5,361Q857,361 868,372Q879,383 879,400Q879,417 868,428Q845,451 817.5,477Q790,503 780,517Q766,537 760.5,559.5Q755,582 755,608Q755,644 738.5,676.5Q722,709 693,729Q677,740 658.5,750Q640,760 620,768Z"/> +</vector>
diff --git a/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_263.xml b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_263.xml new file mode 100644 index 0000000..1ca53b0 --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_263.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="UnusedResources" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <path + android:fillColor="@macro/default_icon_color" + android:pathData="M180,485Q138,485 109,456Q80,427 80,385Q80,343 109,314Q138,285 180,285Q222,285 251,314Q280,343 280,385Q280,427 251,456Q222,485 180,485ZM360,325Q318,325 289,296Q260,267 260,225Q260,183 289,154Q318,125 360,125Q402,125 431,154Q460,183 460,225Q460,267 431,296Q402,325 360,325ZM600,325Q558,325 529,296Q500,267 500,225Q500,183 529,154Q558,125 600,125Q642,125 671,154Q700,183 700,225Q700,267 671,296Q642,325 600,325ZM780,485Q738,485 709,456Q680,427 680,385Q680,343 709,314Q738,285 780,285Q822,285 851,314Q880,343 880,385Q880,427 851,456Q822,485 780,485ZM266,885Q221,885 190.5,850.5Q160,816 160,769Q160,717 195.5,678Q231,639 266,601Q295,570 316,533.5Q337,497 366,465Q388,439 417,422Q446,405 480,405Q514,405 543,421Q572,437 594,463Q622,495 643.5,532Q665,569 694,601Q729,639 764.5,678Q800,717 800,769Q800,816 769.5,850.5Q739,885 694,885Q640,885 587,876Q534,867 480,867Q426,867 373,876Q320,885 266,885Z"/> +</vector>
diff --git a/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_272.xml b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_272.xml new file mode 100644 index 0000000..2a3b18e --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_272.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="UnusedResources" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <path + android:fillColor="@macro/default_icon_color" + android:pathData="M760,560L760,300L560,160L360,300L360,360L280,360L280,260L560,60L840,260L840,560L760,560ZM560,160Q560,160 560,160Q560,160 560,160L560,160L560,160L560,160L560,160L560,160L560,160ZM580,320L620,320L620,280L580,280L580,320ZM500,320L540,320L540,280L500,280L500,320ZM580,400L620,400L620,360L580,360L580,400ZM500,400L540,400L540,360L500,360L500,400ZM280,740L558,816L796,742Q791,733 781.5,726.5Q772,720 760,720L558,720Q531,720 515,718Q499,716 482,710L389,679L411,601L492,628Q509,633 532,636Q555,639 600,640L600,640Q600,640 600,640Q600,640 600,640Q600,629 593.5,619Q587,609 578,606L344,520Q344,520 344,520Q344,520 344,520L280,520L280,740ZM40,880L40,440L344,440Q351,440 358,441.5Q365,443 371,445L606,532Q639,544 659.5,574Q680,604 680,640L760,640Q810,640 845,673Q880,706 880,760L880,800L560,900L280,822L280,822L280,880L40,880ZM120,800L200,800L200,520L120,520L120,800Z"/> +</vector>
diff --git a/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_289.xml b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_289.xml new file mode 100644 index 0000000..769a601 --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_289.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="UnusedResources" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <path + android:fillColor="@macro/default_icon_color" + android:pathData="M240,880Q207,880 183.5,856.5Q160,833 160,800L160,320Q160,287 183.5,263.5Q207,240 240,240L320,240L320,240Q320,174 367,127Q414,80 480,80Q546,80 593,127Q640,174 640,240L640,240L720,240Q753,240 776.5,263.5Q800,287 800,320L800,800Q800,833 776.5,856.5Q753,880 720,880L240,880ZM240,800L720,800Q720,800 720,800Q720,800 720,800L720,320Q720,320 720,320Q720,320 720,320L640,320L640,400Q640,417 628.5,428.5Q617,440 600,440Q583,440 571.5,428.5Q560,417 560,400L560,320L400,320L400,400Q400,417 388.5,428.5Q377,440 360,440Q343,440 331.5,428.5Q320,417 320,400L320,320L240,320Q240,320 240,320Q240,320 240,320L240,800Q240,800 240,800Q240,800 240,800ZM400,240L560,240L560,240Q560,207 536.5,183.5Q513,160 480,160Q447,160 423.5,183.5Q400,207 400,240L400,240ZM240,800L240,800Q240,800 240,800Q240,800 240,800L240,320Q240,320 240,320Q240,320 240,320L240,320Q240,320 240,320Q240,320 240,320L240,800Q240,800 240,800Q240,800 240,800Z"/> +</vector>
diff --git a/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_299.xml b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_299.xml new file mode 100644 index 0000000..099a5f9 --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_299.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="UnusedResources" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <path + android:fillColor="@macro/default_icon_color" + android:pathData="M414,792L426,736Q429,723 438.5,714.5Q448,706 462,704L586,694Q599,692 610,699Q621,706 626,718L642,756Q681,733 712,700.5Q743,668 764,628L752,622Q741,614 736,602.5Q731,591 734,578L762,456Q765,444 774.5,436Q784,428 796,426Q791,401 783.5,377.5Q776,354 764,332Q755,337 744.5,336.5Q734,336 726,330L620,266Q609,259 604,247Q599,235 602,222L610,188Q579,174 546.5,167Q514,160 480,160Q466,160 451,161.5Q436,163 422,166L452,234Q457,246 454.5,259Q452,272 442,280L348,362Q338,371 324.5,372Q311,373 300,366L208,310Q185,348 172.5,391.5Q160,435 160,480Q160,496 164,532L252,524Q266,522 277.5,528.5Q289,535 294,548L342,662Q347,674 344.5,687Q342,700 332,708L294,740Q321,760 351.5,773Q382,786 414,792ZM486,620Q473,622 462,615Q451,608 446,596L392,472Q387,460 390.5,447Q394,434 404,426L506,340Q515,331 528,330Q541,329 552,336L664,402Q675,409 681,421Q687,433 684,446L652,576Q649,589 640,597.5Q631,606 618,608L486,620ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880Z"/> +</vector>
diff --git a/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_332.xml b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_332.xml new file mode 100644 index 0000000..aac96ea0 --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_332.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="UnusedResources" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <path + android:fillColor="@macro/default_icon_color" + android:pathData="M274,686L146,616L188,574L288,588L444,432L132,262L188,206L570,304L727,149Q744,132 769.5,132Q795,132 812,149Q829,166 829,191.5Q829,217 812,234L656,390L754,772L698,828L528,516L372,672L386,772L344,814L274,686Z"/> +</vector>
diff --git a/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_86.xml b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_86.xml new file mode 100644 index 0000000..ce6ce31d --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/res/drawable/topic_taxonomy_2_id_86.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="UnusedResources" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <path + android:fillColor="@macro/default_icon_color" + android:pathData="M200,880L40,440L240,320L240,80L400,80L400,320L600,440L440,880L200,880ZM680,880Q663,880 651.5,868.5Q640,857 640,840Q640,823 651.5,811.5Q663,800 680,800L800,800L800,720L680,720Q663,720 651.5,708.5Q640,697 640,680Q640,663 651.5,651.5Q663,640 680,640L800,640L800,560L680,560Q663,560 651.5,548.5Q640,537 640,520Q640,503 651.5,491.5Q663,480 680,480L800,480L800,400L680,400Q663,400 651.5,388.5Q640,377 640,360Q640,343 651.5,331.5Q663,320 680,320L800,320L800,240L680,240Q663,240 651.5,228.5Q640,217 640,200Q640,183 651.5,171.5Q663,160 680,160L840,160Q873,160 896.5,183.5Q920,207 920,240L920,800Q920,833 896.5,856.5Q873,880 840,880L680,880ZM256,800L384,800L502,474L378,400L262,400L138,474L256,800ZM320,600L320,600L320,600L320,600L320,600L320,600L320,600Z"/> +</vector>
diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc index 4366a62..f09ceb8 100644 --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
@@ -309,6 +309,7 @@ #include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager_factory.h" #include "chrome/browser/policy/networking/policy_cert_service_factory.h" #include "chrome/browser/policy/networking/user_network_configuration_updater_factory.h" +#include "chrome/browser/smart_card/smart_card_permission_context_factory.h" #include "chromeos/constants/chromeos_features.h" #endif @@ -1169,6 +1170,9 @@ if (site_engagement::SiteEngagementService::IsEnabled()) { site_engagement::SiteEngagementServiceFactory::GetInstance(); } +#if BUILDFLAG(IS_CHROMEOS) + SmartCardPermissionContextFactory::GetInstance(); +#endif #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_LACROS) SpeechRecognitionClientBrowserInterfaceFactory::EnsureFactoryBuilt(); #endif
diff --git a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_ar.xtb b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_ar.xtb index 7e77cb6..04a102d3 100644 --- a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_ar.xtb +++ b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_ar.xtb
@@ -4,9 +4,12 @@ <translation id="1173075331199604451">قائمة الصوت</translation> <translation id="1178581264944972037">الإيقاف مؤقتًا</translation> <translation id="1246424317317450637">غامق</translation> +<translation id="1586836055630070874">مريح</translation> +<translation id="1741047078107369903">دافئ</translation> <translation id="1921351128855867012">التقديم سريعًا بمقدار <ph name="NUMBER_OF_SECONDS" /> ثانية</translation> <translation id="1984328900355667246">لا تتوفّر إمكانية التشغيل.</translation> <translation id="2224347680315897176">نبرة ثابتة</translation> +<translation id="2611765907167846862">صافٍ</translation> <translation id="3023502830214299618">لا يمكن تشغيل هذه الصفحة في الوقت الحالي. يُرجى إعادة المحاولة لاحقًا.</translation> <translation id="3807208219231826020">التقديم والترجيع</translation> <translation id="385051799172605136">رجوع</translation> @@ -15,7 +18,9 @@ <translation id="4431240646217225907">تمييز النص والانتقال التلقائي للأعلى أو للأسفل</translation> <translation id="4494605076346185630">حدّة صوت متوسطة</translation> <translation id="4710974520964166851">نبرة مريحة</translation> +<translation id="4773921449011281499">هادئ</translation> <translation id="4872475766448853257">الرجوع للخلف بمقدار <ph name="NUMBER_OF_SECONDS" /> ثانية</translation> +<translation id="5026371835667036198">جليّ</translation> <translation id="5234971936051226002">تم تصغير مشغِّل خيار "الاستماع إلى هذه الصفحة".</translation> <translation id="5596627076506792578">خيارات إضافية</translation> <translation id="5694491020339060116">قائمة سرعة التشغيل</translation> @@ -26,6 +31,8 @@ <translation id="6831043979455480757">ترجمة</translation> <translation id="6846298663435243399">جارٍ التحميل…</translation> <translation id="6889157801232138307">مشغِّل ميزة "الاستماع إلى هذه الصفحة"</translation> +<translation id="7221920857098237570">ناعم</translation> +<translation id="7237590978482584900">مبتهج</translation> <translation id="7282547042039404307">سلسة</translation> <translation id="7587250070160020374">يقرأ Chrome الآن محتوى صفحة</translation> <translation id="8136852699834914183">تعذّرت قراءة محتوى هذه الصفحة بصوت عالٍ.</translation>
diff --git a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_cs.xtb b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_cs.xtb index 1c6877fb..4df5679 100644 --- a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_cs.xtb +++ b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_cs.xtb
@@ -4,9 +4,12 @@ <translation id="1173075331199604451">Nabídka k výběru hlasu</translation> <translation id="1178581264944972037">Pozastavit</translation> <translation id="1246424317317450637">Tučné</translation> +<translation id="1586836055630070874">Uklidňující</translation> +<translation id="1741047078107369903">Vřelý</translation> <translation id="1921351128855867012">Posunout vpřed o <ph name="NUMBER_OF_SECONDS" /> s</translation> <translation id="1984328900355667246">Přehrání není k dispozici</translation> <translation id="2224347680315897176">Stálý</translation> +<translation id="2611765907167846862">Poklidný</translation> <translation id="3023502830214299618">Tuto stránku momentálně bohužel přehrát nelze. Zkuste to znovu později.</translation> <translation id="3807208219231826020">Procházet přehrávání</translation> <translation id="385051799172605136">Zpět</translation> @@ -15,7 +18,9 @@ <translation id="4431240646217225907">Zvýraznění textu a automatické posouvání</translation> <translation id="4494605076346185630">Středně vysoký</translation> <translation id="4710974520964166851">Pohodový</translation> +<translation id="4773921449011281499">Poklidný</translation> <translation id="4872475766448853257">Vrátit zpět o <ph name="NUMBER_OF_SECONDS" /> s</translation> +<translation id="5026371835667036198">Jasný</translation> <translation id="5234971936051226002">Přehrávač „Poslechnout si tuto stránku“ byl minimalizován.</translation> <translation id="5596627076506792578">Další možnosti</translation> <translation id="5694491020339060116">Nabídka rychlosti přehrávání</translation> @@ -26,6 +31,8 @@ <translation id="6831043979455480757">Přeložit</translation> <translation id="6846298663435243399">Načítání…</translation> <translation id="6889157801232138307">Přehrávač Poslechnout si tuto stránku.</translation> +<translation id="7221920857098237570">Něžný</translation> +<translation id="7237590978482584900">Veselý</translation> <translation id="7282547042039404307">Plynulé</translation> <translation id="7587250070160020374">V Chromu teď hraje</translation> <translation id="8136852699834914183">Přehrávání není pro tuto stránku dostupné.</translation>
diff --git a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_en-GB.xtb b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_en-GB.xtb index 068b224..01f6b6f 100644 --- a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_en-GB.xtb +++ b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_en-GB.xtb
@@ -4,9 +4,12 @@ <translation id="1173075331199604451">Voice menu</translation> <translation id="1178581264944972037">Pause</translation> <translation id="1246424317317450637">Bold</translation> +<translation id="1586836055630070874">Soothing</translation> +<translation id="1741047078107369903">Warm</translation> <translation id="1921351128855867012">Fast forward <ph name="NUMBER_OF_SECONDS" /> seconds</translation> <translation id="1984328900355667246">Playback unavailable</translation> <translation id="2224347680315897176">Steady</translation> +<translation id="2611765907167846862">Serene</translation> <translation id="3023502830214299618">Unfortunately, playback is unavailable for this page at this time. Please try again later.</translation> <translation id="3807208219231826020">Scrub playback</translation> <translation id="385051799172605136">Back</translation> @@ -15,7 +18,9 @@ <translation id="4431240646217225907">Highlight text and auto scroll</translation> <translation id="4494605076346185630">Mid pitch</translation> <translation id="4710974520964166851">Relaxed</translation> +<translation id="4773921449011281499">Peaceful</translation> <translation id="4872475766448853257">Go back <ph name="NUMBER_OF_SECONDS" /> seconds</translation> +<translation id="5026371835667036198">Bright</translation> <translation id="5234971936051226002">'Listen to this page' player minimised.</translation> <translation id="5596627076506792578">More options</translation> <translation id="5694491020339060116">Playback speed menu</translation> @@ -26,6 +31,8 @@ <translation id="6831043979455480757">Translate</translation> <translation id="6846298663435243399">Loading…</translation> <translation id="6889157801232138307">'Listen to this page' player</translation> +<translation id="7221920857098237570">Gentle</translation> +<translation id="7237590978482584900">Breezy</translation> <translation id="7282547042039404307">Smooth</translation> <translation id="7587250070160020374">Chrome now playing</translation> <translation id="8136852699834914183">Playback is unavailable for this page.</translation>
diff --git a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_fi.xtb b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_fi.xtb index abb670d..d2e4ec5 100644 --- a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_fi.xtb +++ b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_fi.xtb
@@ -4,9 +4,12 @@ <translation id="1173075331199604451">Äänivalikko</translation> <translation id="1178581264944972037">Tauko</translation> <translation id="1246424317317450637">Lihavoitu</translation> +<translation id="1586836055630070874">Rauhoittava</translation> +<translation id="1741047078107369903">Lämmin</translation> <translation id="1921351128855867012">Siirry eteenpäin <ph name="NUMBER_OF_SECONDS" /> sekuntia</translation> <translation id="1984328900355667246">Ei voida toistaa</translation> <translation id="2224347680315897176">Vakaa</translation> +<translation id="2611765907167846862">Rauhallinen</translation> <translation id="3023502830214299618">Valitettavasti toisto ei ole juuri nyt käytettävissä tällä sivulla. Yritä myöhemmin uudelleen.</translation> <translation id="3807208219231826020">Kelaa toistoa edestakaisin</translation> <translation id="385051799172605136">Takaisin</translation> @@ -15,7 +18,9 @@ <translation id="4431240646217225907">Korosta teksti ja automaattinen vieritys</translation> <translation id="4494605076346185630">Keskitason äänenkorkeus</translation> <translation id="4710974520964166851">Rento</translation> +<translation id="4773921449011281499">Leppoisa</translation> <translation id="4872475766448853257">Siirry <ph name="NUMBER_OF_SECONDS" /> sekuntia taaksepäin</translation> +<translation id="5026371835667036198">Kirkas</translation> <translation id="5234971936051226002">Kuuntele tämä sivu ‐soitin pienennetty.</translation> <translation id="5596627076506792578">Lisäasetukset</translation> <translation id="5694491020339060116">Toistonopeusvalikko</translation> @@ -26,6 +31,8 @@ <translation id="6831043979455480757">Käännä</translation> <translation id="6846298663435243399">Ladataan…</translation> <translation id="6889157801232138307">Kuuntele tämä sivu ‑soitin</translation> +<translation id="7221920857098237570">Lempeä</translation> +<translation id="7237590978482584900">Reipas</translation> <translation id="7282547042039404307">Tasainen</translation> <translation id="7587250070160020374">Chrome toistaa nyt tätä sivua:</translation> <translation id="8136852699834914183">Toisto ei ole käytettävissä tällä sivulla.</translation>
diff --git a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_ja.xtb b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_ja.xtb index 6e6c224..a733ae4 100644 --- a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_ja.xtb +++ b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_ja.xtb
@@ -4,9 +4,12 @@ <translation id="1173075331199604451">音声メニュー</translation> <translation id="1178581264944972037">一時停止</translation> <translation id="1246424317317450637">太字</translation> +<translation id="1586836055630070874">心地良い</translation> +<translation id="1741047078107369903">温かい</translation> <translation id="1921351128855867012"><ph name="NUMBER_OF_SECONDS" /> 秒早送り</translation> <translation id="1984328900355667246">再生できません</translation> <translation id="2224347680315897176">落ち着き</translation> +<translation id="2611765907167846862">穏やか</translation> <translation id="3023502830214299618">現在このページでは再生できません。しばらくしてからもう一度お試しください。</translation> <translation id="3807208219231826020">スクラブ再生</translation> <translation id="385051799172605136">戻る</translation> @@ -15,7 +18,9 @@ <translation id="4431240646217225907">テキストのハイライト表示と自動スクロール</translation> <translation id="4494605076346185630">中ピッチ</translation> <translation id="4710974520964166851">リラックス</translation> +<translation id="4773921449011281499">安らぐ</translation> <translation id="4872475766448853257"><ph name="NUMBER_OF_SECONDS" /> 秒巻き戻し</translation> +<translation id="5026371835667036198">明るい</translation> <translation id="5234971936051226002">「このページを読み上げ」プレーヤーが最小化されました。</translation> <translation id="5596627076506792578">その他のオプション</translation> <translation id="5694491020339060116">再生速度メニュー</translation> @@ -26,6 +31,8 @@ <translation id="6831043979455480757">翻訳</translation> <translation id="6846298663435243399">読み込んでいます…</translation> <translation id="6889157801232138307">「このページを読み上げ」プレーヤー</translation> +<translation id="7221920857098237570">優しい</translation> +<translation id="7237590978482584900">爽やか</translation> <translation id="7282547042039404307">滑らか</translation> <translation id="7587250070160020374">Chrome で再生中</translation> <translation id="8136852699834914183">このページは再生できません。</translation>
diff --git a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_kn.xtb b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_kn.xtb index f3c2df6..ce7eb13 100644 --- a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_kn.xtb +++ b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_kn.xtb
@@ -4,9 +4,12 @@ <translation id="1173075331199604451">ಧ್ವನಿ ಮೆನು</translation> <translation id="1178581264944972037">ವಿರಾಮ</translation> <translation id="1246424317317450637">ಬೋಲ್ಡ್</translation> +<translation id="1586836055630070874">ಹಿತಕರ</translation> +<translation id="1741047078107369903">ವಾರ್ಮ್ ಟೋನ್</translation> <translation id="1921351128855867012"><ph name="NUMBER_OF_SECONDS" /> ಸೆಕೆಂಡ್ಗಳಷ್ಟು ಫಾಸ್ಟ್ ಫಾರ್ವರ್ಡ್ ಮಾಡಿ</translation> <translation id="1984328900355667246">ಪ್ಲೇಬ್ಯಾಕ್ ಲಭ್ಯವಿಲ್ಲ</translation> <translation id="2224347680315897176">ಸ್ಥಿರವಾಗಿದೆ</translation> +<translation id="2611765907167846862">ಪ್ರಶಾಂತತೆ ಟೋನ್</translation> <translation id="3023502830214299618">ದುರದೃಷ್ಟವಶಾತ್, ಈ ಸಮಯದಲ್ಲಿ ಈ ಪುಟಕ್ಕೆ ಪ್ಲೇಬ್ಯಾಕ್ ಲಭ್ಯವಿಲ್ಲ. ನಂತರ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation> <translation id="3807208219231826020">ಸ್ಕ್ರಬ್ ಪ್ಲೇಬ್ಯಾಕ್</translation> <translation id="385051799172605136">ಹಿಂದೆ</translation> @@ -15,7 +18,9 @@ <translation id="4431240646217225907">ಪಠ್ಯ ಮತ್ತು ಆಟೋ ಸ್ಕ್ರಾಲ್ ಅನ್ನು ಹೈಲೈಟ್ ಮಾಡಿ</translation> <translation id="4494605076346185630">ಮಧ್ಯಮ-ಧ್ವನಿ</translation> <translation id="4710974520964166851">ಆರಾಮದಾಯಕ</translation> +<translation id="4773921449011281499">ಶಾಂತಿಯುತ ಟೋನ್</translation> <translation id="4872475766448853257"><ph name="NUMBER_OF_SECONDS" /> ಸೆಕೆಂಡ್ಗಳಷ್ಟು ಹಿಂದಕ್ಕೆ ಹೋಗಿ</translation> +<translation id="5026371835667036198">ಬ್ರೈಟ್ ಟೋನ್</translation> <translation id="5234971936051226002">"ಈ ಪುಟವನ್ನು ಆಲಿಸಿ" ಪ್ಲೇಯರ್ ಅನ್ನು ಕುಗ್ಗಿಸಲಾಗಿದೆ.</translation> <translation id="5596627076506792578">ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳು</translation> <translation id="5694491020339060116">ಪ್ಲೇಬ್ಯಾಕ್ ವೇಗದ ಮೆನು</translation> @@ -26,6 +31,8 @@ <translation id="6831043979455480757">Translate</translation> <translation id="6846298663435243399">ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ...</translation> <translation id="6889157801232138307">"ಈ ಪುಟವನ್ನು ಆಲಿಸಿ" ಪ್ಲೇಯರ್</translation> +<translation id="7221920857098237570">ಹಿತವಾದ ಟೋನ್</translation> +<translation id="7237590978482584900">ತಂಗಾಳಿಯುತ ಟೋನ್</translation> <translation id="7282547042039404307">ನಯವಾದ</translation> <translation id="7587250070160020374">Chrome ಪುಟವು ಈಗ ಪ್ಲೇ ಆಗುತ್ತಿದೆ</translation> <translation id="8136852699834914183">ಈ ಪುಟಕ್ಕೆ ಪ್ಲೇಬ್ಯಾಕ್ ಲಭ್ಯವಿಲ್ಲ.</translation>
diff --git a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_ko.xtb b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_ko.xtb index 345d8fa..ed4d4ff 100644 --- a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_ko.xtb +++ b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_ko.xtb
@@ -4,9 +4,12 @@ <translation id="1173075331199604451">음성 메뉴</translation> <translation id="1178581264944972037">일시중지</translation> <translation id="1246424317317450637">굵게</translation> +<translation id="1586836055630070874">편안하게</translation> +<translation id="1741047078107369903">따뜻하게</translation> <translation id="1921351128855867012"><ph name="NUMBER_OF_SECONDS" />초 빨리 감기</translation> <translation id="1984328900355667246">재생할 수 없음</translation> <translation id="2224347680315897176">일정함</translation> +<translation id="2611765907167846862">고요하게</translation> <translation id="3023502830214299618">현재 이 페이지를 재생할 수 없습니다. 나중에 다시 시도해 주세요.</translation> <translation id="3807208219231826020">스크러빙</translation> <translation id="385051799172605136">뒤로</translation> @@ -15,7 +18,9 @@ <translation id="4431240646217225907">텍스트 강조 표시 및 자동 스크롤</translation> <translation id="4494605076346185630">중간음</translation> <translation id="4710974520964166851">편안함</translation> +<translation id="4773921449011281499">평화롭게</translation> <translation id="4872475766448853257"><ph name="NUMBER_OF_SECONDS" />초 뒤로 이동합니다.</translation> +<translation id="5026371835667036198">밝게</translation> <translation id="5234971936051226002">'이 페이지의 내용 듣기' 플레이어가 최소화되었습니다.</translation> <translation id="5596627076506792578">옵션 더보기</translation> <translation id="5694491020339060116">재생 속도 메뉴</translation> @@ -26,6 +31,8 @@ <translation id="6831043979455480757">번역</translation> <translation id="6846298663435243399">로드 중…</translation> <translation id="6889157801232138307">'이 페이지의 내용 듣기' 플레이어</translation> +<translation id="7221920857098237570">부드럽게</translation> +<translation id="7237590978482584900">경쾌하게</translation> <translation id="7282547042039404307">원활함</translation> <translation id="7587250070160020374">Chrome에서 재생 중</translation> <translation id="8136852699834914183">이 페이지는 재생할 수 없습니다.</translation>
diff --git a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_mr.xtb b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_mr.xtb index e4747ae..8976f7c 100644 --- a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_mr.xtb +++ b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_mr.xtb
@@ -4,9 +4,12 @@ <translation id="1173075331199604451">व्हॉइस मेनू</translation> <translation id="1178581264944972037">विराम द्या</translation> <translation id="1246424317317450637">ठळक</translation> +<translation id="1586836055630070874">सुखदायक</translation> +<translation id="1741047078107369903">आरामदायक</translation> <translation id="1921351128855867012"><ph name="NUMBER_OF_SECONDS" /> सेकंद फास्ट फॉरवर्ड करा</translation> <translation id="1984328900355667246">प्लेबॅक उपलब्ध नाही</translation> <translation id="2224347680315897176">स्थिर टोन असलेला आवाज</translation> +<translation id="2611765907167846862">प्रसन्न</translation> <translation id="3023502830214299618">दुर्दैवाने, यावेळी या पेजसाठी प्लेबॅक उपलब्ध नाही. कृपया नंतर पुन्हा प्रयत्न करा.</translation> <translation id="3807208219231826020">प्लेबॅक स्क्रब करा</translation> <translation id="385051799172605136">मागील</translation> @@ -15,7 +18,9 @@ <translation id="4431240646217225907">मजकूर हायलाइट करा आणि ऑटो स्क्रोल करा</translation> <translation id="4494605076346185630">मध्यम स्वरूपाचा पिच असलेला आवाज</translation> <translation id="4710974520964166851">निवांत टोन असलेला आवाज</translation> +<translation id="4773921449011281499">शांत</translation> <translation id="4872475766448853257"><ph name="NUMBER_OF_SECONDS" /> सेकंद मागे जा</translation> +<translation id="5026371835667036198">उत्साही</translation> <translation id="5234971936051226002">“हे पेज ऐका” प्लेअर लहान केला आहे.</translation> <translation id="5596627076506792578">अधिक पर्याय</translation> <translation id="5694491020339060116">प्लेबॅकच्या वेगाशी संबंधित मेनू</translation> @@ -26,6 +31,8 @@ <translation id="6831043979455480757">भाषांतर करा</translation> <translation id="6846298663435243399">लोड करत आहे...</translation> <translation id="6889157801232138307">“हे पेज ऐका” प्लेअर</translation> +<translation id="7221920857098237570">सौम्य</translation> +<translation id="7237590978482584900">आनंददायक</translation> <translation id="7282547042039404307">सौम्य</translation> <translation id="7587250070160020374">Chrome आता प्ले करत आहे</translation> <translation id="8136852699834914183">या पेजसाठी प्लेबॅक उपलब्ध नाही.</translation>
diff --git a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_ro.xtb b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_ro.xtb index 1c6493bf..da3b429 100644 --- a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_ro.xtb +++ b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_ro.xtb
@@ -4,9 +4,12 @@ <translation id="1173075331199604451">Meniul Voce</translation> <translation id="1178581264944972037">Întrerupe</translation> <translation id="1246424317317450637">Aldin</translation> +<translation id="1586836055630070874">Liniștitoare</translation> +<translation id="1741047078107369903">Caldă</translation> <translation id="1921351128855867012">Derulează rapid înainte cu <ph name="NUMBER_OF_SECONDS" /> secunde</translation> <translation id="1984328900355667246">Redarea nu este disponibilă</translation> <translation id="2224347680315897176">Constant</translation> +<translation id="2611765907167846862">Calmă</translation> <translation id="3023502830214299618">Redarea nu este disponibilă momentan pentru această pagină. Încearcă din nou mai târziu.</translation> <translation id="3807208219231826020">Derulează prin redare</translation> <translation id="385051799172605136">Înapoi</translation> @@ -15,7 +18,9 @@ <translation id="4431240646217225907">Evidențiază textul și derulează automat</translation> <translation id="4494605076346185630">Înălțime medie a sunetului</translation> <translation id="4710974520964166851">Relaxat</translation> +<translation id="4773921449011281499">Liniștită</translation> <translation id="4872475766448853257">Derulează înapoi cu <ph name="NUMBER_OF_SECONDS" /> secunde</translation> +<translation id="5026371835667036198">Optimistă</translation> <translation id="5234971936051226002">Playerul Ascultă pagina minimizat.</translation> <translation id="5596627076506792578">Mai multe opțiuni</translation> <translation id="5694491020339060116">Meniul Viteza de redare</translation> @@ -26,6 +31,8 @@ <translation id="6831043979455480757">Tradu</translation> <translation id="6846298663435243399">Se încarcă…</translation> <translation id="6889157801232138307">Playerul Ascultă pagina</translation> +<translation id="7221920857098237570">Blândă</translation> +<translation id="7237590978482584900">Degajată</translation> <translation id="7282547042039404307">Mișcare lină</translation> <translation id="7587250070160020374">Pagina de Chrome se redă acum</translation> <translation id="8136852699834914183">Redarea nu este disponibilă pentru această pagină.</translation>
diff --git a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_sl.xtb b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_sl.xtb index 66f1c3e..6032b2ff 100644 --- a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_sl.xtb +++ b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_sl.xtb
@@ -4,9 +4,12 @@ <translation id="1173075331199604451">Glasovni meni</translation> <translation id="1178581264944972037">Prekini</translation> <translation id="1246424317317450637">Krepko</translation> +<translation id="1586836055630070874">Pomirjujoč</translation> +<translation id="1741047078107369903">Topel</translation> <translation id="1921351128855867012">Previjanje naprej za <ph name="NUMBER_OF_SECONDS" /> s</translation> <translation id="1984328900355667246">Predvajanje ni na voljo</translation> <translation id="2224347680315897176">Stabilen</translation> +<translation id="2611765907167846862">Spokojen</translation> <translation id="3023502830214299618">Predvajanje za to stran trenutno ni na voljo. Poskusite znova pozneje.</translation> <translation id="3807208219231826020">Predvajanje s pomikanjem po posnetku</translation> <translation id="385051799172605136">Nazaj</translation> @@ -15,7 +18,9 @@ <translation id="4431240646217225907">Označevanje besedila in samodejno pomikanje</translation> <translation id="4494605076346185630">Srednji ton</translation> <translation id="4710974520964166851">Sproščen</translation> +<translation id="4773921449011281499">Miren</translation> <translation id="4872475766448853257">Vrnitev za <ph name="NUMBER_OF_SECONDS" /> s</translation> +<translation id="5026371835667036198">Svetel</translation> <translation id="5234971936051226002">Predvajalnik »Poslušanje te strani« je pomanjšan.</translation> <translation id="5596627076506792578">Več možnosti</translation> <translation id="5694491020339060116">Meni za hitrost predvajanja</translation> @@ -26,6 +31,8 @@ <translation id="6831043979455480757">Prevedi</translation> <translation id="6846298663435243399">Nalaganje poteka …</translation> <translation id="6889157801232138307">Predvajalnik »Poslušanje te strani«</translation> +<translation id="7221920857098237570">Nežen</translation> +<translation id="7237590978482584900">Svež</translation> <translation id="7282547042039404307">Tekoč</translation> <translation id="7587250070160020374">Chrome zdaj predvaja</translation> <translation id="8136852699834914183">Predvajanje za to stran ni na voljo.</translation>
diff --git a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_uk.xtb b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_uk.xtb index bd42f98..faf2962 100644 --- a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_uk.xtb +++ b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_uk.xtb
@@ -4,9 +4,12 @@ <translation id="1173075331199604451">Голосове меню</translation> <translation id="1178581264944972037">Пауза</translation> <translation id="1246424317317450637">Жирний</translation> +<translation id="1586836055630070874">Заспокійливий</translation> +<translation id="1741047078107369903">Теплий</translation> <translation id="1921351128855867012">Перемотати вперед на <ph name="NUMBER_OF_SECONDS" /> с</translation> <translation id="1984328900355667246">Відтворення недоступне</translation> <translation id="2224347680315897176">стабільний</translation> +<translation id="2611765907167846862">Безтурботний</translation> <translation id="3023502830214299618">На жаль, відтворення на цій сторінці зараз недоступне. Спробуйте пізніше.</translation> <translation id="3807208219231826020">Панель прокручування</translation> <translation id="385051799172605136">Назад</translation> @@ -15,7 +18,9 @@ <translation id="4431240646217225907">Виділення тексту й автопрокручування</translation> <translation id="4494605076346185630">Середній тембр</translation> <translation id="4710974520964166851">без поспіху</translation> +<translation id="4773921449011281499">Спокійний</translation> <translation id="4872475766448853257">Перемотати назад на <ph name="NUMBER_OF_SECONDS" /> с</translation> +<translation id="5026371835667036198">Жвавий</translation> <translation id="5234971936051226002">Програвач функції "Прослухати цю сторінку" згорнуто.</translation> <translation id="5596627076506792578">Інші опції</translation> <translation id="5694491020339060116">Меню швидкості відтворення</translation> @@ -26,6 +31,8 @@ <translation id="6831043979455480757">Перекласти</translation> <translation id="6846298663435243399">Завантаження…</translation> <translation id="6889157801232138307">Програвач функції "Прослухати цю сторінку"</translation> +<translation id="7221920857098237570">Тихий</translation> +<translation id="7237590978482584900">Свіжий</translation> <translation id="7282547042039404307">Плавно</translation> <translation id="7587250070160020374">У Chrome відтворюється звук</translation> <translation id="8136852699834914183">Відтворення недоступне для цієї сторінки.</translation>
diff --git a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_zh-CN.xtb b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_zh-CN.xtb index 3366776..3644c9e 100644 --- a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_zh-CN.xtb +++ b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_zh-CN.xtb
@@ -4,9 +4,12 @@ <translation id="1173075331199604451">语音菜单</translation> <translation id="1178581264944972037">暂停</translation> <translation id="1246424317317450637">粗体</translation> +<translation id="1586836055630070874">舒缓</translation> +<translation id="1741047078107369903">温暖</translation> <translation id="1921351128855867012">快进 <ph name="NUMBER_OF_SECONDS" /> 秒</translation> <translation id="1984328900355667246">无法播放</translation> <translation id="2224347680315897176">稳重</translation> +<translation id="2611765907167846862">平静</translation> <translation id="3023502830214299618">很抱歉,目前无法播放此网页。请稍后再试。</translation> <translation id="3807208219231826020">拖动播放</translation> <translation id="385051799172605136">返回</translation> @@ -15,7 +18,9 @@ <translation id="4431240646217225907">突出显示文字和自动滚动</translation> <translation id="4494605076346185630">中音</translation> <translation id="4710974520964166851">休闲</translation> +<translation id="4773921449011281499">平和</translation> <translation id="4872475766448853257">快退 <ph name="NUMBER_OF_SECONDS" /> 秒</translation> +<translation id="5026371835667036198">嘹亮</translation> <translation id="5234971936051226002">“读出此网页的内容”播放器已最小化。</translation> <translation id="5596627076506792578">更多选项</translation> <translation id="5694491020339060116">播放速度菜单</translation> @@ -26,6 +31,8 @@ <translation id="6831043979455480757">翻译</translation> <translation id="6846298663435243399">正在加载…</translation> <translation id="6889157801232138307">“读出此网页的内容”播放器</translation> +<translation id="7221920857098237570">柔和</translation> +<translation id="7237590978482584900">轻松</translation> <translation id="7282547042039404307">流畅</translation> <translation id="7587250070160020374">Chrome 正在播放</translation> <translation id="8136852699834914183">无法播放此网页中的内容。</translation>
diff --git a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_zh-HK.xtb b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_zh-HK.xtb index 29455cea..253d263 100644 --- a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_zh-HK.xtb +++ b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_zh-HK.xtb
@@ -4,9 +4,12 @@ <translation id="1173075331199604451">語音選單</translation> <translation id="1178581264944972037">暫停</translation> <translation id="1246424317317450637">粗體</translation> +<translation id="1586836055630070874">撫慰心靈</translation> +<translation id="1741047078107369903">溫暖</translation> <translation id="1921351128855867012">快轉 <ph name="NUMBER_OF_SECONDS" /> 秒</translation> <translation id="1984328900355667246">無法播放</translation> <translation id="2224347680315897176">平穩</translation> +<translation id="2611765907167846862">穩重</translation> <translation id="3023502830214299618">很抱歉,目前無法播放此頁面。請稍後再試。</translation> <translation id="3807208219231826020">拖曳時間軸播放</translation> <translation id="385051799172605136">返回</translation> @@ -15,7 +18,9 @@ <translation id="4431240646217225907">突顯文字和自動捲動</translation> <translation id="4494605076346185630">中音</translation> <translation id="4710974520964166851">輕鬆</translation> +<translation id="4773921449011281499">靜謐</translation> <translation id="4872475766448853257">倒播 <ph name="NUMBER_OF_SECONDS" /> 秒</translation> +<translation id="5026371835667036198">明亮</translation> <translation id="5234971936051226002">「朗讀此頁面內容」播放器已經縮到最細。</translation> <translation id="5596627076506792578">更多選項</translation> <translation id="5694491020339060116">播放速度選單</translation> @@ -26,6 +31,8 @@ <translation id="6831043979455480757">翻譯</translation> <translation id="6846298663435243399">載入中…</translation> <translation id="6889157801232138307">「朗讀此頁內容」播放器</translation> +<translation id="7221920857098237570">柔和</translation> +<translation id="7237590978482584900">輕快</translation> <translation id="7282547042039404307">流暢</translation> <translation id="7587250070160020374">Chrome 正在播放</translation> <translation id="8136852699834914183">無法播放此頁面的內容。</translation>
diff --git a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_zh-TW.xtb b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_zh-TW.xtb index e018f3b..92d5d10 100644 --- a/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_zh-TW.xtb +++ b/chrome/browser/readaloud/android/resources/translations/android_readaloud_strings_zh-TW.xtb
@@ -4,9 +4,12 @@ <translation id="1173075331199604451">語音選單</translation> <translation id="1178581264944972037">暫停</translation> <translation id="1246424317317450637">粗體</translation> +<translation id="1586836055630070874">和緩</translation> +<translation id="1741047078107369903">溫暖</translation> <translation id="1921351128855867012">快轉 <ph name="NUMBER_OF_SECONDS" /> 秒</translation> <translation id="1984328900355667246">無法播放</translation> <translation id="2224347680315897176">穩定</translation> +<translation id="2611765907167846862">穩重</translation> <translation id="3023502830214299618">很抱歉,目前無法播放這個頁面。請稍後再試。</translation> <translation id="3807208219231826020">拖曳播放</translation> <translation id="385051799172605136">返回</translation> @@ -15,7 +18,9 @@ <translation id="4431240646217225907">醒目顯示文字並自動捲動</translation> <translation id="4494605076346185630">中音</translation> <translation id="4710974520964166851">輕鬆</translation> +<translation id="4773921449011281499">平靜</translation> <translation id="4872475766448853257">倒轉 <ph name="NUMBER_OF_SECONDS" /> 秒</translation> +<translation id="5026371835667036198">嘹亮</translation> <translation id="5234971936051226002">「朗讀這頁內容」播放器已縮到最小。</translation> <translation id="5596627076506792578">更多選項</translation> <translation id="5694491020339060116">播放速度選單</translation> @@ -26,6 +31,8 @@ <translation id="6831043979455480757">翻譯</translation> <translation id="6846298663435243399">載入中…</translation> <translation id="6889157801232138307">「朗讀這頁內容」播放器</translation> +<translation id="7221920857098237570">柔和</translation> +<translation id="7237590978482584900">輕快</translation> <translation id="7282547042039404307">流暢</translation> <translation id="7587250070160020374">Chrome 正在播放</translation> <translation id="8136852699834914183">無法播放這個頁面的內容。</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/accessibility_common/facegaze/facegaze.ts b/chrome/browser/resources/chromeos/accessibility/accessibility_common/facegaze/facegaze.ts index 290d4a1..9980a44a 100644 --- a/chrome/browser/resources/chromeos/accessibility/accessibility_common/facegaze/facegaze.ts +++ b/chrome/browser/resources/chromeos/accessibility/accessibility_common/facegaze/facegaze.ts
@@ -99,7 +99,7 @@ return; } - this.mouseController_.onFaceLandmarkerResult(result); + this.mouseController_.updateMouseLocation(result); const gestures = GestureDetector.detect(result, this.gestureToConfidence_); for (const gesture of gestures) { if (gesture === FacialGesture.BROW_DOWN_LEFT ||
diff --git a/chrome/browser/resources/chromeos/accessibility/accessibility_common/facegaze/facegaze_test.js b/chrome/browser/resources/chromeos/accessibility/accessibility_common/facegaze/facegaze_test.js index e7c209f..0ce05a5 100644 --- a/chrome/browser/resources/chromeos/accessibility/accessibility_common/facegaze/facegaze_test.js +++ b/chrome/browser/resources/chromeos/accessibility/accessibility_common/facegaze/facegaze_test.js
@@ -24,7 +24,7 @@ forehead_x, forehead_y); this.processFaceLandmarkerResult(result); const cursorPosition = - await this.mockAccessibilityPrivate.waitForNextCursorPosition(); + this.mockAccessibilityPrivate.getLatestCursorPosition(); assertEquals(config.mouseLocation.x, cursorPosition.x); assertEquals(config.mouseLocation.y, cursorPosition.y); } @@ -41,9 +41,7 @@ result = new MockFaceLandmarkerResult().setNormalizedForeheadLocation(0.11, 0.21); this.processFaceLandmarkerResult(result); - - cursorPosition = - await this.mockAccessibilityPrivate.waitForNextCursorPosition(); + cursorPosition = this.mockAccessibilityPrivate.getLatestCursorPosition(); assertEquals(594, cursorPosition.x); assertEquals(404, cursorPosition.y); @@ -52,8 +50,7 @@ result = new MockFaceLandmarkerResult().setNormalizedForeheadLocation(0.1, 0.2); this.processFaceLandmarkerResult(result); - cursorPosition = - await this.mockAccessibilityPrivate.waitForNextCursorPosition(); + cursorPosition = this.mockAccessibilityPrivate.getLatestCursorPosition(); assertEquals(600, cursorPosition.x); assertEquals(400, cursorPosition.y); }); @@ -75,8 +72,7 @@ result = new MockFaceLandmarkerResult().setNormalizedForeheadLocation( 0.61, 0.71); this.processFaceLandmarkerResult(result); - cursorPosition = - await this.mockAccessibilityPrivate.waitForNextCursorPosition(); + cursorPosition = this.mockAccessibilityPrivate.getLatestCursorPosition(); assertEquals(594, cursorPosition.x); assertEquals(404, cursorPosition.y); @@ -85,46 +81,11 @@ result = new MockFaceLandmarkerResult().setNormalizedForeheadLocation( 0.6, 0.7); this.processFaceLandmarkerResult(result); - cursorPosition = - await this.mockAccessibilityPrivate.waitForNextCursorPosition(); + cursorPosition = this.mockAccessibilityPrivate.getLatestCursorPosition(); assertEquals(600, cursorPosition.x); assertEquals(400, cursorPosition.y); }); -// Tests that left/top offsets in ScreenBounds are respected. This should have -// the same results as the first test offset by exactly left/top. -AX_TEST_F( - 'FaceGazeTest', 'UpdateMouseLocationWithScreenNotAtZero', async function() { - this.mockAccessibilityPrivate.setDisplayBounds( - [{left: 100, top: 50, width: 1200, height: 800}]); - - const config = - new Config().withMouseLocation({x: 700, y: 450}).withBufferSize(1); - await this.startFacegazeWithConfigAndForeheadLocation_(config, 0.1, 0.2); - - // Move left and down. Note that increasing the x coordinate results in - // moving left because the image is mirrored, while increasing y moves - // downward as expected. - result = new MockFaceLandmarkerResult().setNormalizedForeheadLocation( - 0.11, 0.21); - this.processFaceLandmarkerResult(result); - - cursorPosition = - await this.mockAccessibilityPrivate.waitForNextCursorPosition(); - assertEquals(694, cursorPosition.x); - assertEquals(454, cursorPosition.y); - - // Move to where we were. Since the buffer size is 1, should end up at the - // exact same location. - result = new MockFaceLandmarkerResult().setNormalizedForeheadLocation( - 0.1, 0.2); - this.processFaceLandmarkerResult(result); - await this.mockAccessibilityPrivate.waitForNextCursorPosition(); - cursorPosition = this.mockAccessibilityPrivate.getLatestCursorPosition(); - assertEquals(700, cursorPosition.x); - assertEquals(450, cursorPosition.y); - }); - AX_TEST_F('FaceGazeTest', 'UpdateMouseLocationWithBuffer', async function() { const config = new Config().withMouseLocation({x: 600, y: 400}).withBufferSize(6); @@ -135,8 +96,7 @@ result = new MockFaceLandmarkerResult().setNormalizedForeheadLocation(0.11, 0.21); this.processFaceLandmarkerResult(result); - cursorPosition = - await this.mockAccessibilityPrivate.waitForNextCursorPosition(); + cursorPosition = this.mockAccessibilityPrivate.getLatestCursorPosition(); assertTrue(cursorPosition.x < 600); assertTrue(cursorPosition.y > 400); @@ -146,7 +106,7 @@ new MockFaceLandmarkerResult().setNormalizedForeheadLocation(0.1, 0.2); this.processFaceLandmarkerResult(result); let newCursorPosition = - await this.mockAccessibilityPrivate.waitForNextCursorPosition(); + this.mockAccessibilityPrivate.getLatestCursorPosition(); assertTrue(newCursorPosition.x > cursorPosition.x); assertTrue(newCursorPosition.y < cursorPosition.y); assertTrue(newCursorPosition.x < 600); @@ -155,8 +115,7 @@ cursorPosition = newCursorPosition; // Process the same result again. We move even closer to (600, 400). this.processFaceLandmarkerResult(result); - newCursorPosition = - await this.mockAccessibilityPrivate.waitForNextCursorPosition(); + newCursorPosition = this.mockAccessibilityPrivate.getLatestCursorPosition(); assertTrue(newCursorPosition.x > cursorPosition.x); assertTrue(newCursorPosition.y < cursorPosition.y); assertTrue(newCursorPosition.x < 600);
diff --git a/chrome/browser/resources/chromeos/accessibility/accessibility_common/facegaze/facegaze_test_base.js b/chrome/browser/resources/chromeos/accessibility/accessibility_common/facegaze/facegaze_test_base.js index 9b8a3ee..7f7f2c0 100644 --- a/chrome/browser/resources/chromeos/accessibility/accessibility_common/facegaze/facegaze_test_base.js +++ b/chrome/browser/resources/chromeos/accessibility/accessibility_common/facegaze/facegaze_test_base.js
@@ -168,7 +168,7 @@ } if (config.bufferSize !== -1) { - faceGaze.mouseController_.targetBufferSize_ = config.bufferSize; + faceGaze.mouseController_.bufferSize_ = config.bufferSize; } return new Promise(resolve => {
diff --git a/chrome/browser/resources/chromeos/accessibility/accessibility_common/facegaze/mouse_controller.ts b/chrome/browser/resources/chromeos/accessibility/accessibility_common/facegaze/mouse_controller.ts index 9b88de5..c7b9fda3 100644 --- a/chrome/browser/resources/chromeos/accessibility/accessibility_common/facegaze/mouse_controller.ts +++ b/chrome/browser/resources/chromeos/accessibility/accessibility_common/facegaze/mouse_controller.ts
@@ -19,6 +19,7 @@ y: number; } + /** Handles all interaction with the mouse. */ export class MouseController { /** Last seen mouse location (cached from event in onMouseMovedOrDragged_). */ @@ -28,7 +29,7 @@ private screenBounds_: ScreenRect|undefined; /** Smoothing buffer size. */ - private targetBufferSize_ = MouseController.BUFFER_SIZE; + private bufferSize_ = MouseController.BUFFER_SIZE; /** The most recent raw face landmark mouse locations. */ private buffer_: ScreenPoint[] = []; @@ -39,12 +40,6 @@ /** The most recent smoothed mouse location. */ private previousSmoothedLocation_: FloatingPoint2D|undefined; - /** The last location in screen coordinates of the tracked landmark. */ - private lastLandmarkLocation_: FloatingPoint2D|undefined; - - private mouseInterval_: number = -1; - private lastMouseMovedTime_: number = 0; - constructor() { this.onMouseMovedHandler_ = new EventHandler( [], chrome.automation.EventType.MOUSE_MOVED, @@ -84,17 +79,17 @@ if (!this.mouseLocation_) { this.resetLocation(); } - - // Start the logic to move the mouse. - this.mouseInterval_ = setInterval( - () => this.updateMouseLocation_(), MouseController.MOUSE_INTERVAL_MS); } /** - * Update the current location of the tracked face landmark. + * Uses the forehead landmark to update the location of the mouse. + * This function doesn't use the absolute position of the forehead + * landmark. Instead, it calculates deltas to be applied to the + * current mouse location based on the forehead's location relative + * to the center of the screen. */ - onFaceLandmarkerResult(result: FaceLandmarkerResult): void { - if (!this.screenBounds_) { + updateMouseLocation(result: FaceLandmarkerResult): void { + if (!this.screenBounds_ || !this.mouseLocation_) { return; } if (!result.faceLandmarks || !result.faceLandmarks[0] || @@ -109,36 +104,23 @@ // Calculate the absolute position on the screen, where the top left // corner represents (0,0) and the bottom right corner represents // (this.screenBounds_.width, this.screenBounds_.height). - // TODO(b/309121742): Handle multiple displays. - const absoluteY = Math.round( - foreheadLocation.y * this.screenBounds_.height + - this.screenBounds_.top); + // TODO(b/309121742): Handle multiple displays, and displays where + // the (left, top) is not (0, 0). + const absoluteY = + Math.round(foreheadLocation.y * this.screenBounds_.height); // Reflect the x coordinate since the webcam doesn't mirror in the // horizontal direction. const scaledX = Math.round(foreheadLocation.x * this.screenBounds_.width); - const absoluteX = - this.screenBounds_.width - scaledX + this.screenBounds_.left; + const absoluteX = (scaledX * -1) + this.screenBounds_.width; - this.lastLandmarkLocation_ = {x: absoluteX, y: absoluteY}; - } - - /** - * Called every MOUSE_INTERVAL_MS, this function uses the most recent - * landmark location to update the current mouse position within the - * screen, applying appropriate scaling and smoothing. - * This function doesn't simply set the absolute position of the tracked - * landmark. Instead, it calculates deltas to be applied to the - * current mouse location based on the landmark's location relative - * to its previous location. - */ - private updateMouseLocation_(): void { - if (!this.lastLandmarkLocation_ || !this.mouseLocation_ || - !this.screenBounds_) { - return; + // Add this latest point to the buffer. + if (this.buffer_.length === this.bufferSize_) { + this.buffer_.shift(); } - - // Add the most recent landmark point to the buffer. - this.addPointToBuffer_(this.lastLandmarkLocation_); + this.buffer_.push({x: absoluteX, y: absoluteY}); + while (this.buffer_.length < this.bufferSize_) { + this.buffer_.push({x: absoluteX, y: absoluteY}); + } // Smooth the buffer to get the latest target point. const smoothed = this.applySmoothing_(); @@ -164,34 +146,8 @@ // Update mouse location: onMouseMovedOrChanged_ is async and may not // be called again until after another point is received from the // face tracking, so better to keep a fresh copy. - // Clamp to screen bounds. - // TODO(b/309121742): Handle multiple displays. - this.mouseLocation_ = { - x: Math.max( - Math.min(this.screenBounds_.width, Math.round(newX)), - this.screenBounds_.left), - y: Math.max( - Math.min(this.screenBounds_.height, Math.round(newY)), - this.screenBounds_.top), - }; - - // Only update if it's been long enough since the last time the user - // touched their physical mouse or trackpad. - if (new Date().getTime() - this.lastMouseMovedTime_ > - MouseController.IGNORE_UPDATES_AFTER_MOUSE_MOVE_MS) { - chrome.accessibilityPrivate.setCursorPosition(this.mouseLocation_); - } - } - - private addPointToBuffer_(point: FloatingPoint2D): void { - // Add this latest point to the buffer. - if (this.buffer_.length === this.targetBufferSize_) { - this.buffer_.shift(); - } - // Fill the buffer with this point until we reach buffer size. - while (this.buffer_.length < this.targetBufferSize_) { - this.buffer_.push(point); - } + this.mouseLocation_ = {x: Math.round(newX), y: Math.round(newY)}; + chrome.accessibilityPrivate.setCursorPosition(this.mouseLocation_); } clickLeft(): void { @@ -217,10 +173,8 @@ if (!this.screenBounds_) { return; } - const x = - Math.round(this.screenBounds_.width / 2) + this.screenBounds_.left; - const y = - Math.round(this.screenBounds_.height / 2) + this.screenBounds_.top; + const x = Math.round(this.screenBounds_.width / 2); + const y = Math.round(this.screenBounds_.height / 2); this.mouseLocation_ = {x, y}; chrome.accessibilityPrivate.setCursorPosition({x, y}); } @@ -228,39 +182,28 @@ stopEventListeners(): void { this.onMouseMovedHandler_.stop(); this.onMouseDraggedHandler_.stop(); - if (this.mouseInterval_ !== -1) { - clearInterval(this.mouseInterval_); - this.mouseInterval_ = -1; - } } /** Listener for when the mouse position changes. */ private onMouseMovedOrDragged_(event: chrome.automation.AutomationEvent): void { - if (event.eventFrom === 'user') { - // Mouse changes that aren't synthesized should actually move the mouse. - // Assume all synthesized mouse movements come from within FaceGaze. - this.mouseLocation_ = {x: event.mouseX, y: event.mouseY}; - this.lastMouseMovedTime_ = new Date().getTime(); - } + this.mouseLocation_ = {x: event.mouseX, y: event.mouseY}; } /** * Construct a kernel for smoothing the recent facegaze points. * Specifically, this is a Hamming curve with M = BUFFER_SIZE * 2, * matching the project-gameface Python implementation. - * Note: Whenever the buffer size is updated, we must reconstruct - * the smoothing kernel so that it is the right length. */ private calcSmoothKernel_(): void { let sum = 0; - for (let i = 0; i < this.targetBufferSize_; i++) { - const value = .54 - - .46 * Math.cos((2 * Math.PI * i) / (this.targetBufferSize_ * 2 - 1)); + for (let i = 0; i < this.bufferSize_; i++) { + const value = + .54 - .46 * Math.cos((2 * Math.PI * i) / (this.bufferSize_ * 2 - 1)); this.smoothKernel_.push(value); sum += value; } - for (let i = 0; i < this.targetBufferSize_; i++) { + for (let i = 0; i < this.bufferSize_; i++) { this.smoothKernel_[i] /= sum; } } @@ -271,7 +214,7 @@ */ private applySmoothing_(): FloatingPoint2D { const result = {x: 0, y: 0}; - for (let i = 0; i < this.targetBufferSize_; i++) { + for (let i = 0; i < this.bufferSize_; i++) { const kernelPart = this.smoothKernel_[i]; result.x += this.buffer_[i].x * kernelPart; result.y += this.buffer_[i].y * kernelPart; @@ -302,17 +245,7 @@ /** The index of the forehead landmark in a FaceLandmarkerResult. */ export const FOREHEAD_LANDMARK_INDEX = 8; - /** How frequently to run the mouse movement logic. */ - export const MOUSE_INTERVAL_MS = 16; - - // TODO(b/309121742): These constants could become prefs. - - /** - * How long to wait after the user moves the mouse with a physical device - * before moving the mouse with facegaze. - */ - export const IGNORE_UPDATES_AFTER_MOUSE_MOVE_MS = 500; - + // TODO(b/309121742): These constants should become prefs. export const BUFFER_SIZE = 6; export const SPD_RIGHT = 20; export const SPD_LEFT = 20;
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing/editing_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing/editing_test.js index 8358c57..95d38f9 100644 --- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing/editing_test.js +++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing/editing_test.js
@@ -1625,9 +1625,11 @@ await mockFeedback.replay(); }); -AX_TEST_F('ChromeVoxEditingTest', 'MoveByCharSuggestions', async function() { - const mockFeedback = this.createMockFeedback(); - const site = ` +// TODO(b/321663219): Re-enable when flakiness is resolved. +AX_TEST_F( + 'ChromeVoxEditingTest', 'DISABLED_MoveByCharSuggestions', async function() { + const mockFeedback = this.createMockFeedback(); + const site = ` <div contenteditable="true" role="textbox"> <p>Start</p> <span>I </span> @@ -1637,41 +1639,41 @@ <p>End</p> </div> `; - const root = await this.runWithLoadedTree(site); - await this.focusFirstTextField(root); + const root = await this.runWithLoadedTree(site); + await this.focusFirstTextField(root); - mockFeedback.call(this.press(KeyCode.DOWN)) - .expectSpeech('I ') - // Move forward through line. - .call(this.press(KeyCode.RIGHT)) - .expectSpeech(' ') - .call(this.press(KeyCode.RIGHT)) - .expectSpeech('Suggest', 'Username', 'Insert', 'w') - .call(this.press(KeyCode.RIGHT)) - .expectSpeech('a') - .call(this.press(KeyCode.RIGHT)) - .expectSpeech('s') - .expectSpeech('Insert end') - .call(this.press(KeyCode.RIGHT)) - .call(this.press(KeyCode.RIGHT)) - .expectSpeech('Delete', 'a') - .call(this.press(KeyCode.RIGHT)) - .expectSpeech('m') - .expectSpeech('Delete end', 'Suggest end') - // Move backward through the same line. - .call(this.press(KeyCode.LEFT)) - .expectSpeech('Delete', 'a') - .call(this.press(KeyCode.LEFT)) - .call(this.press(KeyCode.LEFT)) - .expectSpeech('s', 'Insert end') - .call(this.press(KeyCode.LEFT)) - .expectSpeech('a') - .call(this.press(KeyCode.LEFT)) - .expectSpeech('Suggest', 'Insert', 'w') - .call(this.press(KeyCode.DOWN)) - .expectSpeech('End'); - await mockFeedback.replay(); -}); + mockFeedback.call(this.press(KeyCode.DOWN)) + .expectSpeech('I ') + // Move forward through line. + .call(this.press(KeyCode.RIGHT)) + .expectSpeech(' ') + .call(this.press(KeyCode.RIGHT)) + .expectSpeech('Suggest', 'Username', 'Insert', 'w') + .call(this.press(KeyCode.RIGHT)) + .expectSpeech('a') + .call(this.press(KeyCode.RIGHT)) + .expectSpeech('s') + .expectSpeech('Insert end') + .call(this.press(KeyCode.RIGHT)) + .call(this.press(KeyCode.RIGHT)) + .expectSpeech('Delete', 'a') + .call(this.press(KeyCode.RIGHT)) + .expectSpeech('m') + .expectSpeech('Delete end', 'Suggest end') + // Move backward through the same line. + .call(this.press(KeyCode.LEFT)) + .expectSpeech('Delete', 'a') + .call(this.press(KeyCode.LEFT)) + .call(this.press(KeyCode.LEFT)) + .expectSpeech('s', 'Insert end') + .call(this.press(KeyCode.LEFT)) + .expectSpeech('a') + .call(this.press(KeyCode.LEFT)) + .expectSpeech('Suggest', 'Insert', 'w') + .call(this.press(KeyCode.DOWN)) + .expectSpeech('End'); + await mockFeedback.replay(); + }); AX_TEST_F( 'ChromeVoxEditingTest', 'MoveByWordSuggestions', async function() { @@ -2152,36 +2154,39 @@ await mockFeedback.replay(); }); -AX_TEST_F('ChromeVoxEditingTest', 'NativeCharWordCommands', async function() { - const mockFeedback = this.createMockFeedback(); - const site = ` +// TODO(b/321663219): Re-enable when flakiness is resolved. +AX_TEST_F( + 'ChromeVoxEditingTest', 'DISABLED_NativeCharWordCommands', + async function() { + const mockFeedback = this.createMockFeedback(); + const site = ` <p>start</p> <div role="textbox" contenteditable>This is a test</div> `; - const root = await this.runWithLoadedTree(site); - await this.focusFirstTextField(root); + const root = await this.runWithLoadedTree(site); + await this.focusFirstTextField(root); - const textField = root.find({role: RoleType.TEXT_FIELD}); - mockFeedback.expectSpeech('Text area') - .call(this.press(KeyCode.HOME, {ctrl: true})) - .call(this.press(KeyCode.RIGHT)) - .expectSpeech('h') - .call(this.press(KeyCode.RIGHT)) - .expectSpeech('i') - .call(this.press(KeyCode.LEFT)) - .expectSpeech('h') + const textField = root.find({role: RoleType.TEXT_FIELD}); + mockFeedback.expectSpeech('Text area') + .call(this.press(KeyCode.HOME, {ctrl: true})) + .call(this.press(KeyCode.RIGHT)) + .expectSpeech('h') + .call(this.press(KeyCode.RIGHT)) + .expectSpeech('i') + .call(this.press(KeyCode.LEFT)) + .expectSpeech('h') - .call(this.press(KeyCode.RIGHT, {ctrl: true})) - .expectSpeech(/This\s*/) - .call(this.press(KeyCode.RIGHT, {ctrl: true})) - .expectSpeech('is') - .call(this.press(KeyCode.LEFT, {ctrl: true})) - .expectSpeech('is') - .call(this.press(KeyCode.LEFT, {ctrl: true})) - .expectSpeech(/This\s*/); + .call(this.press(KeyCode.RIGHT, {ctrl: true})) + .expectSpeech(/This\s*/) + .call(this.press(KeyCode.RIGHT, {ctrl: true})) + .expectSpeech('is') + .call(this.press(KeyCode.LEFT, {ctrl: true})) + .expectSpeech('is') + .call(this.press(KeyCode.LEFT, {ctrl: true})) + .expectSpeech(/This\s*/); - await mockFeedback.replay(); -}); + await mockFeedback.replay(); + }); AX_TEST_F('ChromeVoxEditingTest', 'TablesWithEmptyCells', async function() { const mockFeedback = this.createMockFeedback(); @@ -2236,8 +2241,10 @@ await mockFeedback.replay(); }); +// TODO(b/321663219): Re-enable when flakiness is resolved. AX_TEST_F( - 'ChromeVoxEditingTest', 'NonbreakingSpaceNewLineOrSpace', async function() { + 'ChromeVoxEditingTest', 'DISABLED_NonbreakingSpaceNewLineOrSpace', + async function() { const mockFeedback = this.createMockFeedback(); const site = ` <div contenteditable="true" role="textbox">
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/event/desktop_automation_handler.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/event/desktop_automation_handler.js index 3b982b5a..cf154fb2 100644 --- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/event/desktop_automation_handler.js +++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/event/desktop_automation_handler.js
@@ -719,6 +719,7 @@ target.className === 'PopupFooterView' || target.className === 'PopupWarningView' || target.className === 'PopupBaseView' || + target.className === 'PopupRowView' || target.className === 'PopupRowContentView' || target.className === 'PasswordGenerationPopupViewViews::GeneratedPasswordBox') {
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/output/output_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/output/output_test.js index 91f40419..bd6455f 100644 --- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/output/output_test.js +++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/output/output_test.js
@@ -52,6 +52,11 @@ actualSpans.map(describeSpanPrettyPrint).join('\n'); } + function describeExpectedSpans() { + return '\nAll expected spans:\n' + + expectedSpans.map(describeSpanPrettyPrint).join('\n'); + } + for (let i = 0, max = Math.max(expectedSpans.length, actualSpans.length); i < max; ++i) { const expectedSpan = expectedSpans[i]; @@ -59,12 +64,14 @@ if (!expectedSpan) { throw Error( 'Unexpected span in ' + expectedText + ': ' + - describeSpan(actualSpan) + describeActualSpans()); + describeSpan(actualSpan) + describeActualSpans()) + + describeExpectedSpans(); } if (!actualSpan) { throw Error( 'Missing expected span in ' + expectedText + ': ' + - describeSpan(expectedSpan) + describeActualSpans()); + describeSpan(expectedSpan) + describeActualSpans()) + + describeExpectedSpans(); } let equal = true; if (expectedSpan.start !== actualSpan.start || @@ -82,9 +89,10 @@ } if (!equal) { throw Error( - 'Spans differ in ' + expectedText + ':\n' + + 'Spans differ in this text: "' + expectedText + '":\n' + 'Expected: ' + describeSpan(expectedSpan) + '\n' + - 'Got : ' + describeSpan(actualSpan) + describeActualSpans()); + 'Got : ' + describeSpan(actualSpan) + describeActualSpans()) + + describeExpectedSpans(); } } } @@ -827,7 +835,11 @@ 'this is a test of emphasized text', [ {value: new OutputNodeSpan(start), start: 0, end: 10}, - {value: new OutputNodeSpan(start.nextSibling), start: 10, end: 14}, + { + value: new OutputNodeSpan(start.nextSibling.firstChild), + start: 10, + end: 14, + }, {value: new OutputNodeSpan(end), start: 15, end: 33}, ], o);
diff --git a/chrome/browser/resources/chromeos/accessibility/common/testing/mock_accessibility_private.js b/chrome/browser/resources/chromeos/accessibility/common/testing/mock_accessibility_private.js index 7ca9ed35..4c5499e 100644 --- a/chrome/browser/resources/chromeos/accessibility/common/testing/mock_accessibility_private.js +++ b/chrome/browser/resources/chromeos/accessibility/common/testing/mock_accessibility_private.js
@@ -170,12 +170,6 @@ /** @private {?chrome.accessibilityPrivate.ScreenPoint} */ this.latestCursorPosition_ = null; - /** @private {?Function<!chrome.accessibilityPrivate.ScreenPoint>} */ - this.cursorPositionCallback_ = null; - - /** @private {!Array<chrome.accessibilityPrivate.ScreenRect>} */ - this.displayBounds_ = [{left: 0, top: 0, width: 1200, height: 800}]; - /** @private {!Array<chrome.accessibilityPrivate.SyntheticMouseEvent> */ this.syntheticMouseEvents_ = []; @@ -349,10 +343,6 @@ /** @param {!chrome.accessibilityPrivate.ScreenPoint} point */ setCursorPosition(point) { this.latestCursorPosition_ = point; - if (this.cursorPositionCallback_) { - this.cursorPositionCallback_(point); - this.cursorPositionCallback_ = null; - } } /** @param {!chrome.accessibilityPrivate.SyntheticMouseEvent} event */ @@ -520,7 +510,7 @@ /** @return {!Array<!chrome.accessibilityPrivate.ScreenRect>} */ getDisplayBounds(callback) { - callback(this.displayBounds_); + callback([{left: 0, top: 0, width: 1200, height: 800}]); } /** @@ -544,18 +534,6 @@ this.latestCursorPosition_ = null; } - /** @return {!Promise} */ - waitForNextCursorPosition() { - return new Promise(resolve => { - this.cursorPositionCallback_ = resolve; - }); - } - - /** @param {!Array<!chrome.accessibilityPrivate.ScreenRect>} */ - setDisplayBounds(bounds) { - this.displayBounds_ = bounds; - } - /** * Enables or disables a feature for testing, causing * this.isFeatureEnabled to consider it enabled.
diff --git a/chrome/browser/resources/chromeos/arc_support/background.js b/chrome/browser/resources/chromeos/arc_support/background.js index 3b19351..ac129762 100644 --- a/chrome/browser/resources/chromeos/arc_support/background.js +++ b/chrome/browser/resources/chromeos/arc_support/background.js
@@ -493,6 +493,7 @@ this.onTermsViewLoadAborted_('unable to get ToS content'); return; } + onTosLoadResult(true /*success*/); this.state_ = LoadState.LOADED; this.tosContent_ = results[0]; this.tosShown_ = true; @@ -515,6 +516,7 @@ // Mark ABORTED so that onTermsViewLoaded_() won't show the content view. this.fastLocation_ = undefined; this.state_ = LoadState.ABORTED; + onTosLoadResult(false /*success*/); showErrorPage( appWindow.contentWindow.loadTimeData.getString('serverError'), true /*opt_shouldShowSendFeedback*/, @@ -701,6 +703,16 @@ } /** + * Sends a message to host that TOS load has failed or succeeded. + * + * @param {boolean} success If set to true, loading has succeeded. False + * otherwise. + */ +function onTosLoadResult(success) { + sendNativeMessage('onTosLoadResult', {success: success}); +} + +/** * Shows an error page, with given errorMessage. * * @param {string} errorMessage Localized error message text.
diff --git a/chrome/browser/resources/chromeos/login/BUILD.gn b/chrome/browser/resources/chromeos/login/BUILD.gn index 442a9fe9..b16cd88 100644 --- a/chrome/browser/resources/chromeos/login/BUILD.gn +++ b/chrome/browser/resources/chromeos/login/BUILD.gn
@@ -106,7 +106,6 @@ ":build_ts", ":preprocess_unconditional_existing_structure", "../supervision:build_oobe_grdp", - "//ui/webui/resources/cr_components/color_change_listener:build_ts", ] manifest_files = [ "$target_gen_dir/build_ts_manifest.json", @@ -306,6 +305,7 @@ deps = [ "//ash/webui/common/resources:build_ts", "//third_party/polymer/v3_0:library", + "//ui/webui/resources/cr_components/color_change_listener:build_ts", "//ui/webui/resources/cr_elements:build_ts", "//ui/webui/resources/js:build_ts", "//ui/webui/resources/mojo:build_ts",
diff --git a/chrome/browser/resources/chromeos/login/login.gni b/chrome/browser/resources/chromeos/login/login.gni index 9e869ee..25ee83f 100644 --- a/chrome/browser/resources/chromeos/login/login.gni +++ b/chrome/browser/resources/chromeos/login/login.gni
@@ -131,7 +131,7 @@ "screens/common/local_state_error.ts", "screens/common/managed_terms_of_service.ts", "screens/common/marketing_opt_in.ts", - "screens/common/multidevice_setup.js", + "screens/common/multidevice_setup.ts", "screens/common/offline_ad_login.js", "screens/common/online_authentication_screen.js", "screens/common/oobe_reset.ts", @@ -199,7 +199,7 @@ "screens/osauth/cryptohome_recovery.ts", "screens/osauth/cryptohome_recovery_setup.ts", "screens/osauth/factor_setup_success.ts", - "screens/osauth/fingerprint_setup.js", + "screens/osauth/fingerprint_setup.ts", "screens/osauth/gaia_password_changed.js", "screens/osauth/local_password_setup.js", "screens/osauth/local_data_loss_warning.js",
diff --git a/chrome/browser/resources/chromeos/login/screens/common/BUILD.gn b/chrome/browser/resources/chromeos/login/screens/common/BUILD.gn index efea072..ecc79046 100644 --- a/chrome/browser/resources/chromeos/login/screens/common/BUILD.gn +++ b/chrome/browser/resources/chromeos/login/screens/common/BUILD.gn
@@ -10,10 +10,7 @@ assert(is_chromeos, "OOBE UI is only available on ChromeOS builds") group("closure_compile") { - deps = [ - ":closure_compile_local", - ":closure_compile_multidevice_setup", - ] + deps = [ ":closure_compile_local" ] } js_type_check("closure_compile_local") { @@ -37,14 +34,6 @@ ] } -# TODO(crbug.com/1229130) - Figure out why multidevice_setup is requiring its -# own js_type_check in order not to conflict with chrome externs. -js_type_check("closure_compile_multidevice_setup") { - is_polymer3 = true - closure_flags = default_closure_args + mojom_js_args - deps = [ ":multidevice_setup" ] -} - ############################### # Closure compiler libraries below @@ -95,21 +84,6 @@ ] } -js_library("multidevice_setup") { - sources = [ "$root_gen_dir/chrome/browser/resources/chromeos/login/screens/common/multidevice_setup.js" ] - deps = [ - "../../components/behaviors:login_screen_behavior", - "../../components/behaviors:multi_step_behavior", - "../../components/behaviors:oobe_i18n_behavior", - "//ash/webui/common/resources/multidevice_setup:mojo_api", - "//ash/webui/common/resources/multidevice_setup:multidevice_setup", - "//ash/webui/common/resources/multidevice_setup:multidevice_setup_delegate", - "//chromeos/ash/services/multidevice_setup/public/mojom:mojom_webui_js", - "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", - ] - extra_deps = [ ":web_components" ] -} - js_library("offline_ad_login") { sources = [ "$root_gen_dir/chrome/browser/resources/chromeos/login/screens/common/offline_ad_login.js" ] deps = [
diff --git a/chrome/browser/resources/chromeos/login/screens/common/multidevice_setup.html b/chrome/browser/resources/chromeos/login/screens/common/multidevice_setup.html index 369b9a9c..7d48721 100644 --- a/chrome/browser/resources/chromeos/login/screens/common/multidevice_setup.html +++ b/chrome/browser/resources/chromeos/login/screens/common/multidevice_setup.html
@@ -80,51 +80,51 @@ </style> <multidevice-setup id="multideviceSetup" - delegate="[[delegate_]]" - on-setup-exited="onExitRequested_" - on-open-learn-more-webview-requested="onOpenLearnMoreWebviewRequested_" - on-forward-button-focus-requested="onForwardButtonFocusRequested_" - forward-button-text-id="{{forwardButtonTextId_}}" - forward-button-disabled="{{forwardButtonDisabled_}}" - cancel-button-text-id="{{cancelButtonTextId_}}" + delegate="[[delegate]]" + on-setup-exited="onExitRequested" + on-open-learn-more-webview-requested="onOpenLearnMoreWebviewRequested" + on-forward-button-focus-requested="onForwardButtonFocusRequested" + forward-button-text-id="{{forwardButtonTextId}}" + forward-button-disabled="{{forwardButtonDisabled}}" + cancel-button-text-id="{{cancelButtonTextId}}" > <oobe-text-button slot="cancel-button" - text-key="[[cancelButtonTextId_]]" + text-key="[[cancelButtonTextId]]" ></oobe-text-button> <oobe-next-button id="nextButton" slot="forward-button" - disabled$="[[forwardButtonDisabled_]]" - text-key="[[forwardButtonTextId_]]" + disabled$="[[forwardButtonDisabled]]" + text-key="[[forwardButtonTextId]]" ></oobe-next-button> </multidevice-setup> <div id="multidevice-help-overlay" class="popup-overlay" - hidden$="[[webviewOverlayHidden_]]" + hidden$="[[webviewOverlayHidden]]" > <div id="multidevice-help-overlay-container" class="oobe-popup not-resizable"> <div id="multidevice-help-overlay-close-top" class="multidevice-help-overlay-close-top multidevice-help-overlay-close-button" - on-click="hideWebviewOverlay_" + on-click="hideWebviewOverlay" title="[[i18nDynamic(locale, 'arcOverlayClose')]]" ></div> <div id="multidevice-help-overlay-webview-container"> <div class="multidevice-help-overlay-webview-loading layout horizontal center-center" - hidden$="[[!isWebviewLoading_]]" + hidden$="[[!isWebviewLoading]]" > <throbber-notice text-key="gaiaLoading"></throbber-notice> </div> <webview id="multideviceHelpOverlayWebview" - hidden$="[[isWebviewLoading_]]" - src="[[webviewSrc_]]" + hidden$="[[isWebviewLoading]]" + src="[[webviewSrc]]" > </webview> </div> @@ -136,7 +136,7 @@ id="multidevice-help-overlay-close-bottom" class="multidevice-help-overlay-close-button" text-key="arcOverlayClose" - on-click="hideWebviewOverlay_" + on-click="hideWebviewOverlay" > </oobe-text-button> </div>
diff --git a/chrome/browser/resources/chromeos/login/screens/common/multidevice_setup.js b/chrome/browser/resources/chromeos/login/screens/common/multidevice_setup.js deleted file mode 100644 index cdc2e5d..0000000 --- a/chrome/browser/resources/chromeos/login/screens/common/multidevice_setup.js +++ /dev/null
@@ -1,214 +0,0 @@ -// Copyright 2018 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/** - * @fileoverview MultiDevice setup screen for login/OOBE. - */ -import '//resources/ash/common/multidevice_setup/mojo_api.js'; -import '//resources/ash/common/multidevice_setup/multidevice_setup_shared.css.js'; -import '//resources/ash/common/multidevice_setup/multidevice_setup.js'; -import '../../components/buttons/oobe_next_button.js'; -import '../../components/buttons/oobe_text_button.js'; -import '../../components/common_styles/oobe_common_styles.css.js'; -import '../../components/throbber_notice.js'; - -import {assert} from '//resources/ash/common/assert.js'; -import {MultiDeviceSetupDelegate} from '//resources/ash/common/multidevice_setup/multidevice_setup_delegate.js'; -import {WebUIListenerBehavior} from '//resources/ash/common/web_ui_listener_behavior.js'; -import {html, mixinBehaviors, PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js'; -// TODO(b/268480781) - Remove chrome scheme. -import {PrivilegedHostDeviceSetter, PrivilegedHostDeviceSetterRemote} from 'chrome://resources/mojo/chromeos/ash/services/multidevice_setup/public/mojom/multidevice_setup.mojom-webui.js'; - -import {LoginScreenBehavior, LoginScreenBehaviorInterface} from '../../components/behaviors/login_screen_behavior.js'; -import {OobeI18nBehavior, OobeI18nBehaviorInterface} from '../../components/behaviors/oobe_i18n_behavior.js'; - -import {getTemplate} from './multidevice_setup.html.js'; - -// OOBE screen that wraps MultiDevice setup flow when displayed during the -// user's onboarding on this Chromebook. Note that this flow is slightly -// different from the post-OOBE flow ( `c/b/r/chromeos/multidevice_setup/` ) -// in 3 ways: -// (1) During onboarding, the user has just entered their password, so we -// do not prompt the user to enter a password before continuing. -// (2) During onboarding, once the user selects a host device, we continue to -// the next OOBE/login task; in the post-OOBE mode, there is a "success" -// screen. -// (3) During onboarding, buttons are styled with custom OOBE buttons. - -/** @implements {MultiDeviceSetupDelegate} */ -class MultiDeviceSetupScreenDelegate { - - constructor() { - /** - * @private {?PrivilegedHostDeviceSetterRemote} - */ - this.remote_ = null; - } - - /** @override */ - isPasswordRequiredToSetHost() { - return false; - } - - /** @override */ - setHostDevice(hostInstanceIdOrLegacyDeviceId, opt_authToken) { - // An authentication token is not expected since a password is not - // required. - assert(!opt_authToken); - - if (!this.remote_) { - this.remote_ = PrivilegedHostDeviceSetter.getRemote(); - } - - return /** @type {!Promise<{success: boolean}>} */ ( - this.remote_.setHostDevice(hostInstanceIdOrLegacyDeviceId)); - } - - /** @override */ - shouldExitSetupFlowAfterSettingHost() { - return true; - } - - /** @override */ - getStartSetupCancelButtonTextId() { - return 'noThanks'; - } -} - -/** - * @constructor - * @extends {PolymerElement} - * @implements {LoginScreenBehaviorInterface} - * @implements {OobeI18nBehaviorInterface} - */ -const MultiDeviceSetupScreenBase = mixinBehaviors( - [OobeI18nBehavior, LoginScreenBehavior, WebUIListenerBehavior], - PolymerElement); - -/** - * @polymer - */ -class MultiDeviceSetupScreen extends MultiDeviceSetupScreenBase { - static get is() { - return 'multidevice-setup-element'; - } - - static get template() { - return getTemplate(); - } - - static get properties() { - return { - /** @private {!MultiDeviceSetupDelegate} */ - delegate_: Object, - - /** - * ID of loadTimeData string to be shown on the forward navigation button. - * @private {string|undefined} - */ - forwardButtonTextId_: { - type: String, - }, - - /** - * Whether the forward button should be disabled. - * @private {boolean} - */ - forwardButtonDisabled_: { - type: Boolean, - value: false, - }, - - /** - * ID of loadTimeData string to be shown on the cancel button. - * @private {string|undefined} - */ - cancelButtonTextId_: { - type: String, - }, - - /** Whether the webview overlay should be hidden. */ - webviewOverlayHidden_: { - type: Boolean, - value: true, - }, - - /** Whether the webview is currently loading. */ - isWebviewLoading_: { - type: Boolean, - value: false, - }, - - /** - * URL for the webview to display. - * @private {string|undefined} - */ - webviewSrc_: { - type: String, - value: '', - }, - }; - } - - constructor() { - super(); - this.delegate_ = new MultiDeviceSetupScreenDelegate(); - } - - /** @override */ - connectedCallback() { - super.connectedCallback(); - this.$.multideviceHelpOverlayWebview.addEventListener( - 'contentload', () => { - this.isWebviewLoading_ = false; - }); - } - - /** @override */ - ready() { - super.ready(); - this.initializeLoginScreen('MultiDeviceSetupScreen'); - this.updateLocalizedContent(); - } - - updateLocalizedContent() { - this.i18nUpdateLocale(); - this.$.multideviceSetup.updateLocalizedContent(); - } - - onForwardButtonFocusRequested_() { - this.$.nextButton.focus(); - } - - /** - * @param {!CustomEvent<!{didUserCompleteSetup: boolean}>} event - * @private - */ - onExitRequested_(event) { - if (event.detail.didUserCompleteSetup) { - chrome.send( - 'login.MultiDeviceSetupScreen.userActed', ['setup-accepted']); - } else { - chrome.send( - 'login.MultiDeviceSetupScreen.userActed', ['setup-declined']); - } - } - - /** @private */ - hideWebviewOverlay_() { - this.webviewOverlayHidden_ = true; - } - - /** - * @param {!CustomEvent<string>} event - * @private - */ - onOpenLearnMoreWebviewRequested_(event) { - this.isWebviewLoading_ = true; - this.webviewSrc_ = event.detail; - this.webviewOverlayHidden_ = false; - } -} - -customElements.define(MultiDeviceSetupScreen.is, MultiDeviceSetupScreen);
diff --git a/chrome/browser/resources/chromeos/login/screens/common/multidevice_setup.ts b/chrome/browser/resources/chromeos/login/screens/common/multidevice_setup.ts new file mode 100644 index 0000000..7d87938 --- /dev/null +++ b/chrome/browser/resources/chromeos/login/screens/common/multidevice_setup.ts
@@ -0,0 +1,212 @@ +// Copyright 2018 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/** + * @fileoverview MultiDevice setup screen for login/OOBE. + */ +import '//resources/ash/common/multidevice_setup/mojo_api.js'; +import '//resources/ash/common/multidevice_setup/multidevice_setup_shared.css.js'; +import '//resources/ash/common/multidevice_setup/multidevice_setup.js'; +import '../../components/buttons/oobe_next_button.js'; +import '../../components/buttons/oobe_text_button.js'; +import '../../components/common_styles/oobe_common_styles.css.js'; +import '../../components/throbber_notice.js'; + +import {assert} from '//resources/js/assert.js'; +import {MultiDeviceSetupDelegate} from '//resources/ash/common/multidevice_setup/multidevice_setup_delegate.js'; +import {MultiDeviceSetup} from '//resources/ash/common/multidevice_setup/multidevice_setup.js'; +import {WebUIListenerBehavior} from '//resources/ash/common/web_ui_listener_behavior.js'; +import {PolymerElementProperties} from '//resources/polymer/v3_0/polymer/interfaces.js'; +import {mixinBehaviors, PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {PrivilegedHostDeviceSetter, PrivilegedHostDeviceSetterRemote} from '//resources/mojo/chromeos/ash/services/multidevice_setup/public/mojom/multidevice_setup.mojom-webui.js'; + +import {LoginScreenBehavior, LoginScreenBehaviorInterface} from '../../components/behaviors/login_screen_behavior.js'; +import {OobeI18nBehavior, OobeI18nBehaviorInterface} from '../../components/behaviors/oobe_i18n_behavior.js'; + +import {getTemplate} from './multidevice_setup.html.js'; + +// OOBE screen that wraps MultiDevice setup flow when displayed during the +// user's onboarding on this Chromebook. Note that this flow is slightly +// different from the post-OOBE flow ( `c/b/r/chromeos/multidevice_setup/` ) +// in 3 ways: +// (1) During onboarding, the user has just entered their password, so we +// do not prompt the user to enter a password before continuing. +// (2) During onboarding, once the user selects a host device, we continue to +// the next OOBE/login task; in the post-OOBE mode, there is a "success" +// screen. +// (3) During onboarding, buttons are styled with custom OOBE buttons. + +export class MultiDeviceSetupScreenDelegate implements MultiDeviceSetupDelegate{ + + private remote: PrivilegedHostDeviceSetterRemote|null; + + constructor() { + this.remote = null; + } + + isPasswordRequiredToSetHost(): boolean { + return false; + } + + setHostDevice(hostInstanceIdOrLegacyDeviceId: string, + optAuthToken: string|undefined) { + // An authentication token is not expected since a password is not + // required. + assert(!optAuthToken); + + if (!this.remote) { + this.remote = PrivilegedHostDeviceSetter.getRemote(); + } + + return /** @type {!Promise<{success: boolean}>} */ ( + this.remote.setHostDevice(hostInstanceIdOrLegacyDeviceId)); + } + + shouldExitSetupFlowAfterSettingHost(): boolean { + return true; + } + + getStartSetupCancelButtonTextId(): string { + return 'noThanks'; + } +} + +const MultiDeviceSetupScreenBase = mixinBehaviors( + [OobeI18nBehavior, LoginScreenBehavior, WebUIListenerBehavior], + PolymerElement) as { + new (): PolymerElement & OobeI18nBehaviorInterface & + LoginScreenBehaviorInterface & WebUIListenerBehavior, + }; + +export class MultiDeviceSetupScreen extends MultiDeviceSetupScreenBase { + static get is() { + return 'multidevice-setup-element' as const; + } + + static get template(): HTMLTemplateElement { + return getTemplate(); + } + + static get properties(): PolymerElementProperties { + return { + delegate: Object, + + /** + * ID of loadTimeData string to be shown on the forward navigation button. + */ + forwardButtonTextId: { + type: String, + }, + + /** + * Whether the forward button should be disabled. + */ + forwardButtonDisabled: { + type: Boolean, + value: false, + }, + + /** + * ID of loadTimeData string to be shown on the cancel button. + */ + cancelButtonTextId: { + type: String, + }, + + /** Whether the webview overlay should be hidden. */ + webviewOverlayHidden: { + type: Boolean, + value: true, + }, + + /** Whether the webview is currently loading. */ + isWebviewLoading: { + type: Boolean, + value: false, + }, + + /** + * URL for the webview to display. + */ + webviewSrc: { + type: String, + value: '', + }, + }; + } + + private delegate: MultiDeviceSetupDelegate; + private forwardButtonTextId: string; + private forwardButtonDisabled: boolean; + private cancelButtonTextId: string; + webviewOverlayHidden: boolean; + isWebviewLoading: boolean; + private webviewSrc: string; + + constructor() { + super(); + this.delegate = new MultiDeviceSetupScreenDelegate(); + } + + override connectedCallback() { + super.connectedCallback(); + const webview = this.shadowRoot?. + querySelector('#multideviceHelpOverlayWebview'); + assert(!!webview); + (webview as chrome.webviewTag.WebView).addEventListener( + 'contentload', () => { + this.isWebviewLoading = false; + }); + } + + override ready() { + super.ready(); + this.initializeLoginScreen('MultiDeviceSetupScreen'); + this.updateLocalizedContent(); + } + + override updateLocalizedContent(): void { + this.i18nUpdateLocale(); + const element = this.shadowRoot?.querySelector('#multideviceSetup'); + if(element instanceof MultiDeviceSetup) { + element.updateLocalizedContent(); + } + } + + onForwardButtonFocusRequested(): void { + const nextButton = this.shadowRoot?.querySelector('#nextButton')!; + if (nextButton instanceof HTMLElement) { + nextButton.focus(); + } + } + + private onExitRequested( + event: CustomEvent<{didUserCompleteSetup: boolean}>): void { + if (event.detail.didUserCompleteSetup) { + chrome.send( + 'login.MultiDeviceSetupScreen.userActed', ['setup-accepted']); + } else { + chrome.send( + 'login.MultiDeviceSetupScreen.userActed', ['setup-declined']); + } + } + + private hideWebviewOverlay(): void { + this.webviewOverlayHidden = true; + } + + private onOpenLearnMoreWebviewRequested(event: CustomEvent<string>): void { + this.isWebviewLoading = true; + this.webviewSrc = event.detail; + this.webviewOverlayHidden = false; + } +} + +declare global { + interface HTMLElementTagNameMap { + [MultiDeviceSetupScreen.is]: MultiDeviceSetupScreen; + } +} + +customElements.define(MultiDeviceSetupScreen.is, MultiDeviceSetupScreen);
diff --git a/chrome/browser/resources/chromeos/login/screens/oobe/BUILD.gn b/chrome/browser/resources/chromeos/login/screens/oobe/BUILD.gn index 02dabb7..bbc4cad0 100644 --- a/chrome/browser/resources/chromeos/login/screens/oobe/BUILD.gn +++ b/chrome/browser/resources/chromeos/login/screens/oobe/BUILD.gn
@@ -3,7 +3,6 @@ # found in the LICENSE file. import("//third_party/closure_compiler/compile_js.gni") -import("//tools/polymer/html_to_js.gni") import("//tools/polymer/html_to_wrapper.gni") import("../../login.gni")
diff --git a/chrome/browser/resources/chromeos/login/screens/osauth/BUILD.gn b/chrome/browser/resources/chromeos/login/screens/osauth/BUILD.gn index 4b47b5f..05f15c2b 100644 --- a/chrome/browser/resources/chromeos/login/screens/osauth/BUILD.gn +++ b/chrome/browser/resources/chromeos/login/screens/osauth/BUILD.gn
@@ -2,7 +2,6 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("//chrome/common/features.gni") import("//third_party/closure_compiler/compile_js.gni") import("//tools/polymer/html_to_wrapper.gni") import("../../login.gni") @@ -12,7 +11,6 @@ closure_flags = default_closure_args deps = [ ":enter_old_password", - ":fingerprint_setup", ":gaia_password_changed", ":local_data_loss_warning", ":local_password_setup", @@ -21,25 +19,6 @@ } -js_library("fingerprint_setup") { - sources = [ "$root_gen_dir/chrome/browser/resources/chromeos/login/screens/osauth/fingerprint_setup.js" ] - deps = [ - "../../components:display_manager_types", - "../../components:oobe_cr_lottie", - "../../components/behaviors:login_screen_behavior", - "../../components/behaviors:multi_step_behavior", - "../../components/behaviors:oobe_i18n_behavior", - "../../components/dialogs:oobe_adaptive_dialog", - "//ash/webui/common/resources:load_time_data.m", - "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", - ] - externs_list = [ - "//ash/webui/common/resources/quick_unlock/fingerprint_progress_externs.js", - ] - - extra_deps = [ ":web_components" ] -} - js_library("gaia_password_changed") { sources = [ "$root_gen_dir/chrome/browser/resources/chromeos/login/screens/osauth/gaia_password_changed.js" ] deps = [
diff --git a/chrome/browser/resources/chromeos/login/screens/osauth/fingerprint_setup.html b/chrome/browser/resources/chromeos/login/screens/osauth/fingerprint_setup.html index 689048b..20275a2 100644 --- a/chrome/browser/resources/chromeos/login/screens/osauth/fingerprint_setup.html +++ b/chrome/browser/resources/chromeos/login/screens/osauth/fingerprint_setup.html
@@ -14,16 +14,16 @@ </style> <oobe-adaptive-dialog id="setupFingerprint" role="dialog" for-step="start" footer-shrinkable> - <h1 slot="title" hidden="[[isChildAccount_]]" aria-live="polite"> + <h1 slot="title" hidden="[[isChildAccount]]" aria-live="polite"> [[i18nDynamic(locale, 'setupFingerprintScreenTitle')]] </h1> - <h1 slot="title" hidden="[[!isChildAccount_]]" aria-live="polite"> + <h1 slot="title" hidden="[[!isChildAccount]]" aria-live="polite"> [[i18nDynamic(locale, 'setupFingerprintScreenTitleForChild')]] </h1> - <p slot="subtitle" hidden="[[isChildAccount_]]" aria-live="polite"> + <p slot="subtitle" hidden="[[isChildAccount]]" aria-live="polite"> [[i18nDynamic(locale, 'setupFingerprintScreenDescription')]] </p> - <p slot="subtitle" hidden="[[!isChildAccount_]]" aria-live="polite"> + <p slot="subtitle" hidden="[[!isChildAccount]]" aria-live="polite"> [[i18nDynamic(locale, 'setupFingerprintScreenDescriptionForChild')]] </p> <iron-icon slot="icon" icon="oobe-32:fingerprint"></iron-icon> @@ -37,7 +37,7 @@ <div slot="bottom-buttons"> <oobe-text-button id="skipStart" text-key="skipFingerprintSetup" - on-click="onSkipOnStart_" class="focus-on-show"> + on-click="onSkipOnStart" class="focus-on-show"> </oobe-text-button> </div> </oobe-adaptive-dialog> @@ -45,54 +45,54 @@ for-step="progress" footer-shrinkable aria-label$="[[i18nDynamic(locale, 'enrollmentProgressScreenTitle')]]"> <iron-icon slot="icon" icon="oobe-32:fingerprint"></iron-icon> - <h1 slot="title" hidden="[[complete_]]"> + <h1 slot="title" hidden="[[complete]]"> [[i18nDynamic(locale, 'enrollmentProgressScreenTitle')]] </h1> - <h1 slot="title" hidden="[[!complete_]]"> + <h1 slot="title" hidden="[[!complete]]"> [[i18nDynamic(locale, 'setupFingerprintEnrollmentSuccessTitle')]] </h1> - <div slot="subtitle" hidden="[[!complete_]]"> - <div hidden="[[isChildAccount_]]"> + <div slot="subtitle" hidden="[[!complete]]"> + <div hidden="[[isChildAccount]]"> [[i18nDynamic(locale, 'setupFingerprintEnrollmentSuccessDescription')]] </div> - <div hidden="[[!isChildAccount_]]"> + <div hidden="[[!isChildAccount]]"> [[i18nDynamic(locale, 'setupFingerprintEnrollmentSuccessDescriptionForChild')]] </div> </div> - <div slot="subtitle" hidden="[[!isProblemImmobile_(scanResult_)]]"> - <div hidden="[[isChildAccount_]]"> + <div slot="subtitle" hidden="[[!isProblemImmobile(scanResult)]]"> + <div hidden="[[isChildAccount]]"> [[i18nDynamic(locale, 'setupFingerprintScanMoveFinger')]] </div> - <div hidden="[[!isChildAccount_]]"> + <div hidden="[[!isChildAccount]]"> [[i18nDynamic(locale, 'setupFingerprintScanMoveFingerForChild')]] </div> </div> - <div slot="subtitle" hidden="[[!isProblemOther_(scanResult_)]]"> + <div slot="subtitle" hidden="[[!isProblemOther(scanResult)]]"> [[i18nDynamic(locale, 'setupFingerprintScanTryAgain')]] </div> <div slot="content" class="flex layout vertical center center-justified"> - <fingerprint-progress id="arc" dynamic="[[isDynamicColor_]]" + <fingerprint-progress id="arc" dynamic="[[isDynamicColor]]" autoplay> </fingerprint-progress> </div> <div slot="bottom-buttons"> <oobe-text-button id="skipProgress" - on-click="onSkipInProgress_" class="focus-on-show" + on-click="onSkipInProgress" class="focus-on-show" text-key="skipFingerprintSetup" - hidden="[[complete_]]"> + hidden="[[complete]]"> </oobe-text-button> <oobe-text-button id="addAnotherFinger" text-key="fingerprintSetupAddAnother" - hidden="[[!isAnotherButtonVisible_(percentComplete_, + hidden="[[!isAnotherButtonVisible(percentComplete, canAddFinger)]]" - on-click="onAddAnother_"> + on-click="onAddAnother"> </oobe-text-button> <oobe-text-button id="done" - hidden="[[!complete_]]" + hidden="[[!complete]]" text-key="fingerprintSetupDone" - on-click="onDone_" class="focus-on-show" inverse> + on-click="onDone" class="focus-on-show" inverse> </oobe-text-button> </div> </oobe-adaptive-dialog>
diff --git a/chrome/browser/resources/chromeos/login/screens/osauth/fingerprint_setup.js b/chrome/browser/resources/chromeos/login/screens/osauth/fingerprint_setup.js deleted file mode 100644 index b82be16..0000000 --- a/chrome/browser/resources/chromeos/login/screens/osauth/fingerprint_setup.js +++ /dev/null
@@ -1,310 +0,0 @@ -// Copyright 2018 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/** - * @fileoverview Polymer element for displaying material design Fingerprint - * Enrollment screen. - */ - -import '//resources/polymer/v3_0/iron-icon/iron-icon.js'; -import '//resources/ash/common/quick_unlock/fingerprint_progress.js'; -import '../../components/oobe_icons.html.js'; -import '../../components/common_styles/oobe_common_styles.css.js'; -import '../../components/common_styles/oobe_dialog_host_styles.css.js'; - -import {I18nBehavior} from '//resources/ash/common/i18n_behavior.js'; -import {loadTimeData} from '//resources/ash/common/load_time_data.m.js'; -import {afterNextRender, dom, flush, html, mixinBehaviors, Polymer, PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js'; - -import {LoginScreenBehavior, LoginScreenBehaviorInterface} from '../../components/behaviors/login_screen_behavior.js'; -import {MultiStepBehavior, MultiStepBehaviorInterface} from '../../components/behaviors/multi_step_behavior.js'; -import {OobeI18nBehavior, OobeI18nBehaviorInterface} from '../../components/behaviors/oobe_i18n_behavior.js'; -import {OobeTextButton} from '../../components/buttons/oobe_text_button.js'; -import {OobeAdaptiveDialog} from '../../components/dialogs/oobe_adaptive_dialog.js'; -import {OOBE_UI_STATE, SCREEN_GAIA_SIGNIN} from '../../components/display_manager_types.js'; -import {OobeCrLottie} from '../../components/oobe_cr_lottie.js'; - -import {getTemplate} from './fingerprint_setup.html.js'; - - -/** - * These values must be kept in sync with the values in - * third_party/cros_system_api/dbus/service_constants.h. - * @enum {number} - */ -const FingerprintResultType = { - SUCCESS: 0, - PARTIAL: 1, - INSUFFICIENT: 2, - SENSOR_DIRTY: 3, - TOO_SLOW: 4, - TOO_FAST: 5, - IMMOBILE: 6, -}; - -/** - * UI mode for the dialog. - * @enum {string} - */ -const FingerprintUIState = { - START: 'start', - PROGRESS: 'progress', -}; - -/** - * @constructor - * @extends {PolymerElement} - * @implements {LoginScreenBehaviorInterface} - * @implements {OobeI18nBehaviorInterface} - * @implements {MultiStepBehaviorInterface} - */ -const FingerprintSetupBase = mixinBehaviors( - [OobeI18nBehavior, LoginScreenBehavior, MultiStepBehavior], PolymerElement); - -/** - * @typedef {{ - * setupFingerprint: OobeAdaptiveDialog, - * arc: FingerprintProgressElement, - * }} - */ -FingerprintSetupBase.$; - -/** - * Data that is passed to the screen during onBeforeShow. - * @typedef {{ - * isChildAccount: boolean, - * }} - */ -let FingerprintSetupScreenData; - -/** - * @polymer - */ -class FingerprintSetup extends FingerprintSetupBase { - static get is() { - return 'fingerprint-setup-element'; - } - - static get template() { - return getTemplate(); - } - - static get properties() { - return { - /** - * The percentage of completion that has been received during setup. - * The value within [0, 100] represents the percent of enrollment - * completion. - */ - percentComplete_: { - type: Number, - value: 0, - observer: 'onProgressChanged_', - }, - - /** - * Is current finger enrollment complete? - */ - complete_: { - type: Boolean, - value: false, - computed: 'enrollIsComplete_(percentComplete_)', - }, - - /** - * Can we add another finger? - */ - canAddFinger: { - type: Boolean, - value: true, - }, - - /** - * The result of fingerprint enrollment scan. - * @private - */ - scanResult_: { - type: Number, - value: FingerprintResultType.SUCCESS, - }, - - /** - * Indicates whether user is a child account. - */ - isChildAccount_: { - type: Boolean, - value: false, - }, - - /** - * Indicates whether Jelly is enabled. - */ - isDynamicColor_: { - type: Boolean, - value: loadTimeData.getBoolean('isOobeJellyEnabled'), - }, - }; - } - - constructor() { - super(); - } - - /** @override */ - get EXTERNAL_API() { - return ['onEnrollScanDone', 'enableAddAnotherFinger']; - } - - get UI_STEPS() { - return FingerprintUIState; - } - - /** @override */ - ready() { - super.ready(); - this.initializeLoginScreen('FingerprintSetupScreen'); - } - - /** Initial UI State for screen */ - getOobeUIInitialState() { - return OOBE_UI_STATE.ONBOARDING; - } - - /** @override */ - defaultUIStep() { - return FingerprintUIState.START; - } - - /** - * @param {FingerprintSetupScreenData} data Screen init payload. - */ - onBeforeShow(data) { - this.isChildAccount_ = data['isChildAccount']; - this.setAnimationState_(true); - } - - onBeforeHide() { - this.setAnimationState_(false); - } - - /** - * Called when a fingerprint enroll scan result is received. - * @param {FingerprintResultType} scanResult Result of the enroll scan. - * @param {boolean} isComplete Whether fingerprint enrollment is complete. - * @param {number} percentComplete Percentage of completion of the enrollment. - */ - onEnrollScanDone(scanResult, isComplete, percentComplete) { - this.setUIStep(FingerprintUIState.PROGRESS); - this.$.arc.reset(); - - this.percentComplete_ = percentComplete; - this.scanResult_ = scanResult; - } - - /** - * Enable/disable add another finger. - * @param {boolean} enable True if add another fingerprint is enabled. - */ - enableAddAnotherFinger(enable) { - this.canAddFinger = enable; - } - - /** - * Check whether Add Another button should be shown. - * @return {boolean} - * @private - */ - isAnotherButtonVisible_(percentComplete, canAddFinger) { - return percentComplete >= 100 && canAddFinger; - } - - /** - * This is 'on-tap' event handler for 'Skip' button for 'START' step. - * @private - */ - onSkipOnStart_(e) { - this.userActed('setup-skipped-on-start'); - } - - /** - * This is 'on-tap' event handler for 'Skip' button for 'PROGRESS' step. - * @private - */ - onSkipInProgress_(e) { - this.userActed('setup-skipped-in-flow'); - } - - /** - * Enable/disable lottie animation. - * @param {boolean} playing True if animation should be playing. - */ - setAnimationState_(playing) { - const lottieElement = /** @type{OobeCrLottie} */ ( - this.$.setupFingerprint.querySelector('#scannerLocationLottie')); - lottieElement.playing = playing; - this.$.arc.setPlay(playing); - } - - /** - * This is 'on-tap' event handler for 'Done' button. - * @private - */ - onDone_(e) { - this.userActed('setup-done'); - } - - /** - * This is 'on-tap' event handler for 'Add another' button. - * @private - */ - onAddAnother_(e) { - this.percentComplete_ = 0; - this.userActed('add-another-finger'); - } - - /** - * Check whether fingerprint enrollment is in progress. - * @return {boolean} - * @private - */ - enrollIsComplete_(percent) { - return percent >= 100; - } - - /** - * Check whether fingerprint scan problem is IMMOBILE. - * @return {boolean} - * @private - */ - isProblemImmobile_(scan_result) { - return scan_result === FingerprintResultType.IMMOBILE; - } - - /** - * Check whether fingerprint scan problem is other than IMMOBILE. - * @return {boolean} - * @private - */ - isProblemOther_(scan_result) { - return scan_result != FingerprintResultType.SUCCESS && - scan_result != FingerprintResultType.IMMOBILE; - } - - /** - * Observer for percentComplete_. - * @private - */ - onProgressChanged_(newValue, oldValue) { - // Start a new enrollment, so reset all enrollment related states. - if (newValue === 0) { - this.$.arc.reset(); - this.scanResult_ = FingerprintResultType.SUCCESS; - return; - } - - this.$.arc.setProgress(oldValue, newValue, newValue === 100); - } -} - -customElements.define(FingerprintSetup.is, FingerprintSetup);
diff --git a/chrome/browser/resources/chromeos/login/screens/osauth/fingerprint_setup.ts b/chrome/browser/resources/chromeos/login/screens/osauth/fingerprint_setup.ts new file mode 100644 index 0000000..6b3e849 --- /dev/null +++ b/chrome/browser/resources/chromeos/login/screens/osauth/fingerprint_setup.ts
@@ -0,0 +1,307 @@ +// Copyright 2018 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/** + * @fileoverview Polymer element for displaying material design Fingerprint + * Enrollment screen. + */ + +import '//resources/polymer/v3_0/iron-icon/iron-icon.js'; +import '../../components/oobe_icons.html.js'; +import '../../components/common_styles/oobe_common_styles.css.js'; +import '../../components/common_styles/oobe_dialog_host_styles.css.js'; + +import {FingerprintProgressElement} from '//resources/ash/common/quick_unlock/fingerprint_progress.js'; +import {loadTimeData} from '//resources/js/load_time_data.js'; +import {PolymerElementProperties} from '//resources/polymer/v3_0/polymer/interfaces.js'; +import {mixinBehaviors, PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js'; + +import {LoginScreenBehavior, LoginScreenBehaviorInterface} from '../../components/behaviors/login_screen_behavior.js'; +import {MultiStepBehavior, MultiStepBehaviorInterface} from '../../components/behaviors/multi_step_behavior.js'; +import {OobeI18nBehavior, OobeI18nBehaviorInterface} from '../../components/behaviors/oobe_i18n_behavior.js'; +import {OOBE_UI_STATE} from '../../components/display_manager_types.js'; +import {OobeCrLottie} from '../../components/oobe_cr_lottie.js'; + +import {getTemplate} from './fingerprint_setup.html.js'; + + +/** + * These values must be kept in sync with the values in + * third_party/cros_system_api/dbus/service_constants.h. + */ +enum FingerprintResultType { + SUCCESS = 0, + PARTIAL = 1, + INSUFFICIENT = 2, + SENSOR_DIRTY = 3, + TOO_SLOW = 4, + TOO_FAST = 5, + IMMOBILE = 6, +} + +/** + * UI mode for the dialog. + */ +enum FingerprintUiState { + START = 'start', + PROGRESS = 'progress', +} + +const FingerprintSetupBase = + mixinBehaviors( + [OobeI18nBehavior, LoginScreenBehavior, MultiStepBehavior], + PolymerElement) as { + new (): PolymerElement & OobeI18nBehaviorInterface + & LoginScreenBehaviorInterface & MultiStepBehaviorInterface, + }; + +interface FingerprintSetupScreenData { + isChildAccount: boolean; +} + +export class FingerprintSetup extends FingerprintSetupBase { + static get is() { + return 'fingerprint-setup-element' as const; + } + + static get template(): HTMLTemplateElement { + return getTemplate(); + } + + static get properties(): PolymerElementProperties { + return { + /** + * The percentage of completion that has been received during setup. + * The value within [0, 100] represents the percent of enrollment + * completion. + */ + percentComplete: { + type: Number, + value: 0, + observer: 'onProgressChanged', + }, + + /** + * Is current finger enrollment complete? + */ + complete: { + type: Boolean, + value: false, + computed: 'enrollIsComplete(percentComplete)', + }, + + /** + * Can we add another finger? + */ + canAddFinger: { + type: Boolean, + value: true, + }, + + /** + * The result of fingerprint enrollment scan. + */ + scanResult: { + type: Number, + value: FingerprintResultType.SUCCESS, + }, + + /** + * Indicates whether user is a child account. + */ + isChildAccount: { + type: Boolean, + value: false, + }, + + /** + * Indicates whether Jelly is enabled. + */ + isDynamicColor: { + type: Boolean, + value: loadTimeData.getBoolean('isOobeJellyEnabled'), + }, + }; + } + + private percentComplete: number; + private complete: boolean; + private canAddFinger: boolean; + private scanResult: FingerprintResultType; + private isChildAccount: boolean; + private isDynamicColor: boolean; + + constructor() { + super(); + } + + override get EXTERNAL_API(): string[] { + return [ + 'onEnrollScanDone', + 'enableAddAnotherFinger', + ]; + } + + override get UI_STEPS() { + return FingerprintUiState; + } + + override ready(): void { + super.ready(); + this.initializeLoginScreen('FingerprintSetupScreen'); + } + + // eslint-disable-next-line @typescript-eslint/naming-convention + override getOobeUIInitialState() { + return OOBE_UI_STATE.ONBOARDING; + } + + // eslint-disable-next-line @typescript-eslint/naming-convention + override defaultUIStep(): string { + return FingerprintUiState.START; + } + + onBeforeShow(data: FingerprintSetupScreenData): void { + this.isChildAccount = data['isChildAccount']; + this.setAnimationState(true); + } + + onBeforeHide(): void { + this.setAnimationState(false); + } + + /** + * Called when a fingerprint enroll scan result is received. + * @param scanResult Result of the enroll scan. + * @param isComplete Whether fingerprint enrollment is complete. + * @param percentComplete Percentage of completion of the enrollment. + */ + /** + * TODO(b/321675493) Revamp progress update to validate isComplete + */ + onEnrollScanDone( + scanResult: FingerprintResultType, _isComplete: boolean, + percentComplete: number): void { + this.setUIStep(FingerprintUiState.PROGRESS); + + const progress = this.shadowRoot?.querySelector('#arc'); + if (progress instanceof FingerprintProgressElement) { + progress.reset(); + } + + this.percentComplete = percentComplete; + this.scanResult = scanResult; + } + + /** + * Enable/disable add another finger. + * @param enable True if add another fingerprint is enabled. + */ + enableAddAnotherFinger(enable: boolean): void { + this.canAddFinger = enable; + } + + /** + * Check whether Add Another button should be shown. + */ + private isAnotherButtonVisible( + percentComplete: number, canAddFinger: boolean): boolean { + return percentComplete >= 100 && canAddFinger; + } + + /** + * This is 'on-click' event handler for 'Skip' button for 'START' step. + */ + private onSkipOnStart(): void { + this.userActed('setup-skipped-on-start'); + } + + /** + * This is 'on-click' event handler for 'Skip' button for 'PROGRESS' step. + */ + private onSkipInProgress(): void { + this.userActed('setup-skipped-in-flow'); + } + + /** + * Enable/disable lottie animation. + * @param playing True if animation should be playing. + */ + private setAnimationState(playing: boolean): void { + const animation = this.shadowRoot?.querySelector('#scannerLocationLottie'); + if (animation instanceof OobeCrLottie) { + animation.playing = playing; + } + + const progress = this.shadowRoot?.querySelector('#arc'); + if (progress instanceof FingerprintProgressElement) { + progress.setPlay(playing); + } + } + + /** + * This is 'on-click' event handler for 'Done' button. + */ + private onDone(): void { + this.userActed('setup-done'); + } + + /** + * This is 'on-click' event handler for 'Add another' button. + */ + private onAddAnother(): void { + this.percentComplete = 0; + this.userActed('add-another-finger'); + } + + /** + * Check whether fingerprint enrollment is in progress. + */ + private enrollIsComplete(percent: number): boolean { + return percent >= 100; + } + + /** + * Check whether fingerprint scan problem is IMMOBILE. + */ + private isProblemImmobile(scanResult: number): boolean { + return scanResult === FingerprintResultType.IMMOBILE; + } + + /** + * Check whether fingerprint scan problem is other than IMMOBILE. + */ + private isProblemOther(scanResult: number): boolean { + return scanResult != FingerprintResultType.SUCCESS && + scanResult != FingerprintResultType.IMMOBILE; + } + + /** + * Observer for percentComplete. + */ + private onProgressChanged(newValue: number, oldValue: number): void { + // Start a new enrollment, so reset all enrollment related states. + if (newValue === 0) { + const progress = this.shadowRoot?.querySelector('#arc'); + if (progress instanceof FingerprintProgressElement) { + progress.reset(); + } + this.scanResult = FingerprintResultType.SUCCESS; + return; + } + + const progress = this.shadowRoot?.querySelector('#arc'); + if (progress instanceof FingerprintProgressElement) { + progress.setProgress(oldValue, newValue, newValue === 100); + } + } +} + +declare global { + interface HTMLElementTagNameMap { + [FingerprintSetup.is]: FingerprintSetup; + } +} + +customElements.define(FingerprintSetup.is, FingerprintSetup);
diff --git a/chrome/browser/safety_check/android/java/src/org/chromium/chrome/browser/safety_check/SafetyCheckCoordinator.java b/chrome/browser/safety_check/android/java/src/org/chromium/chrome/browser/safety_check/SafetyCheckCoordinator.java index e4bea47..0452f95 100644 --- a/chrome/browser/safety_check/android/java/src/org/chromium/chrome/browser/safety_check/SafetyCheckCoordinator.java +++ b/chrome/browser/safety_check/android/java/src/org/chromium/chrome/browser/safety_check/SafetyCheckCoordinator.java
@@ -30,6 +30,8 @@ private SafetyCheckMediator mMediator; private SyncService mSyncService; private PrefService mPrefService; + private PropertyModel mPasswordCheckLocalModel; + private PropertyModel mPasswordCheckAccountModel; /** * Creates a new instance given a settings fragment, an updates client, and a settings launcher. @@ -99,19 +101,12 @@ // and Mediator. PropertyModel safetyCheckModel = createSafetyCheckModelAndBind(mSettingsFragment); - String preferenceViewId = - isLocalPasswordStorageUsed() - ? SafetyCheckViewBinder.PASSWORDS_KEY_LOCAL - : SafetyCheckViewBinder.PASSWORDS_KEY_ACCOUNT; - PropertyModel passwordsCheckPreferenceModel = - createPasswordCheckPreferenceModelAndBind( - mSettingsFragment, - safetyCheckModel, - preferenceViewId); + createPasswordCheckModels(mSettingsFragment, safetyCheckModel); mMediator = new SafetyCheckMediator( safetyCheckModel, - passwordsCheckPreferenceModel, + mPasswordCheckAccountModel, + mPasswordCheckLocalModel, mUpdatesClient, settingsLauncher, signinLauncher, @@ -146,6 +141,24 @@ return model; } + private void createPasswordCheckModels( + SafetyCheckSettingsFragment settingsFragment, PropertyModel safetyCheckModel) { + if (isAccountPasswordStorageUsed()) { + mPasswordCheckAccountModel = + createPasswordCheckPreferenceModelAndBind( + settingsFragment, + safetyCheckModel, + SafetyCheckViewBinder.PASSWORDS_KEY_ACCOUNT); + } + if (isLocalPasswordStorageUsed()) { + mPasswordCheckLocalModel = + createPasswordCheckPreferenceModelAndBind( + settingsFragment, + safetyCheckModel, + SafetyCheckViewBinder.PASSWORDS_KEY_LOCAL); + } + } + static PropertyModel createPasswordCheckPreferenceModelAndBind( SafetyCheckSettingsFragment settingsFragment, PropertyModel safetyCheckModel, @@ -156,7 +169,7 @@ passwordSafetyCheckModel, settingsFragment, (model, fragment, key) -> - SafetyCheckViewBinder.bindPasswordSafetyCheck( + SafetyCheckViewBinder.bindPasswordCheckPreferenceModel( safetyCheckModel, model, fragment, key, preferenceViewId)); return passwordSafetyCheckModel; }
diff --git a/chrome/browser/safety_check/android/java/src/org/chromium/chrome/browser/safety_check/SafetyCheckMediator.java b/chrome/browser/safety_check/android/java/src/org/chromium/chrome/browser/safety_check/SafetyCheckMediator.java index 181ffe3..44be8541 100644 --- a/chrome/browser/safety_check/android/java/src/org/chromium/chrome/browser/safety_check/SafetyCheckMediator.java +++ b/chrome/browser/safety_check/android/java/src/org/chromium/chrome/browser/safety_check/SafetyCheckMediator.java
@@ -4,6 +4,7 @@ package org.chromium.chrome.browser.safety_check; +import static org.chromium.chrome.browser.pwd_check_wrapper.PasswordCheckController.getAccountNameForPasswordStorageType; import static org.chromium.chrome.browser.safety_check.PasswordsCheckPreferenceProperties.passwordsStateFromPasswordCheckResult; import static org.chromium.chrome.browser.safety_check.PasswordsCheckPreferenceProperties.passwordsStateToNative; @@ -46,7 +47,6 @@ import org.chromium.chrome.browser.ui.signin.SyncConsentActivityLauncher; import org.chromium.components.browser_ui.settings.SettingsLauncher; import org.chromium.components.prefs.PrefService; -import org.chromium.components.signin.base.CoreAccountInfo; import org.chromium.components.signin.metrics.SigninAccessPoint; import org.chromium.components.sync.SyncService; import org.chromium.content_public.common.ContentUrlConstants; @@ -74,8 +74,17 @@ /** Model representing the current state of the update and safe browsing checks. */ private PropertyModel mSafetyCheckModel; - /** Model representing the current state of the password check. */ - private PropertyModel mPasswordsSafetyCheckPreferenceModel; + /** + * Model representing the current state of the password check of passwords from the account + * storage. + */ + private PropertyModel mPasswordsCheckAccountStorageModel; + + /** + * Model representing the current state of the password check of passwords from the local + * storage. + */ + private PropertyModel mPasswordsCheckLocalStorageModel; /** Client to interact with Omaha for the updates check. */ private SafetyCheckUpdatesDelegate mUpdatesClient; @@ -177,7 +186,8 @@ */ public SafetyCheckMediator( PropertyModel safetyCheckModel, - PropertyModel passwordsSafetyCheckPreferenceModel, + PropertyModel passwordsCheckAccountModel, + PropertyModel passwordsCheckLocalModel, SafetyCheckUpdatesDelegate client, SettingsLauncher settingsLauncher, SyncConsentActivityLauncher signinLauncher, @@ -186,7 +196,8 @@ ObservableSupplier<ModalDialogManager> modalDialogManagerSupplier) { this( safetyCheckModel, - passwordsSafetyCheckPreferenceModel, + passwordsCheckAccountModel, + passwordsCheckLocalModel, client, settingsLauncher, signinLauncher, @@ -201,7 +212,8 @@ @VisibleForTesting SafetyCheckMediator( PropertyModel safetyCheckModel, - PropertyModel passwordsSafetyCheckPreferenceModel, + PropertyModel passwordsCheckAccountModel, + PropertyModel passwordsCheckLocalModel, SafetyCheckUpdatesDelegate client, SettingsLauncher settingsLauncher, SyncConsentActivityLauncher signinLauncher, @@ -213,7 +225,8 @@ ObservableSupplier<ModalDialogManager> modalDialogManagerSupplier) { this( safetyCheckModel, - passwordsSafetyCheckPreferenceModel, + passwordsCheckAccountModel, + passwordsCheckLocalModel, client, settingsLauncher, signinLauncher, @@ -227,7 +240,8 @@ SafetyCheckMediator( PropertyModel safetyCheckModel, - PropertyModel passwordsSafetyCheckPreferenceModel, + PropertyModel passwordsCheckAccountModel, + PropertyModel passwordsCheckLocalModel, SafetyCheckUpdatesDelegate client, SettingsLauncher settingsLauncher, SyncConsentActivityLauncher signinLauncher, @@ -237,7 +251,8 @@ PasswordStoreBridge passwordStoreBridge, PasswordCheckControllerFactory passwordCheckControllerFactory) { mSafetyCheckModel = safetyCheckModel; - mPasswordsSafetyCheckPreferenceModel = passwordsSafetyCheckPreferenceModel; + mPasswordsCheckAccountStorageModel = passwordsCheckAccountModel; + mPasswordsCheckLocalStorageModel = passwordsCheckLocalModel; mUpdatesClient = client; mSettingsLauncher = settingsLauncher; mSigninLauncher = signinLauncher; @@ -284,7 +299,8 @@ return true; }); // Set the listener for clicking the passwords element. - updatePasswordElementClickDestination(); + updatePasswordElementClickDestination(PasswordStorageType.ACCOUNT_STORAGE); + updatePasswordElementClickDestination(PasswordStorageType.LOCAL_STORAGE); // Set the listener for clicking the Check button. mSafetyCheckModel.set( SafetyCheckProperties.SAFETY_CHECK_BUTTON_CLICK_LISTENER, @@ -332,35 +348,46 @@ // recently). For this case, breached credential fetch is skipped. if (PasswordManagerHelper.canUseUpm() && PasswordManagerBackendSupportHelper.getInstance().isUpdateNeeded()) { - mPasswordsSafetyCheckPreferenceModel.set( - PasswordsCheckPreferenceProperties.PASSWORDS_STATE, - PasswordsState.UNCHECKED); + setPasswordsState(mPasswordsCheckAccountStorageModel, PasswordsState.UNCHECKED); + setPasswordsState(mPasswordsCheckLocalStorageModel, PasswordsState.UNCHECKED); return; } } - mPasswordsSafetyCheckPreferenceModel.set( - PasswordsCheckPreferenceProperties.PASSWORDS_STATE, PasswordsState.CHECKING); + setPasswordsState(mPasswordsCheckAccountStorageModel, PasswordsState.CHECKING); + setPasswordsState(mPasswordsCheckLocalStorageModel, PasswordsState.CHECKING); + // If the user is not signed in, immediately set the state and do not block on disk loads. + // TODO(b/321686503): When using UPM, the check may be available if the user is signed out + // of Chrome profile, but signed into Google account. This should be handled differently + // when using GMS core local storage. if (!SafetyCheckBridge.userSignedIn()) { - mPasswordsSafetyCheckPreferenceModel.set( - PasswordsCheckPreferenceProperties.PASSWORDS_STATE, PasswordsState.SIGNED_OUT); + setPasswordsState(mPasswordsCheckAccountStorageModel, PasswordsState.SIGNED_OUT); + setPasswordsState(mPasswordsCheckLocalStorageModel, PasswordsState.SIGNED_OUT); // Record the value in UMA. RecordHistogram.recordEnumeratedHistogram( "Settings.SafetyCheck.PasswordsResult2", PasswordsStatus.SIGNED_OUT, PasswordsStatus.MAX_VALUE + 1); - updatePasswordElementClickDestination(); + updatePasswordElementClickDestination(PasswordStorageType.ACCOUNT_STORAGE); + updatePasswordElementClickDestination(PasswordStorageType.LOCAL_STORAGE); return; } + fetchPasswordsAndBreachedCredentials(PasswordStorageType.ACCOUNT_STORAGE); + fetchPasswordsAndBreachedCredentials(PasswordStorageType.LOCAL_STORAGE); + } - fetchPasswordsAndBreachedCredentials(); + private void setPasswordsState( + PropertyModel passwordsCheckModel, @PasswordsState int passwordsState) { + if (passwordsCheckModel == null) return; + + passwordsCheckModel.set(PasswordsCheckPreferenceProperties.PASSWORDS_STATE, passwordsState); } /** Triggers all safety check child checks. */ public void performSafetyCheck() { // Cancel pending delayed show callbacks if a new check is starting while any existing // elements are pending. - cancelCallbacks(); + mHandler.removeCallbacksAndMessages(null); // Record the start action in UMA. RecordUserAction.record("Settings.SafetyCheck.Start"); // Record the start interaction in the histogram. @@ -378,52 +405,34 @@ // Increment the stored number of Safety check starts. mPreferenceManager.incrementInt(ChromePreferenceKeys.SETTINGS_SAFETY_CHECK_RUN_COUNTER); // Set the checking state for all elements. - mPasswordsSafetyCheckPreferenceModel.set( - PasswordsCheckPreferenceProperties.PASSWORDS_STATE, PasswordsState.CHECKING); + setPasswordsState(mPasswordsCheckAccountStorageModel, PasswordsState.CHECKING); + setPasswordsState(mPasswordsCheckLocalStorageModel, PasswordsState.CHECKING); mSafetyCheckModel.set( SafetyCheckProperties.SAFE_BROWSING_STATE, SafeBrowsingState.CHECKING); mSafetyCheckModel.set(SafetyCheckProperties.UPDATES_STATE, UpdatesState.CHECKING); // Start all the checks. checkSafeBrowsing(); - checkPasswords(); + checkPasswords(PasswordStorageType.ACCOUNT_STORAGE); + checkPasswords(PasswordStorageType.LOCAL_STORAGE); mUpdatesClient.checkForUpdates(new WeakReference(mUpdatesCheckCallback)); } /** Cancels any pending callbacks and registered observers. */ public void destroy() { - cancelCallbacks(); + // Removes all the callbacks from handler + mHandler.removeCallbacksAndMessages(null); mUpdatesClient = null; mSafetyCheckModel = null; - mPasswordsSafetyCheckPreferenceModel = null; + mPasswordsCheckAccountStorageModel = null; + mPasswordsCheckLocalStorageModel = null; mHandler = null; mPasswordCheckController.destroy(); } - /** Cancels any delayed show callbacks. */ - private void cancelCallbacks() { - setRunnablePasswords(null); - setRunnableSafeBrowsing(null); - setRunnableUpdates(null); - } - /** - * Sets {@link mRunnablePasswords} and, if non-null, runs it with a delay. Will cancel any + * Sets {@link mRunnableSafeBrowsing} and, if non-null, runs it with a delay. Will cancel any * outstanding callbacks set by previous calls to this method. */ - private void setRunnablePasswords(Runnable runnable) { - if (mRunnablePasswords != null) { - mHandler.removeCallbacks(mRunnablePasswords); - } - mRunnablePasswords = runnable; - if (mRunnablePasswords == null) return; - - mHandler.postDelayed(runnable, getModelUpdateDelay()); - } - - /** - * Sets {@link mRunnableSafeBrowsing} and, if non-null, runs it with a delay. - * Will cancel any outstanding callbacks set by previous calls to this method. - */ private void setRunnableSafeBrowsing(Runnable r) { if (mRunnableSafeBrowsing != null) { mHandler.removeCallbacks(mRunnableSafeBrowsing); @@ -466,27 +475,37 @@ /** Called when all data is loaded. Determines if it needs to update the model. */ private void determinePasswordStateOnLoadComplete( - PasswordCheckResult passwordSafetyCheckResult, boolean isInitialLoad) { + PasswordCheckResult passwordSafetyCheckResult, + @PasswordStorageType int passwordStorageType, + boolean isInitialLoad) { // Only delay updating the UI on the user-triggered check and not initially. - if (!isInitialLoad) { - updatePasswordsStateOnDataLoaded(passwordSafetyCheckResult, false); - } else { - setRunnablePasswords( - () -> updatePasswordsStateOnDataLoaded(passwordSafetyCheckResult, true)); + if (isInitialLoad) { + updatePasswordsStateOnDataLoaded(passwordSafetyCheckResult, passwordStorageType, true); + return; } + mHandler.postDelayed( + () -> + updatePasswordsStateOnDataLoaded( + passwordSafetyCheckResult, passwordStorageType, false), + getModelUpdateDelay()); } /** Applies the results of the password check to the model. Only called when data is loaded. */ private void updatePasswordsStateOnDataLoaded( - PasswordCheckResult passwordSafetyCheckResult, boolean isInitialLoad) { + PasswordCheckResult passwordSafetyCheckResult, + @PasswordStorageType int passwordStorageType, + boolean isInitialLoad) { + PropertyModel passwordsCheckModel = getPasswordsCheckModelForStoreType(passwordStorageType); + if (passwordsCheckModel == null) return; + if (passwordSafetyCheckResult.getBreachedCount().isPresent()) { - mPasswordsSafetyCheckPreferenceModel.set( + passwordsCheckModel.set( PasswordsCheckPreferenceProperties.COMPROMISED_PASSWORDS_COUNT, passwordSafetyCheckResult.getBreachedCount().getAsInt()); } @PasswordsState int passwordsState; - if (!isInitialLoad) { + if (isInitialLoad) { // Cannot show the safe state at the initial load if last run is older than 10 mins. passwordsState = getPasswordStateWhenInitialLoad(passwordSafetyCheckResult); } else { @@ -497,9 +516,8 @@ PasswordsStatus.MAX_VALUE + 1); } - mPasswordsSafetyCheckPreferenceModel.set( - PasswordsCheckPreferenceProperties.PASSWORDS_STATE, passwordsState); - updatePasswordElementClickDestination(); + passwordsCheckModel.set(PasswordsCheckPreferenceProperties.PASSWORDS_STATE, passwordsState); + updatePasswordElementClickDestination(passwordStorageType); } private @PasswordsState int getPasswordStateWhenInitialLoad( @@ -523,11 +541,13 @@ } /** Sets the destination of the click on the passwords element based on the current state. */ - private void updatePasswordElementClickDestination() { + private void updatePasswordElementClickDestination( + @PasswordStorageType int passwordStorageType) { + PropertyModel passwordsCheckModel = getPasswordsCheckModelForStoreType(passwordStorageType); + if (passwordsCheckModel == null) return; + @PasswordsState - int state = - mPasswordsSafetyCheckPreferenceModel.get( - PasswordsCheckPreferenceProperties.PASSWORDS_STATE); + int state = passwordsCheckModel.get(PasswordsCheckPreferenceProperties.PASSWORDS_STATE); Preference.OnPreferenceClickListener listener = null; if (state == PasswordsState.SIGNED_OUT) { listener = @@ -552,10 +572,8 @@ .showUi(p.getContext(), PasswordCheckReferrer.SAFETY_CHECK); } else { String account = - PasswordManagerHelper.hasChosenToSyncPasswords(mSyncService) - ? CoreAccountInfo.getEmailFrom( - mSyncService.getAccountInfo()) - : null; + getAccountNameForPasswordStorageType( + passwordStorageType, mSyncService); PasswordManagerHelper.showPasswordCheckup( p.getContext(), PasswordCheckReferrer.SAFETY_CHECK, @@ -584,65 +602,72 @@ return true; }; } - mPasswordsSafetyCheckPreferenceModel.set( + passwordsCheckModel.set( PasswordsCheckPreferenceProperties.PASSWORDS_CLICK_LISTENER, listener); } - private void fetchPasswordsAndBreachedCredentials() { + private void fetchPasswordsAndBreachedCredentials( + @PasswordStorageType int passwordStorageType) { + PropertyModel passwordCheckModel = getPasswordsCheckModelForStoreType(passwordStorageType); + if (passwordCheckModel == null) return; + WeakReference<SafetyCheckMediator> weakRef = new WeakReference(this); mPasswordCheckController - .getBreachedCredentialsCount(PasswordStorageType.ACCOUNT_STORAGE) + .getBreachedCredentialsCount(passwordStorageType) .whenComplete( (result, error) -> { SafetyCheckMediator mediator = weakRef.get(); if (mediator == null) return; if (error != null) { - mediator.onPasswordCheckFailed(error, false); + mediator.onPasswordCheckFailed(error, passwordStorageType, true); } else { - mediator.onPasswordCheckSucceeded(result, false); + mediator.determinePasswordStateOnLoadComplete( + result, passwordStorageType, true); } }); } - private void checkPasswords() { + private void checkPasswords(@PasswordStorageType int passwordStorageType) { + PropertyModel passwordCheckModel = getPasswordsCheckModelForStoreType(passwordStorageType); + if (passwordCheckModel == null) return; + WeakReference<SafetyCheckMediator> weakRef = new WeakReference(this); mPasswordCheckController - .checkPasswords(PasswordStorageType.ACCOUNT_STORAGE) + .checkPasswords(passwordStorageType) .whenComplete( (result, error) -> { SafetyCheckMediator mediator = weakRef.get(); if (mediator == null) return; if (error != null) { - mediator.onPasswordCheckFailed(error, true); + mediator.onPasswordCheckFailed(error, passwordStorageType, false); } else { - mediator.onPasswordCheckSucceeded(result, true); + mediator.determinePasswordStateOnLoadComplete( + result, passwordStorageType, false); } }); } - private void onPasswordCheckSucceeded( - PasswordCheckResult passwordCheckResult, boolean isInitialLoad) { - if (mPasswordsSafetyCheckPreferenceModel == null) return; - - determinePasswordStateOnLoadComplete(passwordCheckResult, isInitialLoad); + private PropertyModel getPasswordsCheckModelForStoreType( + @PasswordStorageType int passwordStoreType) { + if (passwordStoreType == PasswordStorageType.ACCOUNT_STORAGE) { + return mPasswordsCheckAccountStorageModel; + } + if (passwordStoreType == PasswordStorageType.LOCAL_STORAGE) { + return mPasswordsCheckLocalStorageModel; + } + assert false : "Unknown password storage type"; + return null; } - private void onPasswordCheckFailed(Throwable error, boolean isInitialLoad) { - if (mPasswordsSafetyCheckPreferenceModel == null) return; - - setRunnablePasswords( - () -> { - if (mPasswordsSafetyCheckPreferenceModel == null) return; - - RecordHistogram.recordEnumeratedHistogram( - "Settings.SafetyCheck.PasswordsResult2", - PasswordsCheckPreferenceProperties.passwordsStateToNative( - PasswordsState.ERROR), - PasswordsStatus.MAX_VALUE + 1); - determinePasswordStateOnLoadComplete( - new PasswordCheckResult(new Exception(error)), isInitialLoad); - }); + private void onPasswordCheckFailed( + Throwable error, @PasswordStorageType int passwordStorageType, boolean isInitialLoad) { + RecordHistogram.recordEnumeratedHistogram( + "Settings.SafetyCheck.PasswordsResult2", + PasswordsCheckPreferenceProperties.passwordsStateToNative(PasswordsState.ERROR), + PasswordsStatus.MAX_VALUE + 1); + determinePasswordStateOnLoadComplete( + new PasswordCheckResult(new Exception(error)), passwordStorageType, isInitialLoad); } }
diff --git a/chrome/browser/safety_check/android/java/src/org/chromium/chrome/browser/safety_check/SafetyCheckViewBinder.java b/chrome/browser/safety_check/android/java/src/org/chromium/chrome/browser/safety_check/SafetyCheckViewBinder.java index 87d1e07f..37c9528 100644 --- a/chrome/browser/safety_check/android/java/src/org/chromium/chrome/browser/safety_check/SafetyCheckViewBinder.java +++ b/chrome/browser/safety_check/android/java/src/org/chromium/chrome/browser/safety_check/SafetyCheckViewBinder.java
@@ -269,7 +269,7 @@ } } - static void bindPasswordSafetyCheck( + static void bindPasswordCheckPreferenceModel( PropertyModel safetyCheckModel, PropertyModel model, SafetyCheckSettingsFragment fragment,
diff --git a/chrome/browser/safety_check/android/javatests/src/org/chromium/chrome/browser/safety_check/SafetyCheckMediatorTest.java b/chrome/browser/safety_check/android/javatests/src/org/chromium/chrome/browser/safety_check/SafetyCheckMediatorTest.java index 5dd3e85e22..2f2ea2a 100644 --- a/chrome/browser/safety_check/android/javatests/src/org/chromium/chrome/browser/safety_check/SafetyCheckMediatorTest.java +++ b/chrome/browser/safety_check/android/javatests/src/org/chromium/chrome/browser/safety_check/SafetyCheckMediatorTest.java
@@ -66,6 +66,7 @@ import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.pwd_check_wrapper.FakePasswordCheckControllerFactory; import org.chromium.chrome.browser.pwd_check_wrapper.PasswordCheckController.PasswordCheckResult; +import org.chromium.chrome.browser.pwd_check_wrapper.PasswordCheckController.PasswordStorageType; import org.chromium.chrome.browser.pwd_check_wrapper.PasswordCheckNativeException; import org.chromium.chrome.browser.safety_check.PasswordsCheckPreferenceProperties.PasswordsState; import org.chromium.chrome.browser.safety_check.SafetyCheckMediator.SafetyCheckInteractions; @@ -113,7 +114,7 @@ @Rule public JniMocker mJniMocker = new JniMocker(); private PropertyModel mSafetyCheckModel; - private PropertyModel mPasswordCheckPreferenceModel; + private PropertyModel mPasswordCheckModel; @Mock private SafetyCheckBridge.Natives mSafetyCheckBridge; @Mock private Profile mProfile; @@ -156,17 +157,20 @@ ContextUtils.initApplicationContextForTests(ApplicationProvider.getApplicationContext()); } - private void setUpPasswordCheckToReturnError(Exception error) { + private void setUpPasswordCheckToReturnError( + @PasswordStorageType int passwordStorageType, Exception error) { mPasswordCheckControllerFactory .getLastCreatedController() - .setPasswordCheckResult(new PasswordCheckResult(error)); + .setPasswordCheckResult(passwordStorageType, new PasswordCheckResult(error)); } - private void setUpPasswordCheckToReturnNoPasswords() { + private void setUpPasswordCheckToReturnNoPasswords( + @PasswordStorageType int passwordStorageType) { if (mUseGmsApi) { mPasswordCheckControllerFactory .getLastCreatedController() .setPasswordCheckResult( + passwordStorageType, new PasswordCheckResult( /* totalPasswordsCount= */ 0, /* breachedCount= */ 00)); } else { @@ -175,12 +179,16 @@ "Test exception", PasswordCheckUIStatus.ERROR_NO_PASSWORDS); mPasswordCheckControllerFactory .getLastCreatedController() - .setPasswordCheckResult(new PasswordCheckResult(noPasswordsError)); + .setPasswordCheckResult( + passwordStorageType, new PasswordCheckResult(noPasswordsError)); } } - private void setUpPasswordCheckToReturnResult(PasswordCheckResult result) { - mPasswordCheckControllerFactory.getLastCreatedController().setPasswordCheckResult(result); + private void setUpPasswordCheckToReturnResult( + @PasswordStorageType int passwordStorageType, PasswordCheckResult result) { + mPasswordCheckControllerFactory + .getLastCreatedController() + .setPasswordCheckResult(passwordStorageType, result); } private void configureMockSyncService() { @@ -230,8 +238,7 @@ .thenReturn(false); mSafetyCheckModel = SafetyCheckProperties.createSafetyCheckModel(); - mPasswordCheckPreferenceModel = - PasswordsCheckPreferenceProperties.createPasswordSafetyCheckModel(); + mPasswordCheckModel = PasswordsCheckPreferenceProperties.createPasswordSafetyCheckModel(); mPasswordCheckControllerFactory = new FakePasswordCheckControllerFactory(); if (mUseGmsApi) { // TODO(crbug.com/1346235): Use existing fake instead of mocking @@ -242,7 +249,8 @@ mMediator = new SafetyCheckMediator( mSafetyCheckModel, - mPasswordCheckPreferenceModel, + mPasswordCheckModel, + /* passwordCheckLocalModel */ null, mUpdatesDelegate, mSettingsLauncher, mSigninLauncher, @@ -257,7 +265,8 @@ mMediator = new SafetyCheckMediator( mSafetyCheckModel, - mPasswordCheckPreferenceModel, + mPasswordCheckModel, + /* passwordCheckLocalModel */ null, mUpdatesDelegate, mSettingsLauncher, mSigninLauncher, @@ -383,9 +392,10 @@ @Test public void testPasswordsCheckError() { mMediator.performSafetyCheck(); - setUpPasswordCheckToReturnError(new Exception("Test exception")); + setUpPasswordCheckToReturnError( + PasswordStorageType.ACCOUNT_STORAGE, new Exception("Test exception")); - assertEquals(PasswordsState.ERROR, mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.ERROR, mPasswordCheckModel.get(PASSWORDS_STATE)); assertEquals( 1, RecordHistogram.getHistogramValueCountForTesting( @@ -398,12 +408,13 @@ mMediator.performSafetyCheck(); setUpPasswordCheckToReturnError( + PasswordStorageType.ACCOUNT_STORAGE, new PasswordCheckBackendException( "test", CredentialManagerError.BACKEND_VERSION_NOT_SUPPORTED)); assertEquals( PasswordsState.BACKEND_VERSION_NOT_SUPPORTED, - mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + mPasswordCheckModel.get(PASSWORDS_STATE)); assertEquals( 1, RecordHistogram.getHistogramValueCountForTesting( @@ -413,10 +424,9 @@ @Test public void testPasswordsCheckNoPasswords() { mMediator.performSafetyCheck(); - setUpPasswordCheckToReturnNoPasswords(); + setUpPasswordCheckToReturnNoPasswords(PasswordStorageType.ACCOUNT_STORAGE); - assertEquals( - PasswordsState.NO_PASSWORDS, mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.NO_PASSWORDS, mPasswordCheckModel.get(PASSWORDS_STATE)); assertEquals( 1, RecordHistogram.getHistogramValueCountForTesting( @@ -427,9 +437,10 @@ public void testPasswordsCheckNoLeaks() { mMediator.performSafetyCheck(); setUpPasswordCheckToReturnResult( + PasswordStorageType.ACCOUNT_STORAGE, new PasswordCheckResult(/* totalPasswordsCount= */ 20, /* breachedCount= */ 0)); - assertEquals(PasswordsState.SAFE, mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.SAFE, mPasswordCheckModel.get(PASSWORDS_STATE)); assertEquals( 1, RecordHistogram.getHistogramValueCountForTesting( @@ -442,12 +453,11 @@ mMediator.performSafetyCheck(); setUpPasswordCheckToReturnResult( + PasswordStorageType.ACCOUNT_STORAGE, new PasswordCheckResult(/* totalPasswordsCount= */ 199, numLeaks)); - assertEquals( - PasswordsState.COMPROMISED_EXIST, - mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); - assertEquals(numLeaks, mPasswordCheckPreferenceModel.get(COMPROMISED_PASSWORDS_COUNT)); + assertEquals(PasswordsState.COMPROMISED_EXIST, mPasswordCheckModel.get(PASSWORDS_STATE)); + assertEquals(numLeaks, mPasswordCheckModel.get(COMPROMISED_PASSWORDS_COUNT)); assertEquals( 1, RecordHistogram.getHistogramValueCountForTesting( @@ -482,12 +492,13 @@ mMediator.setInitialState(); // Passwords: safe state. setUpPasswordCheckToReturnResult( + PasswordStorageType.ACCOUNT_STORAGE, new PasswordCheckResult(/* totalPasswordsCount= */ 12, /* breachedCount= */ 0)); // Verify the states. assertEquals( SafeBrowsingState.ENABLED_STANDARD, mSafetyCheckModel.get(SAFE_BROWSING_STATE)); - assertEquals(PasswordsState.SAFE, mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.SAFE, mPasswordCheckModel.get(PASSWORDS_STATE)); assertEquals(UpdatesState.OUTDATED, mSafetyCheckModel.get(UPDATES_STATE)); } @@ -518,13 +529,13 @@ mMediator.setInitialState(); // Passwords: no passwords. setUpPasswordCheckToReturnResult( + PasswordStorageType.ACCOUNT_STORAGE, new PasswordCheckResult(/* totalPasswordsCount= */ 0, /* breachedCount= */ 0)); // Verify the states. assertEquals( SafeBrowsingState.DISABLED_BY_ADMIN, mSafetyCheckModel.get(SAFE_BROWSING_STATE)); - assertEquals( - PasswordsState.NO_PASSWORDS, mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.NO_PASSWORDS, mPasswordCheckModel.get(PASSWORDS_STATE)); assertEquals(UpdatesState.OFFLINE, mSafetyCheckModel.get(UPDATES_STATE)); } @@ -555,13 +566,12 @@ mMediator.setInitialState(); // Passwords: compromised state. setUpPasswordCheckToReturnResult( + PasswordStorageType.ACCOUNT_STORAGE, new PasswordCheckResult(/* totalPasswordsCount= */ 20, /* breachedCount= */ 18)); // Verify the states. assertEquals(SafeBrowsingState.DISABLED, mSafetyCheckModel.get(SAFE_BROWSING_STATE)); - assertEquals( - PasswordsState.COMPROMISED_EXIST, - mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.COMPROMISED_EXIST, mPasswordCheckModel.get(PASSWORDS_STATE)); assertEquals(UpdatesState.UPDATED, mSafetyCheckModel.get(UPDATES_STATE)); } @@ -592,11 +602,12 @@ mMediator.setInitialState(); // Passwords: safe state. setUpPasswordCheckToReturnResult( + PasswordStorageType.ACCOUNT_STORAGE, new PasswordCheckResult(/* totalPasswordsCount= */ 13, /* breachedCount= */ 0)); // Verify the states. assertEquals(SafeBrowsingState.UNCHECKED, mSafetyCheckModel.get(SAFE_BROWSING_STATE)); - assertEquals(PasswordsState.UNCHECKED, mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.UNCHECKED, mPasswordCheckModel.get(PASSWORDS_STATE)); assertEquals(UpdatesState.UNCHECKED, mSafetyCheckModel.get(UPDATES_STATE)); } @@ -627,13 +638,12 @@ mMediator.setInitialState(); // Passwords: compromised state. setUpPasswordCheckToReturnResult( + PasswordStorageType.ACCOUNT_STORAGE, new PasswordCheckResult(/* totalPasswordsCount= */ 20, /* breachedCount= */ 18)); // Verify the states. assertEquals(SafeBrowsingState.UNCHECKED, mSafetyCheckModel.get(SAFE_BROWSING_STATE)); - assertEquals( - PasswordsState.COMPROMISED_EXIST, - mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.COMPROMISED_EXIST, mPasswordCheckModel.get(PASSWORDS_STATE)); assertEquals(UpdatesState.UNCHECKED, mSafetyCheckModel.get(UPDATES_STATE)); } @@ -641,29 +651,27 @@ public void testPasswordsInitialLoadDuringInitialState() { // Order: setting initial state -> showing CHECK while the check is still running -> done. mMediator.setInitialState(); - assertEquals(PasswordsState.CHECKING, mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.CHECKING, mPasswordCheckModel.get(PASSWORDS_STATE)); setUpPasswordCheckToReturnResult( + PasswordStorageType.ACCOUNT_STORAGE, new PasswordCheckResult(/* totalPasswordsCount= */ 20, /* breachedCount= */ 18)); - assertEquals( - PasswordsState.COMPROMISED_EXIST, - mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.COMPROMISED_EXIST, mPasswordCheckModel.get(PASSWORDS_STATE)); } @Test public void testPasswordsInitialLoadDuringRunningCheck() { // Order: initial state -> safety check triggered -> load completed -> check done. mMediator.setInitialState(); - assertEquals(PasswordsState.CHECKING, mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.CHECKING, mPasswordCheckModel.get(PASSWORDS_STATE)); mMediator.performSafetyCheck(); - assertEquals(PasswordsState.CHECKING, mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.CHECKING, mPasswordCheckModel.get(PASSWORDS_STATE)); setUpPasswordCheckToReturnResult( + PasswordStorageType.ACCOUNT_STORAGE, new PasswordCheckResult(/* totalPasswordsCount= */ 20, /* breachedCount= */ 18)); - assertEquals( - PasswordsState.COMPROMISED_EXIST, - mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.COMPROMISED_EXIST, mPasswordCheckModel.get(PASSWORDS_STATE)); assertEquals( 1, RecordHistogram.getHistogramValueCountForTesting( @@ -674,26 +682,26 @@ @Test public void testPasswordCheckWhenRanImmediately() { mMediator.performSafetyCheck(); - assertEquals(PasswordsState.CHECKING, mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.CHECKING, mPasswordCheckModel.get(PASSWORDS_STATE)); setUpPasswordCheckToReturnResult( + PasswordStorageType.ACCOUNT_STORAGE, new PasswordCheckResult(/* totalPasswordsCount= */ 6, /* breachedCount= */ 3)); - assertEquals( - PasswordsState.COMPROMISED_EXIST, - mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.COMPROMISED_EXIST, mPasswordCheckModel.get(PASSWORDS_STATE)); } @Test public void testPasswordsInitialLoadCheckReturnsError() { // Order: initial state -> safety check triggered -> check error -> load ignored. mMediator.setInitialState(); - assertEquals(PasswordsState.CHECKING, mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.CHECKING, mPasswordCheckModel.get(PASSWORDS_STATE)); mMediator.performSafetyCheck(); - assertEquals(PasswordsState.CHECKING, mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.CHECKING, mPasswordCheckModel.get(PASSWORDS_STATE)); - setUpPasswordCheckToReturnError(new Exception("Test exception")); - assertEquals(PasswordsState.ERROR, mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + setUpPasswordCheckToReturnError( + PasswordStorageType.ACCOUNT_STORAGE, new Exception("Test exception")); + assertEquals(PasswordsState.ERROR, mPasswordCheckModel.get(PASSWORDS_STATE)); assertEquals( 1, RecordHistogram.getHistogramValueCountForTesting( @@ -706,12 +714,13 @@ doReturn(false).when(mSafetyCheckBridge).userSignedIn(any(BrowserContextHandle.class)); mMediator.setInitialState(); - assertEquals(PasswordsState.SIGNED_OUT, mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.SIGNED_OUT, mPasswordCheckModel.get(PASSWORDS_STATE)); // Check that there was no password check results fetch operation started. assertNull( mPasswordCheckControllerFactory .getLastCreatedController() - .getFuturePasswordCheckResult()); + .getFuturePasswordCheckResultForStorageType( + PasswordStorageType.ACCOUNT_STORAGE)); // The results of the previous check should be ignored. assertEquals( 1, @@ -723,33 +732,33 @@ public void testPasswordCheckFinishedAfterDestroy() { mMediator.performSafetyCheck(); - @PasswordsState int stateBeforeDestroy = mPasswordCheckPreferenceModel.get(PASSWORDS_STATE); + @PasswordsState int stateBeforeDestroy = mPasswordCheckModel.get(PASSWORDS_STATE); mMediator.destroy(); setUpPasswordCheckToReturnResult( + PasswordStorageType.ACCOUNT_STORAGE, new PasswordCheckResult(/* totalPasswordsCount= */ 20, /* breachedCount= */ 0)); // After calling destroy() on mediator, the model is not expected to change any more. - assertEquals(stateBeforeDestroy, mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(stateBeforeDestroy, mPasswordCheckModel.get(PASSWORDS_STATE)); } @Test public void testClickListenerLeadsToUPMAccountPasswordCheckup() { // Order: initial state -> safety check triggered -> check done -> load completed. mMediator.setInitialState(); - assertEquals(PasswordsState.CHECKING, mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.CHECKING, mPasswordCheckModel.get(PASSWORDS_STATE)); mMediator.performSafetyCheck(); - assertEquals(PasswordsState.CHECKING, mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.CHECKING, mPasswordCheckModel.get(PASSWORDS_STATE)); setUpPasswordCheckToReturnResult( + PasswordStorageType.ACCOUNT_STORAGE, new PasswordCheckResult(/* passwordsTotalCount= */ 20, /* breachedCount= */ 18)); - assertEquals( - PasswordsState.COMPROMISED_EXIST, - mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.COMPROMISED_EXIST, mPasswordCheckModel.get(PASSWORDS_STATE)); Preference.OnPreferenceClickListener listener = (Preference.OnPreferenceClickListener) - mPasswordCheckPreferenceModel.get( + mPasswordCheckModel.get( PasswordsCheckPreferenceProperties.PASSWORDS_CLICK_LISTENER); listener.onPreferenceClick(new Preference(ContextUtils.getApplicationContext())); @@ -764,30 +773,105 @@ // account storage. // These behaviours are set here again because the tests are currently not parametrised in // a way to support UPM for non password syncing users. + PropertyModel passwordCheckLocalModel = + PasswordsCheckPreferenceProperties.createPasswordSafetyCheckModel(); + mMediator = + new SafetyCheckMediator( + mSafetyCheckModel, + /* passwordCheckAccountModel= */ null, + passwordCheckLocalModel, + mUpdatesDelegate, + mSettingsLauncher, + mSigninLauncher, + mSyncService, + mPrefService, + mPasswordStoreBridge, + mPasswordCheckControllerFactory, + mHandler, + mModalDialogManagerSupplier); + when(mPasswordManagerUtilBridgeNativeMock.canUseUPMBackend(false, mPrefService)) .thenReturn(mUseGmsApi); when(mSyncService.getSelectedTypes()).thenReturn(new HashSet<>()); // Order: initial state -> safety check triggered -> check done -> load completed. mMediator.setInitialState(); - assertEquals(PasswordsState.CHECKING, mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.CHECKING, passwordCheckLocalModel.get(PASSWORDS_STATE)); mMediator.performSafetyCheck(); - assertEquals(PasswordsState.CHECKING, mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.CHECKING, passwordCheckLocalModel.get(PASSWORDS_STATE)); setUpPasswordCheckToReturnResult( + PasswordStorageType.LOCAL_STORAGE, new PasswordCheckResult(/* passwordsTotalCount= */ 20, /* breachedCount= */ 18)); assertEquals( - PasswordsState.COMPROMISED_EXIST, - mPasswordCheckPreferenceModel.get(PASSWORDS_STATE)); + PasswordsState.COMPROMISED_EXIST, passwordCheckLocalModel.get(PASSWORDS_STATE)); Preference.OnPreferenceClickListener listener = (Preference.OnPreferenceClickListener) - mPasswordCheckPreferenceModel.get( + passwordCheckLocalModel.get( PasswordsCheckPreferenceProperties.PASSWORDS_CLICK_LISTENER); listener.onPreferenceClick(new Preference(ContextUtils.getApplicationContext())); verify(mPasswordCheckupHelper, times(mUseGmsApi ? 1 : 0)) .getPasswordCheckupIntent(eq(SAFETY_CHECK), eq(Optional.empty()), any(), any()); } + + @Test + public void testPasswordCheckCompletesForTwoStorages() { + // Set up both local and account models + PropertyModel passwordCheckAccountModel = + PasswordsCheckPreferenceProperties.createPasswordSafetyCheckModel(); + PropertyModel passwordCheckLocalModel = + PasswordsCheckPreferenceProperties.createPasswordSafetyCheckModel(); + mMediator = + new SafetyCheckMediator( + mSafetyCheckModel, + passwordCheckAccountModel, + passwordCheckLocalModel, + mUpdatesDelegate, + mSettingsLauncher, + mSigninLauncher, + mSyncService, + mPrefService, + mPasswordStoreBridge, + mPasswordCheckControllerFactory, + mHandler, + mModalDialogManagerSupplier); + + // Order: initial state -> set result of the initial check -> password check -> set result + // of the password check. + mMediator.setInitialState(); + assertEquals(PasswordsState.CHECKING, passwordCheckAccountModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.CHECKING, passwordCheckLocalModel.get(PASSWORDS_STATE)); + + setUpPasswordCheckToReturnResult( + PasswordStorageType.ACCOUNT_STORAGE, + new PasswordCheckResult(/* passwordsTotalCount= */ 20, /* breachedCount= */ 18)); + assertEquals( + PasswordsState.COMPROMISED_EXIST, passwordCheckAccountModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.CHECKING, passwordCheckLocalModel.get(PASSWORDS_STATE)); + + setUpPasswordCheckToReturnResult( + PasswordStorageType.LOCAL_STORAGE, + new PasswordCheckResult(/* passwordsTotalCount= */ 20, /* breachedCount= */ 0)); + assertEquals(PasswordsState.UNCHECKED, passwordCheckLocalModel.get(PASSWORDS_STATE)); + + mMediator.performSafetyCheck(); + assertEquals(PasswordsState.CHECKING, passwordCheckAccountModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.CHECKING, passwordCheckLocalModel.get(PASSWORDS_STATE)); + + setUpPasswordCheckToReturnResult( + PasswordStorageType.LOCAL_STORAGE, + new PasswordCheckResult(/* passwordsTotalCount= */ 20, /* breachedCount= */ 18)); + assertEquals( + PasswordsState.COMPROMISED_EXIST, passwordCheckLocalModel.get(PASSWORDS_STATE)); + assertEquals(PasswordsState.CHECKING, passwordCheckAccountModel.get(PASSWORDS_STATE)); + + setUpPasswordCheckToReturnResult( + PasswordStorageType.ACCOUNT_STORAGE, + new PasswordCheckResult(/* passwordsTotalCount= */ 20, /* breachedCount= */ 18)); + assertEquals( + PasswordsState.COMPROMISED_EXIST, passwordCheckAccountModel.get(PASSWORDS_STATE)); + } }
diff --git a/chrome/browser/search_engine_choice/search_engine_choice_client_side_trial.cc b/chrome/browser/search_engine_choice/search_engine_choice_client_side_trial.cc index 37b73f73..feaa677 100644 --- a/chrome/browser/search_engine_choice/search_engine_choice_client_side_trial.cc +++ b/chrome/browser/search_engine_choice/search_engine_choice_client_side_trial.cc
@@ -34,16 +34,16 @@ // Probabilities for all field trial groups add up to kTotalGroupWeight. constexpr base::FieldTrial::Probability kTotalGroupWeight = 1000; -constexpr int kNonStableEnabledWeight = 500; -constexpr int kNonStableDisabledWeight = 500; -constexpr int kNonStableDefaultWeight = 0; +constexpr int kNonStableEnabledWeight = 0; +constexpr int kNonStableDisabledWeight = 0; +constexpr int kNonStableDefaultWeight = 1000; static_assert(kTotalGroupWeight == kNonStableEnabledWeight + kNonStableDisabledWeight + kNonStableDefaultWeight); -constexpr int kStableEnabledWeight = 5; -constexpr int kStableDisabledWeight = 5; -constexpr int kStableDefaultWeight = 990; +constexpr int kStableEnabledWeight = 0; +constexpr int kStableDisabledWeight = 0; +constexpr int kStableDefaultWeight = 1000; static_assert(kTotalGroupWeight == kStableEnabledWeight + kStableDisabledWeight + kStableDefaultWeight);
diff --git a/chrome/browser/search_engine_choice/search_engine_choice_client_side_trial_unittest.cc b/chrome/browser/search_engine_choice/search_engine_choice_client_side_trial_unittest.cc index 32852b8e..b88a614 100644 --- a/chrome/browser/search_engine_choice/search_engine_choice_client_side_trial_unittest.cc +++ b/chrome/browser/search_engine_choice/search_engine_choice_client_side_trial_unittest.cc
@@ -99,7 +99,7 @@ switches::kSearchEngineChoiceTriggerForTaggedProfilesOnly.Get()); } else { // Default value of the flag, independent from the feature state. - EXPECT_FALSE( + EXPECT_TRUE( switches::kSearchEngineChoiceTriggerForTaggedProfilesOnly.Get()); } @@ -131,36 +131,31 @@ // declared. So for a split at 33% enabled, 33% disabled, 33% default // a .4 entropy value should select the "disabled" group. #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) + // Today, the feature is enabled by default, never enroll clients. SearchEngineChoiceFieldTrialTestParams{ .entropy_value = 0.01, .channel = version_info::Channel::BETA, - // In the 50% treatment group - .expect_study_enabled = true, - .expect_feature_enabled = true}, - SearchEngineChoiceFieldTrialTestParams{ - .entropy_value = 0.6, - .channel = version_info::Channel::BETA, - // In the 50% control group - .expect_study_enabled = true, - .expect_feature_enabled = false}, - SearchEngineChoiceFieldTrialTestParams{ - .entropy_value = 0.0001, - .channel = version_info::Channel::STABLE, - // In the .5% treatment group - .expect_study_enabled = true, - .expect_feature_enabled = true}, - SearchEngineChoiceFieldTrialTestParams{ - .entropy_value = 0.009, - .channel = version_info::Channel::STABLE, - // In the .5% control group - .expect_study_enabled = true, - .expect_feature_enabled = false}, - SearchEngineChoiceFieldTrialTestParams{ - .entropy_value = 0.99, - .channel = version_info::Channel::STABLE, - // Not in the study (99%) .expect_study_enabled = false, - .expect_feature_enabled = false} + .expect_feature_enabled = true}, + SearchEngineChoiceFieldTrialTestParams{ + .entropy_value = 0.01, + .channel = version_info::Channel::STABLE, + .expect_study_enabled = false, + .expect_feature_enabled = true} +#elif BUILDFLAG(IS_CHROMEOS) + // Did not have a client-side field trial, so it's not bundled with the + // group above, but it's being enabled on a different schedule than the + // group below. + SearchEngineChoiceFieldTrialTestParams{ + .entropy_value = 0.01, + .channel = version_info::Channel::BETA, + .expect_study_enabled = false, + .expect_feature_enabled = true}, + SearchEngineChoiceFieldTrialTestParams{ + .entropy_value = 0.01, + .channel = version_info::Channel::STABLE, + .expect_study_enabled = false, + .expect_feature_enabled = true} #else SearchEngineChoiceFieldTrialTestParams{ .entropy_value = 0.01,
diff --git a/chrome/browser/search_engine_choice/search_engine_choice_dialog_service_factory.cc b/chrome/browser/search_engine_choice/search_engine_choice_dialog_service_factory.cc index e3c45bd..4d88d7b 100644 --- a/chrome/browser/search_engine_choice/search_engine_choice_dialog_service_factory.cc +++ b/chrome/browser/search_engine_choice/search_engine_choice_dialog_service_factory.cc
@@ -58,9 +58,17 @@ search_engines::SearchEngineChoiceServiceFactory::GetForProfile(&profile); TemplateURLService* template_url_service = TemplateURLServiceFactory::GetForProfile(&profile); + if (!template_url_service) { + // Some unit tests using `BrowserWithTestWindowTest` create browser windows + // without fully instantiating profiles. + CHECK_IS_TEST(); + return search_engines::SearchEngineChoiceScreenConditions:: + kUnsupportedBrowserType; + } + return search_engine_choice_service->GetStaticChoiceScreenConditions( CHECK_DEREF(g_browser_process->policy_service()), - is_regular_or_guest_profile, CHECK_DEREF(template_url_service)); + is_regular_or_guest_profile, *template_url_service); } bool IsProfileEligibleForChoiceScreen(Profile& profile) {
diff --git a/chrome/browser/search_engine_choice/search_engine_choice_dialog_service_unittest.cc b/chrome/browser/search_engine_choice/search_engine_choice_dialog_service_unittest.cc index 2ef7e8c..37a7fb8f 100644 --- a/chrome/browser/search_engine_choice/search_engine_choice_dialog_service_unittest.cc +++ b/chrome/browser/search_engine_choice/search_engine_choice_dialog_service_unittest.cc
@@ -40,13 +40,13 @@ profile(), base::BindRepeating(&TemplateURLServiceFactory::BuildInstanceFor)); + PrefService* pref_service = profile()->GetPrefs(); // The search engine choice feature is only enabled for countries in the // EEA region. const int kBelgiumCountryId = country_codes::CountryCharsToCountryID('B', 'E'); - base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( - switches::kSearchEngineChoiceCountry, - country_codes::CountryIDToCountryString(kBelgiumCountryId)); + pref_service->SetInteger(country_codes::kCountryIDAtInstall, + kBelgiumCountryId); } std::unique_ptr<BrowserWindow> CreateBrowserWindow() override {
diff --git a/chrome/browser/smart_card/BUILD.gn b/chrome/browser/smart_card/BUILD.gn index db70716..c1d8a9ef 100644 --- a/chrome/browser/smart_card/BUILD.gn +++ b/chrome/browser/smart_card/BUILD.gn
@@ -11,8 +11,18 @@ "chromeos_smart_card_delegate.h", "get_smart_card_context_factory.cc", "get_smart_card_context_factory.h", + "smart_card_permission_context.cc", + "smart_card_permission_context.h", + "smart_card_permission_context_factory.cc", + "smart_card_permission_context_factory.h", "smart_card_permission_request.cc", "smart_card_permission_request.h", + "smart_card_reader_tracker.cc", + "smart_card_reader_tracker.h", + "smart_card_reader_tracker_factory.cc", + "smart_card_reader_tracker_factory.h", + "smart_card_reader_tracker_impl.cc", + "smart_card_reader_tracker_impl.h", ] if (!is_chromeos_device) { @@ -28,6 +38,7 @@ deps = [ "//chrome/browser/chromeos/extensions/smart_card_provider_private", + "//chrome/browser/permissions", "//chrome/browser/profiles:profile", "//components/permissions", "//components/strings:components_strings_grit", @@ -35,4 +46,37 @@ ] } # TODO(crbug.com/1386175): Add chrome_smart_card_delegate.* for Win/Mac/Linux + # and move smart_card_* out of the is_chromeos guard. } + +if (is_chromeos) { + source_set("unit_tests") { + testonly = true + sources = [ "smart_card_permission_context_unittest.cc" ] + deps = [ + ":smart_card", + "//chrome/browser/permissions", + "//chrome/test:test_support", + "//testing/gmock", + "//testing/gtest", + ] + } + + source_set("interactive_ui_tests") { + testonly = true + + # From test("interactive_ui_tests") + defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] + + sources = [ "smart_card_permission_uitest.cc" ] + deps = [ + ":smart_card", + "//chrome/browser", + "//chrome/browser/profiles:profile", + "//chrome/browser/ui", + "//chrome/test:test_support_ui", + "//components/permissions:permissions_common", + "//content/test:test_support", + ] + } +} # is_chromeos
diff --git a/chrome/browser/smart_card/DEPS b/chrome/browser/smart_card/DEPS new file mode 100644 index 0000000..f85c9b9 --- /dev/null +++ b/chrome/browser/smart_card/DEPS
@@ -0,0 +1,6 @@ +# UI tests need to know details of the relevant UI under test. +specific_include_rules = { + ".*_uitest\.cc": [ + "+chrome/browser/ui/views", + ], +}
diff --git a/chrome/browser/smart_card/chromeos_smart_card_delegate.cc b/chrome/browser/smart_card/chromeos_smart_card_delegate.cc index 02bdce25..c794d67 100644 --- a/chrome/browser/smart_card/chromeos_smart_card_delegate.cc +++ b/chrome/browser/smart_card/chromeos_smart_card_delegate.cc
@@ -3,12 +3,13 @@ // found in the LICENSE file. #include "chrome/browser/smart_card/chromeos_smart_card_delegate.h" + +#include "base/check_deref.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/smart_card/get_smart_card_context_factory.h" -#include "chrome/browser/smart_card/smart_card_permission_request.h" -#include "components/permissions/permission_request_manager.h" +#include "chrome/browser/smart_card/smart_card_permission_context.h" +#include "chrome/browser/smart_card/smart_card_permission_context_factory.h" #include "content/public/browser/render_frame_host.h" -#include "content/public/browser/web_contents.h" ChromeOsSmartCardDelegate::ChromeOsSmartCardDelegate() = default; ChromeOsSmartCardDelegate::~ChromeOsSmartCardDelegate() = default; @@ -22,57 +23,26 @@ bool ChromeOsSmartCardDelegate::HasReaderPermission( content::RenderFrameHost& render_frame_host, const std::string& reader_name) { - // TODO(crbug.com/1386175): Ask permission context. - return false; // Asks every time + auto& profile = CHECK_DEREF( + Profile::FromBrowserContext(render_frame_host.GetBrowserContext())); + + auto& permission_context = + SmartCardPermissionContextFactory::GetForProfile(profile); + + return permission_context.HasReaderPermission(render_frame_host, reader_name); } void ChromeOsSmartCardDelegate::RequestReaderPermission( content::RenderFrameHost& render_frame_host, const std::string& reader_name, RequestReaderPermissionCallback callback) { - const url::Origin& origin = - render_frame_host.GetMainFrame()->GetLastCommittedOrigin(); + auto& profile = CHECK_DEREF( + Profile::FromBrowserContext(render_frame_host.GetBrowserContext())); - auto* web_contents = - content::WebContents::FromRenderFrameHost(&render_frame_host); + auto& permission_context = + SmartCardPermissionContextFactory::GetForProfile(profile); - permissions::PermissionRequestManager* permission_request_manager = - permissions::PermissionRequestManager::FromWebContents(web_contents); - if (!permission_request_manager) { - LOG(ERROR) << "Cannot request permission: no PermissionRequestManager"; - std::move(callback).Run(false); - return; - } - - // Regarding ownership: The request will delete itself once the request - // manager notifies that it can do so. - auto* permission_request = new SmartCardPermissionRequest( - origin, reader_name, - base::BindOnce(&ChromeOsSmartCardDelegate::OnPermissionRequestDecided, - weak_factory_.GetWeakPtr(), origin, reader_name, - std::move(callback))); - - permission_request_manager->AddRequest(&render_frame_host, - permission_request); + permission_context.RequestReaderPermisssion(render_frame_host, reader_name, + std::move(callback)); } -void ChromeOsSmartCardDelegate::OnPermissionRequestDecided( - const url::Origin& origin, - const std::string& reader_name, - RequestReaderPermissionCallback callback, - SmartCardPermissionRequest::Result result) { - switch (result) { - case SmartCardPermissionRequest::Result::kAllowOnce: - // TODO(crbug.com/1386175): Set ephemeral grant in permission context. - std::move(callback).Run(true); - break; - case SmartCardPermissionRequest::Result::kAllowAlways: - // TODO(crbug.com/1386175): Set persistent grant in permission context. - std::move(callback).Run(true); - break; - case SmartCardPermissionRequest::Result::kDontAllow: - // There's no block list. Origin is free to request again. - std::move(callback).Run(false); - break; - } -}
diff --git a/chrome/browser/smart_card/chromeos_smart_card_delegate.h b/chrome/browser/smart_card/chromeos_smart_card_delegate.h index 5bb1a38..d505630a 100644 --- a/chrome/browser/smart_card/chromeos_smart_card_delegate.h +++ b/chrome/browser/smart_card/chromeos_smart_card_delegate.h
@@ -6,7 +6,6 @@ #define CHROME_BROWSER_SMART_CARD_CHROMEOS_SMART_CARD_DELEGATE_H_ #include "base/memory/weak_ptr.h" -#include "chrome/browser/smart_card/smart_card_permission_request.h" #include "content/public/browser/smart_card_delegate.h" class ChromeOsSmartCardDelegate : public content::SmartCardDelegate { @@ -23,14 +22,6 @@ content::RenderFrameHost& render_frame_host, const std::string& reader_name, RequestReaderPermissionCallback callback) override; - - private: - void OnPermissionRequestDecided(const url::Origin& origin, - const std::string& reader_name, - RequestReaderPermissionCallback callback, - SmartCardPermissionRequest::Result result); - - base::WeakPtrFactory<ChromeOsSmartCardDelegate> weak_factory_{this}; }; #endif // CHROME_BROWSER_SMART_CARD_CHROMEOS_SMART_CARD_DELEGATE_H_
diff --git a/chrome/browser/smart_card/smart_card_permission_context.cc b/chrome/browser/smart_card/smart_card_permission_context.cc new file mode 100644 index 0000000..ac9bbf02 --- /dev/null +++ b/chrome/browser/smart_card/smart_card_permission_context.cc
@@ -0,0 +1,337 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/smart_card/smart_card_permission_context.h" + +#include "base/power_monitor/power_monitor.h" +#include "base/power_monitor/power_observer.h" +#include "base/scoped_observation.h" +#include "base/strings/utf_string_conversions.h" +#include "chrome/browser/content_settings/host_content_settings_map_factory.h" +#include "chrome/browser/permissions/one_time_permissions_tracker.h" +#include "chrome/browser/permissions/one_time_permissions_tracker_factory.h" +#include "chrome/browser/permissions/one_time_permissions_tracker_observer.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/smart_card/smart_card_reader_tracker.h" +#include "chrome/browser/smart_card/smart_card_reader_tracker_factory.h" +#include "components/content_settings/core/common/content_settings_types.h" +#include "components/permissions/permission_request_manager.h" +#include "content/public/browser/render_frame_host.h" +#include "content/public/browser/web_contents.h" + +namespace { +constexpr char kReaderNameKey[] = "reader-name"; + +static base::Value::Dict ReaderNameToValue(const std::string& reader_name) { + base::Value::Dict value; + value.Set(kReaderNameKey, reader_name); + return value; +} + +} // anonymous namespace + +class SmartCardPermissionContext::OneTimeObserver + : public OneTimePermissionsTrackerObserver { + public: + explicit OneTimeObserver(SmartCardPermissionContext& permission_context) + : permission_context_(permission_context) { + observation_.Observe(OneTimePermissionsTrackerFactory::GetForBrowserContext( + &permission_context.profile_.get())); + } + void OnLastPageFromOriginClosed(const url::Origin& origin) override { + permission_context_->RevokeEphemeralPermissionsForOrigin(origin); + } + + private: + base::ScopedObservation<OneTimePermissionsTracker, + OneTimePermissionsTrackerObserver> + observation_{this}; + base::raw_ref<SmartCardPermissionContext> permission_context_; +}; + +class SmartCardPermissionContext::PowerSuspendObserver + : public base::PowerSuspendObserver { + public: + explicit PowerSuspendObserver(SmartCardPermissionContext& permission_context) + : permission_context_(permission_context) { + base::PowerMonitor::AddPowerSuspendObserver(this); + } + + ~PowerSuspendObserver() override { + base::PowerMonitor::RemovePowerSuspendObserver(this); + } + + void OnSuspend() override { + permission_context_->RevokeEphemeralPermissions(); + } + + private: + base::raw_ref<SmartCardPermissionContext> permission_context_; +}; + +class SmartCardPermissionContext::ReaderObserver + : public SmartCardReaderTracker::Observer { + public: + explicit ReaderObserver(SmartCardPermissionContext& permission_context) + : permission_context_(permission_context) {} + + void Reset(std::vector<SmartCardReaderTracker::ReaderInfo> info_list) { + known_info_map_.clear(); + for (SmartCardReaderTracker::ReaderInfo& info : info_list) { + std::string name = info.name; + known_info_map_.emplace(std::move(name), std::move(info)); + } + } + + void OnReaderRemoved(const std::string& reader_name) override { + known_info_map_.erase(reader_name); + permission_context_->RevokeEphemeralPermissionsForReader(reader_name); + } + + void OnReaderChanged( + const SmartCardReaderTracker::ReaderInfo& reader_info) override { + // Compare the new reader state with its previous one to find out whether + // its card has been removed. If so, notify the PermissionContext. + + if (!known_info_map_.contains(reader_info.name)) { + known_info_map_.emplace(reader_info.name, reader_info); + return; + } + + auto it = known_info_map_.find(reader_info.name); + SmartCardReaderTracker::ReaderInfo& known_info = it->second; + + // Either the card was removed or there was both a removal and an insertion + // in the meantime (meaning that reader_info.present could still be true). + // Note that event_count is not supported in all platforms. + const bool card_removed = + known_info.present && + (!reader_info.present || + (known_info.event_count < reader_info.event_count)); + + // Update known_info. + known_info = reader_info; + + if (card_removed) { + permission_context_->RevokeEphemeralPermissionsForReader( + reader_info.name); + } + } + + std::map<std::string, SmartCardReaderTracker::ReaderInfo> known_info_map_; + base::raw_ref<SmartCardPermissionContext> permission_context_; +}; + +SmartCardPermissionContext::SmartCardPermissionContext(Profile* profile) + : ObjectPermissionContextBase( + ContentSettingsType::SMART_CARD_GUARD, + ContentSettingsType::SMART_CARD_DATA, + HostContentSettingsMapFactory::GetForProfile(profile)), + reader_observer_(std::make_unique<ReaderObserver>(*this)), + profile_(*profile), + weak_ptr_factory_(this) {} + +SmartCardPermissionContext::~SmartCardPermissionContext() = default; + +std::string SmartCardPermissionContext::GetKeyForObject( + const base::Value::Dict& object) { + if (!IsValidObject(object)) { + return std::string(); + } + + return *object.FindString(kReaderNameKey); +} + +bool SmartCardPermissionContext::HasReaderPermission( + content::RenderFrameHost& render_frame_host, + const std::string& reader_name) { + return HasReaderPermission( + render_frame_host.GetMainFrame()->GetLastCommittedOrigin(), reader_name); +} + +bool SmartCardPermissionContext::HasReaderPermission( + const url::Origin& origin, + const std::string& reader_name) { + if (!CanRequestObjectPermission(origin)) { + return false; + } + + return ephemeral_grants_[origin].contains(reader_name) || + HasPersistentReaderPermission(origin, reader_name); +} + +void SmartCardPermissionContext::RequestReaderPermisssion( + content::RenderFrameHost& render_frame_host, + const std::string& reader_name, + RequestReaderPermissionCallback callback) { + const url::Origin& origin = + render_frame_host.GetMainFrame()->GetLastCommittedOrigin(); + + auto* web_contents = + content::WebContents::FromRenderFrameHost(&render_frame_host); + + permissions::PermissionRequestManager* permission_request_manager = + permissions::PermissionRequestManager::FromWebContents(web_contents); + if (!permission_request_manager) { + LOG(ERROR) << "Cannot request permission: no PermissionRequestManager"; + std::move(callback).Run(false); + return; + } + + if (!CanRequestObjectPermission(origin)) { + std::move(callback).Run(false); + return; + } + + // Regarding ownership: The request will delete itself once the request + // manager notifies that it can do so. + auto* permission_request = new SmartCardPermissionRequest( + origin, reader_name, + base::BindOnce(&SmartCardPermissionContext::OnPermissionRequestDecided, + weak_ptr_factory_.GetWeakPtr(), origin, reader_name, + std::move(callback))); + + permission_request_manager->AddRequest(&render_frame_host, + permission_request); +} + +void SmartCardPermissionContext::GrantEphemeralReaderPermission( + const url::Origin& origin, + const std::string& reader_name) { + CHECK(!HasReaderPermission(origin, reader_name)); + ephemeral_grants_[origin].insert(reader_name); + + if (!power_suspend_observer_) { + power_suspend_observer_ = std::make_unique<PowerSuspendObserver>(*this); + } + + if (!one_time_observer_) { + one_time_observer_ = std::make_unique<OneTimeObserver>(*this); + } + + GetReaderTracker().Start( + reader_observer_.get(), + base::BindOnce(&SmartCardPermissionContext::OnTrackingStarted, + weak_ptr_factory_.GetWeakPtr())); +} + +void SmartCardPermissionContext::GrantPersistentReaderPermission( + const url::Origin& origin, + const std::string& reader_name) { + CHECK(!HasReaderPermission(origin, reader_name)); + GrantObjectPermission(origin, ReaderNameToValue(reader_name)); +} + +bool SmartCardPermissionContext::IsValidObject( + const base::Value::Dict& object) { + if (object.size() != 1) { + return false; + } + + const std::string* reader_name = object.FindString(kReaderNameKey); + return reader_name && !reader_name->empty(); +} + +std::u16string SmartCardPermissionContext::GetObjectDisplayName( + const base::Value::Dict& object) { + const std::string* reader_name = object.FindString(kReaderNameKey); + CHECK(reader_name); + return base::UTF8ToUTF16(*reader_name); +} + +bool SmartCardPermissionContext::HasPersistentReaderPermission( + const url::Origin& origin, + const std::string& reader_name) { + for (const auto& object : + ObjectPermissionContextBase::GetGrantedObjects(origin)) { + const base::Value::Dict& reader_value = object->value; + + // Objects provided by the parent class can be assumed valid. + CHECK(IsValidObject(reader_value)); + + if (reader_name != *reader_value.FindString(kReaderNameKey)) { + continue; + } + + return true; + } + return false; +} + +void SmartCardPermissionContext::RevokeEphemeralPermissionsForReader( + const std::string& reader_name) { + for (auto it = ephemeral_grants_.begin(); it != ephemeral_grants_.end();) { + std::set<std::string>& reader_set = it->second; + + reader_set.erase(reader_name); + + if (reader_set.empty()) { + it = ephemeral_grants_.erase(it); + } else { + ++it; + } + } + + if (ephemeral_grants_.empty()) { + StopObserving(); + } +} + +void SmartCardPermissionContext::RevokeEphemeralPermissionsForOrigin( + const url::Origin& origin) { + ephemeral_grants_.erase(origin); + + if (ephemeral_grants_.empty()) { + StopObserving(); + } +} + +void SmartCardPermissionContext::RevokeEphemeralPermissions() { + if (ephemeral_grants_.empty()) { + return; + } + + ephemeral_grants_.clear(); + StopObserving(); +} + +void SmartCardPermissionContext::OnTrackingStarted( + std::optional<std::vector<SmartCardReaderTracker::ReaderInfo>> info_list) { + if (!info_list) { + // PC/SC failed on us. + LOG(ERROR) << "Failed to start reader tracking."; + return; + } + reader_observer_->Reset(std::move(*info_list)); +} + +void SmartCardPermissionContext::StopObserving() { + GetReaderTracker().Stop(reader_observer_.get()); + one_time_observer_.reset(); + power_suspend_observer_.reset(); +} + +SmartCardReaderTracker& SmartCardPermissionContext::GetReaderTracker() const { + return SmartCardReaderTrackerFactory::GetForProfile(*profile_); +} + +void SmartCardPermissionContext::OnPermissionRequestDecided( + const url::Origin& origin, + const std::string& reader_name, + RequestReaderPermissionCallback callback, + SmartCardPermissionRequest::Result result) { + switch (result) { + case SmartCardPermissionRequest::Result::kAllowOnce: + GrantEphemeralReaderPermission(origin, reader_name); + std::move(callback).Run(true); + break; + case SmartCardPermissionRequest::Result::kAllowAlways: + GrantPersistentReaderPermission(origin, reader_name); + std::move(callback).Run(true); + break; + case SmartCardPermissionRequest::Result::kDontAllow: + std::move(callback).Run(false); + break; + } +}
diff --git a/chrome/browser/smart_card/smart_card_permission_context.h b/chrome/browser/smart_card/smart_card_permission_context.h new file mode 100644 index 0000000..de3fe39 --- /dev/null +++ b/chrome/browser/smart_card/smart_card_permission_context.h
@@ -0,0 +1,98 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_SMART_CARD_SMART_CARD_PERMISSION_CONTEXT_H_ +#define CHROME_BROWSER_SMART_CARD_SMART_CARD_PERMISSION_CONTEXT_H_ + +#include <map> +#include <set> + +#include "base/memory/raw_ref.h" +#include "base/memory/weak_ptr.h" +#include "chrome/browser/smart_card/smart_card_permission_request.h" +#include "chrome/browser/smart_card/smart_card_reader_tracker.h" +#include "components/permissions/object_permission_context_base.h" +#include "url/origin.h" + +class Profile; + +namespace content { +class RenderFrameHost; +} + +class SmartCardPermissionContext + : public permissions::ObjectPermissionContextBase { + public: + // Callback type to report whether the user allowed the connection request. + using RequestReaderPermissionCallback = base::OnceCallback<void(bool)>; + + explicit SmartCardPermissionContext(Profile* profile); + SmartCardPermissionContext(const SmartCardPermissionContext&) = delete; + SmartCardPermissionContext& operator=(const SmartCardPermissionContext&) = + delete; + ~SmartCardPermissionContext() override; + + bool HasReaderPermission(content::RenderFrameHost& render_frame_host, + const std::string& reader_name); + + void RequestReaderPermisssion(content::RenderFrameHost& render_frame_host, + const std::string& reader_name, + RequestReaderPermissionCallback callback); + + // permissions::ObjectPermissionContextBase: + std::string GetKeyForObject(const base::Value::Dict& object) override; + bool IsValidObject(const base::Value::Dict& object) override; + std::u16string GetObjectDisplayName(const base::Value::Dict& object) override; + + void RevokeEphemeralPermissions(); + + private: + friend class SmartCardPermissionContextTest; + + class OneTimeObserver; + class PowerSuspendObserver; + class ReaderObserver; + + bool HasReaderPermission(const url::Origin& origin, + const std::string& reader_name); + + // The given permission won't be persisted. + void GrantEphemeralReaderPermission(const url::Origin& origin, + const std::string& reader_name); + + void GrantPersistentReaderPermission(const url::Origin& origin, + const std::string& reader_name); + + bool HasPersistentReaderPermission(const url::Origin& origin, + const std::string& reader_name); + + void RevokeEphemeralPermissionsForReader(const std::string& reader_name); + void RevokeEphemeralPermissionsForOrigin(const url::Origin& origin); + + void OnTrackingStarted( + std::optional<std::vector<SmartCardReaderTracker::ReaderInfo>>); + + void StopObserving(); + + void OnPermissionRequestDecided(const url::Origin& origin, + const std::string& reader_name, + RequestReaderPermissionCallback callback, + SmartCardPermissionRequest::Result result); + + SmartCardReaderTracker& GetReaderTracker() const; + + // Set of readers to which an origin has ephemeral access to. + std::map<url::Origin, std::set<std::string>> ephemeral_grants_; + + std::unique_ptr<OneTimeObserver> one_time_observer_; + std::unique_ptr<PowerSuspendObserver> power_suspend_observer_; + std::unique_ptr<ReaderObserver> reader_observer_; + + // Instance is owned by this profile. + base::raw_ref<Profile> profile_; + + base::WeakPtrFactory<SmartCardPermissionContext> weak_ptr_factory_; +}; + +#endif // CHROME_BROWSER_SMART_CARD_SMART_CARD_PERMISSION_CONTEXT_H_
diff --git a/chrome/browser/smart_card/smart_card_permission_context_factory.cc b/chrome/browser/smart_card/smart_card_permission_context_factory.cc new file mode 100644 index 0000000..69ca0f4 --- /dev/null +++ b/chrome/browser/smart_card/smart_card_permission_context_factory.cc
@@ -0,0 +1,47 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/smart_card/smart_card_permission_context_factory.h" + +#include "base/check_deref.h" +#include "chrome/browser/content_settings/host_content_settings_map_factory.h" +#include "chrome/browser/permissions/one_time_permissions_tracker_factory.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/smart_card/smart_card_permission_context.h" +#include "chrome/browser/smart_card/smart_card_reader_tracker_factory.h" + +// static +SmartCardPermissionContextFactory* +SmartCardPermissionContextFactory::GetInstance() { + static base::NoDestructor<SmartCardPermissionContextFactory> factory; + return factory.get(); +} + +// static +SmartCardPermissionContext& SmartCardPermissionContextFactory::GetForProfile( + Profile& profile) { + return CHECK_DEREF(static_cast<SmartCardPermissionContext*>( + GetInstance()->GetServiceForBrowserContext(&profile, true))); +} + +SmartCardPermissionContextFactory::SmartCardPermissionContextFactory() + : ProfileKeyedServiceFactory( + "SmartCardPermissionContext", + ProfileSelections::Builder() + .WithRegular(ProfileSelection::kOwnInstance) + .Build()) { + DependsOn(HostContentSettingsMapFactory::GetInstance()); + DependsOn(OneTimePermissionsTrackerFactory::GetInstance()); + DependsOn(SmartCardReaderTrackerFactory::GetInstance()); +} + +SmartCardPermissionContextFactory::~SmartCardPermissionContextFactory() = + default; + +std::unique_ptr<KeyedService> +SmartCardPermissionContextFactory::BuildServiceInstanceForBrowserContext( + content::BrowserContext* context) const { + return std::make_unique<SmartCardPermissionContext>( + Profile::FromBrowserContext(context)); +}
diff --git a/chrome/browser/smart_card/smart_card_permission_context_factory.h b/chrome/browser/smart_card/smart_card_permission_context_factory.h new file mode 100644 index 0000000..6548a2b7 --- /dev/null +++ b/chrome/browser/smart_card/smart_card_permission_context_factory.h
@@ -0,0 +1,34 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_SMART_CARD_SMART_CARD_PERMISSION_CONTEXT_FACTORY_H_ +#define CHROME_BROWSER_SMART_CARD_SMART_CARD_PERMISSION_CONTEXT_FACTORY_H_ + +#include "base/no_destructor.h" +#include "chrome/browser/profiles/profile_keyed_service_factory.h" + +class SmartCardPermissionContext; + +class SmartCardPermissionContextFactory : public ProfileKeyedServiceFactory { + public: + static SmartCardPermissionContext& GetForProfile(Profile& profile); + static SmartCardPermissionContextFactory* GetInstance(); + + SmartCardPermissionContextFactory(const SmartCardPermissionContextFactory&) = + delete; + SmartCardPermissionContextFactory& operator=( + const SmartCardPermissionContextFactory&) = delete; + + private: + friend base::NoDestructor<SmartCardPermissionContextFactory>; + + SmartCardPermissionContextFactory(); + ~SmartCardPermissionContextFactory() override; + + // BrowserContextKeyedServiceFactory: + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( + content::BrowserContext* profile) const override; +}; + +#endif // CHROME_BROWSER_SMART_CARD_SMART_CARD_PERMISSION_CONTEXT_FACTORY_H_
diff --git a/chrome/browser/smart_card/smart_card_permission_context_unittest.cc b/chrome/browser/smart_card/smart_card_permission_context_unittest.cc new file mode 100644 index 0000000..d92977c --- /dev/null +++ b/chrome/browser/smart_card/smart_card_permission_context_unittest.cc
@@ -0,0 +1,281 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/smart_card/smart_card_permission_context.h" + +#include "chrome/browser/content_settings/host_content_settings_map_factory.h" +#include "chrome/browser/permissions/one_time_permissions_tracker.h" +#include "chrome/browser/permissions/one_time_permissions_tracker_factory.h" +#include "chrome/browser/smart_card/smart_card_reader_tracker.h" +#include "chrome/browser/smart_card/smart_card_reader_tracker_factory.h" +#include "chrome/test/base/testing_profile.h" +#include "components/content_settings/core/browser/host_content_settings_map.h" +#include "components/content_settings/core/common/content_settings_types.h" +#include "content/public/test/browser_task_environment.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" + +using testing::InSequence; +using testing::StrictMock; + +namespace { + +constexpr char kDummyReader[] = "dummy reader"; + +class FakeOneTimePermissionsTracker : public OneTimePermissionsTracker { + public: + using OneTimePermissionsTracker::NotifyLastPageFromOriginClosed; +}; + +class FakeSmartCardReaderTracker : public SmartCardReaderTracker { + public: + void Start(Observer* observer, StartCallback callback) override { + observers_.AddObserverIfMissing(observer); + + std::vector<ReaderInfo> reader_list; + reader_list.reserve(info_map_.size()); + + for (const auto& [_, info] : info_map_) { + reader_list.push_back(info); + } + + std::move(callback).Run(std::move(reader_list)); + } + + void Stop(Observer* observer) override { + observers_.RemoveObserver(observer); + } + + void AddReader(ReaderInfo info) { + CHECK(!info_map_.contains(info.name)); + std::string name = info.name; + info_map_.emplace(std::move(name), std::move(info)); + } + + void AddReaderWithCard(const std::string& name) { + ReaderInfo info; + info.name = name; + info.present = true; + info.event_count = 1; + AddReader(std::move(info)); + } + + void RemoveCard(const std::string& reader_name) { + auto it = info_map_.find(reader_name); + CHECK(it != info_map_.end()); + + ReaderInfo& info = it->second; + + CHECK(info.present); + CHECK(!info.empty); + + info.present = false; + info.empty = true; + ++info.event_count; + + observers_.NotifyReaderChanged(info); + } + + void RemoveReader(const std::string& reader_name) { + auto it = info_map_.find(reader_name); + CHECK(it != info_map_.end()); + + info_map_.erase(it); + + observers_.NotifyReaderRemoved(reader_name); + } + + bool HasObservers() const { return !observers_.empty(); } + + private: + ObserverList observers_; + std::map<std::string, ReaderInfo> info_map_; +}; + +} // namespace + +class SmartCardPermissionContextTest : public testing::Test { + protected: + void SetUp() override { + SmartCardReaderTrackerFactory::GetInstance()->SetTestingFactory( + &profile_, + base::BindRepeating( + &SmartCardPermissionContextTest::CreateFakeSmartCardReaderTracker, + base::Unretained(this))); + + OneTimePermissionsTrackerFactory::GetInstance()->SetTestingFactory( + &profile_, base::BindRepeating(&SmartCardPermissionContextTest:: + CreateFakeOneTimePermissionsTracker, + base::Unretained(this))); + } + + bool HasReaderPermission(SmartCardPermissionContext& context, + const url::Origin& origin, + const std::string& reader_name) { + return context.HasReaderPermission(origin, reader_name); + } + + void GrantEphemeralReaderPermission(SmartCardPermissionContext& context, + const url::Origin& origin, + const std::string& reader_name) { + return context.GrantEphemeralReaderPermission(origin, reader_name); + } + + void GrantPersistentReaderPermission(SmartCardPermissionContext& context, + const url::Origin& origin, + const std::string& reader_name) { + return context.GrantPersistentReaderPermission(origin, reader_name); + } + + std::unique_ptr<KeyedService> CreateFakeSmartCardReaderTracker( + content::BrowserContext* context) { + CHECK_EQ(context, &profile_); + + return std::make_unique<StrictMock<FakeSmartCardReaderTracker>>(); + } + + std::unique_ptr<KeyedService> CreateFakeOneTimePermissionsTracker( + content::BrowserContext* context) { + CHECK_EQ(context, &profile_); + + return std::make_unique<FakeOneTimePermissionsTracker>(); + } + + content::BrowserTaskEnvironment task_environment_; + TestingProfile profile_; +}; + +TEST_F(SmartCardPermissionContextTest, GrantEphemeralReaderPermission) { + auto& reader_tracker = static_cast<FakeSmartCardReaderTracker&>( + SmartCardReaderTrackerFactory::GetForProfile(profile_)); + + reader_tracker.AddReaderWithCard(kDummyReader); + + auto foo_origin = url::Origin::Create(GURL("https://foo.com/")); + + SmartCardPermissionContext permission_context(&profile_); + + EXPECT_FALSE( + HasReaderPermission(permission_context, foo_origin, kDummyReader)); + EXPECT_FALSE(reader_tracker.HasObservers()); + + GrantEphemeralReaderPermission(permission_context, foo_origin, kDummyReader); + + EXPECT_TRUE( + HasReaderPermission(permission_context, foo_origin, kDummyReader)); + EXPECT_TRUE(reader_tracker.HasObservers()); +} + +TEST_F(SmartCardPermissionContextTest, + RevokeEphemeralPermissionWhenCardRemoved) { + auto& reader_tracker = static_cast<FakeSmartCardReaderTracker&>( + SmartCardReaderTrackerFactory::GetForProfile(profile_)); + reader_tracker.AddReaderWithCard(kDummyReader); + + auto foo_origin = url::Origin::Create(GURL("https://foo.com/")); + + SmartCardPermissionContext permission_context(&profile_); + + GrantEphemeralReaderPermission(permission_context, foo_origin, kDummyReader); + + ASSERT_TRUE( + HasReaderPermission(permission_context, foo_origin, kDummyReader)); + ASSERT_TRUE(reader_tracker.HasObservers()); + + reader_tracker.RemoveCard(kDummyReader); + + // The ephemeral permission should have been revoked. + EXPECT_FALSE( + HasReaderPermission(permission_context, foo_origin, kDummyReader)); + EXPECT_FALSE(reader_tracker.HasObservers()); +} + +TEST_F(SmartCardPermissionContextTest, + RevokeEphemeralPermissionWhenReaderRemoved) { + auto& reader_tracker = static_cast<FakeSmartCardReaderTracker&>( + SmartCardReaderTrackerFactory::GetForProfile(profile_)); + reader_tracker.AddReaderWithCard(kDummyReader); + + auto foo_origin = url::Origin::Create(GURL("https://foo.com/")); + + SmartCardPermissionContext permission_context(&profile_); + + GrantEphemeralReaderPermission(permission_context, foo_origin, kDummyReader); + + ASSERT_TRUE( + HasReaderPermission(permission_context, foo_origin, kDummyReader)); + ASSERT_TRUE(reader_tracker.HasObservers()); + + reader_tracker.RemoveReader(kDummyReader); + + // The ephemeral permission should have been revoked. + EXPECT_FALSE( + HasReaderPermission(permission_context, foo_origin, kDummyReader)); + EXPECT_FALSE(reader_tracker.HasObservers()); +} + +TEST_F(SmartCardPermissionContextTest, RevokeEphemeralPermissionWhenAppClosed) { + auto* one_time_tracker = static_cast<FakeOneTimePermissionsTracker*>( + OneTimePermissionsTrackerFactory::GetForBrowserContext(&profile_)); + + auto foo_origin = url::Origin::Create(GURL("https://foo.com/")); + + SmartCardPermissionContext permission_context(&profile_); + + GrantEphemeralReaderPermission(permission_context, foo_origin, kDummyReader); + + ASSERT_TRUE( + HasReaderPermission(permission_context, foo_origin, kDummyReader)); + + one_time_tracker->NotifyLastPageFromOriginClosed(foo_origin); + + // The ephemeral permission should have been revoked. + EXPECT_FALSE( + HasReaderPermission(permission_context, foo_origin, kDummyReader)); +} + +// Covers callers of this method such as the PowerSuspendObserver. +TEST_F(SmartCardPermissionContextTest, RevokeEphemeralPermissions) { + auto foo_origin = url::Origin::Create(GURL("https://foo.com/")); + + SmartCardPermissionContext permission_context(&profile_); + + GrantEphemeralReaderPermission(permission_context, foo_origin, kDummyReader); + + ASSERT_TRUE( + HasReaderPermission(permission_context, foo_origin, kDummyReader)); + + permission_context.RevokeEphemeralPermissions(); + + EXPECT_FALSE( + HasReaderPermission(permission_context, foo_origin, kDummyReader)); +} + +TEST_F(SmartCardPermissionContextTest, Blocked) { + auto foo_origin = url::Origin::Create(GURL("https://foo.com/")); + + SmartCardPermissionContext permission_context(&profile_); + + GrantPersistentReaderPermission(permission_context, foo_origin, kDummyReader); + + EXPECT_TRUE( + HasReaderPermission(permission_context, foo_origin, kDummyReader)); + + auto* settings_map = HostContentSettingsMapFactory::GetForProfile(&profile_); + settings_map->SetContentSettingDefaultScope( + foo_origin.GetURL(), GURL(), ContentSettingsType::SMART_CARD_GUARD, + ContentSetting::CONTENT_SETTING_BLOCK); + + EXPECT_FALSE( + HasReaderPermission(permission_context, foo_origin, kDummyReader)); + + settings_map->SetContentSettingDefaultScope( + foo_origin.GetURL(), GURL(), ContentSettingsType::SMART_CARD_GUARD, + ContentSetting::CONTENT_SETTING_DEFAULT); + + EXPECT_TRUE( + HasReaderPermission(permission_context, foo_origin, kDummyReader)); + + permission_context.RevokeObjectPermissions(foo_origin); +}
diff --git a/chrome/browser/smart_card/smart_card_permission_uitest.cc b/chrome/browser/smart_card/smart_card_permission_uitest.cc new file mode 100644 index 0000000..e1fe8088 --- /dev/null +++ b/chrome/browser/smart_card/smart_card_permission_uitest.cc
@@ -0,0 +1,161 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/chrome_content_browser_client.h" +#include "chrome/browser/content_settings/host_content_settings_map_factory.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/smart_card/chromeos_smart_card_delegate.h" +#include "chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.h" +#include "chrome/test/interaction/interactive_browser_test.h" +#include "chrome/test/interaction/webcontents_interaction_test_util.h" +#include "components/content_settings/core/browser/host_content_settings_map.h" +#include "components/permissions/features.h" +#include "components/strings/grit/components_strings.h" +#include "content/public/common/content_client.h" +#include "content/public/test/browser_test.h" +#include "net/dns/mock_host_resolver.h" +#include "ui/base/l10n/l10n_util.h" + +namespace { +DEFINE_LOCAL_ELEMENT_IDENTIFIER_VALUE(kTestTab); +constexpr char kFooReader[] = "foo reader"; + +DEFINE_LOCAL_STATE_IDENTIFIER_VALUE( + ui::test::PollingStateObserver<std::optional<bool>>, + kPermissionDecision); + +class SmartCardPermissionUiTest : public InteractiveBrowserTest { + public: + void OnPermissionDecided(bool granted) { + CHECK_EQ(permission_decision_.has_value(), false); + permission_decision_ = granted; + } + + auto CheckReaderPermission(bool has_permission) { + return CheckResult( + [this]() -> bool { + return GetSmartCardDelegate()->HasReaderPermission(GetMainFrameHost(), + kFooReader); + }, + has_permission); + } + + auto RequestReaderPermission() { + return Do([this]() { + GetSmartCardDelegate()->RequestReaderPermission( + GetMainFrameHost(), kFooReader, + base::BindOnce(&SmartCardPermissionUiTest::OnPermissionDecided, + base::Unretained(this))); + }); + } + + auto BlockPermission(const GURL& origin_url) { + return Do([this, origin_url]() { + auto* settings_map = + HostContentSettingsMapFactory::GetForProfile(browser()->profile()); + settings_map->SetContentSettingDefaultScope( + origin_url, GURL(), ContentSettingsType::SMART_CARD_GUARD, + ContentSetting::CONTENT_SETTING_BLOCK); + }); + } + + auto PressButtonAndWaitResult(ui::ElementIdentifier button_id, bool granted) { + return Steps(PollState(kPermissionDecision, + [this]() { return permission_decision(); }), + FlushEvents(), PressButton(button_id), + Log("Wait for the prompt to be hidden."), + WaitForHide(PermissionPromptBubbleBaseView::kMainViewId), + Log("Wait for the permission decision."), + WaitForState(kPermissionDecision, granted)); + } + + std::optional<bool> permission_decision() { return permission_decision_; } + + content::SmartCardDelegate* GetSmartCardDelegate() { + return content::GetContentClientForTesting() + ->browser() + ->GetSmartCardDelegate(browser()->profile()); + } + + content::RenderFrameHost& GetMainFrameHost() { + return *browser() + ->tab_strip_model() + ->GetActiveWebContents() + ->GetPrimaryMainFrame(); + } + + private: + void SetUpOnMainThread() override { + InteractiveBrowserTest::SetUpOnMainThread(); + host_resolver()->AddRule("*", "127.0.0.1"); + ASSERT_TRUE(embedded_https_test_server().Start()); + } + + std::optional<bool> permission_decision_; + + base::test::ScopedFeatureList scoped_feature_list_{ + permissions::features::kOneTimePermission}; +}; + +IN_PROC_BROWSER_TEST_F(SmartCardPermissionUiTest, AllowOnce) { + RunTestSequence( + InstrumentTab(kTestTab), + NavigateWebContents(kTestTab, embedded_https_test_server().GetURL( + "a.com", "/simple.html")), + CheckReaderPermission(/*has_permission=*/false), + RequestReaderPermission(), + WaitForShow(PermissionPromptBubbleBaseView::kMainViewId), + PressButtonAndWaitResult( + PermissionPromptBubbleBaseView::kAllowOnceButtonElementId, + /*granted=*/true), + CheckReaderPermission(/*has_permission=*/true)); +} + +IN_PROC_BROWSER_TEST_F(SmartCardPermissionUiTest, AllowAlways) { + RunTestSequence( + InstrumentTab(kTestTab), + NavigateWebContents(kTestTab, embedded_https_test_server().GetURL( + "a.com", "/simple.html")), + CheckReaderPermission(/*has_permission=*/false), + RequestReaderPermission(), + WaitForShow(PermissionPromptBubbleBaseView::kMainViewId), + CheckViewProperty( + PermissionPromptBubbleBaseView::kAllowButtonElementId, + &views::LabelButton::GetText, + l10n_util::GetStringUTF16(IDS_SMART_CARD_PERMISSION_ALWAYS_ALLOW)), + PressButtonAndWaitResult( + PermissionPromptBubbleBaseView::kAllowButtonElementId, + /*granted=*/true), + CheckReaderPermission(/*has_permission=*/true)); +} + +IN_PROC_BROWSER_TEST_F(SmartCardPermissionUiTest, Deny) { + RunTestSequence( + InstrumentTab(kTestTab), + NavigateWebContents(kTestTab, embedded_https_test_server().GetURL( + "a.com", "/simple.html")), + CheckReaderPermission(/*has_permission=*/false), + RequestReaderPermission(), + WaitForShow(PermissionPromptBubbleBaseView::kMainViewId), + PressButtonAndWaitResult( + PermissionPromptBubbleBaseView::kBlockButtonElementId, + /*granted=*/false), + CheckReaderPermission(/*has_permission=*/false)); +} + +IN_PROC_BROWSER_TEST_F(SmartCardPermissionUiTest, Blocked) { + auto simple_url = + embedded_https_test_server().GetURL("a.com", "/simple.html"); + RunTestSequence(InstrumentTab(kTestTab), + NavigateWebContents(kTestTab, simple_url), + CheckReaderPermission(/*has_permission=*/false), + BlockPermission(simple_url), + PollState(kPermissionDecision, + [this]() { return permission_decision(); }), + RequestReaderPermission(), + WaitForState(kPermissionDecision, /*granted=*/false), + CheckReaderPermission(/*has_permission=*/false)); +} + +} // anonymous namespace
diff --git a/chrome/browser/smart_card/smart_card_reader_tracker.cc b/chrome/browser/smart_card/smart_card_reader_tracker.cc new file mode 100644 index 0000000..0278736 --- /dev/null +++ b/chrome/browser/smart_card/smart_card_reader_tracker.cc
@@ -0,0 +1,52 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/smart_card/smart_card_reader_tracker.h" + +SmartCardReaderTracker::ReaderInfo::ReaderInfo() = default; +SmartCardReaderTracker::ReaderInfo::ReaderInfo(ReaderInfo&& other) = default; +SmartCardReaderTracker::ReaderInfo::ReaderInfo(const ReaderInfo&) = default; +SmartCardReaderTracker::ReaderInfo::~ReaderInfo() = default; + +SmartCardReaderTracker::ReaderInfo& +SmartCardReaderTracker::ReaderInfo::operator=( + const SmartCardReaderTracker::ReaderInfo& other) = default; + +bool SmartCardReaderTracker::ReaderInfo::operator==(const ReaderInfo& b) const = + default; + +SmartCardReaderTracker::ObserverList::ObserverList() = default; +SmartCardReaderTracker::ObserverList::~ObserverList() = default; + +void SmartCardReaderTracker::ObserverList::AddObserverIfMissing( + Observer* observer) { + if (!observers_.HasObserver(observer)) { + observers_.AddObserver(observer); + } +} + +void SmartCardReaderTracker::ObserverList::RemoveObserver(Observer* observer) { + observers_.RemoveObserver(observer); +} + +void SmartCardReaderTracker::ObserverList::NotifyReaderChanged( + const ReaderInfo& reader_info) { + for (Observer& obs : observers_) { + obs.OnReaderChanged(reader_info); + } +} + +void SmartCardReaderTracker::ObserverList::NotifyReaderRemoved( + const std::string& reader_name) { + for (Observer& obs : observers_) { + obs.OnReaderRemoved(reader_name); + } +} + +void SmartCardReaderTracker::ObserverList::NotifyError( + device::mojom::SmartCardError error) { + for (Observer& obs : observers_) { + obs.OnError(error); + } +}
diff --git a/chrome/browser/smart_card/smart_card_reader_tracker.h b/chrome/browser/smart_card/smart_card_reader_tracker.h new file mode 100644 index 0000000..d916a15 --- /dev/null +++ b/chrome/browser/smart_card/smart_card_reader_tracker.h
@@ -0,0 +1,110 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_SMART_CARD_SMART_CARD_READER_TRACKER_H_ +#define CHROME_BROWSER_SMART_CARD_SMART_CARD_READER_TRACKER_H_ + +#include <optional> + +#include "base/observer_list.h" +#include "components/keyed_service/core/keyed_service.h" +#include "services/device/public/mojom/smart_card.mojom.h" + +// Keeps track of the current list of readers and their states. +// Notifies about changes via an observer pattern. +class SmartCardReaderTracker : public KeyedService { + public: + struct ReaderInfo { + ReaderInfo(); + ReaderInfo(ReaderInfo&& other); + ReaderInfo(const ReaderInfo&); + ~ReaderInfo(); + + ReaderInfo& operator=(const ReaderInfo& other); + bool operator==(const ReaderInfo& b) const; + + std::string name; + + // A subset of device::mojom::SmartCardReaderStateFlags + bool unavailable = false; + bool empty = false; + bool present = false; + bool exclusive = false; + bool inuse = false; + bool mute = false; + bool unpowered = false; + + // Number of card insertion and removal events that happened in this reader. + // Will always be zero if not supported by the platform. + uint16_t event_count = 0; + + std::vector<uint8_t> answer_to_reset; + }; + + // Observer class for changes to smart card readers. + // + // Note that there's no OnReaderAdded() for two reasons: + // 1 - The browser code does not need it. + // 2 - The underlying PC/SC feature needed to implement this is not present + // in all platforms (it's missing on MacOS). + class Observer : public base::CheckedObserver { + public: + // Called when a smart card reader is removed from the system. + virtual void OnReaderRemoved(const std::string& reader_name) {} + + // Called when the attributes (state and/or atr) of a smart card reader + // changes. + virtual void OnReaderChanged(const ReaderInfo& reader_info) {} + + // Called when a error preventing the monitoring of reader changes occurs. + // Can be retried with a new `Start` call. + virtual void OnError(device::mojom::SmartCardError error) {} + }; + + class ObserverList { + public: + ObserverList(); + ObserverList(const ObserverList&) = delete; + ObserverList& operator=(const ObserverList&) = delete; + ~ObserverList(); + + bool empty() const { return observers_.empty(); } + + void AddObserverIfMissing(Observer* observer); + void RemoveObserver(Observer* observer); + + void NotifyReaderChanged(const ReaderInfo& reader_info); + void NotifyReaderRemoved(const std::string& reader_name); + void NotifyError(device::mojom::SmartCardError error); + + private: + base::ObserverList<Observer> observers_; + }; + + // The parameter is a list of readers currently available. + // + // If a PC/SC error occurred, there will be no list. Ie, the optional will + // have no value. + // + // If the list is empty, tracking will also have stopped as there are no + // readers to track. + using StartCallback = + base::OnceCallback<void(std::optional<std::vector<ReaderInfo>>)>; + + SmartCardReaderTracker() = default; + ~SmartCardReaderTracker() override = default; + + // Returns the list of currently available smart card readers and (re)starts + // tracking them for changes or removals. + // + // It will stop tracking once there are no more observers, upon the first + // error encountered or if there are no readers in the system. + virtual void Start(Observer* observer, StartCallback) = 0; + + // Removes an observer and stops tracking smart card reader + // changes/additions/removals if there are no other observers left + virtual void Stop(Observer* observer) = 0; +}; + +#endif // CHROME_BROWSER_SMART_CARD_SMART_CARD_READER_TRACKER_H_
diff --git a/chrome/browser/smart_card/smart_card_reader_tracker_factory.cc b/chrome/browser/smart_card/smart_card_reader_tracker_factory.cc new file mode 100644 index 0000000..e49b047 --- /dev/null +++ b/chrome/browser/smart_card/smart_card_reader_tracker_factory.cc
@@ -0,0 +1,39 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/smart_card/smart_card_reader_tracker_factory.h" + +#include "base/check_deref.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/smart_card/get_smart_card_context_factory.h" +#include "chrome/browser/smart_card/smart_card_reader_tracker_impl.h" + +// static +SmartCardReaderTrackerFactory* SmartCardReaderTrackerFactory::GetInstance() { + static base::NoDestructor<SmartCardReaderTrackerFactory> factory; + return factory.get(); +} + +// static +SmartCardReaderTracker& SmartCardReaderTrackerFactory::GetForProfile( + Profile& profile) { + return CHECK_DEREF(static_cast<SmartCardReaderTracker*>( + GetInstance()->GetServiceForBrowserContext(&profile, /*create=*/true))); +} + +SmartCardReaderTrackerFactory::SmartCardReaderTrackerFactory() + : ProfileKeyedServiceFactory( + "SmartCardReaderTracker", + ProfileSelections::Builder() + .WithRegular(ProfileSelection::kOwnInstance) + .Build()) {} + +SmartCardReaderTrackerFactory::~SmartCardReaderTrackerFactory() = default; + +std::unique_ptr<KeyedService> +SmartCardReaderTrackerFactory::BuildServiceInstanceForBrowserContext( + content::BrowserContext* context) const { + return std::make_unique<SmartCardReaderTrackerImpl>( + GetSmartCardContextFactory(*context)); +}
diff --git a/chrome/browser/smart_card/smart_card_reader_tracker_factory.h b/chrome/browser/smart_card/smart_card_reader_tracker_factory.h new file mode 100644 index 0000000..f36e8c3 --- /dev/null +++ b/chrome/browser/smart_card/smart_card_reader_tracker_factory.h
@@ -0,0 +1,33 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_SMART_CARD_SMART_CARD_READER_TRACKER_FACTORY_H_ +#define CHROME_BROWSER_SMART_CARD_SMART_CARD_READER_TRACKER_FACTORY_H_ + +#include "base/no_destructor.h" +#include "chrome/browser/profiles/profile_keyed_service_factory.h" + +class SmartCardReaderTracker; + +class SmartCardReaderTrackerFactory : public ProfileKeyedServiceFactory { + public: + static SmartCardReaderTracker& GetForProfile(Profile& profile); + static SmartCardReaderTrackerFactory* GetInstance(); + + SmartCardReaderTrackerFactory(const SmartCardReaderTrackerFactory&) = delete; + SmartCardReaderTrackerFactory& operator=( + const SmartCardReaderTrackerFactory&) = delete; + + private: + friend base::NoDestructor<SmartCardReaderTrackerFactory>; + + SmartCardReaderTrackerFactory(); + ~SmartCardReaderTrackerFactory() override; + + // BrowserContextKeyedServiceFactory: + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( + content::BrowserContext* profile) const override; +}; + +#endif // CHROME_BROWSER_SMART_CARD_SMART_CARD_READER_TRACKER_FACTORY_H_
diff --git a/chrome/browser/smart_card/smart_card_reader_tracker_impl.cc b/chrome/browser/smart_card/smart_card_reader_tracker_impl.cc new file mode 100644 index 0000000..b983b5d --- /dev/null +++ b/chrome/browser/smart_card/smart_card_reader_tracker_impl.cc
@@ -0,0 +1,23 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/smart_card/smart_card_reader_tracker_impl.h" + +SmartCardReaderTrackerImpl::SmartCardReaderTrackerImpl( + mojo::PendingRemote<device::mojom::SmartCardContextFactory> context_factory) + : context_factory_(std::move(context_factory)) {} + +SmartCardReaderTrackerImpl::~SmartCardReaderTrackerImpl() = default; + +void SmartCardReaderTrackerImpl::Start(Observer* observer, + StartCallback callback) { + observer_list_.AddObserverIfMissing(observer); + // TODO(crbug.com/1464851): Implement. + std::move(callback).Run(std::nullopt); +} + +void SmartCardReaderTrackerImpl::Stop(Observer* observer) { + observer_list_.RemoveObserver(observer); + // TODO(crbug.com/1464851): Implement. +}
diff --git a/chrome/browser/smart_card/smart_card_reader_tracker_impl.h b/chrome/browser/smart_card/smart_card_reader_tracker_impl.h new file mode 100644 index 0000000..960d3ff --- /dev/null +++ b/chrome/browser/smart_card/smart_card_reader_tracker_impl.h
@@ -0,0 +1,36 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_SMART_CARD_SMART_CARD_READER_TRACKER_IMPL_H_ +#define CHROME_BROWSER_SMART_CARD_SMART_CARD_READER_TRACKER_IMPL_H_ + +#include "chrome/browser/smart_card/smart_card_reader_tracker.h" +#include "mojo/public/cpp/bindings/remote.h" +#include "services/device/public/mojom/smart_card.mojom.h" + +namespace base { +class TimeDelta; +} + +class SmartCardReaderTrackerImpl : public SmartCardReaderTracker { + public: + // Minimum time between consecutive Start() calls necessary + // to trigger a restart. + static const base::TimeDelta kMinRefreshInterval; + + explicit SmartCardReaderTrackerImpl( + mojo::PendingRemote<device::mojom::SmartCardContextFactory>); + + ~SmartCardReaderTrackerImpl() override; + + // `SmartCardReaderTracker` overrides: + void Start(Observer* observer, StartCallback) override; + void Stop(Observer* observer) override; + + private: + ObserverList observer_list_; + mojo::Remote<device::mojom::SmartCardContextFactory> context_factory_; +}; + +#endif // CHROME_BROWSER_SMART_CARD_SMART_CARD_READER_TRACKER_IMPL_H_
diff --git a/chrome/browser/touch_to_fill/autofill/android/touch_to_fill_credit_card_controller.cc b/chrome/browser/touch_to_fill/autofill/android/touch_to_fill_credit_card_controller.cc index 9b62955..91a5691 100644 --- a/chrome/browser/touch_to_fill/autofill/android/touch_to_fill_credit_card_controller.cc +++ b/chrome/browser/touch_to_fill/autofill/android/touch_to_fill_credit_card_controller.cc
@@ -57,6 +57,10 @@ } } +void TouchToFillCreditCardController::WebContentsDestroyed() { + Hide(); +} + void TouchToFillCreditCardController::DidFinishNavigation( content::NavigationHandle* navigation_handle) { if (!navigation_handle->HasCommitted() ||
diff --git a/chrome/browser/touch_to_fill/autofill/android/touch_to_fill_credit_card_controller.h b/chrome/browser/touch_to_fill/autofill/android/touch_to_fill_credit_card_controller.h index d27f5b6a..4ea92fde 100644 --- a/chrome/browser/touch_to_fill/autofill/android/touch_to_fill_credit_card_controller.h +++ b/chrome/browser/touch_to_fill/autofill/android/touch_to_fill_credit_card_controller.h
@@ -39,6 +39,7 @@ ~TouchToFillCreditCardController() override; // content::WebContentsObserver: + void WebContentsDestroyed() override; void DidFinishNavigation( content::NavigationHandle* navigation_handle) override;
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb index 0aa545fd..5501bcd 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Tik om in te vou</translation> <translation id="5964869237734432770">Stop prentbeskrywings</translation> <translation id="5966233851250124270">Chrome sal jou keuse onthou</translation> +<translation id="5977976211062815271">Op hierdie toestel</translation> <translation id="5979084224081478209">Gaan wagwoorde na</translation> <translation id="5995726099713306770">Laai bladsy weer af?</translation> <translation id="6000066717592683814">Hou Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb index b6f6886..e07bccb 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">ለመሰብሰብ መታ ያድርጉ</translation> <translation id="5964869237734432770">የምስል መግለጫዎችን አቁም</translation> <translation id="5966233851250124270">Chrome የእርስዎን ምርጫ ያስታውሳል</translation> +<translation id="5977976211062815271">በዚህ መሣሪያ ላይ</translation> <translation id="5979084224081478209">የይለፍ ቃላትዎን ይፈትሹ</translation> <translation id="5995726099713306770">ገፅ እንደገና ይውረድ?</translation> <translation id="6000066717592683814">Googleን አቆየው</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb index 0aee2310..6e239a6e 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
@@ -146,6 +146,7 @@ <translation id="1792959175193046959">تغيير موقع التنزيل التلقائي في أي وقت</translation> <translation id="1796666869097395659">تصغير علامة التبويب للرجوع إليها لاحقًا</translation> <translation id="1807246157184219062">فاتح</translation> +<translation id="1807709131360304325">فتح نافذة جديدة</translation> <translation id="1810845389119482123">إعداد المزامنة الأولية لم يكتمل</translation> <translation id="1812027881030482584">ليس بإمكان "<ph name="SITE_ETLD_PLUS_ONE" />" مواصلة استخدام "<ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" />".</translation> <translation id="1829244130665387512">البحث في الصفحة</translation> @@ -923,6 +924,7 @@ <translation id="5962718611393537961">النقر للتصغير</translation> <translation id="5964869237734432770">إيقاف عرض أوصاف الصور</translation> <translation id="5966233851250124270">سيتذكر متصفِّح Chrome اختيارك</translation> +<translation id="5977976211062815271">على هذا الجهاز</translation> <translation id="5979084224081478209">التحقق من كلمات المرور</translation> <translation id="5995726099713306770">هل تريد تنزيل الصفحة مرة أخرى؟</translation> <translation id="6000066717592683814">الاستمرار في استخدام محرك Google</translation> @@ -1330,6 +1332,7 @@ <translation id="7942131818088350342"><ph name="PRODUCT_NAME" /> قديم.</translation> <translation id="7944772052836377867">تحتاج ميزة المزامنة إلى التحقّق من هويتك</translation> <translation id="7947953824732555851">قبول وتسجيل الدخول</translation> +<translation id="7951102827450076904">الفتح التلقائي لملفات PDF التي يتم تنزيلها</translation> <translation id="7957413488482743710">تُخفي البطاقة الافتراضية بطاقتك الفعلية للمساعدة على حمايتك من عمليات الاحتيال المحتمَلة. <ph name="BEGIN_LINK1" />مزيد من المعلومات حول البطاقات الافتراضية<ph name="END_LINK1" /></translation> <translation id="7960972236129063347">زر الرجوع في تقرير "إحصاءات الصفحة"</translation> <translation id="7961926449547174351">لقد أوقفت إذن الوصول إلى "مساحة التخزين". يُرجى الانتقال إلى "الإعدادات" لتفعيله.</translation>
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 c1fb412c..bd38db9 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
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">সংকোচন কৰিবলৈ টিপক</translation> <translation id="5964869237734432770">প্ৰতিচ্ছবিৰ বিৱৰণ বন্ধ কৰক</translation> <translation id="5966233851250124270">Chromeএ আপোনাৰ পচন্দ মনত ৰাখিব</translation> +<translation id="5977976211062815271">এই ডিভাইচটোত</translation> <translation id="5979084224081478209">পাছৱৰ্ডবোৰ পৰীক্ষা কৰক</translation> <translation id="5995726099713306770">পৃষ্ঠাখন পুনৰ ডাউনল’ড কৰিবনে?</translation> <translation id="6000066717592683814">Google ৰাখক</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb index 577f6e5..8e6c98e 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">Yığcamlaşdırmaq üçün klikləyin</translation> <translation id="5964869237734432770">Şəkil təsvirini dayandırın</translation> <translation id="5966233851250124270">Chrome seçiminizi yadda saxlayacaq</translation> +<translation id="5977976211062815271">Bu cihazda</translation> <translation id="5979084224081478209">Parolları yoxlayın</translation> <translation id="5995726099713306770">Səhifə yenidən endirilsin?</translation> <translation id="6000066717592683814">Google'u saxlayın</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb index 97f1b30..759ebba 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">Каб згарнуць, націсніце тут</translation> <translation id="5964869237734432770">Не атр. апісанні відарысаў</translation> <translation id="5966233851250124270">Chrome запомніць ваш выбар</translation> +<translation id="5977976211062815271">На гэтай прыладзе</translation> <translation id="5979084224081478209">Праверыць паролі</translation> <translation id="5995726099713306770">Спампаваць старонку зноў?</translation> <translation id="6000066717592683814">Пакінуць Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb index 3e9c290a..2cfa8f7 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Докоснете за свиване</translation> <translation id="5964869237734432770">Спиране на описанията</translation> <translation id="5966233851250124270">Chrome ще запомни избора ви</translation> +<translation id="5977976211062815271">На това устройство</translation> <translation id="5979084224081478209">Проверка на паролите</translation> <translation id="5995726099713306770">Искате ли отново да изтеглите страницата?</translation> <translation id="6000066717592683814">Запазване на Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb index 418330ac..a5627a57 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">সঙ্কুচিত করতে আলতো চাপুন</translation> <translation id="5964869237734432770">ছবির বিবরণ বন্ধ করুন</translation> <translation id="5966233851250124270">Chrome আপনার পছন্দ মনে রাখবে</translation> +<translation id="5977976211062815271">এই ডিভাইসে</translation> <translation id="5979084224081478209">পাসওয়ার্ড চেক করুন</translation> <translation id="5995726099713306770">পৃষ্ঠাটি আবার ডাউনলোড করবেন?</translation> <translation id="6000066717592683814">Google কে রাখুন</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb index 9a322f1a..1ed9f35 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">Dodirnite da suzite</translation> <translation id="5964869237734432770">Zaustavi opise slika</translation> <translation id="5966233851250124270">Chrome će zapamtiti vaš izbor</translation> +<translation id="5977976211062815271">Na ovom uređaju</translation> <translation id="5979084224081478209">Provjeri lozinke</translation> <translation id="5995726099713306770">Ponovo preuzeti stranicu?</translation> <translation id="6000066717592683814">Zadrži Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb index edb050e..7811522b 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">Toca per replegar</translation> <translation id="5964869237734432770">Atura descripcions d'imatges</translation> <translation id="5966233851250124270">Chrome recordarà la teva elecció</translation> +<translation id="5977976211062815271">En aquest dispositiu</translation> <translation id="5979084224081478209">Comprova les contrasenyes</translation> <translation id="5995726099713306770">Vols tornar a baixar la pàgina?</translation> <translation id="6000066717592683814">Continua amb Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb index 477bc3d..8dacf5f5 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
@@ -146,6 +146,7 @@ <translation id="1792959175193046959">Výchozí umístění pro stažené soubory můžete kdykoliv změnit.</translation> <translation id="1796666869097395659">Minimalizovat kartu, abyste se k ní mohli vrátit později</translation> <translation id="1807246157184219062">Světlé</translation> +<translation id="1807709131360304325">Otevřít nové okno</translation> <translation id="1810845389119482123">Počáteční nastavení synchronizace nebylo dokončeno</translation> <translation id="1812027881030482584"><ph name="SITE_ETLD_PLUS_ONE" /> již nemůže nadále používat <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /></translation> <translation id="1829244130665387512">Najít na stránce</translation> @@ -921,6 +922,7 @@ <translation id="5962718611393537961">Klepnutím sbalíte</translation> <translation id="5964869237734432770">Nezobrazovat popisy obrázků</translation> <translation id="5966233851250124270">Chrome si váš výběr zapamatuje</translation> +<translation id="5977976211062815271">V tomto zařízení</translation> <translation id="5979084224081478209">Zkontrolovat hesla</translation> <translation id="5995726099713306770">Stáhnout stránku znovu?</translation> <translation id="6000066717592683814">Ponechat Google</translation> @@ -1327,6 +1329,7 @@ <translation id="7942131818088350342">Aplikace <ph name="PRODUCT_NAME" /> je zastaralá.</translation> <translation id="7944772052836377867">Synchronizace potřebuje ověřit vaši totožnost</translation> <translation id="7947953824732555851">Přijmout a přihlásit</translation> +<translation id="7951102827450076904">Stažené soubory PDF vždy otevřít</translation> <translation id="7957413488482743710">Virtuální karta skryje vaši skutečnou kartu a chrání vás před případným podvodem. <ph name="BEGIN_LINK1" />Další informace o virtuálních kartách<ph name="END_LINK1" /></translation> <translation id="7960972236129063347">Tlačítko Zpět ve statistikách stránky</translation> <translation id="7961926449547174351">Zakázali jste přístup k úložišti. Přejděte do Nastavení a povolte ho.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cy.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cy.xtb index f9b15cb..7ecc0e72 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cy.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cy.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Tapiwch i grebachu</translation> <translation id="5964869237734432770">Stopio disgrifio lluniau</translation> <translation id="5966233851250124270">Bydd Chrome yn cofio eich dewis</translation> +<translation id="5977976211062815271">Ar y ddyfais hon</translation> <translation id="5979084224081478209">Gwirio cyfrineiriau</translation> <translation id="5995726099713306770">Lawrlwytho'r dudalen eto?</translation> <translation id="6000066717592683814">Cadw Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb index 0e5cff9..4a6cdf707 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Tryk for at skjule</translation> <translation id="5964869237734432770">Stop billedbeskrivelser</translation> <translation id="5966233851250124270">Chrome husker dit valg</translation> +<translation id="5977976211062815271">På denne enhed</translation> <translation id="5979084224081478209">Tjek adgangskoder</translation> <translation id="5995726099713306770">Vil du downloade siden igen?</translation> <translation id="6000066717592683814">Behold Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb index 53c91667..e9f5fba 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">Zum Minimieren tippen</translation> <translation id="5964869237734432770">Bildbeschreibungen beenden</translation> <translation id="5966233851250124270">Chrome speichert deine Auswahl</translation> +<translation id="5977976211062815271">Auf diesem Gerät</translation> <translation id="5979084224081478209">Passwörter prüfen</translation> <translation id="5995726099713306770">Seite noch einmal herunterladen?</translation> <translation id="6000066717592683814">Google beibehalten</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb index ceb0117..d6a5883 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Πατήστε για σύμπτυξη</translation> <translation id="5964869237734432770">Διακοπή περιγραφών εικόνων</translation> <translation id="5966233851250124270">Το Chrome θα θυμάται την επιλογή σας</translation> +<translation id="5977976211062815271">Σε αυτήν τη συσκευή</translation> <translation id="5979084224081478209">Έλεγχος κωδικών πρόσβασης</translation> <translation id="5995726099713306770">Εκ νέου λήψη της σελίδας;</translation> <translation id="6000066717592683814">Διατήρηση του Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb index c8f41934..7767b38 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
@@ -146,6 +146,7 @@ <translation id="1792959175193046959">Change the default download location at any time</translation> <translation id="1796666869097395659">Minimise tab to return to it later</translation> <translation id="1807246157184219062">Light</translation> +<translation id="1807709131360304325">Open a new window</translation> <translation id="1810845389119482123">Initial sync setup not finished</translation> <translation id="1812027881030482584"><ph name="SITE_ETLD_PLUS_ONE" /> can't continue using <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /></translation> <translation id="1829244130665387512">Find in page</translation> @@ -921,6 +922,7 @@ <translation id="5962718611393537961">Tap to collapse</translation> <translation id="5964869237734432770">Stop image descriptions</translation> <translation id="5966233851250124270">Chrome will remember your choice</translation> +<translation id="5977976211062815271">On this device</translation> <translation id="5979084224081478209">Check passwords</translation> <translation id="5995726099713306770">Download page again?</translation> <translation id="6000066717592683814">Keep Google</translation> @@ -1327,6 +1329,7 @@ <translation id="7942131818088350342"><ph name="PRODUCT_NAME" /> is out of date.</translation> <translation id="7944772052836377867">Sync needs to verify that it's you</translation> <translation id="7947953824732555851">Accept and sign in</translation> +<translation id="7951102827450076904">Always open downloaded PDFs</translation> <translation id="7957413488482743710">A virtual card hides your actual card to help protect you from potential fraud. <ph name="BEGIN_LINK1" />Learn more about virtual cards<ph name="END_LINK1" /></translation> <translation id="7960972236129063347">Page insights back button</translation> <translation id="7961926449547174351">You have disabled storage access. Please go to settings to enable it.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb index 4466fe3..540a7df 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Presiona para contraer</translation> <translation id="5964869237734432770">Detener descripciones de imágenes</translation> <translation id="5966233851250124270">Chrome recordará tu elección</translation> +<translation id="5977976211062815271">En este dispositivo</translation> <translation id="5979084224081478209">Revisar contraseñas</translation> <translation id="5995726099713306770">¿Quieres descargar la página de nuevo?</translation> <translation id="6000066717592683814">Seguir usando Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb index 55c6149..f0fad66ed 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Toca para ocultar</translation> <translation id="5964869237734432770">Detener descripciones de imágenes</translation> <translation id="5966233851250124270">Chrome recordará tu elección</translation> +<translation id="5977976211062815271">En este dispositivo</translation> <translation id="5979084224081478209">Comprobar contraseñas</translation> <translation id="5995726099713306770">¿Volver a descargar esta página?</translation> <translation id="6000066717592683814">Mantener Google como motor de búsqueda predeterminado</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb index 518c035..02f8b4b 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Ahendamiseks puudutage</translation> <translation id="5964869237734432770">Piltide kirjelduste peatam.</translation> <translation id="5966233851250124270">Chrome jätab teie valiku meelde</translation> +<translation id="5977976211062815271">Selles seadmes</translation> <translation id="5979084224081478209">Kontrolli paroole</translation> <translation id="5995726099713306770">Kas soovite lehe uuesti alla laadida?</translation> <translation id="6000066717592683814">Säilita Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb index dc42fb9..945830d 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Sakatu tolesteko</translation> <translation id="5964869237734432770">Gelditu irudi-deskribapenak</translation> <translation id="5966233851250124270">Chrome-k aukera gogoratuko du</translation> +<translation id="5977976211062815271">Gailu honetakoak</translation> <translation id="5979084224081478209">Egiaztatu pasahitzak</translation> <translation id="5995726099713306770">Berriro deskargatu nahi duzu orria?</translation> <translation id="6000066717592683814">Jarraitu Google erabiltzen</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb index 650e93f..43cd1a9 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">برای کوچک کردن ضربه بزنید</translation> <translation id="5964869237734432770">توقف توضیحات تصویر</translation> <translation id="5966233851250124270">Chrome انتخابتان را بهخاطر میسپارد</translation> +<translation id="5977976211062815271">در این دستگاه</translation> <translation id="5979084224081478209">بررسی گذرواژهها</translation> <translation id="5995726099713306770">صفحه دوباره بارگیری شود؟</translation> <translation id="6000066717592683814">حفظ Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb index 62182754..a51ca9c 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
@@ -146,6 +146,7 @@ <translation id="1792959175193046959">Muuta oletuslataussijaintia milloin tahansa</translation> <translation id="1796666869097395659">Pienennä välilehti ja palaa siihen myöhemmin</translation> <translation id="1807246157184219062">Vaalea</translation> +<translation id="1807709131360304325">Avaa uusi ikkuna</translation> <translation id="1810845389119482123">Synkronoinnin alkumääritys ei valmis</translation> <translation id="1812027881030482584"><ph name="SITE_ETLD_PLUS_ONE" /> ei voi jatkaa tämän käyttöä: <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /></translation> <translation id="1829244130665387512">Haku sivulta</translation> @@ -921,6 +922,7 @@ <translation id="5962718611393537961">Tiivistä napauttamalla.</translation> <translation id="5964869237734432770">Lopeta kuvaselitykset</translation> <translation id="5966233851250124270">Chrome muistaa valintasi</translation> +<translation id="5977976211062815271">Tällä laitteella</translation> <translation id="5979084224081478209">Tarkista salasanat</translation> <translation id="5995726099713306770">Ladataanko sivu uudelleen?</translation> <translation id="6000066717592683814">Käytä Googlea</translation> @@ -1327,6 +1329,7 @@ <translation id="7942131818088350342"><ph name="PRODUCT_NAME" /> on vanhentunut.</translation> <translation id="7944772052836377867">Synkronoinnin on vahvistettava henkilöllisyytesi</translation> <translation id="7947953824732555851">Hyväksy ja kirjaudu sisään</translation> +<translation id="7951102827450076904">Avaa ladatut PDF-tiedostot aina</translation> <translation id="7957413488482743710">Virtuaalinen kortti piilottaa käyttämäsi kortin ja saat paremman suojauksen mahdollisia petoksia vastaan. <ph name="BEGIN_LINK1" />Lue lisää virtuaalisista korteista<ph name="END_LINK1" /></translation> <translation id="7960972236129063347">Sivun tietojen takaisin-painike</translation> <translation id="7961926449547174351">Olet estänyt pääsyn tallennustilaan. Salli se asetuksista.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb index cbd1783b..6625b29 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">I-tap upang i-collapse</translation> <translation id="5964869237734432770">Ihinto ang desc ng larawan</translation> <translation id="5966233851250124270">Matatandaan ng Chrome ang iyong napili</translation> +<translation id="5977976211062815271">Sa device na ito</translation> <translation id="5979084224081478209">Suriin ang mga password</translation> <translation id="5995726099713306770">I-download ulit ang page?</translation> <translation id="6000066717592683814">Panatilihin ang Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb index 7b53428..db9c431d 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Toucher pour réduire</translation> <translation id="5964869237734432770">Arrêter les descriptions</translation> <translation id="5966233851250124270">Chrome se souviendra de votre choix</translation> +<translation id="5977976211062815271">Sur cet appareil</translation> <translation id="5979084224081478209">Vérifier les mots de passe</translation> <translation id="5995726099713306770">Télécharger la page de nouveau?</translation> <translation id="6000066717592683814">Conserver Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb index 1310fd2..c4a8a01 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Appuyer pour réduire</translation> <translation id="5964869237734432770">Arrêter descriptions images</translation> <translation id="5966233851250124270">Chrome retiendra votre choix</translation> +<translation id="5977976211062815271">Sur cet appareil</translation> <translation id="5979084224081478209">Vérifier les mots de passe</translation> <translation id="5995726099713306770">Retélécharger la page ?</translation> <translation id="6000066717592683814">Conserver Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb index ecd4098..f877cb9 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Toca para contraer</translation> <translation id="5964869237734432770">Descricións de imaxes: non</translation> <translation id="5966233851250124270">Chrome lembrará a túa elección</translation> +<translation id="5977976211062815271">Neste dispositivo</translation> <translation id="5979084224081478209">Comprobar contrasinais</translation> <translation id="5995726099713306770">Queres descargar esta páxina de novo?</translation> <translation id="6000066717592683814">Manter Google</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 899a3e0..18ef633 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
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">સંકુચિત કરવા માટે ટૅપ કરો</translation> <translation id="5964869237734432770">છબીના વર્ણનો મેળવવાનું બંધ કરો</translation> <translation id="5966233851250124270">Chrome તમારી પસંદગી યાદ રાખશે</translation> +<translation id="5977976211062815271">આ ડિવાઇસ પર</translation> <translation id="5979084224081478209">પાસવર્ડ ચેક કરો</translation> <translation id="5995726099713306770">શું આ પેજ ફરીથી ડાઉનલોડ કરીએ?</translation> <translation id="6000066717592683814">Google રાખો</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb index 7b59396..640e40df 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">छोटा करने के लिए टैप करें</translation> <translation id="5964869237734432770">इमेज की जानकारी पाना बंद करें</translation> <translation id="5966233851250124270">Chrome आपकी पसंद याद रखेगा</translation> +<translation id="5977976211062815271">इस डिवाइस पर</translation> <translation id="5979084224081478209">पासवर्ड जांचें</translation> <translation id="5995726099713306770">क्या पेज को फिर से डाउनलोड करना है?</translation> <translation id="6000066717592683814">Google को डिफ़ॉल्ट बनाए रखें</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb index f2ba039..c9c8e31 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
@@ -608,7 +608,7 @@ <translation id="4378154925671717803">Telefon</translation> <translation id="4380055775103003110">Ako se taj problem nastavi pojavljivati, možete isprobati nove načine da biste nastavili na <ph name="SITE_ETLD_PLUS_ONE" />.</translation> <translation id="4384468725000734951">Za pretraživanje se upotrebljava Sogou</translation> -<translation id="4387647248986092471">Postavi zaključavanje profila automobila</translation> +<translation id="4387647248986092471">Postavite zaključavanje profila automobila</translation> <translation id="4402611456429872546"><ph name="LANG" /> – preuzimanje…</translation> <translation id="4404568932422911380">Bez oznaka</translation> <translation id="4405224443901389797">Premjesti u…</translation> @@ -922,6 +922,7 @@ <translation id="5962718611393537961">Dodirnite da biste saželi</translation> <translation id="5964869237734432770">Zaustavite opise slike</translation> <translation id="5966233851250124270">Chrome će zapamtiti vaš odabir</translation> +<translation id="5977976211062815271">Na ovom uređaju</translation> <translation id="5979084224081478209">Provjeri zaporke</translation> <translation id="5995726099713306770">Ponovo preuzeti stranicu?</translation> <translation id="6000066717592683814">Zadrži Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb index 2ffd257..a2e75f8 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Koppintson az összecsukáshoz</translation> <translation id="5964869237734432770">Képleírások leállítása</translation> <translation id="5966233851250124270">A Chrome megjegyzi a választását</translation> +<translation id="5977976211062815271">Ezen az eszközön</translation> <translation id="5979084224081478209">Jelszavak ellenőrzése</translation> <translation id="5995726099713306770">Ismét letölti az oldalt?</translation> <translation id="6000066717592683814">A Google megtartása</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb index 7bbc3db..b8a973cc 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Հպեք՝ կոծկելու համար</translation> <translation id="5964869237734432770">Չստանալ նկարագրություններ</translation> <translation id="5966233851250124270">Chrome-ը կհիշի ձեր ընտրությունը</translation> +<translation id="5977976211062815271">Այս սարքում</translation> <translation id="5979084224081478209">Ստուգել գաղտնաբառերը</translation> <translation id="5995726099713306770">Նորից ներբեռնե՞լ էջը</translation> <translation id="6000066717592683814">Օգտագործել Google-ը</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb index 4a215ec..618df63 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Ketuk untuk menciutkan</translation> <translation id="5964869237734432770">Hentikan deskripsi gambar</translation> <translation id="5966233851250124270">Chrome akan mengingat pilihan Anda</translation> +<translation id="5977976211062815271">Di perangkat ini</translation> <translation id="5979084224081478209">Periksa sandi</translation> <translation id="5995726099713306770">Download halaman lagi?</translation> <translation id="6000066717592683814">Tetap menggunakan Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb index 226e7f7..6308acc 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Ýttu til að draga saman</translation> <translation id="5964869237734432770">Slökkva á myndlýsingum</translation> <translation id="5966233851250124270">Chrome man valið þitt</translation> +<translation id="5977976211062815271">Í þessu tæki</translation> <translation id="5979084224081478209">Yfirfara aðgangsorð</translation> <translation id="5995726099713306770">Sækja síðu aftur?</translation> <translation id="6000066717592683814">Nota Google áfram</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb index 00edfa3..e3843df 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Tocca per comprimere</translation> <translation id="5964869237734432770">Interrompi descr. immagini</translation> <translation id="5966233851250124270">Chrome memorizzerà la tua scelta</translation> +<translation id="5977976211062815271">Su questo dispositivo</translation> <translation id="5979084224081478209">Controlla password</translation> <translation id="5995726099713306770">Vuoi scaricare di nuovo la pagina?</translation> <translation id="6000066717592683814">Mantieni Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb index 9cd3425..5177fb0 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">יש להקיש כדי לכווץ</translation> <translation id="5964869237734432770">הפסקה של תיאורי התמונות</translation> <translation id="5966233851250124270">הבחירה שלך תישמר ב-Chrome</translation> +<translation id="5977976211062815271">במכשיר הזה</translation> <translation id="5979084224081478209">בדיקת הסיסמאות</translation> <translation id="5995726099713306770">להוריד שוב את הדף?</translation> <translation id="6000066717592683814">להמשיך להשתמש ב-Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb index 7030cd8..f177c1d 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
@@ -147,6 +147,7 @@ <translation id="1792959175193046959">デフォルトのダウンロード保存先はいつでも変更できます</translation> <translation id="1796666869097395659">後で戻るにはタブを最小化します</translation> <translation id="1807246157184219062">明</translation> +<translation id="1807709131360304325">新しいウィンドウを開く</translation> <translation id="1810845389119482123">最初の同期設定が終了していません</translation> <translation id="1812027881030482584"><ph name="SITE_ETLD_PLUS_ONE" /> は <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> の使用を続行できません</translation> <translation id="1829244130665387512">ページ内検索</translation> @@ -922,6 +923,7 @@ <translation id="5962718611393537961">タップして折りたたむ</translation> <translation id="5964869237734432770">画像の説明文の取得を停止する</translation> <translation id="5966233851250124270">この設定は Chrome に保存されます</translation> +<translation id="5977976211062815271">このデバイス</translation> <translation id="5979084224081478209">パスワードを確認</translation> <translation id="5995726099713306770">ページを再ダウンロードしますか?</translation> <translation id="6000066717592683814">Google のままにする</translation> @@ -1328,6 +1330,7 @@ <translation id="7942131818088350342"><ph name="PRODUCT_NAME" /> は最新ではありません。</translation> <translation id="7944772052836377867">同期するには本人確認が必要です</translation> <translation id="7947953824732555851">同意してログイン</translation> +<translation id="7951102827450076904">ダウンロードした PDF を常に開く</translation> <translation id="7957413488482743710">仮想カードを使用すると、実際のカードを非表示にして、不正行為から保護できます。<ph name="BEGIN_LINK1" />仮想カードの詳細<ph name="END_LINK1" /></translation> <translation id="7960972236129063347">ページの関連情報の [戻る] ボタン</translation> <translation id="7961926449547174351">ストレージへのアクセスは無効になっています。[設定] で有効にしてください。</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb index 0a7a998..be76c66 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">შეეხეთ ჩასაკეცად</translation> <translation id="5964869237734432770">სურათების აღწერის შეწყვეტა</translation> <translation id="5966233851250124270">Chrome დაიმახსოვრებს თქვენს არჩევანს</translation> +<translation id="5977976211062815271">ამ მოწყობილობაზე</translation> <translation id="5979084224081478209">პაროლების შემოწმება</translation> <translation id="5995726099713306770">გსურთ, ხელახლა ჩამოტვირთოთ გვერდი?</translation> <translation id="6000066717592683814">Google-ის შენარჩუნება</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb index 0a4af0b..2d49a4b7 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Жию үшін түртіңіз</translation> <translation id="5964869237734432770">Сурет сипаттамаларын алмау</translation> <translation id="5966233851250124270">Chrome таңдауыңызды есте сақтайды</translation> +<translation id="5977976211062815271">Осы құрылғыда</translation> <translation id="5979084224081478209">Құпия сөздерді тексеру</translation> <translation id="5995726099713306770">Бет қайта жүктеп алынсын ба?</translation> <translation id="6000066717592683814">Google қызметін әдепкісінше пайдалану</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb index ec74b44..e5aeca5 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">ចុចដើម្បីលាក់</translation> <translation id="5964869237734432770">ឈប់យកការពណ៌នាអំពីរូបភាព</translation> <translation id="5966233851250124270">Chrome នឹងចងចាំជម្រើសរបស់អ្នក</translation> +<translation id="5977976211062815271">នៅលើឧបករណ៍នេះ</translation> <translation id="5979084224081478209">ពិនិត្យពាក្យសម្ងាត់</translation> <translation id="5995726099713306770">ទាញយកទំព័រម្ដងទៀត?</translation> <translation id="6000066717592683814">រក្សា Google ដដែល</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb index d3db3b39..ebdf7da 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
@@ -146,6 +146,7 @@ <translation id="1792959175193046959">ಡಿಫಾಲ್ಟ್ ಡೌನ್ಲೋಡ್ ಸ್ಥಳವನ್ನು ಯಾವಾಗ ಬೇಕಾದರೂ ಬದಲಾಯಿಸಿ</translation> <translation id="1796666869097395659">ನಂತರ ಹಿಂತಿರುಗಲು ಟ್ಯಾಬ್ ಅನ್ನು ಮಿನಿಮೈಸ್ ಮಾಡಿ</translation> <translation id="1807246157184219062">ತಿಳಿ</translation> +<translation id="1807709131360304325">ಹೊಸ ವಿಂಡೋವನ್ನು ತೆರೆಯಿರಿ</translation> <translation id="1810845389119482123">ಆರಂಭಿಕ ಸಿಂಕ್ ಸೆಟಪ್ ಪೂರ್ಣಗೊಂಡಿಲ್ಲ</translation> <translation id="1812027881030482584"><ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> ಅನ್ನು ಬಳಸಿಕೊಂಡು <ph name="SITE_ETLD_PLUS_ONE" /> ಮುಂದುವರಿಯಲು ಸಾಧ್ಯವಿಲ್ಲ</translation> <translation id="1829244130665387512">ಪುಟದಲ್ಲಿ ಹುಡುಕಿ</translation> @@ -920,6 +921,7 @@ <translation id="5962718611393537961">ಕುಗ್ಗಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ</translation> <translation id="5964869237734432770">ಚಿತ್ರ ವಿವರಣೆಗಳನ್ನು ನಿಲ್ಲಿಸಿ</translation> <translation id="5966233851250124270">ನಿಮ್ಮ ಆಯ್ಕೆಯನ್ನು Chrome ನೆನಪಿಟ್ಟುಕೊಳ್ಳುತ್ತದೆ</translation> +<translation id="5977976211062815271">ಈ ಸಾಧನದಲ್ಲಿರುವವು</translation> <translation id="5979084224081478209">ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ</translation> <translation id="5995726099713306770">ಪುಟವನ್ನು ಪುನಃ ಡೌನ್ಲೋಡ್ ಮಾಡಬೇಕೆ?</translation> <translation id="6000066717592683814">Google ಇರಿಸಿಕೊಳ್ಳಿ</translation> @@ -1326,6 +1328,7 @@ <translation id="7942131818088350342"><ph name="PRODUCT_NAME" /> ನ ಅವಧಿ ಮುಗಿದಿದೆ.</translation> <translation id="7944772052836377867">ಇದು ನೀವೇ ಎಂದು ಪರಿಶೀಲಿಸಲು ಸಿಂಕ್ಗೆ ಅಗತ್ಯವಿದೆ</translation> <translation id="7947953824732555851">ಸಮ್ಮತಿಸಿ ಮತ್ತು ಸೈನ್ ಇನ್ ಮಾಡಿ</translation> +<translation id="7951102827450076904">ಡೌನ್ಲೋಡ್ ಮಾಡಿದ PDF ಗಳನ್ನು ಯಾವಾಗಲೂ ತೆರೆಯಿರಿ</translation> <translation id="7957413488482743710">ಸಂಭವನೀಯ ವಂಚನೆಯಿಂದ ನಿಮ್ಮನ್ನು ರಕ್ಷಿಸಲು ವರ್ಚುವಲ್ ಕಾರ್ಡ್ ನಿಮ್ಮ ನಿಜವಾದ ಕಾರ್ಡ್ ಅನ್ನು ಮರೆಮಾಡುತ್ತದೆ. <ph name="BEGIN_LINK1" />ವರ್ಚುವಲ್ ಕಾರ್ಡ್ಗಳ ಕುರಿತು ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK1" /></translation> <translation id="7960972236129063347">ಪುಟದ ಒಳನೋಟಗಳಿಗೆ ಹಿಂತಿರುಗುವ ಬಟನ್</translation> <translation id="7961926449547174351">ನೀವು ಸಂಗ್ರಹಣೆಯ ಪ್ರವೇಶವನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ್ದೀರಿ, ಅದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಸೆಟ್ಟಿಂಗ್ಗಳಿಗೆ ಹೋಗಿ.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb index 817218c..c5f8764 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
@@ -146,6 +146,7 @@ <translation id="1792959175193046959">언제든지 기본 다운로드 위치 변경 가능</translation> <translation id="1796666869097395659">나중에 다시 보려면 탭 최소화</translation> <translation id="1807246157184219062">밝게</translation> +<translation id="1807709131360304325">새 창 열기</translation> <translation id="1810845389119482123">초기 동기화 설정이 완료되지 않음</translation> <translation id="1812027881030482584"><ph name="SITE_ETLD_PLUS_ONE" />에서 ID 공급업체(<ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" />)를 계속 사용할 수 없음</translation> <translation id="1829244130665387512">페이지에서 찾기</translation> @@ -921,6 +922,7 @@ <translation id="5962718611393537961">탭하여 접기</translation> <translation id="5964869237734432770">이미지 설명 중지</translation> <translation id="5966233851250124270">선택사항이 Chrome에 저장됩니다</translation> +<translation id="5977976211062815271">이 기기에서</translation> <translation id="5979084224081478209">비밀번호 확인</translation> <translation id="5995726099713306770">페이지를 다시 다운로드하시겠습니까?</translation> <translation id="6000066717592683814">계속 Google 사용</translation> @@ -1327,6 +1329,7 @@ <translation id="7942131818088350342"><ph name="PRODUCT_NAME" />이(가) 이전 버전입니다.</translation> <translation id="7944772052836377867">동기화를 위해 본인 인증 필요</translation> <translation id="7947953824732555851">수락 및 로그인</translation> +<translation id="7951102827450076904">다운로드한 PDF 항상 열기</translation> <translation id="7957413488482743710">가상 카드는 실제 카드를 숨겨서 사기당할 위험을 줄여줍니다. <ph name="BEGIN_LINK1" />가상 카드 자세히 알아보기<ph name="END_LINK1" /></translation> <translation id="7960972236129063347">페이지 통계 뒤로 버튼</translation> <translation id="7961926449547174351">저장소 액세스 권한을 사용 중지했습니다. 설정으로 이동하여 사용 설정해 주세요.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb index 7098a9ab..97be7766 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Жыйыштыруу үчүн таптап коюңуз</translation> <translation id="5964869237734432770">Сүрөттөмөлөрдү албоо</translation> <translation id="5966233851250124270">Chrome тандооңузду эстеп калат</translation> +<translation id="5977976211062815271">Ушул түзмөктө</translation> <translation id="5979084224081478209">Сырсөздөрдү текшерүү</translation> <translation id="5995726099713306770">Барак кайрадан жүктөлүп алынсынбы?</translation> <translation id="6000066717592683814">Google калсын</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb index ea8a3de..efba4aa 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">ແຕະເພື່ອຫຍໍ້ລົງ</translation> <translation id="5964869237734432770">ຢຸດຄຳອະທິບາຍຮູບ</translation> <translation id="5966233851250124270">Chrome ຈະຈື່ຕົວເລືອກຂອງທ່ານ</translation> +<translation id="5977976211062815271">ໃນອຸປະກອນນີ້</translation> <translation id="5979084224081478209">ກວດເບິ່ງລະຫັດຜ່ານ</translation> <translation id="5995726099713306770">ດາວໂຫຼດໜ້າອີກເທື່ອໜຶ່ງບໍ່?</translation> <translation id="6000066717592683814">ດຳເນີນການໃຊ້ Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb index c3e6b75..0310ba3b 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">Palieskite ir sutraukite</translation> <translation id="5964869237734432770">Stabdyti vaizdų aprašus</translation> <translation id="5966233851250124270">„Chrome“ prisimins jūsų pasirinkimą</translation> +<translation id="5977976211062815271">Šiame įrenginyje</translation> <translation id="5979084224081478209">Patikrinti slaptažodžius</translation> <translation id="5995726099713306770">Atsisiųsti puslapį dar kartą?</translation> <translation id="6000066717592683814">Palikti „Google“</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb index e8b11b5..5994bdf 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Pieskarties, lai sakļautu</translation> <translation id="5964869237734432770">Atspējot attēlu aprakstus</translation> <translation id="5966233851250124270">Pārlūkā Chrome tiks saglabāta jūsu izvēle.</translation> +<translation id="5977976211062815271">Šajā ierīcē</translation> <translation id="5979084224081478209">Pārbaudīt paroles</translation> <translation id="5995726099713306770">Vai vēlaties vēlreiz lejupielādēt lapu?</translation> <translation id="6000066717592683814">Arī turpmāk izmantot Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb index 5121fbe..ae76e85 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Допрете за да се собере</translation> <translation id="5964869237734432770">Сопри описи на слики</translation> <translation id="5966233851250124270">Chrome ќе го запомни вашиот избор</translation> +<translation id="5977976211062815271">На уредов</translation> <translation id="5979084224081478209">Провери ги лозинките</translation> <translation id="5995726099713306770">Да се преземе страницата повторно?</translation> <translation id="6000066717592683814">Задржи го Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb index 126ce1d..67b7186 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">ചുരുക്കാൻ ടാപ്പ് ചെയ്യുക</translation> <translation id="5964869237734432770">ചിത്ര വിവരണങ്ങൾ നിർത്തുക</translation> <translation id="5966233851250124270">Chrome നിങ്ങളുടെ ചോയ്സ് ഓർമ്മിക്കും</translation> +<translation id="5977976211062815271">ഈ ഉപകരണത്തിലേത്</translation> <translation id="5979084224081478209">പാസ്വേഡ് പരിശോധിക്കൂ</translation> <translation id="5995726099713306770">പേജ് വീണ്ടും ഡൗൺലോഡ് ചെയ്യണോ?</translation> <translation id="6000066717592683814">Google ഉപയോഗിക്കുക</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb index 9c517d8..f3c1528 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Буулгахын тулд товших</translation> <translation id="5964869237734432770">Зургийн тайлбарыг зогсоох</translation> <translation id="5966233851250124270">Chrome таны сонголтыг санана</translation> +<translation id="5977976211062815271">Энэ төхөөрөмж дээр</translation> <translation id="5979084224081478209">Нууц үгийг шалгах</translation> <translation id="5995726099713306770">Хуудсыг дахин татах уу?</translation> <translation id="6000066717592683814">Google хэвээр байлгах</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 a80868b..2000fd4 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
@@ -146,6 +146,7 @@ <translation id="1792959175193046959">डीफॉल्ट डाउनलोडचे स्थान केव्हाही बदला</translation> <translation id="1796666869097395659">त्यावर नंतर परत येण्यासाठी टॅब मिनिमाइझ करा</translation> <translation id="1807246157184219062">फिकट</translation> +<translation id="1807709131360304325">नवीन विंडो उघडा</translation> <translation id="1810845389119482123">सुरुवातीचे सिंक सेट करणे पूर्ण झाले नाही</translation> <translation id="1812027881030482584"><ph name="SITE_ETLD_PLUS_ONE" /> ला <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> वापरत राहता येणार नाही</translation> <translation id="1829244130665387512">या पृष्ठामध्ये शोधा</translation> @@ -921,6 +922,7 @@ <translation id="5962718611393537961">संकुचित करण्यासाठी टॅप करा</translation> <translation id="5964869237734432770">इमेजची वर्णने थांबवा</translation> <translation id="5966233851250124270">Chrome तुमची निवड लक्षात ठेवेल</translation> +<translation id="5977976211062815271">या डिव्हाइसवरील</translation> <translation id="5979084224081478209">पासवर्ड तपासा</translation> <translation id="5995726099713306770">पेज पुन्हा डाउनलोड करायचे आहे का?</translation> <translation id="6000066717592683814">Google ठेवा</translation> @@ -1327,6 +1329,7 @@ <translation id="7942131818088350342"><ph name="PRODUCT_NAME" /> कालबाह्य झाले आहे.</translation> <translation id="7944772052836377867">सिंकला हे तुम्हीच आहात याची पडताळणी करायची आहे</translation> <translation id="7947953824732555851">स्वीकार करा आणि साइन इन करा</translation> +<translation id="7951102827450076904">डाउनलोड केलेल्या PDFs नेहमी उघडा</translation> <translation id="7957413488482743710">संभाव्य फसवणुकीपासून तुमचे संरक्षण करण्यात मदत करण्यासाठी, व्हर्च्युअल कार्ड तुमचे मूळ कार्ड लपवते. <ph name="BEGIN_LINK1" />व्हर्च्युअल कार्डबद्दल अधिक जाणून घ्या<ph name="END_LINK1" /></translation> <translation id="7960972236129063347">पेज इनसाइट मागे जा बटण</translation> <translation id="7961926449547174351">तुम्ही स्टोरेज चा ॲक्सेस बंद केला आहे, तो सुरू करण्यासाठी कृपया सेटिंग्ज मध्ये जा.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb index 6dfea3ec..b75752f 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">Ketik untuk runtuhkan</translation> <translation id="5964869237734432770">Hentikan perihalan imej</translation> <translation id="5966233851250124270">Chrome akan mengingati pilihan anda</translation> +<translation id="5977976211062815271">Pada peranti ini</translation> <translation id="5979084224081478209">Semak kata laluan</translation> <translation id="5995726099713306770">Muat turun halaman sekali lagi?</translation> <translation id="6000066717592683814">Kekalkan Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb index e66b8d3..4363c89 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">လျှော့ပြရန် တို့ပါ</translation> <translation id="5964869237734432770">ပုံရှင်းလင်းချက်များ ရပ်ရန်</translation> <translation id="5966233851250124270">သင့်ရွေးချယ်မှုကို Chrome က မှတ်ထားပါမည်</translation> +<translation id="5977976211062815271">ဤစက်ပစ္စည်းပေါ်တွင်-</translation> <translation id="5979084224081478209">စကားဝှက်များ စစ်ဆေးရန်</translation> <translation id="5995726099713306770">စာမျက်နှာကို ထပ်မံဒေါင်းလုဒ်လုပ်လိုပါသလား။</translation> <translation id="6000066717592683814">Google ကို ဆက်သုံးရန်</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 a50994b..b5d8a22e 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
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">संक्षिप्त गर्न ट्याप गर्नुहोस्</translation> <translation id="5964869237734432770">फोटो विवरण पाउन छाड्नुहोस्</translation> <translation id="5966233851250124270">Chrome ले तपाईंले छनौट गरेको सेटिङ याद राख्ने छ</translation> +<translation id="5977976211062815271">यस यन्त्रमा</translation> <translation id="5979084224081478209">पासवर्डहरूको जाँच गर्नुहोस्</translation> <translation id="5995726099713306770">यो पेज फेरि डाउनलोड गर्ने हो?</translation> <translation id="6000066717592683814">Google लाई डिफल्ट खोज इञ्जिनका रूपमा कायम राख्नुहोस्</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb index 8f75a690..fe1863b 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">Tik om samen te vouwen</translation> <translation id="5964869237734432770">Afbeeldingsbeschrijvingen stoppen</translation> <translation id="5966233851250124270">Chrome onthoudt je keuze</translation> +<translation id="5977976211062815271">Op dit apparaat</translation> <translation id="5979084224081478209">Wachtwoorden controleren</translation> <translation id="5995726099713306770">Pagina opnieuw downloaden?</translation> <translation id="6000066717592683814">Google blijven gebruiken</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb index aefd6ac3..ed40134 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">Trykk for å skjule</translation> <translation id="5964869237734432770">Stopp bildebeskrivelser</translation> <translation id="5966233851250124270">Chrome husker valget ditt</translation> +<translation id="5977976211062815271">På denne enheten</translation> <translation id="5979084224081478209">Kontroller passordene</translation> <translation id="5995726099713306770">Vil du laste ned siden på nytt?</translation> <translation id="6000066717592683814">Behold Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb index d3c98163..2aab8b4 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">ସଙ୍କୁଚିତ କରିବା ପାଇଁ ଟାପ୍ କରନ୍ତୁ</translation> <translation id="5964869237734432770">ଛବିର ବର୍ଣ୍ଣନା ବନ୍ଦ କରନ୍ତୁ</translation> <translation id="5966233851250124270">Chrome ଆପଣଙ୍କ ପସନ୍ଦକୁ ମନେ ରଖିବ</translation> +<translation id="5977976211062815271">ଏହି ଡିଭାଇସ୍ରେ</translation> <translation id="5979084224081478209">ପାସ୍ୱାର୍ଡଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରନ୍ତୁ</translation> <translation id="5995726099713306770">ପୃଷ୍ଠାକୁ ପୁଣି ଡାଉନଲୋଡ୍ କରିବେ କି?</translation> <translation id="6000066717592683814">Googleକୁ ଡିଫଲ୍ଟ ଭାବେ ରଖନ୍ତୁ</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 46ecc38f..c07aeefb 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
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">ਸਮੇਟਣ ਲਈ ਟੈਪ ਕਰੋ</translation> <translation id="5964869237734432770">ਚਿੱਤਰ ਦੇ ਵਰਣਨ ਬੰਦ ਕਰੋ</translation> <translation id="5966233851250124270">Chrome ਤੁਹਾਡੀ ਚੋਣ ਨੂੰ ਯਾਦ ਰੱਖੇਗਾ</translation> +<translation id="5977976211062815271">ਇਸ ਡੀਵਾਈਸ 'ਤੇ</translation> <translation id="5979084224081478209">ਪਾਸਵਰਡਾਂ ਦੀ ਜਾਂਚ ਕਰੋ</translation> <translation id="5995726099713306770">ਕੀ ਪੰਨਾ ਦੁਬਾਰਾ ਡਾਊਨਲੋਡ ਕਰਨਾ ਹੈ?</translation> <translation id="6000066717592683814">Google ਰੱਖੋ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb index 51db75d..c1003bf2 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">Kliknij, by zwinąć</translation> <translation id="5964869237734432770">Wstrzymaj opisy obrazów</translation> <translation id="5966233851250124270">Chrome zapamięta Twój wybór</translation> +<translation id="5977976211062815271">Na tym urządzeniu</translation> <translation id="5979084224081478209">Sprawdź hasła</translation> <translation id="5995726099713306770">Pobrać stronę ponownie?</translation> <translation id="6000066717592683814">Zachowaj Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb index 144bc31..b18a22b 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
@@ -923,6 +923,7 @@ <translation id="5962718611393537961">Toque para recolher</translation> <translation id="5964869237734432770">Parar descrição de imagens</translation> <translation id="5966233851250124270">O Chrome vai lembrar sua escolha</translation> +<translation id="5977976211062815271">Neste dispositivo</translation> <translation id="5979084224081478209">Verificar senhas</translation> <translation id="5995726099713306770">Fazer o download da página novamente?</translation> <translation id="6000066717592683814">Continuar usando o Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb index e66c462..5806818 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">Toque para reduzir</translation> <translation id="5964869237734432770">Parar descrições de imagens</translation> <translation id="5966233851250124270">O Chrome vai memorizar a sua escolha</translation> +<translation id="5977976211062815271">Neste dispositivo</translation> <translation id="5979084224081478209">Rever palavras-passe</translation> <translation id="5995726099713306770">Quer transferir a página novamente?</translation> <translation id="6000066717592683814">Manter o Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb index dbd050a..4f8ee69 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
@@ -146,6 +146,7 @@ <translation id="1792959175193046959">Schimbă oricând locația de descărcare prestabilită</translation> <translation id="1796666869097395659">Minimizează fila pentru a reveni la ea mai târziu</translation> <translation id="1807246157184219062">Luminos</translation> +<translation id="1807709131360304325">Deschide o fereastră nouă</translation> <translation id="1810845389119482123">Configurarea inițială a sincronizării nu este finalizată</translation> <translation id="1812027881030482584"><ph name="SITE_ETLD_PLUS_ONE" /> nu poate folosi <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /></translation> <translation id="1829244130665387512">Găsește în pagină</translation> @@ -921,6 +922,7 @@ <translation id="5962718611393537961">Atinge pentru a restrânge</translation> <translation id="5964869237734432770">Nu genera descrieri imagine</translation> <translation id="5966233851250124270">Chrome îți va memora alegerea</translation> +<translation id="5977976211062815271">Pe acest dispozitiv</translation> <translation id="5979084224081478209">Verifică parolele</translation> <translation id="5995726099713306770">Descarci pagina din nou?</translation> <translation id="6000066717592683814">Păstrează Google</translation> @@ -1327,6 +1329,7 @@ <translation id="7942131818088350342"><ph name="PRODUCT_NAME" /> este învechit.</translation> <translation id="7944772052836377867">Sincronizarea trebuie să-ți confirme identitatea</translation> <translation id="7947953824732555851">Accept și conectare</translation> +<translation id="7951102827450076904">Deschide întotdeauna fișierele PDF descărcate</translation> <translation id="7957413488482743710">Cardul virtual îți ascunde cardul fizic pentru a te proteja împotriva fraudelor. <ph name="BEGIN_LINK1" />Află mai multe despre cardurile virtuale<ph name="END_LINK1" /></translation> <translation id="7960972236129063347">Butonul Înapoi din Statistici despre pagină</translation> <translation id="7961926449547174351">Ai dezactivat accesul la stocare. Accesează Setările pentru a-l activa.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb index f4a3f78b..83989db 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">Нажмите, чтобы свернуть</translation> <translation id="5964869237734432770">Не генерировать описания</translation> <translation id="5966233851250124270">Chrome запомнит ваш выбор</translation> +<translation id="5977976211062815271">На этом устройстве</translation> <translation id="5979084224081478209">Проверить пароли</translation> <translation id="5995726099713306770">Снова скачать страницу?</translation> <translation id="6000066717592683814">Использовать Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb index bde3a56..5bd95a5 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">හැකිළවීමට තට්ටු කරන්න</translation> <translation id="5964869237734432770">රූප විස්තර නවත්වන්න</translation> <translation id="5966233851250124270">Chrome ඔබේ තේරීම මතක තබා ගනී</translation> +<translation id="5977976211062815271">මෙම උපාංගය මත</translation> <translation id="5979084224081478209">මුරපද පරීක්ෂා කරන්න</translation> <translation id="5995726099713306770">නැවත පිටුව බාගන්නද?</translation> <translation id="6000066717592683814">Keep Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb index a2d93664..c3de66484 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Klepnutím zbaliť</translation> <translation id="5964869237734432770">Zastaviť popisy obrázkov</translation> <translation id="5966233851250124270">Chrome si vašu voľbu zapamätá</translation> +<translation id="5977976211062815271">V tomto zariadení</translation> <translation id="5979084224081478209">Skontrolovať heslá</translation> <translation id="5995726099713306770">Chcete stránku znova stiahnuť?</translation> <translation id="6000066717592683814">Ponechať Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb index 803ddbf5..32f4479 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
@@ -146,6 +146,7 @@ <translation id="1792959175193046959">Kadar koli lahko spremenite privzeto mesto za prenose</translation> <translation id="1796666869097395659">Minimizirajte zavihek, da se boste pozneje lahko vrnili nanj</translation> <translation id="1807246157184219062">Svetlo</translation> +<translation id="1807709131360304325">Odpiranje novega okna</translation> <translation id="1810845389119482123">Začetna nastavitev sinhronizacije se ni dokončala</translation> <translation id="1812027881030482584"><ph name="SITE_ETLD_PLUS_ONE" /> ne more nadaljevati z računom ponudnika identitete <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" />.</translation> <translation id="1829244130665387512">Poiščite na strani</translation> @@ -921,6 +922,7 @@ <translation id="5962718611393537961">Dotik za strnitev</translation> <translation id="5964869237734432770">Ustavi prenos opisov slik</translation> <translation id="5966233851250124270">Chrome si bo zapomnil vašo izbiro</translation> +<translation id="5977976211062815271">V tej napravi</translation> <translation id="5979084224081478209">Preveri gesla</translation> <translation id="5995726099713306770">Ali želite znova prenesti stran?</translation> <translation id="6000066717592683814">Ohrani Google</translation> @@ -1327,6 +1329,7 @@ <translation id="7942131818088350342">Izdelek <ph name="PRODUCT_NAME" /> je zastarel.</translation> <translation id="7944772052836377867">Sinhroniziranje mora potrditi, da ste to vi</translation> <translation id="7947953824732555851">Sprejem in prijava</translation> +<translation id="7951102827450076904">Vedno odpri prenesene datoteke PDF</translation> <translation id="7957413488482743710">Navidezna kartica skrije dejansko kartico in ste tako zaščiteni pred morebitno prevaro. <ph name="BEGIN_LINK1" />Preberite več o navideznih karticah<ph name="END_LINK1" /></translation> <translation id="7960972236129063347">Gumb za vrnitev na stran s podrobnimi podatki o strani</translation> <translation id="7961926449547174351">Onemogočili ste dostop do shrambe. Omogočite ga v nastavitvah.</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 76169fc0..aeba1ed 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
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Trokit për të palosur</translation> <translation id="5964869237734432770">Ndalo përshkrimet e imazheve</translation> <translation id="5966233851250124270">Chrome do ta kujtojë këtë zgjedhje</translation> +<translation id="5977976211062815271">Në këtë pajisje</translation> <translation id="5979084224081478209">Kontrollo fjalëkalimet</translation> <translation id="5995726099713306770">Të shkarkohet faqja sërish?</translation> <translation id="6000066717592683814">Mbaj Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb index edec0dd..d275b1f 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">Dodirnite da biste skupili</translation> <translation id="5964869237734432770">Zaustavi opise slika</translation> <translation id="5966233851250124270">Chrome će zapamtiti izbor</translation> +<translation id="5977976211062815271">Na ovom uređaju</translation> <translation id="5979084224081478209">Proveri lozinke</translation> <translation id="5995726099713306770">Želite da preuzmete stranicu ponovo?</translation> <translation id="6000066717592683814">Zadrži Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb index fd25ca59..e8c42b82 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">Додирните да бисте скупили</translation> <translation id="5964869237734432770">Заустави описе слика</translation> <translation id="5966233851250124270">Chrome ће запамтити избор</translation> +<translation id="5977976211062815271">На овом уређају</translation> <translation id="5979084224081478209">Провери лозинке</translation> <translation id="5995726099713306770">Желите да преузмете страницу поново?</translation> <translation id="6000066717592683814">Задржи Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb index ef7e68f8..f28f87b 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">Tryck här om du vill komprimera</translation> <translation id="5964869237734432770">Stoppa bildbeskrivning</translation> <translation id="5966233851250124270">Chrome kommer ihåg valet</translation> +<translation id="5977976211062815271">På den här enheten</translation> <translation id="5979084224081478209">Kontrollera lösenord</translation> <translation id="5995726099713306770">Vill du ladda ned sidan igen?</translation> <translation id="6000066717592683814">Behåll Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb index 3615319..da3ec3b 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Gusa ili ukunje</translation> <translation id="5964869237734432770">Komesha maelezo ya picha</translation> <translation id="5966233851250124270">Chrome itakumbuka chaguo lako</translation> +<translation id="5977976211062815271">Kwenye kifaa hiki</translation> <translation id="5979084224081478209">Kagua manenosiri</translation> <translation id="5995726099713306770">Je, ungependa kupakua ukurasa huu tena?</translation> <translation id="6000066717592683814">Endelea Kutumia Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb index 2cc62b3..37860a3 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">சுருக்க, தட்டவும்</translation> <translation id="5964869237734432770">விளக்கத்தை பெறுவதை நிறுத்து</translation> <translation id="5966233851250124270">உங்கள் விருப்பத்தேர்வை Chrome நினைவில் வைத்திருக்கும்</translation> +<translation id="5977976211062815271">இந்தச் சாதனத்தில்</translation> <translation id="5979084224081478209">கடவுச்சொற்களைச் சோதித்துப் பார்க்கவும்</translation> <translation id="5995726099713306770">பக்கத்தை மீண்டும் பதிவிறக்கவா?</translation> <translation id="6000066717592683814">Googleஐ இயல்பு இன்ஜினாக வைத்திரு</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 d6bcb8d..7c885dea 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
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">కుదించడానికి నొక్కండి</translation> <translation id="5964869237734432770">ఇమేజ్ వివరణలను ఆపివేయి</translation> <translation id="5966233851250124270">Chrome మీ ఎంపికను గుర్తుంచుకుంటుంది</translation> +<translation id="5977976211062815271">ఈ పరికరంలో</translation> <translation id="5979084224081478209">పాస్వర్డ్లను చెక్ చేయండి</translation> <translation id="5995726099713306770">పేజీని మళ్లీ డౌన్లోడ్ చేయాలనుకుంటున్నారా?</translation> <translation id="6000066717592683814">Googleని ఉంచు</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb index 0b04798..5a5abe6 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">แตะเพื่อยุบ</translation> <translation id="5964869237734432770">หยุดรับคำอธิบายรูปภาพ</translation> <translation id="5966233851250124270">Chrome จะจดจำตัวเลือกของคุณ</translation> +<translation id="5977976211062815271">ในอุปกรณ์นี้</translation> <translation id="5979084224081478209">ตรวจสอบรหัสผ่าน</translation> <translation id="5995726099713306770">ดาวน์โหลดหน้าเว็บอีกครั้งใช่ไหม</translation> <translation id="6000066717592683814">ใช้ Google ต่อ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb index e48af9b..5ce49827 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
@@ -921,6 +921,7 @@ <translation id="5962718611393537961">Daraltmak için dokunun</translation> <translation id="5964869237734432770">Resim açıklamasını durdur</translation> <translation id="5966233851250124270">Chrome seçiminizi hatırlar</translation> +<translation id="5977976211062815271">Bu cihazda</translation> <translation id="5979084224081478209">Şifreleri kontrol et</translation> <translation id="5995726099713306770">Sayfa tekrar indirilsin mi?</translation> <translation id="6000066717592683814">Google kalsın</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb index 8ad92688..6487df3 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
@@ -146,6 +146,7 @@ <translation id="1792959175193046959">Будь-коли змінюйте папку для завантажень за умовчанням</translation> <translation id="1796666869097395659">Згорнути вкладку, щоб повернутися на неї пізніше</translation> <translation id="1807246157184219062">Світла</translation> +<translation id="1807709131360304325">Відкрити нове вікно</translation> <translation id="1810845389119482123">Початкове налаштування синхронізації не завершено</translation> <translation id="1812027881030482584">Не вдається ввійти на сайті <ph name="SITE_ETLD_PLUS_ONE" /> за допомогою сервісу "<ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" />"</translation> <translation id="1829244130665387512">Знайти на сторінці</translation> @@ -921,6 +922,7 @@ <translation id="5962718611393537961">Торкніться, щоб згорнути</translation> <translation id="5964869237734432770">Не показувати описи</translation> <translation id="5966233851250124270">Chrome запам’ятає ваш вибір</translation> +<translation id="5977976211062815271">На цьому пристрої</translation> <translation id="5979084224081478209">Перевірити паролі</translation> <translation id="5995726099713306770">Завантажити сторінку знову?</translation> <translation id="6000066717592683814">Залишити Google</translation> @@ -1327,6 +1329,7 @@ <translation id="7942131818088350342">Застаріла версія <ph name="PRODUCT_NAME" />.</translation> <translation id="7944772052836377867">Для синхронізації потрібно підтвердити вашу особу</translation> <translation id="7947953824732555851">Прийняти й увійти</translation> +<translation id="7951102827450076904">Завжди відкривати завантажені файли PDF</translation> <translation id="7957413488482743710">Для захисту від потенційного шахрайства замість справжньої картки можна використовувати віртуальну. <ph name="BEGIN_LINK1" />Докладніше про віртуальні картки<ph name="END_LINK1" /></translation> <translation id="7960972236129063347">Кнопка "Назад" на сторінці зі статистикою</translation> <translation id="7961926449547174351">Ви вимкнули доступ до пам'яті. Відкрийте налаштування, щоб увімкнути його.</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 87155fc..1b918e9a 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
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">سکیڑنے کیلئے تھپتھپائیں</translation> <translation id="5964869237734432770">تصویری تفصیلات کو روکیں</translation> <translation id="5966233851250124270">Chrome آپ کے انتخاب کو یاد رکھے گا</translation> +<translation id="5977976211062815271">اس آلے پر</translation> <translation id="5979084224081478209">پاس ورڈز چیک کریں</translation> <translation id="5995726099713306770">صفحے کو دوبارہ لوڈ کریں؟</translation> <translation id="6000066717592683814">Google کو رکھیں</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb index a77dbe6..6d93979f 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">Bosib yig‘ish</translation> <translation id="5964869237734432770">Rasm tavsiflari yuklanmasin</translation> <translation id="5966233851250124270">Chrome tanlovingizni eslab qoladi</translation> +<translation id="5977976211062815271">Shu qurilmada</translation> <translation id="5979084224081478209">Parollarni tekshiring</translation> <translation id="5995726099713306770">Sahifa qayta yuklab olinsinmi?</translation> <translation id="6000066717592683814">Google qolaversin</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb index 26c1de29..3b3b383b 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">Nhấn để thu gọn</translation> <translation id="5964869237734432770">Dừng lấy nội dung mô tả hình ảnh</translation> <translation id="5966233851250124270">Chrome sẽ ghi nhớ lựa chọn của bạn</translation> +<translation id="5977976211062815271">Trên thiết bị này</translation> <translation id="5979084224081478209">Kiểm tra mật khẩu</translation> <translation id="5995726099713306770">Tải trang xuống lần nữa?</translation> <translation id="6000066717592683814">Giữ Google làm công cụ tìm kiếm mặc định</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb index 15ac6a5..004884c 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
@@ -146,6 +146,7 @@ <translation id="1792959175193046959">随时更改默认的下载内容保存位置</translation> <translation id="1796666869097395659">将标签页最小化以便稍后返回</translation> <translation id="1807246157184219062">浅色调</translation> +<translation id="1807709131360304325">打开新窗口</translation> <translation id="1810845389119482123">未完成初始同步设置</translation> <translation id="1812027881030482584"><ph name="SITE_ETLD_PLUS_ONE" /> 无法继续使用 <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /></translation> <translation id="1829244130665387512">在网页中查找</translation> @@ -921,6 +922,7 @@ <translation id="5962718611393537961">点按即可收起</translation> <translation id="5964869237734432770">停止获取图片说明</translation> <translation id="5966233851250124270">Chrome 会记住您的选择</translation> +<translation id="5977976211062815271">在这部设备上</translation> <translation id="5979084224081478209">检查密码</translation> <translation id="5995726099713306770">再次下载此页面?</translation> <translation id="6000066717592683814">继续使用 Google</translation> @@ -1327,6 +1329,7 @@ <translation id="7942131818088350342"><ph name="PRODUCT_NAME" /> 不是最新版本。</translation> <translation id="7944772052836377867">同步功能需要验证您的身份</translation> <translation id="7947953824732555851">接受并登录</translation> +<translation id="7951102827450076904">一律打开下载的 PDF</translation> <translation id="7957413488482743710">使用虚拟卡可隐藏您的实体卡信息,保护您免遭潜在欺诈活动的威胁。<ph name="BEGIN_LINK1" />详细了解虚拟卡<ph name="END_LINK1" /></translation> <translation id="7960972236129063347">网页数据洞见工作表中的返回按钮</translation> <translation id="7961926449547174351">您已停用存储空间的访问权限,请转到“设置”启用该访问权限。</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb index 791922a..38d3a69 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
@@ -146,6 +146,7 @@ <translation id="1792959175193046959">隨時變更預設的下載位置</translation> <translation id="1796666869097395659">將分頁縮到最小,稍後再返回查看</translation> <translation id="1807246157184219062">淺色</translation> +<translation id="1807709131360304325">開啟新視窗</translation> <translation id="1810845389119482123">未完成初始同步處理設定</translation> <translation id="1812027881030482584">無法在「<ph name="SITE_ETLD_PLUS_ONE" />」上繼續使用「<ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" />」</translation> <translation id="1829244130665387512">喺網頁度搵</translation> @@ -921,6 +922,7 @@ <translation id="5962718611393537961">輕按即可收合</translation> <translation id="5964869237734432770">停止取得圖片說明</translation> <translation id="5966233851250124270">Chrome 會記住您的選擇</translation> +<translation id="5977976211062815271">在此裝置上</translation> <translation id="5979084224081478209">檢查密碼</translation> <translation id="5995726099713306770">要再次下載頁面嗎?</translation> <translation id="6000066717592683814">繼續使用 Google</translation> @@ -1327,6 +1329,7 @@ <translation id="7942131818088350342"><ph name="PRODUCT_NAME" /> 版本過舊。</translation> <translation id="7944772052836377867">同步功能需要驗證您的身分</translation> <translation id="7947953824732555851">接受並登入</translation> +<translation id="7951102827450076904">一律開啟已下載的 PDF</translation> <translation id="7957413488482743710">虛擬卡會隱藏您的實體卡,保護您免受潛在欺詐行為的威脅。<ph name="BEGIN_LINK1" />進一步瞭解虛擬卡<ph name="END_LINK1" /></translation> <translation id="7960972236129063347">頁面分析資料的返回按鈕</translation> <translation id="7961926449547174351">您已停用儲存空間存取權,請前往「設定」頁面啟用該權限。</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb index 51e90f9c..e748fc9 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
@@ -146,6 +146,7 @@ <translation id="1792959175193046959">你隨時可以變更預設的下載位置</translation> <translation id="1796666869097395659">將分頁縮到最小,稍後再返回查看</translation> <translation id="1807246157184219062">淺色</translation> +<translation id="1807709131360304325">開啟新視窗</translation> <translation id="1810845389119482123">尚未完成初始同步處理設定</translation> <translation id="1812027881030482584">無法在「<ph name="SITE_ETLD_PLUS_ONE" />」上繼續使用「<ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" />」</translation> <translation id="1829244130665387512">在網頁中尋找</translation> @@ -921,6 +922,7 @@ <translation id="5962718611393537961">輕觸即可收合</translation> <translation id="5964869237734432770">停止取得圖片說明</translation> <translation id="5966233851250124270">Chrome 會記住你的選擇</translation> +<translation id="5977976211062815271">在這部裝置上</translation> <translation id="5979084224081478209">檢查密碼</translation> <translation id="5995726099713306770">要再次下載網頁嗎?</translation> <translation id="6000066717592683814">繼續使用 Google</translation> @@ -1327,6 +1329,7 @@ <translation id="7942131818088350342"><ph name="PRODUCT_NAME" /> 版本過舊。</translation> <translation id="7944772052836377867">同步功能需要驗證你的身分</translation> <translation id="7947953824732555851">接受並登入</translation> +<translation id="7951102827450076904">一律開啟下載好的 PDF</translation> <translation id="7957413488482743710">虛擬卡片可隱藏真正的卡片,協助防範潛在詐欺活動。<ph name="BEGIN_LINK1" />進一步瞭解虛擬卡片<ph name="END_LINK1" /></translation> <translation id="7960972236129063347">網頁洞察資訊頁面的返回按鈕</translation> <translation id="7961926449547174351">你已停用儲存空間存取權,請前往「設定」頁面啟用這項權限。</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb index 8965040..92b728f 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb
@@ -922,6 +922,7 @@ <translation id="5962718611393537961">Thepha ukuze ugoqe</translation> <translation id="5964869237734432770">Misa izincazelo zesithombe</translation> <translation id="5966233851250124270">I-Chrome izokhumbula ukukhetha kwakho</translation> +<translation id="5977976211062815271">Kule divayisi</translation> <translation id="5979084224081478209">Hlola amaphasiwedi</translation> <translation id="5995726099713306770">Dawuniloda futhi ikhasi?</translation> <translation id="6000066717592683814">Gcina i-Google</translation>
diff --git a/chrome/browser/ui/aura/accessibility/automation_manager_aura.cc b/chrome/browser/ui/aura/accessibility/automation_manager_aura.cc index 794e485..6a12561a 100644 --- a/chrome/browser/ui/aura/accessibility/automation_manager_aura.cc +++ b/chrome/browser/ui/aura/accessibility/automation_manager_aura.cc
@@ -163,8 +163,7 @@ Reset(true /* reset serializer */); } -void AutomationManagerAura::HandleEvent(ax::mojom::Event event_type, - bool from_user) { +void AutomationManagerAura::HandleEvent(ax::mojom::Event event_type) { if (!enabled_) return; @@ -173,8 +172,7 @@ if (!obj) return; - PostEvent(obj->GetUniqueId(), event_type, /*action_request_id=*/-1, - /*from_user=*/from_user); + PostEvent(obj->GetUniqueId(), event_type); } void AutomationManagerAura::HandleAlert(const std::string& text) { @@ -264,10 +262,9 @@ void AutomationManagerAura::PostEvent(int id, ax::mojom::Event event_type, - int action_request_id, - bool from_user) { - pending_events_.push_back({id, event_type, action_request_id, - currently_performing_action_, from_user}); + int action_request_id) { + pending_events_.push_back( + {id, event_type, action_request_id, currently_performing_action_}); if (processing_posted_) return; @@ -322,8 +319,6 @@ if (event_copy.currently_performing_action != ax::mojom::Action::kNone) { event.event_from = ax::mojom::EventFrom::kAction; event.event_from_action = event_copy.currently_performing_action; - } else if (event_copy.from_user) { - event.event_from = ax::mojom::EventFrom::kUser; } event.action_request_id = event_copy.action_request_id; events.push_back(std::move(event));
diff --git a/chrome/browser/ui/aura/accessibility/automation_manager_aura.h b/chrome/browser/ui/aura/accessibility/automation_manager_aura.h index 21b22ed..6011e8f 100644 --- a/chrome/browser/ui/aura/accessibility/automation_manager_aura.h +++ b/chrome/browser/ui/aura/accessibility/automation_manager_aura.h
@@ -56,7 +56,7 @@ void Disable(); // Handle an event fired upon the root view. - void HandleEvent(ax::mojom::Event event_type, bool from_user); + void HandleEvent(ax::mojom::Event event_type); // Handles a textual alert. void HandleAlert(const std::string& text); @@ -111,8 +111,7 @@ void PostEvent(int32_t id, ax::mojom::Event event_type, - int action_request_id = -1, - bool from_user = false); + int action_request_id = -1); void SendPendingEvents(); @@ -143,7 +142,6 @@ ax::mojom::Event event_type; int action_request_id; ax::mojom::Action currently_performing_action; - bool from_user; }; std::vector<Event> pending_events_;
diff --git a/chrome/browser/ui/aura/accessibility/automation_manager_aura_browsertest.cc b/chrome/browser/ui/aura/accessibility/automation_manager_aura_browsertest.cc index faa478a..57fa742 100644 --- a/chrome/browser/ui/aura/accessibility/automation_manager_aura_browsertest.cc +++ b/chrome/browser/ui/aura/accessibility/automation_manager_aura_browsertest.cc
@@ -661,7 +661,7 @@ AutomationManagerAura* manager = AutomationManagerAura::GetInstance(); // Call some methods while disabled, before the first enable. - manager->HandleEvent(ax::mojom::Event::kFocus, /*from_user=*/true); + manager->HandleEvent(ax::mojom::Event::kFocus); manager->HandleAlert("hello"); manager->PerformAction(ui::AXActionData()); manager->OnChildWindowRemoved(nullptr); @@ -671,12 +671,7 @@ manager->Disable(); // Make the same calls again. We should never crash. - manager->HandleEvent(ax::mojom::Event::kFocus, /*from_user=*/true); - manager->HandleAlert("hello"); - manager->PerformAction(ui::AXActionData()); - manager->OnChildWindowRemoved(nullptr); - - manager->HandleEvent(ax::mojom::Event::kMouseMoved, /*from_user=*/false); + manager->HandleEvent(ax::mojom::Event::kFocus); manager->HandleAlert("hello"); manager->PerformAction(ui::AXActionData()); manager->OnChildWindowRemoved(nullptr);
diff --git a/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc b/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc index 471b5a1..700c314 100644 --- a/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc +++ b/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc
@@ -100,8 +100,9 @@ return previous; } - if (previous) + if (previous) { previous->Hide(PopupHidingReason::kViewDestroyed); + } #if BUILDFLAG(IS_ANDROID) AutofillPopupControllerImpl* controller = new AutofillPopupControllerImpl( delegate, web_contents, container_view, element_bounds, text_direction, @@ -146,6 +147,26 @@ AutofillPopupControllerImpl::~AutofillPopupControllerImpl() = default; +void AutofillPopupControllerImpl::WebContentsDestroyed() { + Hide(PopupHidingReason::kTabGone); +} + +void AutofillPopupControllerImpl::OnWebContentsLostFocus( + content::RenderWidgetHost* render_widget_host) { + Hide(PopupHidingReason::kFocusChanged); +} + +void AutofillPopupControllerImpl::PrimaryMainFrameWasResized( + bool width_changed) { +#if BUILDFLAG(IS_ANDROID) + // Ignore virtual keyboard showing and hiding a strip of suggestions. + if (!width_changed) { + return; + } +#endif + Hide(PopupHidingReason::kWidgetChanged); +} + void AutofillPopupControllerImpl::RenderFrameDeleted( content::RenderFrameHost* rfh) { // If the popup menu has been triggered from within an iframe and that frame @@ -187,6 +208,13 @@ std::vector<Suggestion> suggestions, AutofillSuggestionTriggerSource trigger_source, AutoselectFirstSuggestion autoselect_first_suggestion) { + // Autofill popups should only be shown in focused windows because on Windows + // the popup may overlap the focused window (see crbug.com/1239760). + if (auto* rwhv = web_contents()->GetRenderWidgetHostView(); + !rwhv || !rwhv->HasFocus()) { + return; + } + if (IsMouseLocked()) { Hide(PopupHidingReason::kMouseLocked); return;
diff --git a/chrome/browser/ui/autofill/autofill_popup_controller_impl.h b/chrome/browser/ui/autofill/autofill_popup_controller_impl.h index 19a37fa6..101cd38 100644 --- a/chrome/browser/ui/autofill/autofill_popup_controller_impl.h +++ b/chrome/browser/ui/autofill/autofill_popup_controller_impl.h
@@ -208,6 +208,10 @@ private: // content::WebContentsObserver: + void WebContentsDestroyed() override; + void OnWebContentsLostFocus( + content::RenderWidgetHost* render_widget_host) override; + void PrimaryMainFrameWasResized(bool width_changed) override; void RenderFrameDeleted(content::RenderFrameHost* render_frame_host) override; void DidFinishNavigation( content::NavigationHandle* navigation_handle) override;
diff --git a/chrome/browser/ui/autofill/autofill_popup_controller_impl_unittest.cc b/chrome/browser/ui/autofill/autofill_popup_controller_impl_unittest.cc index 4b2adc9..e732e17 100644 --- a/chrome/browser/ui/autofill/autofill_popup_controller_impl_unittest.cc +++ b/chrome/browser/ui/autofill/autofill_popup_controller_impl_unittest.cc
@@ -399,6 +399,15 @@ #endif // BUILDFLAG(IS_ANDROID) } + void TearDown() override { + // Wait for the pending deletion of the controllers. Otherwise, the + // controllers are destroyed after the WebContents, and each of them + // receives a final Hide() call for which we'd need to add explicit + // expectations. + task_environment()->RunUntilIdle(); + ChromeRenderViewHostTestHarness::TearDown(); + } + content::RenderFrameHost* main_frame() { return web_contents()->GetPrimaryMainFrame(); } @@ -409,8 +418,7 @@ NiceMock<MockAutofillDriver>& driver( content::RenderFrameHost* rfh = nullptr) { - return *autofill_driver_injector_ - [rfh ? rfh : web_contents()->GetPrimaryMainFrame()]; + return *autofill_driver_injector_[rfh ? rfh : main_frame()]; } BrowserAutofillManagerWithMockDelegate& manager( @@ -1511,6 +1519,18 @@ Mock::VerifyAndClearExpectations(&client().popup_controller(manager())); } +// Tests that if the popup is shown, destruction of the WebContents hides the +// popup. +TEST_F(AutofillPopupControllerImplTestHidingLogic, HideOnWebContentsDestroyed) { + ShowSuggestions(manager(), {PopupItemId::kAddressEntry}); + test::GenerateTestAutofillPopup(&manager().external_delegate()); + EXPECT_CALL(client().popup_controller(manager()), + Hide(PopupHidingReason::kRendererEvent)); + EXPECT_CALL(client().popup_controller(manager()), + Hide(PopupHidingReason::kTabGone)); + DeleteContents(); +} + // Tests that if the popup is shown in the *main frame*, destruction of the // *main frame* hides the popup. TEST_F(AutofillPopupControllerImplTestHidingLogic, @@ -1519,6 +1539,11 @@ test::GenerateTestAutofillPopup(&manager().external_delegate()); EXPECT_CALL(client().popup_controller(manager()), Hide(PopupHidingReason::kRendererEvent)); + // There seems to be no way to destroy only the main frame in a test. We + // therefore let the test fixture's TearDown() destroy the main frame. As a + // side-effect, the WebContents will also be destroyed and call Hide(). + EXPECT_CALL(client().popup_controller(manager()), + Hide(PopupHidingReason::kTabGone)); } // Tests that if the popup is shown in the *sub frame*, destruction of the @@ -1529,6 +1554,9 @@ test::GenerateTestAutofillPopup(&sub_manager().external_delegate()); EXPECT_CALL(client().popup_controller(sub_manager()), Hide(PopupHidingReason::kRendererEvent)); + content::RenderFrameHostTester::For(sub_frame())->Detach(); + // Verify and clear before TearDown() closes the popup. + Mock::VerifyAndClearExpectations(&client().popup_controller(sub_manager())); } // Tests that if the popup is shown in the *main frame*, a navigation in the @@ -1540,6 +1568,8 @@ EXPECT_CALL(client().popup_controller(manager()), Hide(PopupHidingReason::kNavigation)); NavigateAndCommitFrame(main_frame(), GURL("https://bar.com/")); + // Verify and clear before TearDown() closes the popup. + Mock::VerifyAndClearExpectations(&client().popup_controller(manager())); } // Tests that if the popup is shown in the *sub frame*, a navigation in the @@ -1557,10 +1587,17 @@ Hide(PopupHidingReason::kRendererEvent)); } NavigateAndCommitFrame(sub_frame(), GURL("https://bar.com/")); + // Verify and clear before TearDown() closes the popup. + Mock::VerifyAndClearExpectations(&client().popup_controller(sub_manager())); } // Tests that if the popup is shown in the *sub frame*, a navigation in the // *main frame* hides the popup. +// +// TODO(crbug.com/1519872): This test only makes little sense: with BFcache, the +// navigation doesn't destroy the `sub_frame()` and thus we wouldn't hide the +// popup. What hides the popup in reality is +// AutofillExternalDelegate::DidEndTextFieldEditing(). TEST_F(AutofillPopupControllerImplTestHidingLogic, HideInSubFrameOnMainFrameNavigation) { ShowSuggestions(sub_manager(), {PopupItemId::kAddressEntry}); @@ -1568,6 +1605,9 @@ EXPECT_CALL(client().popup_controller(sub_manager()), Hide(PopupHidingReason::kRendererEvent)); NavigateAndCommitFrame(main_frame(), GURL("https://bar.com/")); + // The WebContents will also be destroyed and call Hide(). + EXPECT_CALL(client().popup_controller(sub_manager()), + Hide(PopupHidingReason::kTabGone)); } } // namespace autofill
diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/browser/ui/autofill/chrome_autofill_client.cc index 937983b..6c779ee 100644 --- a/chrome/browser/ui/autofill/chrome_autofill_client.cc +++ b/chrome/browser/ui/autofill/chrome_autofill_client.cc
@@ -1015,11 +1015,6 @@ void ChromeAutofillClient::ShowAutofillPopup( const autofill::AutofillClient::PopupOpenArgs& open_args, base::WeakPtr<AutofillPopupDelegate> delegate) { - // Autofill popups should only be shown in focused windows because on Windows - // the popup may overlap the focused window (see crbug.com/1239760). - if (!has_focus_) - return; - // Convert element_bounds to be in screen space. gfx::Rect client_area = web_contents()->GetContainerBounds(); gfx::RectF element_bounds_in_screen_space = @@ -1319,37 +1314,6 @@ #endif } -void ChromeAutofillClient::PrimaryMainFrameWasResized(bool width_changed) { -#if BUILDFLAG(IS_ANDROID) - // Ignore virtual keyboard showing and hiding a strip of suggestions. - if (!width_changed) - return; -#endif - - HideAutofillPopup(PopupHidingReason::kWidgetChanged); - // Do not need to hide the Touch To Fill surface, since it is an overlay UI - // which doesn't depend on frame size. -} - -void ChromeAutofillClient::WebContentsDestroyed() { - HideAutofillPopup(PopupHidingReason::kTabGone); - if (IsTouchToFillCreditCardSupported()) - HideTouchToFillCreditCard(); -} - -void ChromeAutofillClient::OnWebContentsLostFocus( - content::RenderWidgetHost* render_widget_host) { - has_focus_ = false; - HideAutofillPopup(PopupHidingReason::kFocusChanged); - // Should not hide the Touch To Fill surface, since it is an overlay UI - // which takes the focus. -} - -void ChromeAutofillClient::OnWebContentsFocused( - content::RenderWidgetHost* render_widget_host) { - has_focus_ = true; -} - #if !BUILDFLAG(IS_ANDROID) void ChromeAutofillClient::OnZoomControllerDestroyed( zoom::ZoomController* source) {
diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.h b/chrome/browser/ui/autofill/chrome_autofill_client.h index 6d30c86..49dca20b 100644 --- a/chrome/browser/ui/autofill/chrome_autofill_client.h +++ b/chrome/browser/ui/autofill/chrome_autofill_client.h
@@ -278,14 +278,6 @@ std::unique_ptr<device_reauth::DeviceAuthenticator> GetDeviceAuthenticator() override; - // content::WebContentsObserver implementation. - void PrimaryMainFrameWasResized(bool width_changed) override; - void WebContentsDestroyed() override; - void OnWebContentsLostFocus( - content::RenderWidgetHost* render_widget_host) override; - void OnWebContentsFocused( - content::RenderWidgetHost* render_widget_host) override; - base::WeakPtr<AutofillPopupControllerImpl> popup_controller_for_testing() { return popup_controller_; } @@ -373,9 +365,6 @@ base::ScopedObservation<zoom::ZoomController, zoom::ZoomObserver> zoom_observation_{this}; #endif - - // True if and only if the associated web_contents() is currently focused. - bool has_focus_ = false; }; } // namespace autofill
diff --git a/chrome/browser/ui/autofill/save_update_address_profile_bubble_controller_impl.cc b/chrome/browser/ui/autofill/save_update_address_profile_bubble_controller_impl.cc index fe10956c..803a6e3 100644 --- a/chrome/browser/ui/autofill/save_update_address_profile_bubble_controller_impl.cc +++ b/chrome/browser/ui/autofill/save_update_address_profile_bubble_controller_impl.cc
@@ -236,9 +236,7 @@ // a fixed set of fields and doesn't depend on libaddressinput. if (is_migration_to_account_) { static constexpr std::array fields = { - FieldType::NAME_FULL_WITH_HONORIFIC_PREFIX, - FieldType::ADDRESS_HOME_LINE1, FieldType::EMAIL_ADDRESS, - FieldType::PHONE_HOME_WHOLE_NUMBER}; + NAME_FULL, ADDRESS_HOME_LINE1, EMAIL_ADDRESS, PHONE_HOME_WHOLE_NUMBER}; std::vector<std::u16string> values; for (FieldType field : fields) { std::u16string value = address_profile_->GetInfo(field, app_locale_);
diff --git a/chrome/browser/ui/passwords/bubble_controllers/manage_passwords_bubble_controller.cc b/chrome/browser/ui/passwords/bubble_controllers/manage_passwords_bubble_controller.cc index 9d82088..aa9e3cb 100644 --- a/chrome/browser/ui/passwords/bubble_controllers/manage_passwords_bubble_controller.cc +++ b/chrome/browser/ui/passwords/bubble_controllers/manage_passwords_bubble_controller.cc
@@ -17,6 +17,7 @@ #include "chrome/grit/branded_strings.h" #include "chrome/grit/generated_resources.h" #include "components/favicon/core/favicon_util.h" +#include "components/password_manager/core/browser/password_feature_manager.h" #include "components/password_manager/core/browser/password_form.h" #include "components/password_manager/core/browser/password_form_metrics_recorder.h" #include "components/password_manager/core/browser/password_store/password_store_interface.h" @@ -29,6 +30,8 @@ namespace metrics_util = password_manager::metrics_util; namespace { +using password_manager::metrics_util::PasswordManagementBubbleInteractions; + // Reports a metric based on the change between the `current_note` and the // `updated_note`. void LogNoteChangesInPasswordManagementBubble( @@ -131,6 +134,13 @@ password_manager::ManagePasswordsReferrer::kManagePasswordsBubble); } } + +// TODO(1503146): Add implementation of this method. +void ManagePasswordsBubbleController::OnMovePasswordLinkClicked() { + password_manager::metrics_util::LogUserInteractionsInPasswordManagementBubble( + PasswordManagementBubbleInteractions::kMovePasswordLinkClicked); +} + const std::vector<std::unique_ptr<password_manager::PasswordForm>>& ManagePasswordsBubbleController::GetCredentials() const { return delegate_->GetCurrentForms(); @@ -210,6 +220,10 @@ }); } +bool ManagePasswordsBubbleController::IsOptedInForAccountStorage() const { + return delegate_->GetPasswordFeatureManager()->IsOptedInForAccountStorage(); +} + void ManagePasswordsBubbleController::OnFaviconReady( base::OnceCallback<void(const gfx::Image&)> favicon_ready_callback, const favicon_base::FaviconImageResult& result) {
diff --git a/chrome/browser/ui/passwords/bubble_controllers/manage_passwords_bubble_controller.h b/chrome/browser/ui/passwords/bubble_controllers/manage_passwords_bubble_controller.h index ba615080..d9b97e6 100644 --- a/chrome/browser/ui/passwords/bubble_controllers/manage_passwords_bubble_controller.h +++ b/chrome/browser/ui/passwords/bubble_controllers/manage_passwords_bubble_controller.h
@@ -56,6 +56,10 @@ // bubble footer in clicked by the user. void OnGooglePasswordManagerLinkClicked(); + // Called by the view code when the "Save it in Google Account" link in the + // buuble footer is clicked by the user. + void OnMovePasswordLinkClicked(); + // Returns the available credentials which match the current site. const std::vector<std::unique_ptr<password_manager::PasswordForm>>& GetCredentials() const; @@ -76,6 +80,9 @@ // has the same username value as `username`. bool UsernameExists(const std::u16string& username); + // Returns whether user can currently use account storage. + bool IsOptedInForAccountStorage() const; + void set_currently_selected_password( const std::optional<password_manager::PasswordForm>& password) { currently_selected_password_ = password;
diff --git a/chrome/browser/ui/passwords/manage_passwords_test.cc b/chrome/browser/ui/passwords/manage_passwords_test.cc index 9f547f2..f25906e 100644 --- a/chrome/browser/ui/passwords/manage_passwords_test.cc +++ b/chrome/browser/ui/passwords/manage_passwords_test.cc
@@ -103,7 +103,8 @@ EXPECT_TRUE(updater->ExecuteCommand(IDC_MANAGE_PASSWORDS_FOR_PAGE)); } -void ManagePasswordsTest::SetupManagingPasswords() { +void ManagePasswordsTest::SetupManagingPasswords( + const GURL& password_form_url) { password_manager::PasswordForm federated_form; federated_form.signon_realm = "federation://" + embedded_test_server()->GetOrigin().host() + @@ -113,6 +114,10 @@ url::Origin::Create(GURL("https://somelongeroriginurl.com/")); federated_form.username_value = u"test_federation_username"; federated_form.match_type = password_manager::PasswordForm::MatchType::kExact; + // Overrides url to a defined value to avoid flakiness in pixel tests. + password_form_.url = !password_form_url.is_empty() + ? GURL(password_form_url.spec() + "empty.html") + : embedded_test_server()->GetURL("/empty.html"); std::vector<raw_ptr<const password_manager::PasswordForm, VectorExperimental>> forms = {&password_form_, &federated_form}; GetController()->OnPasswordAutofilled( @@ -199,30 +204,43 @@ testing::Mock::VerifyAndClear(form_manager_ptr); } -void ManagePasswordsTest::ConfigurePasswordSync(bool is_enabled) { +void ManagePasswordsTest::ConfigurePasswordSync( + SyncConfiguration configuration) { // Some tests (such as move password to account) require a signed in users. // Make sure there is always one. signin::IdentityManager* identity_manager = IdentityManagerFactory::GetForProfile(browser()->profile()); AccountInfo info = signin::MakePrimaryAccountAvailable( identity_manager, "test@email.com", - is_enabled ? signin::ConsentLevel::kSync : signin::ConsentLevel::kSignin); + configuration == SyncConfiguration::kSyncing + ? signin::ConsentLevel::kSync + : signin::ConsentLevel::kSignin); syncer::TestSyncService* sync_service = static_cast<syncer::TestSyncService*>( SyncServiceFactory::GetForProfile(browser()->profile())); sync_service->SetAccountInfo(info); sync_service->SetTransportState(syncer::SyncService::TransportState::ACTIVE); - if (is_enabled) { - sync_service->SetHasSyncConsent(true); - sync_service->GetUserSettings()->SetSelectedTypes( - /*sync_everything=*/false, - /*types=*/{syncer::UserSelectableType::kPasswords}); - } else { - sync_service->SetHasSyncConsent(false); - sync_service->GetUserSettings()->SetSelectedTypes( - /*sync_everything=*/false, - /*types=*/syncer::UserSelectableTypeSet()); + switch (configuration) { + case SyncConfiguration::kNotSyncing: + sync_service->SetHasSyncConsent(false); + sync_service->GetUserSettings()->SetSelectedTypes( + /*sync_everything=*/false, + /*types=*/syncer::UserSelectableTypeSet()); + break; + case SyncConfiguration::kSyncing: + sync_service->SetHasSyncConsent(true); + sync_service->GetUserSettings()->SetSelectedTypes( + /*sync_everything=*/false, + /*types=*/{syncer::UserSelectableType::kPasswords}); + break; + case SyncConfiguration::kAccountStorageOnly: + sync_service->SetLocalSyncEnabled(false); + sync_service->SetHasSyncConsent(false); + + sync_service->GetUserSettings()->SetSelectedTypes( + /* sync_everything = */ true, {}); + break; } }
diff --git a/chrome/browser/ui/passwords/manage_passwords_test.h b/chrome/browser/ui/passwords/manage_passwords_test.h index 5f82f6b..cc1b1c60 100644 --- a/chrome/browser/ui/passwords/manage_passwords_test.h +++ b/chrome/browser/ui/passwords/manage_passwords_test.h
@@ -22,6 +22,16 @@ class ManagePasswordsUIController; +enum class SyncConfiguration { + // There is no sync consent and no sync types are synced. + kNotSyncing = 0, + // There is sync consent. + kSyncing = 1, + // There is no sync consent, but passwords are saved in the account storage. + kAccountStorageOnly = 2, + kMaxValue = kAccountStorageOnly, +}; + // Test class for the various password management view bits and pieces. Provides // some helper methods to poke at the bubble, icon, and controller's state. class ManagePasswordsTest : public InteractiveBrowserTest { @@ -41,7 +51,8 @@ void ExecuteManagePasswordsCommand(); // Put the controller, icon, and bubble into a managing-password state. - void SetupManagingPasswords(); + // TODO(1518786): Make password form url stable without having to override it. + void SetupManagingPasswords(const GURL& password_form_url = GURL()); // Put the controller, icon, and bubble into the confirmation state. void SetupAutomaticPassword(); @@ -65,8 +76,9 @@ void SetupMovingPasswords(); // Always configures a signed-in user, and when |is_enabled| is true, it also - // configures the Sync service to sync passwords. - void ConfigurePasswordSync(bool is_enabled); + // configures the Sync service to sync passwords. |is_account_storage_enabled| + // enables account storage for the user. + void ConfigurePasswordSync(SyncConfiguration configuration); // Get samples for |histogram|. std::unique_ptr<base::HistogramSamples> GetSamples(const char* histogram);
diff --git a/chrome/browser/ui/views/autofill/payments/save_card_bubble_views.cc b/chrome/browser/ui/views/autofill/payments/save_card_bubble_views.cc index 0cb8310..a6a3b8a6 100644 --- a/chrome/browser/ui/views/autofill/payments/save_card_bubble_views.cc +++ b/chrome/browser/ui/views/autofill/payments/save_card_bubble_views.cc
@@ -33,6 +33,7 @@ #include "ui/views/controls/textfield/textfield.h" #include "ui/views/layout/box_layout.h" #include "ui/views/layout/box_layout_view.h" +#include "ui/views/layout/flex_layout.h" #include "ui/views/style/typography.h" namespace autofill { @@ -174,20 +175,22 @@ controller()->GetBubbleType() == BubbleType::LOCAL_CVC_SAVE || controller()->GetBubbleType() == BubbleType::UPLOAD_CVC_SAVE; - // If `AutofillMoveLegalTermsAndIconForNewCardEnrollment` is enabled, - // display the card expiration date in a separate line for credit card saves. - // Else, the card name, last 4 digit and expiration date or CVC icon will be - // shown in the same line - auto card_identifier_view = std::make_unique<views::BoxLayoutView>(); + // Display the card expiration date in a separate line for credit card saves. + // For CVC only save, the card name, last 4 digit and CVC icon will be shown + // in the same line. + auto card_identifier_view = std::make_unique<views::View>(); + auto* layout = card_identifier_view->SetLayoutManager( + std::make_unique<views::FlexLayout>()); if (is_cvc_only_save) { - card_identifier_view->SetBetweenChildSpacing( - ChromeLayoutProvider::Get()->GetDistanceMetric( - views::DISTANCE_RELATED_BUTTON_HORIZONTAL)); + layout->SetCollapseMargins(true); + layout->SetDefault( + views::kMarginsKey, + gfx::Insets::TLBR(0, 0, 0, + ChromeLayoutProvider::Get()->GetDistanceMetric( + views::DISTANCE_RELATED_BUTTON_HORIZONTAL))); } else { - card_identifier_view->SetOrientation( - views::BoxLayout::Orientation::kVertical); - card_identifier_view->SetCrossAxisAlignment( - views::BoxLayout::CrossAxisAlignment::kStart); + layout->SetOrientation(views::LayoutOrientation::kVertical); + layout->SetCrossAxisAlignment(views::LayoutAlignment::kStart); } const CreditCard& card = controller_->GetCard(); @@ -203,23 +206,34 @@ card_identifier_label->SetMultiLine(!is_cvc_only_save); card_identifier_label->SetHorizontalAlignment(gfx::ALIGN_TO_HEAD); - // Flex |card_identifier_label| to fill up remaining space and tail align - // the expiry date or CVC icon if the card info will be shown in the same - // line. if (is_cvc_only_save) { - card_identifier_view->SetFlexForView(card_identifier_label, /*flex=*/1); - } - - // Show CVC icon for CVC only save cases and card expiration in other cases - if (is_cvc_only_save) { + // Add card last four, the spacing, and the CVC icon. card_identifier_view->AddChildView(std::make_unique<views::Label>( card.ObfuscatedNumberWithVisibleLastFourDigits(), views::style::CONTEXT_DIALOG_BODY_TEXT, views::style::STYLE_PRIMARY)); + auto* gap_view = + card_identifier_view->AddChildView(std::make_unique<views::View>()); card_identifier_view->AddChildView( std::make_unique<views::ImageView>(ui::ImageModel::FromImage( ui::ResourceBundle::GetSharedInstance().GetImageNamed( IDR_CREDIT_CARD_CVC_HINT_BACK)))); + + // Shrink the `card_identifier_view` to fit the view, when there is not + // enough space to accommodate all child views. + card_identifier_label->SetProperty( + views::kFlexBehaviorKey, + views::FlexSpecification(views::MinimumFlexSizeRule::kScaleToMinimum, + views::MaximumFlexSizeRule::kPreferred) + .WithOrder(1)); + // Extend the `gap_view` to fill the view, when there is more space to + // accommodate all child views. + gap_view->SetProperty( + views::kFlexBehaviorKey, + views::FlexSpecification(views::MinimumFlexSizeRule::kScaleToZero, + views::MaximumFlexSizeRule::kUnbounded) + .WithOrder(2)); } else if (!card.IsExpired(base::Time::Now())) { + // Add card expiration date for card saves. auto* expiration_date_label = card_identifier_view->AddChildView(std::make_unique<views::Label>( card.AbbreviatedExpirationDateForDisplay(false),
diff --git a/chrome/browser/ui/views/autofill/popup/popup_base_view.cc b/chrome/browser/ui/views/autofill/popup/popup_base_view.cc index ad66015d..726d2daf 100644 --- a/chrome/browser/ui/views/autofill/popup/popup_base_view.cc +++ b/chrome/browser/ui/views/autofill/popup/popup_base_view.cc
@@ -13,7 +13,6 @@ #include "base/functional/bind.h" #include "base/i18n/rtl.h" #include "base/location.h" -#include "base/task/single_thread_task_runner.h" #include "chrome/browser/platform_util.h" #include "chrome/browser/themes/theme_service.h" #include "chrome/browser/ui/browser_finder.h" @@ -255,14 +254,8 @@ } if (content::WebContents* web_contents = GetWebContents()) { - if (base::FeatureList::IsEnabled( - features::kAutofillPopupMultiWindowCursorSuppression)) { - custom_cursor_suppressor_.Start( - /*max_dimension_dips=*/kMaximumAllowedCustomCursorDimension + 1); - } else { - custom_cursor_blocker_ = web_contents->CreateDisallowCustomCursorScope( - /*max_dimension_dips=*/kMaximumAllowedCustomCursorDimension + 1); - } + custom_cursor_suppressor_.Start( + /*max_dimension_dips=*/kMaximumAllowedCustomCursorDimension + 1); } else { // `delegate_` is already gone and `WebContents` is destroying itself. return false; @@ -336,7 +329,7 @@ constexpr auto kDerivedClasses = base::MakeFixedFlatSet<base::StringPiece>( {"PopupSuggestionView", "PopupPasswordSuggestionView", "PopupFooterView", "PopupSeparatorView", "PopupWarningView", "PopupBaseView", - "PasswordGenerationPopupViewViews::GeneratedPasswordBox", + "PasswordGenerationPopupViewViews::GeneratedPasswordBox", "PopupRowView", "PopupRowContentView", "EditPasswordRow", "MdTextButton"}); DCHECK(kDerivedClasses.contains(selected_view.GetClassName())) << "If you add a new derived class from AutofillPopupRowView, add it "
diff --git a/chrome/browser/ui/views/autofill/popup/popup_base_view.h b/chrome/browser/ui/views/autofill/popup/popup_base_view.h index 37ecd99..47890ed 100644 --- a/chrome/browser/ui/views/autofill/popup/popup_base_view.h +++ b/chrome/browser/ui/views/autofill/popup/popup_base_view.h
@@ -6,7 +6,6 @@ #define CHROME_BROWSER_UI_VIEWS_AUTOFILL_POPUP_POPUP_BASE_VIEW_H_ #include <array> -#include <memory> #include <vector> #include "base/containers/span.h" @@ -155,13 +154,6 @@ // Ensures that the menu start event is not fired redundantly. bool is_ax_menu_start_event_fired_ = false; - // Responsible for re-enabling custom cursors in the triggered tab on popup - // destruction. - // TODO(crbug.com/1478613): Remove once - // `kAutofillPopupMultiWindowCursorSuppression` is removed, since it is - // superseded by `custom_cursor_suppressor_`. - base::ScopedClosureRunner custom_cursor_blocker_; - // Responsible for blocking (and re-enabling) custom cursors across all // browser windows. CustomCursorSuppressor custom_cursor_suppressor_;
diff --git a/chrome/browser/ui/views/autofill/popup/popup_cell_utils.cc b/chrome/browser/ui/views/autofill/popup/popup_cell_utils.cc index 5f5fb01..2473bd6 100644 --- a/chrome/browser/ui/views/autofill/popup/popup_cell_utils.cc +++ b/chrome/browser/ui/views/autofill/popup/popup_cell_utils.cc
@@ -25,6 +25,7 @@ #include "components/autofill/core/common/autofill_features.h" #include "components/autofill/core/common/autofill_payments_features.h" #include "components/omnibox/browser/vector_icons.h" +#include "ui/gfx/geometry/size.h" #if BUILDFLAG(GOOGLE_CHROME_BRANDING) #include "components/plus_addresses/resources/vector_icons.h" #endif @@ -244,7 +245,9 @@ NOTREACHED_NORETURN(); } -std::u16string GetSuggestionA11yCoreMessage(const Suggestion& suggestion) { +} // namespace + +std::u16string GetVoiceOverStringFromSuggestion(const Suggestion& suggestion) { if (suggestion.voice_over) { return *suggestion.voice_over; } @@ -273,31 +276,6 @@ return base::JoinString(text, u" "); } -} // namespace - -std::u16string GetVoiceOverStringFromSuggestion(const Suggestion& suggestion) { - std::vector<std::u16string> text({GetSuggestionA11yCoreMessage(suggestion)}); - - if (!suggestion.children.empty()) { - CHECK(IsExpandablePopupItemId(suggestion.popup_item_id)); - - if (suggestion.popup_item_id == PopupItemId::kAddressEntry) { - text.push_back(l10n_util::GetStringUTF16( - IDS_AUTOFILL_EXPANDABLE_SUGGESTION_FULL_ADDRESS_A11Y_ADDON)); - } - - std::u16string shortcut = l10n_util::GetStringUTF16( - base::i18n::IsRTL() - ? IDS_AUTOFILL_EXPANDABLE_SUGGESTION_EXPAND_SHORTCUT_RTL - : IDS_AUTOFILL_EXPANDABLE_SUGGESTION_EXPAND_SHORTCUT); - - text.push_back(l10n_util::GetStringFUTF16( - IDS_AUTOFILL_EXPANDABLE_SUGGESTION_SUBMENU_HINT, shortcut)); - } - - return base::JoinString(text, u". "); -} - gfx::Insets GetMarginsForContentCell(bool has_control_element) { int left_margin = PopupBaseView::GetHorizontalMargin(); int right_margin = left_margin; @@ -329,6 +307,18 @@ base::UmaHistogramTimes(kHistogramGetImageViewByName, base::TimeTicks::Now() - start_time); + if (icon_image_view && ShouldApplyNewAutofillPopupStyle()) { + // It is possible to have icons of different sizes (kChromeRefreshIconSize + // and kIconSize) on the same popup. Setting the icon view width to + // the largest value ensures that the icon occupies consistent horizontal + // space and makes icons (and the text after them) aligned. It expands + // the area of kIconSize icons only and doesn't change those that are bigger + // by design (e.g. payment card icons) and have no alignment issues. + gfx::Size size = icon_image_view->GetPreferredSize(); + size.set_width(std::max(kChromeRefreshIconSize, size.width())); + icon_image_view->SetPreferredSize(size); + } + return icon_image_view; }
diff --git a/chrome/browser/ui/views/autofill/popup/popup_row_factory_utils_browsertest.cc b/chrome/browser/ui/views/autofill/popup/popup_row_factory_utils_browsertest.cc index 12e55bc..7ee86f8 100644 --- a/chrome/browser/ui/views/autofill/popup/popup_row_factory_utils_browsertest.cc +++ b/chrome/browser/ui/views/autofill/popup/popup_row_factory_utils_browsertest.cc
@@ -19,9 +19,7 @@ #include "components/autofill/core/common/autofill_features.h" #include "content/public/test/browser_test.h" #include "testing/gtest/include/gtest/gtest.h" -#include "ui/views/accessibility/view_accessibility.h" #include "ui/views/test/widget_test.h" -#include "ui/views/view.h" #include "ui/views/widget/widget.h" namespace autofill { @@ -121,15 +119,6 @@ } void TearDownOnMainThread() override { - // TODO(crbug.com/1512898): Remove `EndPopupFocusOverride()` call. Select - // the control cell by the selection delegate, so that `PopupRowView` - // doesn't leave the override not ended. In the popup the override is ended - // in `PopupBaseView::DoHide`, but here in tests the popup is not used and - // the tests are crashed. - if (views::View* contents_view = widget_->GetContentsView()) { - contents_view->GetViewAccessibility().EndPopupFocusOverride(); - } - widget_.reset(); UiBrowserTest::TearDownOnMainThread();
diff --git a/chrome/browser/ui/views/autofill/popup/popup_row_view.cc b/chrome/browser/ui/views/autofill/popup/popup_row_view.cc index b65d813..80188db 100644 --- a/chrome/browser/ui/views/autofill/popup/popup_row_view.cc +++ b/chrome/browser/ui/views/autofill/popup/popup_row_view.cc
@@ -6,6 +6,7 @@ #include <memory> #include <optional> +#include <string> #include <utility> #include "base/check_op.h" @@ -97,6 +98,32 @@ return {set_index, set_size}; } +std::u16string GetSuggestionA11yString(const Suggestion& suggestion, + bool add_call_to_action_if_expandable) { + std::vector<std::u16string> text( + {popup_cell_utils::GetVoiceOverStringFromSuggestion(suggestion)}); + + if (!suggestion.children.empty()) { + CHECK(IsExpandablePopupItemId(suggestion.popup_item_id)); + + if (suggestion.popup_item_id == PopupItemId::kAddressEntry && + add_call_to_action_if_expandable) { + text.push_back(l10n_util::GetStringUTF16( + IDS_AUTOFILL_EXPANDABLE_SUGGESTION_FILL_ADDRESS_A11Y_ADDON)); + } + + std::u16string shortcut = l10n_util::GetStringUTF16( + base::i18n::IsRTL() + ? IDS_AUTOFILL_EXPANDABLE_SUGGESTION_EXPAND_SHORTCUT_RTL + : IDS_AUTOFILL_EXPANDABLE_SUGGESTION_EXPAND_SHORTCUT); + + text.push_back(l10n_util::GetStringFUTF16( + IDS_AUTOFILL_EXPANDABLE_SUGGESTION_SUBMENU_HINT, shortcut)); + } + + return base::JoinString(text, u". "); +} + } // namespace EnterExitHandler::EnterExitHandler(base::RepeatingClosure enter_callback, @@ -125,38 +152,6 @@ } } -PopupRowView::ExpandChildSuggestionsView::ExpandChildSuggestionsView() { - SetNotifyEnterExitOnChild(true); - SetLayoutManager(std::make_unique<views::BoxLayout>( - views::BoxLayout::Orientation::kHorizontal, - gfx::Insets(kExpandChildSuggestionsViewHorizontalPadding))); - AddChildView(popup_cell_utils::ImageViewFromVectorIcon( - vector_icons::kSubmenuArrowChromeRefreshIcon, - kExpandChildSuggestionsIconWidth)); -} - -void PopupRowView::ExpandChildSuggestionsView::GetAccessibleNodeData( - ui::AXNodeData* node_data) { - node_data->role = ax::mojom::Role::kToggleButton; - node_data->SetNameChecked(l10n_util::GetStringUTF16( - IDS_AUTOFILL_EXPANDABLE_SUGGESTION_CONTROLL_A11Y_NAME)); - node_data->SetCheckedState(checked_ ? ax::mojom::CheckedState::kTrue - : ax::mojom::CheckedState::kFalse); -} - -void PopupRowView::ExpandChildSuggestionsView::SetChecked(bool checked) { - if (checked_ == checked) { - return; - } - - checked_ = checked; - NotifyAccessibilityEvent(ax::mojom::Event::kCheckedStateChanged, - /*send_native_event=*/true); -} - -BEGIN_METADATA(PopupRowView, ExpandChildSuggestionsView, views::View) -END_METADATA - PopupRowView::ScopedNewBadgeTrackerWithAcceptAction:: ScopedNewBadgeTrackerWithAcceptAction( std::unique_ptr<ScopedNewBadgeTracker> tracker, @@ -201,6 +196,7 @@ CHECK(controller_); CHECK_LT(line_number_, controller_->GetLineCount()); + SetFocusBehavior(FocusBehavior::ALWAYS); SetNotifyEnterExitOnChild(true); SetProperty(views::kMarginsKey, gfx::Insets::VH(0, GetHorizontalMargin())); SetBackground( @@ -242,14 +238,16 @@ return handler; }; + const Suggestion& suggestion = controller_->GetSuggestionAt(line_number); + content_view_ = AddChildView(std::move(content_view)); content_view_->SetFocusBehavior(FocusBehavior::ALWAYS); content_view_->AddObserver(this); content_view_->GetViewAccessibility().OverrideRole( ax::mojom::Role::kListBoxOption); - content_view_->GetViewAccessibility().OverrideName( - popup_cell_utils::GetVoiceOverStringFromSuggestion( - controller_->GetSuggestionAt(line_number))); + content_view_->GetViewAccessibility().OverrideName(GetSuggestionA11yString( + suggestion, + /*add_call_to_action_if_expandable=*/suggestion.is_acceptable)); auto [position, set_size] = ComputePositionInSet(controller_, line_number); content_view_->GetViewAccessibility().OverridePosInSet(position, set_size); content_view_->GetViewAccessibility().OverrideIsSelected(false); @@ -257,10 +255,18 @@ set_exit_enter_callbacks(CellType::kContent, *content_view_); layout->SetFlexForView(content_view_.get(), 1); - if (!controller_->GetSuggestionAt(line_number_).children.empty()) { + if (!suggestion.children.empty()) { expand_child_suggestions_view_ = - AddChildView(std::make_unique<ExpandChildSuggestionsView>()); - expand_child_suggestions_view_->SetFocusBehavior(FocusBehavior::ALWAYS); + AddChildView(std::make_unique<views::View>()); + expand_child_suggestions_view_->SetNotifyEnterExitOnChild(true); + expand_child_suggestions_view_->SetLayoutManager( + std::make_unique<views::BoxLayout>( + views::BoxLayout::Orientation::kHorizontal, + gfx::Insets(kExpandChildSuggestionsViewHorizontalPadding))); + expand_child_suggestions_view_->AddChildView( + popup_cell_utils::ImageViewFromVectorIcon( + vector_icons::kSubmenuArrowChromeRefreshIcon, + kExpandChildSuggestionsIconWidth)); expand_child_suggestions_view_->AddObserver(this); control_event_handler_ = set_exit_enter_callbacks( CellType::kControl, *expand_child_suggestions_view_); @@ -321,6 +327,27 @@ mouse_observed_outside_item_bounds_ |= !IsMouseHovered(); } +void PopupRowView::GetAccessibleNodeData(ui::AXNodeData* node_data) { + views::View::GetAccessibleNodeData(node_data); + + if (controller_ && line_number_ < controller_->GetLineCount()) { + ui::AXNodeData content_node_data; + content_view_->GetViewAccessibility().GetAccessibleNodeData( + &content_node_data); + + node_data->role = content_node_data.role; + node_data->AddIntAttribute( + ax::mojom::IntAttribute::kPosInSet, + content_node_data.GetIntAttribute(ax::mojom::IntAttribute::kPosInSet)); + node_data->AddIntAttribute( + ax::mojom::IntAttribute::kSetSize, + content_node_data.GetIntAttribute(ax::mojom::IntAttribute::kSetSize)); + node_data->SetName( + GetSuggestionA11yString(controller_->GetSuggestionAt(line_number_), + /*add_call_to_action_if_expandable=*/false)); + } +} + void PopupRowView::OnViewFocused(views::View* view) { CHECK(view == content_view_ || view == expand_child_suggestions_view_); @@ -335,6 +362,10 @@ } void PopupRowView::SetSelectedCell(std::optional<CellType> new_cell) { + if (!controller_) { + return; + } + if (new_cell == selected_cell_) { return; } @@ -343,26 +374,21 @@ if (selected_cell_ == CellType::kContent) { content_view_->UpdateStyle(/*selected=*/false); content_view_->GetViewAccessibility().OverrideIsSelected(false); - if (controller_) { - controller_->UnselectSuggestion(); - } + controller_->UnselectSuggestion(); } - if (new_cell == CellType::kContent) { - if (controller_) { - controller_->SelectSuggestion(line_number_); - } + if ((new_cell == CellType::kControl && expand_child_suggestions_view_) || + (new_cell == CellType::kContent && !suggestion_is_acceptable_)) { + GetA11ySelectionDelegate().NotifyAXSelection(*this); + NotifyAccessibilityEvent(ax::mojom::Event::kSelectedChildrenChanged, true); + selected_cell_ = new_cell; + } else if (new_cell == CellType::kContent) { + controller_->SelectSuggestion(line_number_); content_view_->UpdateStyle(/*selected=*/true); content_view_->GetViewAccessibility().OverrideIsSelected(true); GetA11ySelectionDelegate().NotifyAXSelection(*content_view_); NotifyAccessibilityEvent(ax::mojom::Event::kSelectedChildrenChanged, true); selected_cell_ = new_cell; - } else if (new_cell == CellType::kControl && expand_child_suggestions_view_) { - expand_child_suggestions_view_->GetViewAccessibility() - .SetPopupFocusOverride(); - expand_child_suggestions_view_->NotifyAccessibilityEvent( - ax::mojom::Event::kFocus, true); - selected_cell_ = new_cell; } else { // Set the selected cell to none in case an invalid choice was made (e.g. // selecting a control cell when none exists) or the cell was reset @@ -377,10 +403,6 @@ bool child_suggestions_displayed) { child_suggestions_displayed_ = child_suggestions_displayed; - if (expand_child_suggestions_view_) { - expand_child_suggestions_view_->SetChecked(child_suggestions_displayed); - } - UpdateBackground(); }
diff --git a/chrome/browser/ui/views/autofill/popup/popup_row_view.h b/chrome/browser/ui/views/autofill/popup/popup_row_view.h index 6dad0c4..0af2cdc 100644 --- a/chrome/browser/ui/views/autofill/popup/popup_row_view.h +++ b/chrome/browser/ui/views/autofill/popup/popup_row_view.h
@@ -119,6 +119,7 @@ void OnMouseReleased(const ui::MouseEvent& event) override; void OnGestureEvent(ui::GestureEvent* event) override; void OnPaint(gfx::Canvas* canvas) override; + void GetAccessibleNodeData(ui::AXNodeData* node_data) override; // views::ViewObserver: void OnViewFocused(views::View* focused_now) override; @@ -154,32 +155,6 @@ int line_number() const { return line_number_; } private: - // If the suggestion has child suggestions the row view adds this view to - // provide a control for the sub-popup. It implements visualization and event - // handling only, `PopupViewViews` controls the logic of opening/closing. - class ExpandChildSuggestionsView : public views::View { - METADATA_HEADER(ExpandChildSuggestionsView, views::View) - - public: - ExpandChildSuggestionsView(); - ExpandChildSuggestionsView(const ExpandChildSuggestionsView&) = delete; - ExpandChildSuggestionsView& operator=(const ExpandChildSuggestionsView&) = - delete; - ~ExpandChildSuggestionsView() override = default; - - // views::View: - void GetAccessibleNodeData(ui::AXNodeData* node_data) override; - - // Sets the a11y checked state. It should reflect the sub-popup open state. - void SetChecked(bool checked); - - private: - // This property controls the a11y `ax::mojom::CheckedState` attribute. - // The value is controlled by external clients (see `SetChecked()`) and - // expected to be synced with the sub-popup open state. - bool checked_ = false; - }; - void RunOnAcceptedForEvent(const ui::Event& event); AccessibilitySelectionDelegate& GetA11ySelectionDelegate() { @@ -208,7 +183,7 @@ // The view wrapping the content area of the row. raw_ptr<PopupRowContentView> content_view_ = nullptr; // The view wrapping the control area of the row. - raw_ptr<ExpandChildSuggestionsView> expand_child_suggestions_view_ = nullptr; + raw_ptr<views::View> expand_child_suggestions_view_ = nullptr; // Overriding event handles for the content and control views. std::unique_ptr<ui::EventHandler> content_event_handler_;
diff --git a/chrome/browser/ui/views/autofill/popup/popup_row_view_unittest.cc b/chrome/browser/ui/views/autofill/popup/popup_row_view_unittest.cc index 1fa55d3..fafd023 100644 --- a/chrome/browser/ui/views/autofill/popup/popup_row_view_unittest.cc +++ b/chrome/browser/ui/views/autofill/popup/popup_row_view_unittest.cc
@@ -250,24 +250,16 @@ ASSERT_TRUE(row_view().GetExpandChildSuggestionsView()); EXPECT_FALSE(row_view().GetSelectedCell().has_value()); - base::MockRepeatingCallback<void(const ui::AXPlatformNodeDelegate*, - const ax::mojom::Event)> - a11y_callback; - - row_view() - .GetExpandChildSuggestionsView() - ->GetViewAccessibility() - .set_accessibility_events_callback(a11y_callback.Get()); - // Selecting the control cell notifies the accessibility system that the // respective view has been selected. - EXPECT_CALL(a11y_callback, Run(_, ax::mojom::Event::kFocus)); + EXPECT_CALL(a11y_selection_delegate(), NotifyAXSelection(Ref(row_view()))); row_view().SetSelectedCell(CellType::kControl); EXPECT_EQ(row_view().GetSelectedCell(), std::make_optional<CellType>(CellType::kControl)); // Selecting it again leads to no notification. - EXPECT_CALL(a11y_callback, Run).Times(0); + EXPECT_CALL(a11y_selection_delegate(), NotifyAXSelection(Ref(row_view()))) + .Times(0); row_view().SetSelectedCell(CellType::kControl); EXPECT_EQ(row_view().GetSelectedCell(), std::make_optional<CellType>(CellType::kControl)); @@ -298,20 +290,11 @@ ASSERT_TRUE(row_view().GetExpandChildSuggestionsView()); row_view().SetSelectedCell(CellType::kContent); - base::MockRepeatingCallback<void(const ui::AXPlatformNodeDelegate*, - const ax::mojom::Event)> - a11y_callback; - - row_view() - .GetExpandChildSuggestionsView() - ->GetViewAccessibility() - .set_accessibility_events_callback(a11y_callback.Get()); - - EXPECT_CALL(a11y_callback, Run(_, ax::mojom::Event::kFocus)); + EXPECT_CALL(a11y_selection_delegate(), NotifyAXSelection(Ref(row_view()))); row_view().SetSelectedCell(CellType::kControl); // Hitting right again does not do anything. - EXPECT_CALL(a11y_callback, Run).Times(0); + EXPECT_CALL(a11y_selection_delegate(), NotifyAXSelection).Times(0); row_view().SetSelectedCell(CellType::kControl); EXPECT_CALL(a11y_selection_delegate(), @@ -487,17 +470,4 @@ PopupRowPosInSetViewTest, ::testing::ValuesIn(kPosInSetTestcases)); -TEST_F(PopupRowViewTest, ChildSuggestionsExpandingControlA11yCheckedState) { - ShowView(/*line_number=*/0, /*has_control=*/true); - ASSERT_TRUE(row_view().GetExpandChildSuggestionsView()); - - ui::AXNodeData node_data; - row_view().GetExpandChildSuggestionsView()->GetAccessibleNodeData(&node_data); - ASSERT_EQ(node_data.GetCheckedState(), ax::mojom::CheckedState::kFalse); - - row_view().SetChildSuggestionsDisplayed(true); - row_view().GetExpandChildSuggestionsView()->GetAccessibleNodeData(&node_data); - EXPECT_EQ(node_data.GetCheckedState(), ax::mojom::CheckedState::kTrue); -} - } // namespace autofill
diff --git a/chrome/browser/ui/views/autofill/popup/popup_view_views_unittest.cc b/chrome/browser/ui/views/autofill/popup/popup_view_views_unittest.cc index 7b65840..30058f9 100644 --- a/chrome/browser/ui/views/autofill/popup/popup_view_views_unittest.cc +++ b/chrome/browser/ui/views/autofill/popup/popup_view_views_unittest.cc
@@ -897,15 +897,28 @@ // Verify that the accessibility layer gets the right string to read out. ui::AXNodeData node_data; GetPopupRowViewAt(0) - .GetContentView() .GetViewAccessibility() .GetAccessibleNodeData(&node_data); + EXPECT_EQ(node_data.GetString16Attribute(ax::mojom::StringAttribute::kName), + base::JoinString( + {address_line, + l10n_util::GetStringFUTF16( + IDS_AUTOFILL_EXPANDABLE_SUGGESTION_SUBMENU_HINT, + l10n_util::GetStringUTF16( + IDS_AUTOFILL_EXPANDABLE_SUGGESTION_EXPAND_SHORTCUT))}, + u". ")); + + ui::AXNodeData content_node_data; + GetPopupRowViewAt(0) + .GetContentView() + .GetViewAccessibility() + .GetAccessibleNodeData(&content_node_data); EXPECT_EQ( - node_data.GetString16Attribute(ax::mojom::StringAttribute::kName), + content_node_data.GetString16Attribute(ax::mojom::StringAttribute::kName), base::JoinString( {address_line, l10n_util::GetStringUTF16( - IDS_AUTOFILL_EXPANDABLE_SUGGESTION_FULL_ADDRESS_A11Y_ADDON), + IDS_AUTOFILL_EXPANDABLE_SUGGESTION_FILL_ADDRESS_A11Y_ADDON), l10n_util::GetStringFUTF16( IDS_AUTOFILL_EXPANDABLE_SUGGESTION_SUBMENU_HINT, l10n_util::GetStringUTF16(
diff --git a/chrome/browser/ui/views/autofill/update_address_profile_view.cc b/chrome/browser/ui/views/autofill/update_address_profile_view.cc index b7339b97..6c28b6c 100644 --- a/chrome/browser/ui/views/autofill/update_address_profile_view.cc +++ b/chrome/browser/ui/views/autofill/update_address_profile_view.cc
@@ -38,7 +38,7 @@ const gfx::VectorIcon& GetVectorIconForType(FieldType type) { switch (type) { - case NAME_FULL_WITH_HONORIFIC_PREFIX: + case NAME_FULL: return kAccountCircleIcon; case ADDRESS_HOME_ADDRESS: return vector_icons::kLocationOnIcon;
diff --git a/chrome/browser/ui/views/drag_and_drop_interactive_uitest.cc b/chrome/browser/ui/views/drag_and_drop_interactive_uitest.cc index 7d69ea6..08ede6e3 100644 --- a/chrome/browser/ui/views/drag_and_drop_interactive_uitest.cc +++ b/chrome/browser/ui/views/drag_and_drop_interactive_uitest.cc
@@ -25,7 +25,7 @@ #include "base/strings/utf_string_conversions.h" #include "base/task/sequenced_task_runner.h" #include "base/task/single_thread_task_runner.h" -#include "base/test/test_timeouts.h" +#include "base/test/run_until.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "chrome/browser/ui/browser.h" @@ -2190,12 +2190,9 @@ // In addition to offsetting the window, use a small window size to avoid // rejection of the new bounds by the system. browser()->window()->SetBounds(gfx::Rect(200, 100, 700, 500)); - do { - base::RunLoop run_loop; - base::SingleThreadTaskRunner::GetCurrentDefault()->PostDelayedTask( - FROM_HERE, run_loop.QuitClosure(), TestTimeouts::tiny_timeout()); - run_loop.Run(); - } while (browser()->window()->GetBounds().origin() != gfx::Point(200, 100)); + EXPECT_TRUE(base::test::RunUntil([&]() { + return browser()->window()->GetBounds().origin() == gfx::Point(200, 100); + })); std::string frame_site = use_cross_site_subframe() ? "b.test" : "a.test"; ASSERT_TRUE(NavigateToTestPage("a.test"));
diff --git a/chrome/browser/ui/views/file_system_access/file_system_access_browsertest.cc b/chrome/browser/ui/views/file_system_access/file_system_access_browsertest.cc index ca22864..91ce4a36 100644 --- a/chrome/browser/ui/views/file_system_access/file_system_access_browsertest.cc +++ b/chrome/browser/ui/views/file_system_access/file_system_access_browsertest.cc
@@ -558,9 +558,35 @@ } } +class PersistedPermissionsFileSystemAccessBrowserTest + : public FileSystemAccessBrowserTest { + public: + PersistedPermissionsFileSystemAccessBrowserTest() { + // Enable Persisted Permissions. + // TODO(crbug.com/1467574): Remove `kFileSystemAccessPersistentPermissions` + // flag after FSA Persistent Permissions feature launch. + feature_list_.InitAndEnableFeature( + features::kFileSystemAccessPersistentPermissions); + } + + void SetUpOnMainThread() override { + FileSystemAccessBrowserTest::SetUpOnMainThread(); + } + + ~PersistedPermissionsFileSystemAccessBrowserTest() override = default; + + PersistedPermissionsFileSystemAccessBrowserTest( + const PersistedPermissionsFileSystemAccessBrowserTest&) = delete; + PersistedPermissionsFileSystemAccessBrowserTest& operator=( + const PersistedPermissionsFileSystemAccessBrowserTest&) = delete; + + private: + base::test::ScopedFeatureList feature_list_; +}; + // Tests that permissions are revoked after all top-level frames have navigated // away to a different origin. -IN_PROC_BROWSER_TEST_F(FileSystemAccessBrowserTest, +IN_PROC_BROWSER_TEST_F(PersistedPermissionsFileSystemAccessBrowserTest, RevokePermissionAfterNavigation) { const base::FilePath test_file = CreateTestFile(""); ui::SelectFileDialog::SetFactory( @@ -710,27 +736,16 @@ content::EvalJs(third_party_iframe, "self.entry.queryPermission({mode: 'readwrite'})")); - // Even after triggering the timer in the permission context. - FileSystemAccessPermissionContextFactory::GetForProfile(profile) - ->TriggerTimersForTesting(); - EXPECT_EQ("granted", - content::EvalJs(third_party_iframe, - "self.entry.queryPermission({mode: 'readwrite'})")); - // Now navigate away from b.com in third window as well. ASSERT_TRUE(ui_test_utils::NavigateToURL( third_window, https_server.GetURL("a.com", "/title1.html"))); - // Permission should still be granted in iframe. - EXPECT_EQ("granted", - content::EvalJs(third_party_iframe, - "self.entry.queryPermission({mode: 'readwrite'})")); - - // But after triggering the timer in the permission context ... + // On some platforms, permission revocation from the tab closure is + // triggered by timer, so manually invoke it. FileSystemAccessPermissionContextFactory::GetForProfile(profile) ->TriggerTimersForTesting(); - // ... permission should have been revoked. + // Permission should have been revoked. EXPECT_EQ("prompt", content::EvalJs(third_party_iframe, "self.entry.queryPermission({mode: 'readwrite'})")); @@ -741,7 +756,7 @@ // Tests that permissions are revoked after all top-level frames have been // closed. -IN_PROC_BROWSER_TEST_F(FileSystemAccessBrowserTest, +IN_PROC_BROWSER_TEST_F(PersistedPermissionsFileSystemAccessBrowserTest, RevokePermissionAfterClosingTab) { const base::FilePath test_file = CreateTestFile(""); ui::SelectFileDialog::SetFactory( @@ -867,16 +882,12 @@ ASSERT_EQ(browser()->tab_strip_model()->GetActiveWebContents(), third_party_web_contents); - // Permission should still be granted in iframe. - EXPECT_EQ("granted", - content::EvalJs(third_party_iframe, - "self.entry.queryPermission({mode: 'readwrite'})")); - - // But after triggering the timer in the permission context ... + // On some platforms, permission revocation from the tab closure is + // triggered by timer, so manually invoke it. FileSystemAccessPermissionContextFactory::GetForProfile(profile) ->TriggerTimersForTesting(); - // ... permission should have been revoked. + // Permission should have been revoked. EXPECT_EQ("prompt", content::EvalJs(third_party_iframe, "self.entry.queryPermission({mode: 'readwrite'})")); @@ -885,32 +896,6 @@ "self.entry.queryPermission({mode: 'read'})")); } -class PersistedPermissionsFileSystemAccessBrowserTest - : public FileSystemAccessBrowserTest { - public: - PersistedPermissionsFileSystemAccessBrowserTest() { - // Enable Persisted Permissions. - // TODO(crbug.com/1467574): Remove `kFileSystemAccessPersistentPermissions` - // flag after FSA Persistent Permissions feature launch. - feature_list_.InitAndEnableFeature( - features::kFileSystemAccessPersistentPermissions); - } - - void SetUpOnMainThread() override { - FileSystemAccessBrowserTest::SetUpOnMainThread(); - } - - ~PersistedPermissionsFileSystemAccessBrowserTest() override = default; - - PersistedPermissionsFileSystemAccessBrowserTest( - const PersistedPermissionsFileSystemAccessBrowserTest&) = delete; - PersistedPermissionsFileSystemAccessBrowserTest& operator=( - const PersistedPermissionsFileSystemAccessBrowserTest&) = delete; - - private: - base::test::ScopedFeatureList feature_list_; -}; - IN_PROC_BROWSER_TEST_F(PersistedPermissionsFileSystemAccessBrowserTest, UsageIndicatorVisibleWithPersistedPermissionsEnabled) { const GURL test_url = embedded_test_server()->GetURL("/title1.html");
diff --git a/chrome/browser/ui/views/location_bar/cookie_controls/cookie_controls_icon_view.cc b/chrome/browser/ui/views/location_bar/cookie_controls/cookie_controls_icon_view.cc index be2fdb87..7f67ff4 100644 --- a/chrome/browser/ui/views/location_bar/cookie_controls/cookie_controls_icon_view.cc +++ b/chrome/browser/ui/views/location_bar/cookie_controls/cookie_controls_icon_view.cc
@@ -98,10 +98,6 @@ CHECK(browser_); SetUpForInOutAnimation(/*duration=*/base::Seconds(12)); SetPaintLabelOverSolidBackground(true); - // TODO(b/320544982): Remove this call. - SetAccessibilityProperties( - /*role*/ std::nullopt, - l10n_util::GetStringUTF16(IDS_COOKIE_CONTROLS_TOOLTIP)); SetProperty(views::kElementIdentifierKey, kCookieControlsIconElementId); bubble_coordinator_ = std::make_unique<CookieControlsBubbleCoordinator>();
diff --git a/chrome/browser/ui/views/passwords/manage_passwords_list_view.cc b/chrome/browser/ui/views/passwords/manage_passwords_list_view.cc index cd3da9e..e94f378 100644 --- a/chrome/browser/ui/views/passwords/manage_passwords_list_view.cc +++ b/chrome/browser/ui/views/passwords/manage_passwords_list_view.cc
@@ -30,17 +30,18 @@ ui::ImageModel favicon, base::RepeatingCallback<void(password_manager::PasswordForm)> on_row_clicked_callback, - base::RepeatingClosure on_navigate_to_settings_clicked_callback) { + base::RepeatingClosure on_navigate_to_settings_clicked_callback, + bool is_account_storage_available) { SetOrientation(views::BoxLayout::Orientation::kVertical); for (const std::unique_ptr<password_manager::PasswordForm>& password_form : credentials) { std::optional<ui::ImageModel> store_icon = std::nullopt; - if (base::FeatureList::IsEnabled( + if (is_account_storage_available && + base::FeatureList::IsEnabled( password_manager::features::kButterOnDesktopFollowup)) { if (!password_form->IsUsingAccountStore()) { store_icon = ui::ImageModel::FromVectorIcon( - vector_icons::kNotUploadedIcon, gfx::kPlaceholderColor, - gfx::kFaviconSize); + vector_icons::kNotUploadedIcon, ui::kColorIcon, gfx::kFaviconSize); } } else if (password_form->IsUsingAccountStore()) { store_icon = ui::ImageModel::FromVectorIcon(
diff --git a/chrome/browser/ui/views/passwords/manage_passwords_list_view.h b/chrome/browser/ui/views/passwords/manage_passwords_list_view.h index 0d7b3ee6..5c7c2b3c 100644 --- a/chrome/browser/ui/views/passwords/manage_passwords_list_view.h +++ b/chrome/browser/ui/views/passwords/manage_passwords_list_view.h
@@ -31,7 +31,8 @@ ui::ImageModel favicon, base::RepeatingCallback<void(password_manager::PasswordForm)> on_row_clicked_callback, - base::RepeatingClosure on_navigate_to_settings_clicked_callback); + base::RepeatingClosure on_navigate_to_settings_clicked_callback, + bool is_account_storage_available); ManagePasswordsListView(const ManagePasswordsListView&) = delete; ManagePasswordsListView& operator=(const ManagePasswordsListView&) = delete;
diff --git a/chrome/browser/ui/views/passwords/manage_passwords_view.cc b/chrome/browser/ui/views/passwords/manage_passwords_view.cc index 8a698d9e..73f87d4 100644 --- a/chrome/browser/ui/views/passwords/manage_passwords_view.cc +++ b/chrome/browser/ui/views/passwords/manage_passwords_view.cc
@@ -24,10 +24,16 @@ #include "components/password_manager/core/browser/password_manager_metrics_util.h" #include "components/password_manager/core/common/password_manager_constants.h" #include "components/sync/base/features.h" +#include "components/vector_icons/vector_icons.h" #include "ui/base/interaction/element_identifier.h" #include "ui/base/metadata/metadata_impl_macros.h" #include "ui/gfx/favicon_size.h" #include "ui/views/controls/styled_label.h" +#include "ui/views/layout/fill_layout.h" +#include "ui/views/layout/flex_layout.h" +#include "ui/views/layout/flex_layout_view.h" +#include "ui/views/layout/table_layout.h" +#include "ui/views/layout/table_layout_view.h" #include "ui/views/view_class_properties.h" using password_manager::metrics_util::PasswordManagementBubbleInteractions; @@ -147,7 +153,8 @@ PasswordManagementBubbleInteractions:: kManagePasswordsButtonClicked); }, - base::Unretained(this))); + base::Unretained(this)), + controller_.IsOptedInForAccountStorage()); } std::unique_ptr<ManagePasswordsDetailsView> @@ -223,6 +230,46 @@ } } +std::unique_ptr<views::View> +ManagePasswordsView::CreateMovePasswordFooterView() { + const ChromeLayoutProvider* layout_provider = ChromeLayoutProvider::Get(); + base::RepeatingClosure move_password_closure = base::BindRepeating( + [](ManagePasswordsView* dialog) { + dialog->controller_.OnMovePasswordLinkClicked(); + }, + base::Unretained(this)); + + auto footer = std::make_unique<views::FlexLayoutView>(); + + views::ImageView* icon_view = footer->AddChildView( + std::make_unique<views::ImageView>(ui::ImageModel::FromVectorIcon( + vector_icons::kSaveCloudIcon, ui::kColorIcon, + layout_provider->GetDistanceMetric( + DISTANCE_BUBBLE_HEADER_VECTOR_ICON_SIZE)))); + icon_view->SetVerticalAlignment(views::ImageView::Alignment::kLeading); + icon_view->SetProperty( + views::kMarginsKey, + gfx::Insets::TLBR( + 0, 0, 0, + layout_provider->GetInsetsMetric(views::INSETS_DIALOG_TITLE).left())); + + views::StyledLabel* footer_label = + footer->AddChildView(CreateGooglePasswordManagerLabel( + /*text_message_id=*/ + IDS_PASSWORD_MANAGER_MANAGEMENT_BUBBLE_FOOTER_MOVE_PASSWORD, + /*link_message_id=*/ + IDS_PASSWORD_MANAGER_MANAGEMENT_BUBBLE_LINK_TEXT_MOVE_PASSWORD, + move_password_closure, views::style::CONTEXT_BUBBLE_FOOTER)); + + const int footer_label_width = + layout_provider->GetDistanceMetric( + views::DISTANCE_BUBBLE_PREFERRED_WIDTH) - + 2 * layout_provider->GetInsetsMetric(views::INSETS_DIALOG).width(); + footer_label->SizeToFit(footer_label_width); + + return footer; +} + void ManagePasswordsView::RecreateLayout() { views::BubbleFrameView* frame_view = GetBubbleFrameView(); CHECK(frame_view); @@ -241,6 +288,15 @@ gfx::Insets().set_bottom(ChromeLayoutProvider::Get() ->GetInsetsMetric(views::INSETS_DIALOG) .bottom())); + if (controller_.IsOptedInForAccountStorage() && + !controller_.get_currently_selected_password() + .value() + .IsUsingAccountStore() && + base::FeatureList::IsEnabled( + password_manager::features::kButterOnDesktopFollowup)) { + frame_view->SetFootnoteView(CreateMovePasswordFooterView()); + frame_view->SetProperty(views::kElementIdentifierKey, kFooterId); + } } else { password_details_view_ = nullptr; frame_view->SetTitleView(CreateTitleView(controller_.GetTitle())); @@ -325,6 +381,7 @@ } DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(ManagePasswordsView, kTopView); +DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(ManagePasswordsView, kFooterId); BEGIN_METADATA(ManagePasswordsView) END_METADATA
diff --git a/chrome/browser/ui/views/passwords/manage_passwords_view.h b/chrome/browser/ui/views/passwords/manage_passwords_view.h index 3f73aee..0c692064 100644 --- a/chrome/browser/ui/views/passwords/manage_passwords_view.h +++ b/chrome/browser/ui/views/passwords/manage_passwords_view.h
@@ -24,6 +24,7 @@ public: DECLARE_CLASS_ELEMENT_IDENTIFIER_VALUE(kTopView); + DECLARE_CLASS_ELEMENT_IDENTIFIER_VALUE(kFooterId); ManagePasswordsView(content::WebContents* web_contents, views::View* anchor_view); @@ -50,6 +51,7 @@ std::unique_ptr<ManagePasswordsListView> CreatePasswordListView(); std::unique_ptr<ManagePasswordsDetailsView> CreatePasswordDetailsView(); std::unique_ptr<views::View> CreateFooterView(); + std::unique_ptr<views::View> CreateMovePasswordFooterView(); // Changes the contents of the page to either display the details of // `currently_selected_password_` or the list of passwords when
diff --git a/chrome/browser/ui/views/passwords/password_bubble_browsertest.cc b/chrome/browser/ui/views/passwords/password_bubble_browsertest.cc index 27266a278..f5ff3ff 100644 --- a/chrome/browser/ui/views/passwords/password_bubble_browsertest.cc +++ b/chrome/browser/ui/views/passwords/password_bubble_browsertest.cc
@@ -31,7 +31,9 @@ ~PasswordBubbleBrowserTest() override = default; void ShowUi(const std::string& name) override { - ConfigurePasswordSync(std::get<0>(GetParam())); + ConfigurePasswordSync(std::get<0>(GetParam()) + ? SyncConfiguration::kSyncing + : SyncConfiguration::kNotSyncing); base::i18n::SetRTLForTesting(std::get<1>(GetParam())); if (StartsWith(name, "PendingPasswordBubble", base::CompareCase::SENSITIVE)) {
diff --git a/chrome/browser/ui/views/passwords/password_bubble_interactive_uitest.cc b/chrome/browser/ui/views/passwords/password_bubble_interactive_uitest.cc index 65d49dc..98e5c5d 100644 --- a/chrome/browser/ui/views/passwords/password_bubble_interactive_uitest.cc +++ b/chrome/browser/ui/views/passwords/password_bubble_interactive_uitest.cc
@@ -114,9 +114,11 @@ class PasswordBubbleInteractiveUiTest : public ManagePasswordsTest { public: PasswordBubbleInteractiveUiTest() { - scoped_feature_list_.InitAndEnableFeature( - password_manager::features:: - kNewConfirmationBubbleForGeneratedPasswords); + scoped_feature_list_.InitWithFeatures( + {password_manager::features:: + kNewConfirmationBubbleForGeneratedPasswords, + password_manager::features::kButterOnDesktopFollowup}, + {}); } PasswordBubbleInteractiveUiTest(const PasswordBubbleInteractiveUiTest&) = @@ -1001,7 +1003,35 @@ OnIncompatibleAction::kIgnoreAndContinue, "Screenshot can only run in pixel_tests on Windows."), Screenshot(ManagePasswordsDetailsView::kTopView, - std::string(), "4385094")); + std::string(), "5189779")); +} + +IN_PROC_BROWSER_TEST_F( + PasswordBubbleInteractiveUiTest, + NavigateToManagementDetailsViewWithMoveFooterVisibleAndTakeScreenshot) { + const char kFirstCredentialsRow[] = "FirstCredentialsRow"; + + std::unique_ptr<base::AutoReset<bool>> bypass_user_auth_for_testing = + GetController()->BypassUserAuthtForTesting(); + auto setup_passwords = [this]() { + ConfigurePasswordSync(SyncConfiguration::kAccountStorageOnly); + SetupManagingPasswords(GURL(u"http://test-url.com")); + }; + + RunTestSequence( + Do(setup_passwords), PressButton(kPasswordsOmniboxKeyIconElementId), + WaitForShow(ManagePasswordsView::kTopView), + EnsurePresent(ManagePasswordsListView::kTopView), + NameChildViewByType<RichHoverButton>(ManagePasswordsListView::kTopView, + kFirstCredentialsRow), + PressButton(kFirstCredentialsRow), + WaitForShow(ManagePasswordsDetailsView::kTopView), + EnsureNotPresent(ManagePasswordsListView::kTopView), + // Screenshots are supposed only on Windows. + SetOnIncompatibleAction( + OnIncompatibleAction::kIgnoreAndContinue, + "Screenshot can only run in pixel_tests on Windows."), + Screenshot(ManagePasswordsView::kFooterId, std::string(), "5189779")); } class SharedPasswordsNotificationBubbleInteractiveUiTest
diff --git a/chrome/browser/ui/views/performance_controls/memory_saver_bubble_view.cc b/chrome/browser/ui/views/performance_controls/memory_saver_bubble_view.cc index 6a1b2ea..1050335 100644 --- a/chrome/browser/ui/views/performance_controls/memory_saver_bubble_view.cc +++ b/chrome/browser/ui/views/performance_controls/memory_saver_bubble_view.cc
@@ -5,6 +5,7 @@ #include "chrome/browser/ui/views/performance_controls/memory_saver_bubble_view.h" #include "base/functional/bind.h" +#include "base/strings/utf_string_conversions.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "chrome/browser/profiles/profile.h" @@ -98,6 +99,8 @@ const bool show_memory_savings_chart = base::FeatureList::IsEnabled( performance_manager::features::kMemorySavingsReportingImprovements); + content::WebContents* web_contents = + browser->tab_strip_model()->GetActiveWebContents(); dialog_model_builder .SetTitle( @@ -112,8 +115,6 @@ .SetLabel(l10n_util::GetStringUTF16(IDS_OK)) .SetId(kMemorySaverDialogOkButton)); - content::WebContents* web_contents = - browser->tab_strip_model()->GetActiveWebContents(); const uint64_t memory_savings = memory_saver::GetDiscardedMemorySavingsInBytes(web_contents); @@ -168,6 +169,8 @@ if (base::FeatureList::IsEnabled( performance_manager::features::kDiscardExceptionsImprovements) && !is_guest && !profile->IsIncognitoProfile()) { + dialog_model_builder.SetSubtitle( + base::UTF8ToUTF16(web_contents->GetURL().host())); const bool is_site_excluded = performance_manager::user_tuning::prefs:: IsSiteInTabDiscardExceptionsList(profile->GetPrefs(), web_contents->GetURL().host());
diff --git a/chrome/browser/ui/views/performance_controls/memory_saver_bubble_view_unittest.cc b/chrome/browser/ui/views/performance_controls/memory_saver_bubble_view_unittest.cc index 3fc6712..ddfbec34 100644 --- a/chrome/browser/ui/views/performance_controls/memory_saver_bubble_view_unittest.cc +++ b/chrome/browser/ui/views/performance_controls/memory_saver_bubble_view_unittest.cc
@@ -40,9 +40,12 @@ #include "ui/views/controls/styled_label.h" #include "ui/views/interaction/element_tracker_views.h" #include "ui/views/test/button_test_api.h" +#include "ui/views/widget/widget.h" +namespace { constexpr int kMemorySavingsKilobytes = 100 * 1024; constexpr int kSmallMemorySavingsKilobytes = 10; +} // namespace class MemorySaverBubbleViewTest : public MemorySaverUnitTestMixin<TestWithBrowserView> { @@ -109,6 +112,18 @@ MemorySaverBubbleActionType::kDismiss, 1); } +// A the domain of the current site should be rendered as a subtitle. +TEST_F(MemorySaverBubbleViewTest, ShouldRenderDomainInDialogSubtitle) { + SetTabDiscardState(0, true); + + ClickPageActionChip(); + + views::Widget* widget = GetPageActionIconView()->GetBubble()->GetWidget(); + views::BubbleDialogDelegate* const bubble_delegate = + widget->widget_delegate()->AsBubbleDialogDelegate(); + EXPECT_EQ(bubble_delegate->GetSubtitle(), u"foo.com"); +} + // A link should be rendered within the dialog. TEST_F(MemorySaverBubbleViewTest, ShouldRenderLinkInDialog) { SetTabDiscardState(0, true);
diff --git a/chrome/browser/ui/views/performance_controls/test_support/memory_saver_unit_test_mixin.h b/chrome/browser/ui/views/performance_controls/test_support/memory_saver_unit_test_mixin.h index 159da75..7036dd5 100644 --- a/chrome/browser/ui/views/performance_controls/test_support/memory_saver_unit_test_mixin.h +++ b/chrome/browser/ui/views/performance_controls/test_support/memory_saver_unit_test_mixin.h
@@ -37,7 +37,7 @@ // discard reason if the tab was discarded void AddNewTab(int memory_savings, mojom::LifecycleUnitDiscardReason discard_reason) { - T::AddTab(T::browser(), GURL("http://foo")); + T::AddTab(T::browser(), GURL("http://foo.com")); content::WebContents* const contents = T::browser()->tab_strip_model()->GetActiveWebContents(); MemorySaverChipTabHelper::CreateForWebContents(contents);
diff --git a/chrome/browser/ui/views/permissions/embedded_permission_prompt_base_view.cc b/chrome/browser/ui/views/permissions/embedded_permission_prompt_base_view.cc index 68fa51b5..71439dd 100644 --- a/chrome/browser/ui/views/permissions/embedded_permission_prompt_base_view.cc +++ b/chrome/browser/ui/views/permissions/embedded_permission_prompt_base_view.cc
@@ -39,8 +39,6 @@ constexpr int BODY_TOP_MARGIN = 10; constexpr int DISTANCE_BUTTON_VERTICAL = 8; -constexpr int FAVICON_SIZE_IN_PIXEL = 28; -constexpr int FAVICON_SPACER = 5; void AddElementIdentifierToLabel(views::Label& label, size_t index) { ui::ElementIdentifier id; @@ -101,15 +99,22 @@ const gfx::VectorIcon& vector_icon = GetIcon(); if (!vector_icon.is_empty()) { + const int kPermissionIconSize = features::IsChromeRefresh2023() ? 20 : 18; + + ChromeLayoutProvider* provider = ChromeLayoutProvider::Get(); + auto icon = std::make_unique<views::ImageView>(ui::ImageModel::FromVectorIcon( - vector_icon, ui::kColorIcon, FAVICON_SIZE_IN_PIXEL)); + vector_icon, ui::kColorIcon, kPermissionIconSize)); icon->SetHorizontalAlignment(views::ImageView::Alignment::kLeading); title_container->AddChildView(std::move(icon)); // Add space between the icon and the text. auto spacer = std::make_unique<views::View>(); - spacer->SetPreferredSize(gfx::Size(FAVICON_SPACER, /*height=*/1)); + spacer->SetPreferredSize( + gfx::Size(provider->GetDistanceMetric( + DISTANCE_PERMISSION_PROMPT_HORIZONTAL_ICON_LABEL_PADDING), + /*height=*/1)); title_container->AddChildView(std::move(spacer)); }
diff --git a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc b/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc index 3e4daeb..231e7c1c 100644 --- a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc +++ b/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc
@@ -46,6 +46,8 @@ kBlockButtonElementId); DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(PermissionPromptBubbleBaseView, kAllowButtonElementId); +DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(PermissionPromptBubbleBaseView, + kAllowOnceButtonElementId); PermissionPromptBubbleBaseView::PermissionPromptBubbleBaseView( Browser* browser, @@ -83,13 +85,18 @@ views::BoxLayout::Orientation::kVertical, gfx::Insets(), DISTANCE_BUTTON_VERTICAL)); - auto allow_once_button = std::make_unique<views::MdTextButton>( - base::BindRepeating(&PermissionPromptBubbleBaseView:: - FilterUnintenedEventsAndRunCallbacks, - base::Unretained(this), - GetViewId(PermissionDialogButton::kAcceptOnce)), - l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW_THIS_TIME)); - allow_once_button->SetID(GetViewId(PermissionDialogButton::kAcceptOnce)); + auto allow_once_button = + views::Builder<views::MdTextButton>() + .SetText(l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW_THIS_TIME)) + .SetCallback(base::BindRepeating( + &PermissionPromptBubbleBaseView:: + FilterUnintenedEventsAndRunCallbacks, + base::Unretained(this), + GetViewId(PermissionDialogButton::kAcceptOnce))) + .SetID(GetViewId(PermissionDialogButton::kAcceptOnce)) + .SetProperty(views::kElementIdentifierKey, + kAllowOnceButtonElementId) + .Build(); auto allow_always_button = std::make_unique<views::MdTextButton>( base::BindRepeating(&PermissionPromptBubbleBaseView::
diff --git a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.h b/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.h index 3b088e4..1b9b7d6 100644 --- a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.h +++ b/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.h
@@ -45,6 +45,7 @@ DECLARE_CLASS_ELEMENT_IDENTIFIER_VALUE(kMainViewId); DECLARE_CLASS_ELEMENT_IDENTIFIER_VALUE(kBlockButtonElementId); DECLARE_CLASS_ELEMENT_IDENTIFIER_VALUE(kAllowButtonElementId); + DECLARE_CLASS_ELEMENT_IDENTIFIER_VALUE(kAllowOnceButtonElementId); PermissionPromptBubbleBaseView( Browser* browser, base::WeakPtr<permissions::PermissionPrompt::Delegate> delegate,
diff --git a/chrome/browser/ui/views/permissions/permission_prompt_factory.cc b/chrome/browser/ui/views/permissions/permission_prompt_factory.cc index e533ce8..3a1224da 100644 --- a/chrome/browser/ui/views/permissions/permission_prompt_factory.cc +++ b/chrome/browser/ui/views/permissions/permission_prompt_factory.cc
@@ -4,6 +4,7 @@ #include <memory> +#include "base/command_line.h" #include "base/memory/raw_ptr.h" #include "base/ranges/algorithm.h" #include "chrome/browser/ui/browser_finder.h" @@ -21,6 +22,7 @@ #include "components/permissions/request_type.h" #include "content/public/browser/web_contents.h" #include "content/public/common/content_features.h" +#include "content/public/common/content_switches.h" namespace { @@ -109,7 +111,9 @@ bool ShouldCurrentRequestUsePermissionElementSecondaryUI( permissions::PermissionPrompt::Delegate* delegate) { - if (!base::FeatureList::IsEnabled(features::kPermissionElement)) { + if (!base::FeatureList::IsEnabled(features::kPermissionElement) && + !base::CommandLine::ForCurrentProcess()->HasSwitch( + switches::kEnableExperimentalWebPlatformFeatures)) { return false; }
diff --git a/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_frame_toolbar_browsertest.cc b/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_frame_toolbar_browsertest.cc index 4fb5118..3efd088 100644 --- a/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_frame_toolbar_browsertest.cc +++ b/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_frame_toolbar_browsertest.cc
@@ -1776,6 +1776,23 @@ browser(), std::move(web_app_info), start_url); } + bool RunUntil(base::FunctionRef<bool(void)> condition) { + // TODO(crbug.com/1519551):`base::test::RunUntil` is flaky on Mac. +#if BUILDFLAG(IS_MAC) + while (!condition()) { + base::test::TestFuture<void> future; + base::SingleThreadTaskRunner::GetCurrentDefault()->PostDelayedTask( + FROM_HERE, future.GetCallback(), TestTimeouts::tiny_timeout()); + if (!future.Wait()) { + return false; // Timed out. + } + } + return true; +#else + return base::test::RunUntil(condition); +#endif + } + bool MatchMediaMatches(content::WebContents* web_contents, std::string match_media_script) { return EvalJs(web_contents, match_media_script).ExtractBool(); @@ -1788,17 +1805,12 @@ content::JsReplace("window.setResizable($1)", resizable); EXPECT_TRUE(ExecJs(web_contents, set_resizable_script)); content::WaitForLoadStop(web_contents); - - // TODO(crbug.com/1519130): `base::test::RunUntil` times out on mac. - while (!MatchMediaMatches( - web_contents, - content::JsReplace("window.matchMedia('(resizable: $1)').matches", - expected))) { - base::RunLoop run_loop; - base::SingleThreadTaskRunner::GetCurrentDefault()->PostDelayedTask( - FROM_HERE, run_loop.QuitClosure(), TestTimeouts::tiny_timeout()); - run_loop.Run(); - } + RunUntil([&]() { + return MatchMediaMatches( + web_contents, + content::JsReplace("window.matchMedia('(resizable: $1)').matches", + expected)); + }); } void CheckCanResize(bool browser_view_can_resize_expected, @@ -2027,7 +2039,6 @@ } #endif // defined(USE_AURA) -#if !BUILDFLAG(IS_MAC) IN_PROC_BROWSER_TEST_F( WebAppFrameToolbarBrowserTest_AdditionalWindowingControls, MinimizeWindowWithApi) { @@ -2042,13 +2053,13 @@ // Minimize window EXPECT_TRUE(ExecJs(web_contents, "window.minimize()")); - EXPECT_TRUE(base::test::RunUntil( - [&]() { return helper()->browser_view()->IsMinimized(); })); + EXPECT_TRUE( + RunUntil([&]() { return helper()->browser_view()->IsMinimized(); })); // On Windows the minimizing seems to be so fast that it doesn't have // sufficient time to update the CSS before it already minimized. #if !BUILDFLAG(IS_WIN) - EXPECT_TRUE(base::test::RunUntil([&]() { + EXPECT_TRUE(RunUntil([&]() { return MatchMediaMatches( web_contents, "window.matchMedia('(display-state: minimized)').matches"); @@ -2070,9 +2081,9 @@ // Maximize window EXPECT_TRUE(ExecJs(web_contents, "window.maximize()")); - EXPECT_TRUE(base::test::RunUntil( - [&]() { return helper()->browser_view()->IsMaximized(); })); - EXPECT_TRUE(base::test::RunUntil([&]() { + EXPECT_TRUE( + RunUntil([&]() { return helper()->browser_view()->IsMaximized(); })); + EXPECT_TRUE(RunUntil([&]() { return MatchMediaMatches( web_contents, "window.matchMedia('(display-state: maximized)').matches"); @@ -2080,14 +2091,13 @@ // Restore window EXPECT_TRUE(ExecJs(web_contents, "window.restore()")); - EXPECT_TRUE(base::test::RunUntil( - [&]() { return !helper()->browser_view()->IsMaximized(); })); - EXPECT_TRUE(base::test::RunUntil([&]() { + EXPECT_TRUE( + RunUntil([&]() { return !helper()->browser_view()->IsMaximized(); })); + EXPECT_TRUE(RunUntil([&]() { return MatchMediaMatches( web_contents, "window.matchMedia('(display-state: normal)').matches"); })); } -#endif // !BUILDFLAG(IS_MAC) #endif // !BUILDFLAG(IS_ANDROID) class OriginTextVisibilityWaiter : public views::ViewObserver {
diff --git a/chrome/browser/ui/webui/ash/settings/pages/privacy/app_permission_handler.cc b/chrome/browser/ui/webui/ash/settings/pages/privacy/app_permission_handler.cc index 5a5e3c3b..695781cb 100644 --- a/chrome/browser/ui/webui/ash/settings/pages/privacy/app_permission_handler.cc +++ b/chrome/browser/ui/webui/ash/settings/pages/privacy/app_permission_handler.cc
@@ -8,6 +8,7 @@ #include "base/ranges/algorithm.h" #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" +#include "chrome/browser/ash/eche_app/app_id.h" #include "chrome/browser/web_applications/web_app_id_constants.h" #include "components/services/app_service/public/cpp/permission.h" #include "components/services/app_service/public/cpp/types_util.h" @@ -52,6 +53,7 @@ // Returns true if the system app with ID `app_id` uses microphone. bool SystemAppUsesMicrophone(const std::string& app_id) { return app_id == web_app::kCameraAppId || + app_id == ash::eche_app::kEcheAppId || app_id == ash::kChromeUIUntrustedProjectorSwaAppId; }
diff --git a/chrome/browser/ui/webui/ash/settings/pages/privacy/app_permission_handler_unittest.cc b/chrome/browser/ui/webui/ash/settings/pages/privacy/app_permission_handler_unittest.cc index 26556f6..2a9ef41 100644 --- a/chrome/browser/ui/webui/ash/settings/pages/privacy/app_permission_handler_unittest.cc +++ b/chrome/browser/ui/webui/ash/settings/pages/privacy/app_permission_handler_unittest.cc
@@ -12,6 +12,7 @@ #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" #include "chrome/browser/apps/app_service/app_service_test.h" +#include "chrome/browser/ash/eche_app/app_id.h" #include "chrome/browser/ui/webui/ash/settings/pages/privacy/mojom/app_permission_handler.mojom.h" #include "chrome/browser/web_applications/web_app_id_constants.h" #include "chrome/test/base/testing_profile.h" @@ -285,8 +286,10 @@ {std::make_pair(apps::PermissionType::kMicrophone, true)}); InstallApp(ash::kChromeUIUntrustedProjectorSwaAppId, {std::make_pair(apps::PermissionType::kMicrophone, true)}); + InstallApp(ash::eche_app::kEcheAppId, + {std::make_pair(apps::PermissionType::kMicrophone, true)}); - EXPECT_EQ(2, GetNumberOfSystemAppsThatUseMicrophone()); + EXPECT_EQ(3, GetNumberOfSystemAppsThatUseMicrophone()); } } // namespace ash::settings
diff --git a/chrome/browser/ui/webui/ash/smb_shares/smb_share_dialog.cc b/chrome/browser/ui/webui/ash/smb_shares/smb_share_dialog.cc index aaba527..e69c5b4 100644 --- a/chrome/browser/ui/webui/ash/smb_shares/smb_share_dialog.cc +++ b/chrome/browser/ui/webui/ash/smb_shares/smb_share_dialog.cc
@@ -97,15 +97,6 @@ source->SetDefaultResource(IDR_SMB_SHARES_DIALOG_CONTAINER_HTML); source->AddResourcePath("smb_share_dialog.js", IDR_SMB_SHARES_DIALOG_JS); - source->OverrideContentSecurityPolicy( - network::mojom::CSPDirectiveName::TrustedTypes, - "trusted-types parse-html-subset sanitize-inner-html static-types " - "ash-deprecated-parse-html-subset " - // Required by lit-html. - "lit-html " - // Required by polymer. - "polymer-html-literal polymer-template-event-attribute-policy;"); - web_ui->AddMessageHandler(std::make_unique<SmbHandler>( Profile::FromWebUI(web_ui), base::DoNothing())); }
diff --git a/chrome/browser/ui/webui/settings/search_engines_handler_unittest.cc b/chrome/browser/ui/webui/settings/search_engines_handler_unittest.cc index 51b1122a..5969e51 100644 --- a/chrome/browser/ui/webui/settings/search_engines_handler_unittest.cc +++ b/chrome/browser/ui/webui/settings/search_engines_handler_unittest.cc
@@ -125,13 +125,13 @@ SearchEnginesHandlerTestBase::SetUp(); if (WithSearchEnginesChoiceEnabled()) { + PrefService* pref_service = profile()->GetPrefs(); // The search engine choice feature is only enabled for countries in the // EEA region. const int kBelgiumCountryId = country_codes::CountryCharsToCountryID('B', 'E'); - base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( - switches::kSearchEngineChoiceCountry, - country_codes::CountryIDToCountryString(kBelgiumCountryId)); + pref_service->SetInteger(country_codes::kCountryIDAtInstall, + kBelgiumCountryId); } } @@ -205,13 +205,13 @@ void SetUp() override { SearchEnginesHandlerTestBase::SetUp(); + PrefService* pref_service = profile()->GetPrefs(); // The search engine choice feature is only enabled for countries in the // EEA region. const int kBelgiumCountryId = country_codes::CountryCharsToCountryID('B', 'E'); - base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( - switches::kSearchEngineChoiceCountry, - country_codes::CountryIDToCountryString(kBelgiumCountryId)); + pref_service->SetInteger(country_codes::kCountryIDAtInstall, + kBelgiumCountryId); } }; @@ -222,9 +222,8 @@ // region. const int kBelgiumCountryId = country_codes::CountryCharsToCountryID('B', 'E'); - base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( - switches::kSearchEngineChoiceCountry, - country_codes::CountryIDToCountryString(kBelgiumCountryId)); + pref_service->SetInteger(country_codes::kCountryIDAtInstall, + kBelgiumCountryId); EXPECT_FALSE(pref_service->HasPrefPath( prefs::kDefaultSearchProviderChoiceScreenCompletionTimestamp)); @@ -249,15 +248,15 @@ TEST_F(SearchEnginesHandlerTestWithSearchEngineChoiceEnabled, RecordingSearchEngineShouldBeDoneAfterSettingDefault) { + PrefService* pref_service = profile()->GetPrefs(); TemplateURLService* template_url_service = TemplateURLServiceFactory::GetForProfile(profile()); // The search engine choice feature is only enabled for countries in the EEA // region. const int kBelgiumCountryId = country_codes::CountryCharsToCountryID('B', 'E'); - base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( - switches::kSearchEngineChoiceCountry, - country_codes::CountryIDToCountryString(kBelgiumCountryId)); + pref_service->SetInteger(country_codes::kCountryIDAtInstall, + kBelgiumCountryId); const TemplateURL* default_search_engine = template_url_service->GetDefaultSearchProvider();
diff --git a/chrome/browser/web_applications/BUILD.gn b/chrome/browser/web_applications/BUILD.gn index 5059921..5532446 100644 --- a/chrome/browser/web_applications/BUILD.gn +++ b/chrome/browser/web_applications/BUILD.gn
@@ -3,8 +3,10 @@ # found in the LICENSE file. import("//build/config/chromeos/ui_mode.gni") +import("//build/config/sanitizers/sanitizers.gni") import("//chrome/browser/buildflags.gni") import("//mojo/public/tools/bindings/mojom.gni") +import("//testing/test.gni") source_set("web_applications") { sources = [ @@ -689,6 +691,23 @@ ] } +if (fuzztest_supported) { + test("web_application_fuzztests") { + testonly = true + enable_fuzztest = true + + sources = [ "isolated_web_apps/update_manifest/update_manifest_fuzzer.cc" ] + + deps = [ + ":web_applications", + ":web_applications_test_support", + "//chrome/test:test_support", + "//components/webapps/common:common", + "//third_party/fuzztest:fuzztest_gtest_main", + ] + } +} + source_set("web_applications_unit_tests") { testonly = true
diff --git a/chrome/browser/web_applications/DEPS b/chrome/browser/web_applications/DEPS index b15f1b0..d19c01e4 100644 --- a/chrome/browser/web_applications/DEPS +++ b/chrome/browser/web_applications/DEPS
@@ -9,6 +9,7 @@ "+mojo/public/cpp/bindings", "+services/network/public/cpp", "+third_party/blink/public/common", + "+third_party/fuzztest", "+third_party/liburlpattern", "+url", }
diff --git a/chrome/browser/web_applications/isolated_web_apps/update_manifest/update_manifest_fuzzer.cc b/chrome/browser/web_applications/isolated_web_apps/update_manifest/update_manifest_fuzzer.cc new file mode 100644 index 0000000..a5b82634 --- /dev/null +++ b/chrome/browser/web_applications/isolated_web_apps/update_manifest/update_manifest_fuzzer.cc
@@ -0,0 +1,168 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/web_applications/isolated_web_apps/update_manifest/update_manifest.h" + +#include <optional> +#include <string> +#include <tuple> +#include <vector> + +#include "base/json/json_reader.h" +#include "base/test/to_vector.h" +#include "base/types/optional_ref.h" +#include "base/values.h" +#include "third_party/fuzztest/src/fuzztest/fuzztest.h" + +namespace web_app { +namespace { +void UpdateManifestCanSuccessfullyParseAnyString(const base::Value& json) { + auto result = UpdateManifest::CreateFromJson( + json, GURL("https://example.com/manifest.json")); +} + +template <typename T> +std::optional<std::tuple<T>> Wrap(base::optional_ref<const T> maybe_value) { + return maybe_value.has_value() + ? std::make_optional(std::tuple<T>{*maybe_value}) + : std::nullopt; +} + +auto ArbitraryValueNull() { + return fuzztest::ReversibleMap( + []() { return base::Value(); }, + [](const base::Value& value) { return std::optional<std::tuple<>>{}; }); +} + +auto ArbitraryValueBool() { + return fuzztest::ReversibleMap( + [](bool boolean) { return base::Value(boolean); }, + [](const base::Value& value) { return Wrap<bool>(value.GetIfBool()); }, + fuzztest::Arbitrary<bool>()); +} + +auto ArbitraryValueInt() { + return fuzztest::ReversibleMap( + [](int number) { return base::Value(number); }, + [](const base::Value& value) { return Wrap<int>(value.GetIfInt()); }, + fuzztest::Arbitrary<int>()); +} + +auto ArbitraryValueDouble() { + return fuzztest::ReversibleMap( + [](double number) { return base::Value(number); }, + [](const base::Value& value) { + return Wrap<double>(value.GetIfDouble()); + }, + fuzztest::Finite<double>()); +} + +auto ArbitraryValueString() { + return fuzztest::ReversibleMap( + [](std::string string) { return base::Value(string); }, + [](const base::Value& value) { + return Wrap<std::string>(value.GetIfString()); + }, + fuzztest::AsciiString()); // TODO(crbug.com/1444407): Should be UTF8 + // instead. +} + +auto ArbitraryValueBlob() { + return fuzztest::ReversibleMap( + [](std::vector<uint8_t> blob) { return base::Value(blob); }, + [](const base::Value& value) { + return Wrap<std::vector<uint8_t>>(value.GetIfBlob()); + }, + fuzztest::Arbitrary<std::vector<uint8_t>>()); +} + +auto ArbitraryValueList(fuzztest::Domain<base::Value> entry_domain) { + return fuzztest::ReversibleMap( + [](std::vector<base::Value> values) { + base::Value::List list; + for (auto& value : values) { + list.Append(std::move(value)); + } + return base::Value(std::move(list)); + }, + [](const base::Value& value) { + auto maybe_list = base::optional_ref(value.GetIfList()); + return maybe_list.has_value() + ? std::make_optional(std::tuple{base::test::ToVector( + *maybe_list, &base::Value::Clone)}) + : std::nullopt; + }, + fuzztest::ContainerOf<std::vector<base::Value>>(entry_domain)); +} + +auto ArbitraryValueDict(fuzztest::Domain<base::Value> value_domain) { + return fuzztest::ReversibleMap( + [](std::vector<std::pair<std::string, base::Value>> entries) { + base::Value::Dict dict; + for (auto& [key, value] : entries) { + dict.Set(std::move(key), std::move(value)); + } + return base::Value(std::move(dict)); + }, + [](const base::Value& value) { + auto maybe_dict = base::optional_ref(value.GetIfDict()); + return maybe_dict.has_value() + ? std::make_optional(std::tuple{base::test::ToVector( + *maybe_dict, + [](const auto& entry) { + return std::make_pair(entry.first, + entry.second.Clone()); + })}) + : std::nullopt; + }, + fuzztest::ContainerOf<std::vector<std::pair<std::string, base::Value>>>( + fuzztest::PairOf(fuzztest::AsciiString(), // TODO(crbug.com/1444407): + // Should be UTF8 instead. + value_domain))); +} + +auto ArbitraryValue() { + fuzztest::DomainBuilder builder; + builder.Set<base::Value>( + "value", + fuzztest::OneOf(ArbitraryValueNull(), ArbitraryValueBool(), + ArbitraryValueInt(), ArbitraryValueDouble(), + ArbitraryValueString(), ArbitraryValueBlob(), + ArbitraryValueList(builder.Get<base::Value>("value")), + ArbitraryValueDict(builder.Get<base::Value>("value")))); + return std::move(builder).Finalize<base::Value>("value"); +} + +FUZZ_TEST(UpdateManifestFuzzTest, UpdateManifestCanSuccessfullyParseAnyString) + .WithDomains(ArbitraryValue()) + .WithSeeds({*base::JSONReader::Read("{}"), *base::JSONReader::Read(R"({ + "versions": [] + })"), + *base::JSONReader::Read(R"({ + "versions": [ + { + "version": "1.0.0", + "url": "https://example.com/bundle.swbn" + }, + { + "version": "1.0.3", + "url": "bundle.swbn" + }, + { + "version": "1.0.0", + "url": "https://example.com/bundle2.swbn" + } + ] + })"), + *base::JSONReader::Read(R"({ + "versions": [ + { + "version": "1.0.0", + "url": "https://example.com/bundle.swbn", + "blah": 123 + } + ] + })")}); +} // namespace +} // namespace web_app
diff --git a/chrome/build/lacros-arm64.pgo.txt b/chrome/build/lacros-arm64.pgo.txt index 6fb18b3..01ce3e0 100644 --- a/chrome/build/lacros-arm64.pgo.txt +++ b/chrome/build/lacros-arm64.pgo.txt
@@ -1 +1 @@ -chrome-chromeos-arm64-generic-main-1705880330-8a772c603835b8090b465b92bb7cb524b8413954.profdata +chrome-chromeos-arm64-generic-main-1705924404-61aa373b87e4ef10bce1d9838ac74b8d450d3061.profdata
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt index ff8bf8c..5c195fc 100644 --- a/chrome/build/linux.pgo.txt +++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@ -chrome-linux-main-1705902798-452cf184158ebb0777596ceac1fdc3a56902f2f7.profdata +chrome-linux-main-1705924404-36e5ced029181a28d20ffc1ae32bc566ea3fbecb.profdata
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt index 583e659..b7416678 100644 --- a/chrome/build/mac-arm.pgo.txt +++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@ -chrome-mac-arm-main-1705917537-8bd8ff351e7fbbdcd154b43301249ad11dda46c0.profdata +chrome-mac-arm-main-1705931869-b4fa860a64a5b33a945ab8368f739a4f6e9bd3f6.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt index fb6216c..25c299067 100644 --- a/chrome/build/mac.pgo.txt +++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@ -chrome-mac-main-1705902798-84630cbed3f0c08be1acb85908b207d880e072ce.profdata +chrome-mac-main-1705924404-716e60677a8e1ad6da0ed7961d740e4ac74b2f80.profdata
diff --git a/chrome/build/win-arm64.pgo.txt b/chrome/build/win-arm64.pgo.txt index 5270f40..c766491 100644 --- a/chrome/build/win-arm64.pgo.txt +++ b/chrome/build/win-arm64.pgo.txt
@@ -1 +1 @@ -chrome-win-arm64-main-1705902798-9be9eec142df6bc8cb04a7dd3965d31f488ff6d1.profdata +chrome-win-arm64-main-1705924404-35186fdb759847a191493f3f0b634b7b6dd536be.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index 825b0e4f..6dccff9 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-main-1705913940-f588d173e5955b82015c08d8492c3e836dacb74f.profdata +chrome-win64-main-1705924404-cec05d509bae1d5e09446e74fb592f7804b70b83.profdata
diff --git a/chrome/install_static/user_data_dir_win_unittest.cc b/chrome/install_static/user_data_dir_win_unittest.cc index 80e5895..1e54ace 100644 --- a/chrome/install_static/user_data_dir_win_unittest.cc +++ b/chrome/install_static/user_data_dir_win_unittest.cc
@@ -14,12 +14,6 @@ namespace install_static { namespace { -inline bool EndsWith(const std::wstring& value, const std::wstring& ending) { - if (ending.size() > value.size()) - return false; - return std::equal(ending.rbegin(), ending.rend(), value.rbegin()); -} - #if BUILDFLAG(GOOGLE_CHROME_BRANDING) const wchar_t kPolicyRegistryKey[] = L"SOFTWARE\\Policies\\Google\\Chrome"; const wchar_t kUserDataDirNameSuffix[] = L"\\Google\\Chrome\\User Data"; @@ -57,7 +51,7 @@ install_static::GetUserDataDirectoryImpl(L"", kFakeInstallConstants, &result, &invalid); - EXPECT_TRUE(EndsWith(result, kUserDataDirNameSuffix)); + EXPECT_TRUE(result.ends_with(kUserDataDirNameSuffix)); EXPECT_EQ(std::wstring(), invalid); } @@ -66,7 +60,7 @@ install_static::GetUserDataDirectoryImpl(L"<>|:", kFakeInstallConstants, &result, &invalid); - EXPECT_TRUE(EndsWith(result, kUserDataDirNameSuffix)); + EXPECT_TRUE(result.ends_with(kUserDataDirNameSuffix)); EXPECT_EQ(L"<>|:", invalid); } @@ -88,7 +82,7 @@ install_static::GetUserDataDirectoryImpl(L"xxx", kFakeInstallConstants, &result, &invalid); - EXPECT_TRUE(EndsWith(result, L"\\yyy")); + EXPECT_TRUE(result.ends_with(L"\\yyy")); EXPECT_EQ(std::wstring(), invalid); } @@ -110,7 +104,7 @@ install_static::GetUserDataDirectoryImpl(L"xxx", kFakeInstallConstants, &result, &invalid); - EXPECT_TRUE(EndsWith(result, L"\\yyy")); + EXPECT_TRUE(result.ends_with(L"\\yyy")); EXPECT_EQ(std::wstring(), invalid); } @@ -139,7 +133,7 @@ install_static::GetUserDataDirectoryImpl(L"xxx", kFakeInstallConstants, &result, &invalid); - EXPECT_TRUE(EndsWith(result, L"\\111")); + EXPECT_TRUE(result.ends_with(L"\\111")); EXPECT_EQ(std::wstring(), invalid); } @@ -162,7 +156,7 @@ EXPECT_EQ(std::wstring::npos, result.find(L"${windows}")); std::wstring upper; base::ranges::transform(result, std::back_inserter(upper), toupper); - EXPECT_TRUE(EndsWith(upper, L"\\WINDOWS")); + EXPECT_TRUE(upper.ends_with(L"\\WINDOWS")); EXPECT_EQ(std::wstring(), invalid); }
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index d54e06c..d1ccec06 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -8395,6 +8395,7 @@ deps += [ "//chrome/browser/chromeos", "//chrome/browser/chromeos:test_support", + "//chrome/browser/smart_card:unit_tests", "//chromeos/components/disks:prefs", "//chromeos/dbus/power", "//components/arc/common", @@ -11355,6 +11356,7 @@ deps += [ "//chrome/browser/chromeos", "//chrome/browser/chromeos:test_support", + "//chrome/browser/smart_card:interactive_ui_tests", "//chromeos/constants", "//chromeos/dbus/dlp:dlp", "//chromeos/ui/base",
diff --git a/chrome/test/android/javatests/src/org/chromium/chrome/browser/history/StubbedHistoryProvider.java b/chrome/test/android/javatests/src/org/chromium/chrome/browser/history/StubbedHistoryProvider.java index d2db8577..dcad0ebf 100644 --- a/chrome/test/android/javatests/src/org/chromium/chrome/browser/history/StubbedHistoryProvider.java +++ b/chrome/test/android/javatests/src/org/chromium/chrome/browser/history/StubbedHistoryProvider.java
@@ -39,7 +39,7 @@ } @Override - public void queryHistory(String query) { + public void queryHistory(String query, String appId) { mHostOnly = false; query(query); }
diff --git a/chrome/test/android/javatests/src/org/chromium/chrome/test/util/BookmarkTestRule.java b/chrome/test/android/javatests/src/org/chromium/chrome/test/util/BookmarkTestRule.java index 8dbb1ba..c02fbfb3 100644 --- a/chrome/test/android/javatests/src/org/chromium/chrome/test/util/BookmarkTestRule.java +++ b/chrome/test/android/javatests/src/org/chromium/chrome/test/util/BookmarkTestRule.java
@@ -4,8 +4,6 @@ package org.chromium.chrome.test.util; -import static org.chromium.base.ThreadUtils.runOnUiThreadBlocking; - import androidx.annotation.Nullable; import androidx.test.platform.app.InstrumentationRegistry; @@ -14,20 +12,10 @@ import org.junit.runners.model.Statement; import org.chromium.base.test.util.ApplicationTestUtils; -import org.chromium.base.test.util.CallbackHelper; import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.bookmarks.BookmarkActivity; -import org.chromium.chrome.browser.bookmarks.BookmarkManagerCoordinator; -import org.chromium.chrome.browser.bookmarks.BookmarkPage; import org.chromium.chrome.browser.bookmarks.BookmarkUtils; -import org.chromium.chrome.browser.tab.EmptyTabObserver; -import org.chromium.chrome.browser.tab.Tab; -import org.chromium.chrome.browser.ui.native_page.NativePage; -import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.content_public.browser.test.util.TestThreadUtils; -import org.chromium.url.GURL; - -import java.util.concurrent.TimeoutException; /** * This test rule destroys BookmarkActivity opened with showBookmarkManager on phone. @@ -52,47 +40,18 @@ } /** Shows the bookmark manager on screen. */ - public BookmarkManagerCoordinator showBookmarkManager(ChromeActivity chromeActivity) { - BookmarkManagerCoordinator coordinator; + public void showBookmarkManager(ChromeActivity chromeActivity) { // BookmarkActivity is only opened on phone, it is a native page on tablet. if (chromeActivity.isTablet()) { - // Wait for the bookmark native page to load to make sure that the reference to - // BookmarkManagerCoordinator is valid. - CallbackHelper callbackHelper = new CallbackHelper(); - EmptyTabObserver obs = - new EmptyTabObserver() { - @Override - public void onPageLoadFinished(Tab tab, GURL url) { - NativePage nativePage = tab.getNativePage(); - if (nativePage != null - && nativePage.getHost().equals(UrlConstants.BOOKMARKS_HOST)) { - callbackHelper.notifyCalled(); - } - } - }; - runOnUiThreadBlocking(() -> chromeActivity.getActivityTab().addObserver(obs)); showBookmarkManagerInternal(chromeActivity); - try { - callbackHelper.waitForCallback(0); - } catch (TimeoutException e) { - throw new RuntimeException(e); - } - runOnUiThreadBlocking(() -> chromeActivity.getActivityTab().removeObserver(obs)); - - coordinator = - ((BookmarkPage) chromeActivity.getActivityTab().getNativePage()) - .getManagerForTesting(); - } else { mBookmarkActivity = ActivityTestUtils.waitForActivity( InstrumentationRegistry.getInstrumentation(), BookmarkActivity.class, () -> showBookmarkManagerInternal(chromeActivity)); - coordinator = mBookmarkActivity.getManagerForTesting(); } BookmarkTestUtil.waitForBookmarkModelLoaded(); - return coordinator; } /** Returns the bookmark activity. */
diff --git a/chrome/test/data/extensions/api_test/autofill_private/test.js b/chrome/test/data/extensions/api_test/autofill_private/test.js index 59adcd6..0096bd53 100644 --- a/chrome/test/data/extensions/api_test/autofill_private/test.js +++ b/chrome/test/data/extensions/api_test/autofill_private/test.js
@@ -14,7 +14,7 @@ var ADDRESS_LEVEL3 = 'Address level 3'; var POSTAL_CODE = 'Postal code'; var SORTING_CODE = 'Sorting code'; -var COUNTRY_CODE = 'DE'; +var COUNTRY_CODE = 'ES'; var PHONE = '1 123-123-1234'; var EMAIL = 'johndoe@gmail.com'; var CARD_NAME = 'CardName';
diff --git a/chrome/test/data/extensions/api_test/automation/tests/tabs/find.js b/chrome/test/data/extensions/api_test/automation/tests/tabs/find.js index 37f037b..8e7ee739 100644 --- a/chrome/test/data/extensions/api_test/automation/tests/tabs/find.js +++ b/chrome/test/data/extensions/api_test/automation/tests/tabs/find.js
@@ -33,6 +33,9 @@ p2 = main.firstChild; assertEq(RoleType.PARAGRAPH, p2.role); + strong = p2.lastChild; + assertEq(RoleType.STRONG, strong.role); + p3 = main.lastChild; assertEq(RoleType.PARAGRAPH, p3.role); @@ -126,7 +129,7 @@ // Find by value attribute - regexp. var query = {attributes: {name: /relationship/}}; - assertEq(p2, rootNode.find(query).parent); + assertEq(strong, rootNode.find(query).parent); // Find by role and hierarchicalLevel attribute. assertEq( @@ -173,7 +176,7 @@ }), 'h1 should match focusable: false'); - var p2StaticText = p2.firstChild; + var p2StaticText = strong.firstChild; assertTrue( p2StaticText.matches( {role: RoleType.STATIC_TEXT, attributes: {name: /relationship/}}),
diff --git a/chrome/test/data/webui/chromeos/personalization_app/personalization_router_element_test.ts b/chrome/test/data/webui/chromeos/personalization_app/personalization_router_element_test.ts index 108cab49..67714a28 100644 --- a/chrome/test/data/webui/chromeos/personalization_app/personalization_router_element_test.ts +++ b/chrome/test/data/webui/chromeos/personalization_app/personalization_router_element_test.ts
@@ -4,23 +4,26 @@ import 'chrome://personalization/strings.m.js'; -import {GooglePhotosAlbum, GooglePhotosEnablementState, GooglePhotosPhoto, Paths, PersonalizationRouterElement} from 'chrome://personalization/js/personalization_app.js'; +import {GooglePhotosAlbum, GooglePhotosEnablementState, GooglePhotosPhoto, Paths, PersonalizationRouterElement, SeaPenTermsOfServiceDialogElement} from 'chrome://personalization/js/personalization_app.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.js'; import {assertEquals, assertFalse, assertNotEquals, assertTrue} from 'chrome://webui-test/chai_assert.js'; import {waitAfterNextRender} from 'chrome://webui-test/polymer_test_util.js'; import {baseSetup, initElement} from './personalization_app_test_utils.js'; import {TestPersonalizationStore} from './test_personalization_store.js'; +import {TestSeaPenProvider} from './test_sea_pen_interface_provider.js'; import {TestWallpaperProvider} from './test_wallpaper_interface_provider.js'; suite('PersonalizationRouterElementTest', function() { let personalizationStore: TestPersonalizationStore; let wallpaperProvider: TestWallpaperProvider; + let seaPenProvider: TestSeaPenProvider; setup(() => { const mocks = baseSetup(); personalizationStore = mocks.personalizationStore; wallpaperProvider = mocks.wallpaperProvider; + seaPenProvider = mocks.seaPenProvider; }); test('will show ambient subpage if allowed', async () => { @@ -151,7 +154,7 @@ test('hides SeaPen from ineligible users', async () => { loadTimeData.overrideValues({isSeaPenEnabled: false}); - const routerElement = initElement(PersonalizationRouterElement); + const routerElement = initElement(PersonalizationRouterElement, {}); for (const path of [Paths.SEA_PEN_COLLECTION, Paths.SEA_PEN_RESULTS]) { PersonalizationRouterElement.instance().goToRoute(path); @@ -198,4 +201,45 @@ getComputedStyle(seaPenRouterElement).display, 'none', 'sea-pen-router is shown'); }); + + test( + 'refuses SeaPen wallpaper terms and routes back to Wallpaper subpage', + async () => { + loadTimeData.overrideValues({isSeaPenEnabled: true}); + personalizationStore.setReducersEnabled(true); + + const routerElement = initElement(PersonalizationRouterElement); + await waitAfterNextRender(routerElement); + + routerElement.goToRoute(Paths.SEA_PEN_COLLECTION); + await seaPenProvider.whenCalled('shouldShowSeaPenTermsOfServiceDialog'); + await waitAfterNextRender(routerElement); + + let seaPenRouterElement = + routerElement.shadowRoot!.querySelector('sea-pen-router'); + assertTrue(!!seaPenRouterElement, 'sea-pen-router exists'); + assertNotEquals( + getComputedStyle(seaPenRouterElement).display, 'none', + 'sea-pen-router is shown'); + + const seaPenTermsDialog = seaPenRouterElement.shadowRoot!.querySelector( + SeaPenTermsOfServiceDialogElement.is); + assertTrue( + !!seaPenTermsDialog, 'SeaPen terms of service dialog is displayed'); + + const button = seaPenTermsDialog!.shadowRoot!.getElementById('refuse'); + assertTrue(!!button, `refuse must exist`); + button!.click(); + await waitAfterNextRender(routerElement!); + + seaPenRouterElement = + routerElement.shadowRoot!.querySelector('sea-pen-router'); + assertFalse(!!seaPenRouterElement, 'sea-pen-router no longer exists'); + + assertEquals( + Paths.COLLECTIONS, + routerElement.shadowRoot?.querySelector('iron-location')?.path, + 'redirect to Wallpaper subpage'); + }); + });
diff --git a/chrome/test/data/webui/chromeos/personalization_app/sea_pen_controller_test.ts b/chrome/test/data/webui/chromeos/personalization_app/sea_pen_controller_test.ts index 610552a..e7cd50e 100644 --- a/chrome/test/data/webui/chromeos/personalization_app/sea_pen_controller_test.ts +++ b/chrome/test/data/webui/chromeos/personalization_app/sea_pen_controller_test.ts
@@ -70,6 +70,7 @@ thumbnails: null, pendingSelected: null, currentSelected: null, + shouldShowSeaPenTermsOfServiceDialog: false, }), }, { @@ -87,6 +88,7 @@ thumbnails: null, pendingSelected: null, currentSelected: null, + shouldShowSeaPenTermsOfServiceDialog: false, }), }, { @@ -104,6 +106,7 @@ thumbnails: seaPenProvider.images, pendingSelected: null, currentSelected: null, + shouldShowSeaPenTermsOfServiceDialog: false, }), }, ],
diff --git a/chrome/test/data/webui/chromeos/personalization_app/sea_pen_router_element_test.ts b/chrome/test/data/webui/chromeos/personalization_app/sea_pen_router_element_test.ts index c8e7766..d5a09ba 100644 --- a/chrome/test/data/webui/chromeos/personalization_app/sea_pen_router_element_test.ts +++ b/chrome/test/data/webui/chromeos/personalization_app/sea_pen_router_element_test.ts
@@ -4,19 +4,31 @@ import 'chrome://personalization/strings.m.js'; -import {SeaPenInputQueryElement, SeaPenPaths, SeaPenRecentWallpapersElement, SeaPenRouterElement, SeaPenTemplateQueryElement, SeaPenTemplatesElement} from 'chrome://personalization/js/personalization_app.js'; +import {SeaPenInputQueryElement, SeaPenPaths, SeaPenRecentWallpapersElement, SeaPenRouterElement, SeaPenTemplateQueryElement, SeaPenTemplatesElement, SeaPenTermsOfServiceDialogElement} from 'chrome://personalization/js/personalization_app.js'; import {SeaPenQuery, SeaPenTemplateId} from 'chrome://resources/ash/common/sea_pen/sea_pen.mojom-webui.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.js'; import {assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js'; import {flushTasks, waitAfterNextRender} from 'chrome://webui-test/polymer_test_util.js'; -import {baseSetup, initElement} from './personalization_app_test_utils.js'; +import {baseSetup, initElement, teardownElement} from './personalization_app_test_utils.js'; import {TestPersonalizationStore} from './test_personalization_store.js'; import {TestSeaPenProvider} from './test_sea_pen_interface_provider.js'; suite('SeaPenRouterElementTest', function() { let personalizationStore: TestPersonalizationStore; let seaPenProvider: TestSeaPenProvider; + let routerElement: SeaPenRouterElement|null = null; + + async function clickSeaPenTermsDialogButton(id: string) { + const termsDialog = routerElement!.shadowRoot! + .querySelector<SeaPenTermsOfServiceDialogElement>( + SeaPenTermsOfServiceDialogElement.is); + assertTrue(!!termsDialog, 'dialog element must exist to click button'); + const button = termsDialog!.shadowRoot!.getElementById(id); + assertTrue(!!button, `button with id ${id} must exist`); + button!.click(); + await waitAfterNextRender(routerElement!); + } setup(() => { loadTimeData.overrideValues( @@ -26,30 +38,38 @@ seaPenProvider = mocks.seaPenProvider; }); + teardown(async () => { + await teardownElement(routerElement); + routerElement = null; + }); + test('shows templates and recent elements', async () => { - const router = initElement(SeaPenRouterElement, {basePath: '/base'}); - router.goToRoute(SeaPenPaths.ROOT); - await waitAfterNextRender(router); + routerElement = initElement(SeaPenRouterElement, {basePath: '/base'}); + routerElement.goToRoute(SeaPenPaths.ROOT); + await waitAfterNextRender(routerElement); assertTrue( - !!router.shadowRoot!.querySelector(SeaPenTemplatesElement.is), + !!routerElement.shadowRoot!.querySelector(SeaPenTemplatesElement.is), 'sea-pen-templates shown on root'); assertTrue( - !!router.shadowRoot!.querySelector(SeaPenRecentWallpapersElement.is), + !!routerElement.shadowRoot!.querySelector( + SeaPenRecentWallpapersElement.is), 'sea-pen-recent-wallpapers shown on root'); assertFalse( - !!router.shadowRoot!.querySelector(SeaPenInputQueryElement.is), + !!routerElement.shadowRoot!.querySelector(SeaPenInputQueryElement.is), 'no input query element on root'); assertFalse( - !!router.shadowRoot!.querySelector(SeaPenTemplateQueryElement.is), + !!routerElement.shadowRoot!.querySelector( + SeaPenTemplateQueryElement.is), 'no template query element on root'); - router.selectSeaPenTemplate(0 as SeaPenTemplateId); - await waitAfterNextRender(router); + routerElement.selectSeaPenTemplate(0 as SeaPenTemplateId); + await waitAfterNextRender(routerElement); assertTrue( - !!router.shadowRoot!.querySelector(SeaPenTemplateQueryElement.is), + !!routerElement.shadowRoot!.querySelector( + SeaPenTemplateQueryElement.is), 'template query element is shown after selecting template'); }); @@ -57,26 +77,27 @@ 'shows input query element if text input enabled and free form template is selected', async () => { loadTimeData.overrideValues({isSeaPenTextInputEnabled: true}); - const router = initElement(SeaPenRouterElement, { + routerElement = initElement(SeaPenRouterElement, { basePath: '/base', }); - router.goToRoute(SeaPenPaths.ROOT, {seaPenTemplateId: 'Query'}); - await waitAfterNextRender(router); + routerElement.goToRoute(SeaPenPaths.ROOT, {seaPenTemplateId: 'Query'}); + await waitAfterNextRender(routerElement); assertTrue( - !!router.shadowRoot!.querySelector(SeaPenInputQueryElement.is), + !!routerElement.shadowRoot!.querySelector( + SeaPenInputQueryElement.is), 'input query element shown on root'); }); test('remove thumbnail images when templateId changes', async () => { personalizationStore.setReducersEnabled(true); - const router = initElement(SeaPenRouterElement, {basePath: '/base'}); + routerElement = initElement(SeaPenRouterElement, {basePath: '/base'}); // Navigate to a template with thumbnails. - router.goToRoute( + routerElement.goToRoute( SeaPenPaths.RESULTS, {seaPenTemplateId: SeaPenTemplateId.kFlower.toString()}); - await waitAfterNextRender(router); + await waitAfterNextRender(routerElement); personalizationStore.data.wallpaper.seaPen.loading.thumbnails = false; personalizationStore.data.wallpaper.seaPen.thumbnails = seaPenProvider.images; @@ -88,7 +109,7 @@ // Update the template id, such as when switching templates via the // breadcrumb dropdown. - router.goToRoute( + routerElement.goToRoute( SeaPenPaths.RESULTS, {seaPenTemplateId: SeaPenTemplateId.kTranslucent.toString()}); await flushTasks(); @@ -99,14 +120,14 @@ }); test('update template query when templateId changes', async () => { - const router = initElement(SeaPenRouterElement, {basePath: '/base'}); + routerElement = initElement(SeaPenRouterElement, {basePath: '/base'}); const initialTemplate = SeaPenTemplateId.kMineral; const finalTemplate = SeaPenTemplateId.kFlower; - router.goToRoute( + routerElement.goToRoute( SeaPenPaths.RESULTS, {seaPenTemplateId: initialTemplate.toString()}); - await waitAfterNextRender(router); + await waitAfterNextRender(routerElement); const seaPenTemplateQueryElement = - router.shadowRoot!.querySelector('sea-pen-template-query')!; + routerElement.shadowRoot!.querySelector('sea-pen-template-query')!; const inspireButton = seaPenTemplateQueryElement.shadowRoot!.getElementById('inspire'); @@ -122,9 +143,9 @@ seaPenProvider.reset(); // Navigate to a new template. - router.goToRoute( + routerElement.goToRoute( SeaPenPaths.RESULTS, {seaPenTemplateId: finalTemplate.toString()}); - await waitAfterNextRender(router); + await waitAfterNextRender(routerElement); // Clicking the inspire button should match the new rendered template. inspireButton!.click(); @@ -139,20 +160,65 @@ }); test('navigates back to root if unknown path', async () => { - const router = initElement(SeaPenRouterElement, {basePath: '/base'}); - router.goToRoute(SeaPenPaths.RESULTS); - await waitAfterNextRender(router); + routerElement = initElement(SeaPenRouterElement, {basePath: '/base'}); + routerElement.goToRoute(SeaPenPaths.RESULTS); + await waitAfterNextRender(routerElement); assertEquals( '/base/results', - router.shadowRoot?.querySelector('iron-location')?.path, + routerElement.shadowRoot?.querySelector('iron-location')?.path, 'expected path is set'); - router.goToRoute('/unknown' as SeaPenPaths); - await waitAfterNextRender(router); + routerElement.goToRoute('/unknown' as SeaPenPaths); + await waitAfterNextRender(routerElement); assertEquals( - '/base', router.shadowRoot?.querySelector('iron-location')?.path, + '/base', routerElement.shadowRoot?.querySelector('iron-location')?.path, 'path set back to root'); }); + + + test('shows SeaPen terms dialog', async () => { + personalizationStore.setReducersEnabled(true); + routerElement = initElement(SeaPenRouterElement, { + basePath: '/base', + }); + + await seaPenProvider.whenCalled('shouldShowSeaPenTermsOfServiceDialog'); + await waitAfterNextRender(routerElement); + + const seaPenTermsDialog = routerElement.shadowRoot!.querySelector( + SeaPenTermsOfServiceDialogElement.is); + assertTrue( + !!seaPenTermsDialog, 'SeaPen terms of service dialog is displayed'); + }); + + test( + 'accepts the SeaPen wallpaper terms and closes the terms dialog', + async () => { + personalizationStore.setReducersEnabled(true); + routerElement = initElement(SeaPenRouterElement, { + basePath: '/base', + }); + + await seaPenProvider.whenCalled('shouldShowSeaPenTermsOfServiceDialog'); + await waitAfterNextRender(routerElement); + + let seaPenTermsDialog = routerElement.shadowRoot!.querySelector( + SeaPenTermsOfServiceDialogElement.is); + assertTrue( + !!seaPenTermsDialog, 'SeaPen terms of service dialog is displayed'); + + await clickSeaPenTermsDialogButton('accept'); + + seaPenTermsDialog = routerElement.shadowRoot!.querySelector( + SeaPenTermsOfServiceDialogElement.is); + assertFalse( + !!seaPenTermsDialog, 'Sea Pen wallpaper terms dialog is closed'); + + assertEquals( + '/base', + routerElement.shadowRoot?.querySelector('iron-location')?.path, + 'path remains the same'); + }); });
diff --git a/chrome/test/data/webui/chromeos/personalization_app/test_sea_pen_interface_provider.ts b/chrome/test/data/webui/chromeos/personalization_app/test_sea_pen_interface_provider.ts index 32a7d5d..e40caa8 100644 --- a/chrome/test/data/webui/chromeos/personalization_app/test_sea_pen_interface_provider.ts +++ b/chrome/test/data/webui/chromeos/personalization_app/test_sea_pen_interface_provider.ts
@@ -53,6 +53,8 @@ ReturnType<SeaPenProviderInterface['selectSeaPenThumbnail']> = Promise.resolve({success: true}); + shouldShowSeaPenTermsOfServiceDialogResponse = true; + constructor() { super([ 'searchWallpaper', @@ -61,6 +63,8 @@ 'getRecentSeaPenImages', 'getRecentSeaPenImageThumbnail', 'deleteRecentSeaPenImage', + 'shouldShowSeaPenTermsOfServiceDialog', + 'handleSeaPenTermsOfServiceAccepted', ]); } @@ -102,4 +106,15 @@ this.methodCalled('openFeedbackDialog', metadata); return; } + + shouldShowSeaPenTermsOfServiceDialog() { + this.methodCalled('shouldShowSeaPenTermsOfServiceDialog'); + return Promise.resolve( + {shouldShowDialog: this.shouldShowSeaPenTermsOfServiceDialogResponse}); + } + + handleSeaPenTermsOfServiceAccepted() { + this.methodCalled('handleSeaPenTermsOfServiceAccepted'); + this.shouldShowSeaPenTermsOfServiceDialogResponse = false; + } }
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM index 9309b69..9945e009 100644 --- a/chromeos/CHROMEOS_LKGM +++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@ -15747.0.0 \ No newline at end of file +15752.0.0 \ No newline at end of file
diff --git a/chromeos/chromeos_strings.grd b/chromeos/chromeos_strings.grd index 9ed53bb..cea7389 100644 --- a/chromeos/chromeos_strings.grd +++ b/chromeos/chromeos_strings.grd
@@ -2487,7 +2487,7 @@ Auto </message> <message name="IDS_PERSONALIZATION_APP_THEME_GEOLOCATION_WARNING_TEXT_FOR_WALLPAPER" translateable="false" desc="In Personalization>Wallpaper, the warning text that tells users that system geolocation permission is needed for auto theme mode scheduling"> - Current schedule is set to 6am - 6pm. To automatically update the dark mode schedule <ph name="BEGIN_LINK"><a href="#"></ph>turn on Location access<ph name="END_LINK"></a></ph> + Current schedule won't be updated. To automatically update the dark mode schedule <ph name="BEGIN_LINK"><a href="#"></ph>turn on Location access<ph name="END_LINK"></a></ph> </message> <message name="IDS_PERSONALIZATION_APP_THEME_GEOLOCATION_WARNING_TEXT_FOR_WEATHER" translateable="false" desc="In Personalization > Screen saver, the warning text that tells users that system geolocation permission is needed for displaying local weather info"> Weather is not displayed because it doesn't know your location. To display local weather, <ph name="BEGIN_LINK"><a href="#"></ph>turn on Location access<ph name="END_LINK"></a></ph> @@ -3114,7 +3114,21 @@ <message name="IDS_SEA_PEN_FEEDBACK_PLACEHOLDER" desc="Placeholder text displayed in the feedback text box"> Feedback for wallpaper powered by Google AI </message> - + <message name="IDS_SEA_PEN_WALLPAPER_TERMS_DIALOG_TITLE" desc="Title for the wallpaper terms of service dialog."> + Terms of service + </message> + <message name="IDS_SEA_PEN_WALLPAPER_TERMS_ACCEPT_BUTTON" desc="The button which accepts and agrees to the terms for wallpaper service."> + I agree + </message> + <message name="IDS_SEA_PEN_WALLPAPER_TERMS_REFUSE_BUTTON" desc="The button which refuses the terms for wallpaper service."> + No thanks + </message> + <message name="IDS_SEA_PEN_WALLPAPER_TERMS_OF_SERVICE_DESC" desc="Title for the wallpaper terms of service dialog."> + You must be at least 18 years old and agree your use of AI wallpapers is subject to <ph name="GOOGLE_TERMS_OF_SERVICE_LINK"><a target="_blank" href="https://policies.google.com/terms"></ph>Google Terms of Service<ph name="END_LINK_GOOGLE_TERMS_OF_SERVICE"></a></ph> and <ph name="BEGIN_LINK_GEN_AI_TERMS_OF_SERVICE"><a target="_blank" href="https://policies.google.com/terms/generative-ai"></ph>Generative AI Additional Terms of Service<ph name="END_LINK_GEN_AI_TERMS_OF_SERVICE"></a></ph>. + <ph name="LINE_BREAK"><br></ph> + <ph name="LINE_BREAK"><br></ph> + You can only create wallpapers with AI for personal and non-commercial use. When you get wallpaper help, text is sent to Google AI servers to generate wallpaper suggestions, subject to <ph name="BEGIN_LINK_GOOGLE_PRIVACY_POLICY"><a target="_blank" href="https://policies.google.com/privacy"></ph>Google's Privacy Policy<ph name="END_LINK_GOOGLE_PRIVACY_POLICY"></a></ph>. <ph name="BEGIN_LINK_LEARN_MORE"><a target="_blank" href="https://support.google.com/chromebook?p=copyeditor"></ph>Learn more<ph name="END_LINK_LEARN_MORE"></a></ph> + </message> <!-- Traffic Counters UI --> <message name="IDS_TRAFFIC_COUNTERS_UNKNOWN" desc="Traffic counters related to an unknown source">
diff --git a/chromeos/chromeos_strings_grd/IDS_SEA_PEN_WALLPAPER_TERMS_ACCEPT_BUTTON.png.sha1 b/chromeos/chromeos_strings_grd/IDS_SEA_PEN_WALLPAPER_TERMS_ACCEPT_BUTTON.png.sha1 new file mode 100644 index 0000000..f7cc1376 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_SEA_PEN_WALLPAPER_TERMS_ACCEPT_BUTTON.png.sha1
@@ -0,0 +1 @@ +e2db48c2b7cd0a55768c648b68468e2ff998b71a \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_SEA_PEN_WALLPAPER_TERMS_DIALOG_TITLE.png.sha1 b/chromeos/chromeos_strings_grd/IDS_SEA_PEN_WALLPAPER_TERMS_DIALOG_TITLE.png.sha1 new file mode 100644 index 0000000..d1e61db --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_SEA_PEN_WALLPAPER_TERMS_DIALOG_TITLE.png.sha1
@@ -0,0 +1 @@ +ea47502dd6d8c4a46cc98f476fba3f1a1e636800 \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_SEA_PEN_WALLPAPER_TERMS_OF_SERVICE_DESC.png.sha1 b/chromeos/chromeos_strings_grd/IDS_SEA_PEN_WALLPAPER_TERMS_OF_SERVICE_DESC.png.sha1 new file mode 100644 index 0000000..084d626 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_SEA_PEN_WALLPAPER_TERMS_OF_SERVICE_DESC.png.sha1
@@ -0,0 +1 @@ +564ac26ebe6c9ded301415f4c8e976c8378f552c \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_SEA_PEN_WALLPAPER_TERMS_REFUSE_BUTTON.png.sha1 b/chromeos/chromeos_strings_grd/IDS_SEA_PEN_WALLPAPER_TERMS_REFUSE_BUTTON.png.sha1 new file mode 100644 index 0000000..f2feff2 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_SEA_PEN_WALLPAPER_TERMS_REFUSE_BUTTON.png.sha1
@@ -0,0 +1 @@ +ef7d7bc124d54bc93c7e87988497ef0882c8964a \ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_am.xtb b/chromeos/strings/chromeos_strings_am.xtb index abe712b6..d1c5f87 100644 --- a/chromeos/strings/chromeos_strings_am.xtb +++ b/chromeos/strings/chromeos_strings_am.xtb
@@ -94,6 +94,7 @@ <translation id="1611649489706141841">ወደ ፊት</translation> <translation id="1615335640928990664">የውሂብ አጠቃቀም ከ<ph name="FRIENDLY_DATE" /> ጀምሮ</translation> <translation id="1621067168122174824">የባትሪ መሙላት ሙከራን አሂድ</translation> +<translation id="1626590945318984973">አቋራጭ አይገኝም። ተግባርን እና <ph name="META_KEY" /> ቁልፎችን ሳይጠቀሙ አዲስ አቋራጭን ይጫኑ።</translation> <translation id="1639239467298939599">በመጫን ላይ</translation> <translation id="1641857168437328880">ሰነድ መጋቢ (ባለአንድ ጎን)</translation> <translation id="1643449475550628585">የልጣፍ ምስልን በየቀኑ ቀይር</translation> @@ -452,7 +453,9 @@ <translation id="4394049700291259645">አሰናክል</translation> <translation id="439429847087949098"><ph name="DEVICE_NAME" />ን ዳግም በማስነሳት ላይ</translation> <translation id="4395835743215824109">የቁልፍ ሰሌዳ ማበጂያ</translation> +<translation id="4403262788869804671"><ph name="META_KEY" /> ቁልፍ የሌለው አቋራጭ ከተወሰነ መተግበሪያ አቋራጭ ጋር ሊጋጭ ይችላል። ይህን አቋራጭ መጠቀምን መቀጠል ከፈለጉ፣ በድጋሚ ይጫኑት ወይም <ph name="KEY" /> ቁልፉን በመጠቀም አዲስ አቋራጭ ይጫኑ።</translation> <translation id="4415951057168511744">የአሁኑ አምሳያ</translation> +<translation id="4417830657741848074">አስተዳዳሪዎ አንዳንድ መተግበሪያዎችን በራስ-ሰር እንዲጀምሩ አዘጋጅቷል። ከእነዚህ መተግበሪያዎች ውስጥ አንዳንዶቹ ያልተዘጉ ሊሆኑ ይችላሉ።</translation> <translation id="4422041425070339732">ታች ቀስት</translation> <translation id="4425149324548788773">የእኔ Drive</translation> <translation id="4428374560396076622"><ph name="NETWORK_NAME" /> ጠፍቷል</translation> @@ -465,6 +468,7 @@ <translation id="4469288414739283461">የመሬት ፍሰት የማያ ገፅ ቆጣቢ</translation> <translation id="4479639480957787382">ኢተርኔት</translation> <translation id="4483049906298469269">ነባሪ ያልሆነውን የአውታረ መረብ አግባቢ ፍኖት ፒንግ ማድረግ አልተሳካም</translation> +<translation id="4500722292849917410">አቋራጭ አይገኝም። የአሻሻይ ቁልፍ (ctrl, alt, shift, ወይም <ph name="META_KEY" />) በመጠቀም አዲስ አቋራጭ ይጫኑ።</translation> <translation id="4500966230243561393">የበይነገጽ ቀለም</translation> <translation id="4503223151711056411">የግራ ቀስት</translation> <translation id="4507392511610824664">ብሩህነት ይጨምራል</translation> @@ -512,6 +516,7 @@ <translation id="4832079907277790330">በፋይሎች መተግበሪያ ውስጥ አቃፊን ይምረጡ...</translation> <translation id="4835901797422965222">ምንም ንቁ አውታረ መረቦች የሉም</translation> <translation id="4839698083503556542">የራስዎን ፊልም ይፍጠሩ</translation> +<translation id="48409034532829769">አስተዳዳሪዎ በራስ-ሰር ለመጀመር «<ph name="APP_NAME" />» አዘጋጅቷል። ይህ መተግበሪያ ያልተዘጋ ሊሆን ይችላል።</translation> <translation id="484462545196658690">ራስ-ሰር</translation> <translation id="4847902821209177679"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> ተመርጧል፣ የ<ph name="TOPIC_SOURCE" /> አልበሞችን ለመምረጥ አስገባን ይጫኑ</translation> <translation id="484790837831576105">(Android) የዲኤንኤስ መፍትሔ</translation> @@ -538,6 +543,7 @@ <translation id="4969079779290789265">ክፈል</translation> <translation id="4972592110715526173">ሁነታን የሚለውጥ</translation> <translation id="498186245079027698">መቃኛውን ይፈትሹ እና እንደገና ይሞክሩ። የተቃኙ ፋይሎችን ለማስቀመጥ በቂ አከባቢያዊ ቦታ መኖሩን ያረጋግጡ።</translation> +<translation id="4982627662315910959">አቋራጭ አይገኝም። በshift እና 1 ተጨማሪ የአሻሻይ ቁልፍ (ctrl፣ alt፣ ወይም <ph name="META_KEY" />) በመጠቀም አዲስ አቋራጭ ይጫኑ።</translation> <translation id="4985509611418653372">አሂድ</translation> <translation id="4987769320337599931">ኬላ</translation> <translation id="4988526792673242964">ገፆች</translation> @@ -844,6 +850,7 @@ <translation id="7216409898977639127">የተንቀሳቃሽ ስልክ አገልግሎት አቅራቢ</translation> <translation id="725133483556299729">ኢሜይል ይምረጡ</translation> <translation id="7271040990581020067">ቃኚ በአሁኑ ጊዜ ጥቅም ላይ እየዋለ ነው። ቆይተው እንደገና ይሞክሩ።</translation> +<translation id="7271932918253517778">ከላይ ረድፍ ቁልፎች ያለው አቋራጭ የ<ph name="META_KEY" /> ቁልፍን ማካተት ያስፈልገዋል።</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> <translation id="7281657306185710294">ነፋሱ ይሰማዎት</translation> <translation id="7287310195820267359">የልጣፍ ስብስቦች</translation>
diff --git a/chromeos/strings/chromeos_strings_as.xtb b/chromeos/strings/chromeos_strings_as.xtb index 3884a5e..67e77d0 100644 --- a/chromeos/strings/chromeos_strings_as.xtb +++ b/chromeos/strings/chromeos_strings_as.xtb
@@ -94,6 +94,7 @@ <translation id="1611649489706141841">ফৰৱাৰ্ড কৰক</translation> <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" />ৰ পৰা হোৱা ডেটাৰ ব্যৱহাৰ</translation> <translation id="1621067168122174824">চাৰ্জ পৰীক্ষা চলাওক</translation> +<translation id="1626590945318984973">শ্বৰ্টকাট উপলব্ধ নহয়। ফাংশ্বন আৰু <ph name="META_KEY" /> কী ব্যৱহাৰ নকৰাকৈ এটা নতুন শ্বৰ্টকাটত টিপক।</translation> <translation id="1639239467298939599">ল'ড কৰি থকা হৈছে</translation> <translation id="1641857168437328880">নথি ফীডাৰ (এফাল থকা)</translation> <translation id="1643449475550628585">দৈনিক ৱালপেপাৰৰ প্ৰতিচ্ছবি সলনি কৰক</translation> @@ -452,7 +453,9 @@ <translation id="4394049700291259645">অক্ষম কৰক</translation> <translation id="439429847087949098"><ph name="DEVICE_NAME" /> ৰিষ্টাৰ্ট কৰি থকা হৈছে</translation> <translation id="4395835743215824109">কীব’ৰ্ড কাষ্টমাইজ কৰা</translation> +<translation id="4403262788869804671"><ph name="META_KEY" /> কী নথকা শ্বৰ্টকাটে কিছুমান এপৰ শ্বৰ্টকাটৰ সৈতে সংঘাত সৃষ্টি কৰিব পাৰে। এই শ্বৰ্টকাটটো ব্যৱহাৰ কৰি থাকিবলৈ এইটোত পুনৰ টিপক অথবা <ph name="KEY" /> কীটো ব্যৱহাৰ কৰি এটা নতুন শ্বৰ্টকাটত টিপক।</translation> <translation id="4415951057168511744">বৰ্তমানৰ অৱতাৰ</translation> +<translation id="4417830657741848074">আপোনাৰ প্ৰশাসকে কিছুমান এপ্ স্বয়ংক্ৰিয়ভাৱে আৰম্ভ হ’বলৈ ছেট আপ কৰিছে এইসমূহৰ কিছুমান এপ্ বন্ধ কৰা নহ’ব পাৰে।</translation> <translation id="4422041425070339732">তললৈ নিৰ্দেশ কৰা কাঁড় চিহ্ন</translation> <translation id="4425149324548788773">মোৰ ড্ৰাইভ</translation> <translation id="4428374560396076622"><ph name="NETWORK_NAME" /> অফ কৰা আছে</translation> @@ -465,6 +468,7 @@ <translation id="4469288414739283461">পৃথিৱীৰ প্ৰবাহৰ স্ক্ৰীন ছেভাৰ</translation> <translation id="4479639480957787382">ইথাৰনেট</translation> <translation id="4483049906298469269">ডিফ’ল্ট হিচাপে নথকা নেটৱৰ্কৰ গে’টৱে’টোক পিং কৰাত বিফল হ'ল</translation> +<translation id="4500722292849917410">শ্বৰ্টকাট উপলব্ধ নহয়। এটা সংশোধক চাবি (ctrl, alt, shift অথবা <ph name="META_KEY" />) ব্যৱহাৰ কৰি এটা নতুন শ্বৰ্টকাটত টিপক।</translation> <translation id="4500966230243561393">ইণ্টাৰফে’চৰ ৰং</translation> <translation id="4503223151711056411">লেফ্ট এৰ’</translation> <translation id="4507392511610824664">উজ্জ্বলতা বঢ়াওক</translation> @@ -512,6 +516,7 @@ <translation id="4832079907277790330">Files এপ্টোত ফ’ল্ডাৰ বাছনি কৰক...</translation> <translation id="4835901797422965222">কোনো সক্ৰিয় নেটৱৰ্ক নাই</translation> <translation id="4839698083503556542">নিজৰ চলচ্চিত্ৰ সৃষ্টি কৰক</translation> +<translation id="48409034532829769">আপোনাৰ প্ৰশাসকে "<ph name="APP_NAME" />" স্বয়ংক্ৰিয়ভাৱে আৰম্ভ হ’বলৈ ছেট আপ কৰিছে। এই এপ্টো বন্ধ কৰা নহ’ব পাৰে।</translation> <translation id="484462545196658690">স্বয়ংক্ৰিয়</translation> <translation id="4847902821209177679"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> বাছনি কৰা হৈছে, <ph name="TOPIC_SOURCE" />ৰ এলবামসমূহ বাছনি কৰিবলৈ এণ্টাৰ টিপক</translation> <translation id="484790837831576105">(Android) DNS ৰিজ’লিউশ্বন</translation> @@ -538,6 +543,7 @@ <translation id="4969079779290789265">বিভক্ত কৰক</translation> <translation id="4972592110715526173">ম’ড সলনি কৰক</translation> <translation id="498186245079027698">স্কেনাৰটো পৰীক্ষা কৰক আৰু পুনৰ চেষ্টা কৰক। স্কেন কৰা ফাইল ছেভ কৰিবলৈ পৰ্যাপ্ত পৰিমাণে স্থানীয় খালী ঠাই থকাটো নিশ্চিত কৰক।</translation> +<translation id="4982627662315910959">শ্বৰ্টকাট উপলব্ধ নহয়। shift আৰু ১ টা সংশোধক চাবি (ctrl, alt, or <ph name="META_KEY" />) ব্যৱহাৰ কৰি এটা নতুন শ্বৰ্টকাটত টিপক।</translation> <translation id="4985509611418653372">চলাওক</translation> <translation id="4987769320337599931">ফায়াৰৱাল</translation> <translation id="4988526792673242964">পৃষ্ঠা</translation> @@ -844,6 +850,7 @@ <translation id="7216409898977639127">চেলুলাৰ প্ৰদানকাৰী</translation> <translation id="725133483556299729">ইমেইল বাছনি কৰক</translation> <translation id="7271040990581020067">বৰ্তমান স্কেনাৰটো ব্যৱহাৰ কৰি থকা হৈছে। পাছত পুনৰ চেষ্টা কৰক।</translation> +<translation id="7271932918253517778">একেবাৰে ওপৰৰ শাৰীৰ কীসমূহ থকা শ্বৰ্টকাটত <ph name="META_KEY" /> কী অন্তৰ্ভুক্ত হ’ব লাগিব।</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> <translation id="7281657306185710294">মলয়া বতাহৰ আমেজ</translation> <translation id="7287310195820267359">ৱালপেপাৰৰ সংগ্ৰহ</translation>
diff --git a/chromeos/strings/chromeos_strings_ca.xtb b/chromeos/strings/chromeos_strings_ca.xtb index c76c4f8..76038d9b 100644 --- a/chromeos/strings/chromeos_strings_ca.xtb +++ b/chromeos/strings/chromeos_strings_ca.xtb
@@ -94,6 +94,7 @@ <translation id="1611649489706141841">avança</translation> <translation id="1615335640928990664">Ús de dades des de <ph name="FRIENDLY_DATE" /></translation> <translation id="1621067168122174824">Executa la prova de càrrega</translation> +<translation id="1626590945318984973">La drecera no està disponible. Prem una drecera nova sense utilitzar les tecles de funció ni de <ph name="META_KEY" />.</translation> <translation id="1639239467298939599">S'està carregant</translation> <translation id="1641857168437328880">Alimentador de documents (a una cara)</translation> <translation id="1643449475550628585">Canvia la imatge del fons de pantalla diàriament</translation> @@ -452,7 +453,9 @@ <translation id="4394049700291259645">Desactiva</translation> <translation id="439429847087949098">S'està reiniciant <ph name="DEVICE_NAME" /></translation> <translation id="4395835743215824109">personalització del teclat</translation> +<translation id="4403262788869804671">La drecera sense tecla de <ph name="META_KEY" /> pot entrar en conflicte amb la drecera d'alguna aplicació. Torna a prémer aquesta drecera per continuar utilitzant-la o prem-ne una altra mitjançant la tecla de <ph name="KEY" />.</translation> <translation id="4415951057168511744">Avatar actual</translation> +<translation id="4417830657741848074">El teu administrador ha configurat que algunes aplicacions s'iniciïn automàticament. Algunes d'aquestes aplicacions no es poden tancar.</translation> <translation id="4422041425070339732">fletxa avall</translation> <translation id="4425149324548788773">La meva unitat</translation> <translation id="4428374560396076622">La xarxa <ph name="NETWORK_NAME" /> està desactivada</translation> @@ -465,6 +468,7 @@ <translation id="4469288414739283461">Estalvi de pantalla Moviment de la Terra</translation> <translation id="4479639480957787382">Ethernet</translation> <translation id="4483049906298469269">No s'ha pogut fer ping a la passarel·la de xarxa no predeterminada</translation> +<translation id="4500722292849917410">La drecera no està disponible. Prem una drecera nova amb una tecla modificadora (Ctrl, Alt, Maj o <ph name="META_KEY" />).</translation> <translation id="4500966230243561393">Color de la interfície</translation> <translation id="4503223151711056411">Fletxa esquerra</translation> <translation id="4507392511610824664">augmenta la brillantor</translation> @@ -512,6 +516,7 @@ <translation id="4832079907277790330">Selecciona una carpeta a l'aplicació Fitxers...</translation> <translation id="4835901797422965222">No hi ha cap xarxa activa</translation> <translation id="4839698083503556542">Crea la teva pel·lícula</translation> +<translation id="48409034532829769">El teu administrador ha configurat que <ph name="APP_NAME" /> s'iniciï automàticament. Aquesta aplicació no es pot tancar.</translation> <translation id="484462545196658690">Automàtic</translation> <translation id="4847902821209177679">S'ha seleccionat <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" />, prem Retorn per seleccionar els àlbums de <ph name="TOPIC_SOURCE" /></translation> <translation id="484790837831576105">(Android) Resolució de DNS</translation> @@ -538,6 +543,7 @@ <translation id="4969079779290789265">Dividit</translation> <translation id="4972592110715526173">canvi de mode</translation> <translation id="498186245079027698">Comprova l'escàner i torna-ho a provar. Assegura't que hi hagi prou espai local per desar els fitxers escanejats.</translation> +<translation id="4982627662315910959">La drecera no està disponible. Prem una drecera nova amb Maj i una tecla modificadora més (Ctrl, Alt o <ph name="META_KEY" />).</translation> <translation id="4985509611418653372">Executa</translation> <translation id="4987769320337599931">Tallafoc</translation> <translation id="4988526792673242964">Pàgines</translation> @@ -844,6 +850,7 @@ <translation id="7216409898977639127">Proveïdor de dades mòbils</translation> <translation id="725133483556299729">Selecciona una adreça electrònica</translation> <translation id="7271040990581020067">L'escàner s'està utilitzant en aquests moments. Torna-ho a provar més tard.</translation> +<translation id="7271932918253517778">La drecera amb tecles de la fila superior ha d'incloure la tecla de <ph name="META_KEY" />.</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> <translation id="7281657306185710294">Sent la brisa</translation> <translation id="7287310195820267359">Col·leccions de fons de pantalla</translation>
diff --git a/chromeos/strings/chromeos_strings_cs.xtb b/chromeos/strings/chromeos_strings_cs.xtb index f8ce7a4..5aa0125 100644 --- a/chromeos/strings/chromeos_strings_cs.xtb +++ b/chromeos/strings/chromeos_strings_cs.xtb
@@ -94,6 +94,7 @@ <translation id="1611649489706141841">vpřed</translation> <translation id="1615335640928990664">Využití dat od <ph name="FRIENDLY_DATE" /></translation> <translation id="1621067168122174824">Spustit test nabití</translation> +<translation id="1626590945318984973">Zkratka není k dispozici. Stiskněte novou zkratku bez funkčních a kláves a bez klávesy <ph name="META_KEY" />.</translation> <translation id="1639239467298939599">Načítání</translation> <translation id="1641857168437328880">Podavač dokumentů (jednostranných)</translation> <translation id="1643449475550628585">Denně měnit tapetu</translation> @@ -452,7 +453,9 @@ <translation id="4394049700291259645">Deaktivovat</translation> <translation id="439429847087949098"><ph name="DEVICE_NAME" /> se restartuje</translation> <translation id="4395835743215824109">přizpůsobit klávesnici</translation> +<translation id="4403262788869804671">Zkratka bez klávesy <ph name="META_KEY" /> může být v konfliktu se zkratkou některé aplikace. Pokud tuto zkratku chcete nadále používat, stiskněte ji znovu, nebo stiskněte novou klávesovou zkratku s klávesou <ph name="KEY" />.</translation> <translation id="4415951057168511744">Aktuální avatar</translation> +<translation id="4417830657741848074">Váš administrátor nastavil automatické spouštění některých aplikací. Některé z těchto aplikací není dovoleno zavřít.</translation> <translation id="4422041425070339732">šipka dolů</translation> <translation id="4425149324548788773">Můj disk</translation> <translation id="4428374560396076622">Síť <ph name="NETWORK_NAME" /> je vypnutá</translation> @@ -465,6 +468,7 @@ <translation id="4469288414739283461">Spořič obrazovky Plynoucí Země</translation> <translation id="4479639480957787382">Ethernet</translation> <translation id="4483049906298469269">Nepodařilo se pingnout bránu jiné než výchozí sítě</translation> +<translation id="4500722292849917410">Zkratka není k dispozici. Stiskněte novou zkratku s modifikační klávesou (ctrl, alt, shift nebo <ph name="META_KEY" />).</translation> <translation id="4500966230243561393">Barva rozhraní</translation> <translation id="4503223151711056411">Šipka vlevo</translation> <translation id="4507392511610824664">zvýšit jas</translation> @@ -512,6 +516,7 @@ <translation id="4832079907277790330">Vyberte složku v aplikaci Soubory…</translation> <translation id="4835901797422965222">Žádné aktivní sítě</translation> <translation id="4839698083503556542">Vytvořte vlastní film</translation> +<translation id="48409034532829769">Váš administrátor nastavil automatické spouštění aplikace <ph name="APP_NAME" />. Tuto aplikaci není dovoleno zavřít.</translation> <translation id="484462545196658690">Automaticky</translation> <translation id="4847902821209177679">Je vybrána možnost <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" />, stisknutím klávesy Enter vyberete alba z: <ph name="TOPIC_SOURCE" /></translation> <translation id="484790837831576105">(Android) Překlad záznamu DNS</translation> @@ -538,6 +543,7 @@ <translation id="4969079779290789265">Rozdělit</translation> <translation id="4972592110715526173">změna režimu</translation> <translation id="498186245079027698">Zkontrolujte skener a zkuste to znovu. Zkontrolujte, zda máte dostatek místního úložného prostoru k ukládání naskenovaných souborů.</translation> +<translation id="4982627662315910959">Zkratka není k dispozici. Stiskněte novou zkratku s klávesou Shift a jednou další modifikační klávesou (Ctrl, Alt nebo <ph name="META_KEY" />).</translation> <translation id="4985509611418653372">Spustit</translation> <translation id="4987769320337599931">Firewall</translation> <translation id="4988526792673242964">Stránky</translation> @@ -844,6 +850,7 @@ <translation id="7216409898977639127">Poskytovatel mobilních dat</translation> <translation id="725133483556299729">Vyberte e-mail</translation> <translation id="7271040990581020067">Skener je aktuálně používán. Zkuste to znovu později.</translation> +<translation id="7271932918253517778">Zkratka s klávesami z horní řady musí zahrnovat klávesu <ph name="META_KEY" />.</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> <translation id="7281657306185710294">Šňůra</translation> <translation id="7287310195820267359">Sbírky tapet</translation>
diff --git a/chromeos/strings/chromeos_strings_en-GB.xtb b/chromeos/strings/chromeos_strings_en-GB.xtb index 790ca8d..6c5442b 100644 --- a/chromeos/strings/chromeos_strings_en-GB.xtb +++ b/chromeos/strings/chromeos_strings_en-GB.xtb
@@ -94,6 +94,7 @@ <translation id="1611649489706141841">forward</translation> <translation id="1615335640928990664">Data usage since <ph name="FRIENDLY_DATE" /></translation> <translation id="1621067168122174824">Run charge test</translation> +<translation id="1626590945318984973">Shortcut not available. Press a new shortcut without using function and <ph name="META_KEY" /> keys.</translation> <translation id="1639239467298939599">Loading</translation> <translation id="1641857168437328880">Document feeder (one-sided)</translation> <translation id="1643449475550628585">Change wallpaper image daily</translation> @@ -452,7 +453,9 @@ <translation id="4394049700291259645">Disable</translation> <translation id="439429847087949098">Restarting <ph name="DEVICE_NAME" /></translation> <translation id="4395835743215824109">keyboard customise</translation> +<translation id="4403262788869804671">Shortcut without <ph name="META_KEY" /> key might conflict with some app's shortcut. Press this shortcut again to continue using it, or press a new shortcut using the <ph name="KEY" /> key.</translation> <translation id="4415951057168511744">Current avatar</translation> +<translation id="4417830657741848074">Your administrator has set up some apps to start automatically. Some of these apps may not be closed.</translation> <translation id="4422041425070339732">arrow down</translation> <translation id="4425149324548788773">My Drive</translation> <translation id="4428374560396076622"><ph name="NETWORK_NAME" /> is off</translation> @@ -465,6 +468,7 @@ <translation id="4469288414739283461">Earth flow screen saver</translation> <translation id="4479639480957787382">Ethernet</translation> <translation id="4483049906298469269">Failed to ping the non-default network gateway</translation> +<translation id="4500722292849917410">Shortcut not available. Press a new shortcut using a modifier key (ctrl, alt, shift or <ph name="META_KEY" />).</translation> <translation id="4500966230243561393">Interface colour</translation> <translation id="4503223151711056411">Left arrow</translation> <translation id="4507392511610824664">brightness up</translation> @@ -512,6 +516,7 @@ <translation id="4832079907277790330">Select folder in the Files app…</translation> <translation id="4835901797422965222">No active networks</translation> <translation id="4839698083503556542">Create your own movie</translation> +<translation id="48409034532829769">Your administrator has set up '<ph name="APP_NAME" />' to start automatically. This app may not be closed.</translation> <translation id="484462545196658690">Auto</translation> <translation id="4847902821209177679"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> selected, press Enter to select <ph name="TOPIC_SOURCE" /> albums</translation> <translation id="484790837831576105">(Android) DNS resolution</translation> @@ -538,6 +543,7 @@ <translation id="4969079779290789265">Split</translation> <translation id="4972592110715526173">mode change</translation> <translation id="498186245079027698">Check the scanner and try again. Make sure that there is enough local space to save scanned files.</translation> +<translation id="4982627662315910959">Shortcut not available. Press a new shortcut using shift and one more modifier key (ctrl, alt or <ph name="META_KEY" />).</translation> <translation id="4985509611418653372">Run</translation> <translation id="4987769320337599931">Firewall</translation> <translation id="4988526792673242964">Pages</translation> @@ -844,6 +850,7 @@ <translation id="7216409898977639127">Mobile provider</translation> <translation id="725133483556299729">Select email</translation> <translation id="7271040990581020067">Scanner is currently in use. Try again later.</translation> +<translation id="7271932918253517778">Shortcuts with top row keys need to include the <ph name="META_KEY" /> key.</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> <translation id="7281657306185710294">Feel the breeze</translation> <translation id="7287310195820267359">Wallpaper collections</translation>
diff --git a/chromeos/strings/chromeos_strings_fr.xtb b/chromeos/strings/chromeos_strings_fr.xtb index b8061446..1f355fb 100644 --- a/chromeos/strings/chromeos_strings_fr.xtb +++ b/chromeos/strings/chromeos_strings_fr.xtb
@@ -94,6 +94,7 @@ <translation id="1611649489706141841">suivant</translation> <translation id="1615335640928990664">Consommation des données depuis le <ph name="FRIENDLY_DATE" /></translation> <translation id="1621067168122174824">Lancer le test de recharge</translation> +<translation id="1626590945318984973">Raccourci non disponible. Appuyez sur un nouveau raccourci sans utiliser les touches de fonction ni la touche <ph name="META_KEY" />.</translation> <translation id="1639239467298939599">Chargement en cours…</translation> <translation id="1641857168437328880">Chargeur de document (recto)</translation> <translation id="1643449475550628585">Modifier le fond d'écran tous les jours</translation> @@ -452,7 +453,9 @@ <translation id="4394049700291259645">Désactiver</translation> <translation id="439429847087949098"><ph name="DEVICE_NAME" /> : redémarrage…</translation> <translation id="4395835743215824109">personnalisation du clavier</translation> +<translation id="4403262788869804671">Un raccourci sans la touche <ph name="META_KEY" /> peut entrer en conflit avec un raccourci d'une appli. Appuyez de nouveau sur ce raccourci pour continuer à l'utiliser ou appuyez sur un nouveau raccourci avec la touche <ph name="KEY" />.</translation> <translation id="4415951057168511744">Avatar actuel</translation> +<translation id="4417830657741848074">Votre administrateur a configuré certaines applis pour qu'elles démarrent automatiquement. Certaines de ces applis ne peuvent pas être fermées.</translation> <translation id="4422041425070339732">flèche vers le bas</translation> <translation id="4425149324548788773">Mon Drive</translation> <translation id="4428374560396076622"><ph name="NETWORK_NAME" /> désactivé</translation> @@ -465,6 +468,7 @@ <translation id="4469288414739283461">Économiseur d'écran Flux terrestre</translation> <translation id="4479639480957787382">Ethernet </translation> <translation id="4483049906298469269">Impossible de pinguer la passerelle du réseau non défini par défaut</translation> +<translation id="4500722292849917410">Raccourci non disponible. Appuyez sur un nouveau raccourci à l'aide d'une touche de modification (Ctrl, Alt, Maj ou <ph name="META_KEY" />).</translation> <translation id="4500966230243561393">Couleur de l'interface</translation> <translation id="4503223151711056411">Flèche vers la gauche</translation> <translation id="4507392511610824664">augmenter la luminosité</translation> @@ -512,6 +516,7 @@ <translation id="4832079907277790330">Sélectionner un dossier dans l'application Fichiers…</translation> <translation id="4835901797422965222">Aucun réseau actif</translation> <translation id="4839698083503556542">Créez votre propre film</translation> +<translation id="48409034532829769">Votre administrateur a configuré l'appli "<ph name="APP_NAME" />" pour qu'elle démarre automatiquement. Elle ne peut pas être fermée.</translation> <translation id="484462545196658690">Auto</translation> <translation id="4847902821209177679">Source <ph name="TOPIC_SOURCE" /> (<ph name="TOPIC_SOURCE_DESC" />) sélectionnée, appuyez sur Entrée pour sélectionner des albums dans <ph name="TOPIC_SOURCE" /></translation> <translation id="484790837831576105">(Android) Résolution DNS</translation> @@ -538,6 +543,7 @@ <translation id="4969079779290789265">Diviser</translation> <translation id="4972592110715526173">changement de mode</translation> <translation id="498186245079027698">Vérifiez le scanner et réessayez. Assurez-vous que l'espace de stockage local est suffisant pour y enregistrer les fichiers numérisés.</translation> +<translation id="4982627662315910959">Raccourci non disponible. Appuyez sur un nouveau raccourci avec la touche Maj et une autre touche de modification (Ctrl, Alt ou <ph name="META_KEY" />).</translation> <translation id="4985509611418653372">Exécuter</translation> <translation id="4987769320337599931">Pare-feu</translation> <translation id="4988526792673242964">Pages</translation> @@ -844,6 +850,7 @@ <translation id="7216409898977639127">Opérateur de téléphonie mobile</translation> <translation id="725133483556299729">Sélectionnez une adresse e-mail</translation> <translation id="7271040990581020067">Le scanner est en cours d'utilisation. Réessayez plus tard.</translation> +<translation id="7271932918253517778">Le raccourci avec des touches supérieures doit inclure la touche <ph name="META_KEY" />.</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> <translation id="7281657306185710294">Brise légère</translation> <translation id="7287310195820267359">Collections de fonds d'écran</translation>
diff --git a/chromeos/strings/chromeos_strings_it.xtb b/chromeos/strings/chromeos_strings_it.xtb index 93c1a2f..9a78869 100644 --- a/chromeos/strings/chromeos_strings_it.xtb +++ b/chromeos/strings/chromeos_strings_it.xtb
@@ -94,6 +94,7 @@ <translation id="1611649489706141841">avanti</translation> <translation id="1615335640928990664">Utilizzo dei dati da <ph name="FRIENDLY_DATE" /></translation> <translation id="1621067168122174824">Esegui test ricarica</translation> +<translation id="1626590945318984973">Scorciatoia non disponibile. Premi una nuova scorciatoia senza utilizzare i tasti funzione e <ph name="META_KEY" />.</translation> <translation id="1639239467298939599">Caricamento</translation> <translation id="1641857168437328880">Alimentatore di documenti (solo fronte)</translation> <translation id="1643449475550628585">Cambia l'immagine di sfondo ogni giorno</translation> @@ -452,7 +453,9 @@ <translation id="4394049700291259645">Disabilita</translation> <translation id="439429847087949098">Riavvio di <ph name="DEVICE_NAME" /> in corso…</translation> <translation id="4395835743215824109">Personalizzazione della tastiera</translation> +<translation id="4403262788869804671">La scorciatoia senza tasto <ph name="META_KEY" /> potrebbe essere in conflitto con la scorciatoia di alcune app. Premi di nuovo questa scorciatoia per continuare a utilizzarla oppure premine una nuova usando il tasto <ph name="KEY" />.</translation> <translation id="4415951057168511744">Avatar attuale</translation> +<translation id="4417830657741848074">L'amministratore ha configurato l'avvio automatico di alcune app. Potresti non poter chiudere alcune di queste app.</translation> <translation id="4422041425070339732">Freccia giù</translation> <translation id="4425149324548788773">I miei file</translation> <translation id="4428374560396076622">Rete <ph name="NETWORK_NAME" /> disattivata</translation> @@ -465,6 +468,7 @@ <translation id="4469288414739283461">Salvaschermo Flusso terrestre</translation> <translation id="4479639480957787382">Ethernet</translation> <translation id="4483049906298469269">impossibile eseguire il ping del gateway di rete non predefinito</translation> +<translation id="4500722292849917410">Scorciatoia non disponibile. Premi una nuova scorciatoia utilizzando un tasto di modifica (Ctrl, Alt, Maiusc o <ph name="META_KEY" />).</translation> <translation id="4500966230243561393">Colore interfaccia</translation> <translation id="4503223151711056411">Freccia sinistra</translation> <translation id="4507392511610824664">aumenta la luminosità</translation> @@ -512,6 +516,7 @@ <translation id="4832079907277790330">Seleziona cartella nell'app File…</translation> <translation id="4835901797422965222">Nessuna rete attiva</translation> <translation id="4839698083503556542">Crea il tuo filmato</translation> +<translation id="48409034532829769">L'amministratore ha configurato l'avvio automatico di "<ph name="APP_NAME" />". Potresti non poter chiudere questa app.</translation> <translation id="484462545196658690">Automatico</translation> <translation id="4847902821209177679"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> selezionato, premi Invio per selezionare gli album <ph name="TOPIC_SOURCE" /></translation> <translation id="484790837831576105">(Android) risoluzione DNS</translation> @@ -538,6 +543,7 @@ <translation id="4969079779290789265">Suddividi</translation> <translation id="4972592110715526173">cambio modalità</translation> <translation id="498186245079027698">Controlla lo scanner e riprova. Assicurati di avere spazio locale sufficiente per salvare i file sottoposti a scansione.</translation> +<translation id="4982627662315910959">Scorciatoia non disponibile. Premi una nuova scorciatoia utilizzando Maiusc e 1 altro tasto di modifica (Ctrl, Alt o <ph name="META_KEY" />).</translation> <translation id="4985509611418653372">Esegui</translation> <translation id="4987769320337599931">Firewall</translation> <translation id="4988526792673242964">Pagine</translation> @@ -844,6 +850,7 @@ <translation id="7216409898977639127">Fornitore del servizio di telefonia mobile</translation> <translation id="725133483556299729">Seleziona email</translation> <translation id="7271040990581020067">Lo scanner è attualmente in uso. Riprova più tardi.</translation> +<translation id="7271932918253517778">La scorciatoia con tasti della fila superiore deve includere il tasto <ph name="META_KEY" />.</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> <translation id="7281657306185710294">Feel the breeze</translation> <translation id="7287310195820267359">Raccolte di sfondi</translation>
diff --git a/chromeos/strings/chromeos_strings_ja.xtb b/chromeos/strings/chromeos_strings_ja.xtb index af6de5a..b1a8555 100644 --- a/chromeos/strings/chromeos_strings_ja.xtb +++ b/chromeos/strings/chromeos_strings_ja.xtb
@@ -94,6 +94,7 @@ <translation id="1611649489706141841">進む</translation> <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> 以降のデータ使用量</translation> <translation id="1621067168122174824">充電テストを実行</translation> +<translation id="1626590945318984973">このショートカットは使用できません。ファンクション キーと <ph name="META_KEY" /> キーを使わない新しいショートカットを押してください。</translation> <translation id="1639239467298939599">読み込んでいます</translation> <translation id="1641857168437328880">ドキュメント フィーダー(片面)</translation> <translation id="1643449475550628585">壁紙画像を毎日変更する</translation> @@ -452,7 +453,9 @@ <translation id="4394049700291259645">無効にする</translation> <translation id="439429847087949098">「<ph name="DEVICE_NAME" />」を再起動しています</translation> <translation id="4395835743215824109">キーボードのカスタマイズ</translation> +<translation id="4403262788869804671"><ph name="META_KEY" /> キーを使わないショートカットは、一部のアプリのショートカットと競合する可能性があります。そのまま使用する場合は、このショートカットをもう一度押します。または、<ph name="KEY" /> キーを使用した新しいショートカットを押します。</translation> <translation id="4415951057168511744">現在のアバター</translation> +<translation id="4417830657741848074">いくつかのアプリは、自動的に起動するよう管理者によって設定されています。これらのアプリの一部は終了できません。</translation> <translation id="4422041425070339732">下矢印</translation> <translation id="4425149324548788773">マイドライブ</translation> <translation id="4428374560396076622"><ph name="NETWORK_NAME" /> はオフになっています</translation> @@ -465,6 +468,7 @@ <translation id="4469288414739283461">「地球の動き」のスクリーン セーバー</translation> <translation id="4479639480957787382">イーサネット</translation> <translation id="4483049906298469269">デフォルト以外のネットワーク ゲートウェイに向けた ping が失敗しました</translation> +<translation id="4500722292849917410">このショートカットは使用できません。修飾キー(Ctrl、Alt、Shift、または <ph name="META_KEY" />)を使用して新しいショートカットを押してください。</translation> <translation id="4500966230243561393">インターフェースの色</translation> <translation id="4503223151711056411">左矢印</translation> <translation id="4507392511610824664">明るさを上げる</translation> @@ -512,6 +516,7 @@ <translation id="4832079907277790330">ファイルアプリ内のフォルダを選択...</translation> <translation id="4835901797422965222">有効なネットワークがありません</translation> <translation id="4839698083503556542">オリジナルの動画を作成しましょう</translation> +<translation id="48409034532829769">「<ph name="APP_NAME" />」は、自動的に起動するよう管理者によって設定されています。このアプリは終了できません。</translation> <translation id="484462545196658690">自動</translation> <translation id="4847902821209177679"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> が選択されています。<ph name="TOPIC_SOURCE" /> アルバムを選択するには Enter キーを押してください</translation> <translation id="484790837831576105">(Android)DNS の解決</translation> @@ -538,6 +543,7 @@ <translation id="4969079779290789265">分割</translation> <translation id="4972592110715526173">モード変更</translation> <translation id="498186245079027698">スキャナを確認して、もう一度お試しください。デバイスにスキャンしたファイルを保存するのに十分な容量があるかどうかも確認してください。</translation> +<translation id="4982627662315910959">このショートカットは使用できません。Shift キーと他 1 個の修飾キー(Ctrl、Alt、または <ph name="META_KEY" />)を使用して新しいショートカットを押してください。</translation> <translation id="4985509611418653372">実行</translation> <translation id="4987769320337599931">ファイアウォール</translation> <translation id="4988526792673242964">ページ</translation> @@ -844,6 +850,7 @@ <translation id="7216409898977639127">モバイル プロバイダ</translation> <translation id="725133483556299729">メールアドレスを選択</translation> <translation id="7271040990581020067">スキャナは現在使用中です。しばらくしてからもう一度お試しください。</translation> +<translation id="7271932918253517778">最上段のキーを使用するショートカットには、<ph name="META_KEY" /> キーを含める必要があります。</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> <translation id="7281657306185710294">そよ風を感じる</translation> <translation id="7287310195820267359">壁紙のコレクション</translation>
diff --git a/chromeos/strings/chromeos_strings_ka.xtb b/chromeos/strings/chromeos_strings_ka.xtb index ef5ad15..7149d25 100644 --- a/chromeos/strings/chromeos_strings_ka.xtb +++ b/chromeos/strings/chromeos_strings_ka.xtb
@@ -94,6 +94,7 @@ <translation id="1611649489706141841">წინ</translation> <translation id="1615335640928990664">მონაცემთა მოხმარება <ph name="FRIENDLY_DATE" />-დან</translation> <translation id="1621067168122174824">დატენის ტესტის გაშვება</translation> +<translation id="1626590945318984973">მალსახმობი მიუწვდომელია. დააჭირეთ ახალ მალსახმობს ფუნქციური და „<ph name="META_KEY" />“ კლავიშების გამოყენების გარეშე.</translation> <translation id="1639239467298939599">იტვირთება</translation> <translation id="1641857168437328880">დოკუმენტების მიმწოდი (ცალმხრივი)</translation> <translation id="1643449475550628585">ფონის სურათის ყოველდღიურად შეცვლა</translation> @@ -452,7 +453,9 @@ <translation id="4394049700291259645">გამორთვა</translation> <translation id="439429847087949098">მიმდინარეობს <ph name="DEVICE_NAME" />-ის გადატვირთვა</translation> <translation id="4395835743215824109">კლავიატურის მორგება</translation> +<translation id="4403262788869804671">მალსახმობები „<ph name="META_KEY" />“ კლავიშის გარეშე, შესაძლოა, კონფლიქტში აღმოჩნდეს ზოგიერთი აპის მალსახმობებთან. ხელახლა დააჭირეთ ამ მალსახმობს, რომ გააგრძელოთ მისი გამოყენება, ან დააჭირეთ ახალ მალსახმობს „<ph name="KEY" />“ კლავიშთან ერთად.</translation> <translation id="4415951057168511744">ამჟამინდელი ავატარი</translation> +<translation id="4417830657741848074">თქვენმა ადმინისტრატორმა დააყენა პარამეტრები ისე, რომ ზოგიერთი აპი ავტომატურად გაეშვას. ამ აპებიდან ზოგიერთს ვერ დახურავთ.</translation> <translation id="4422041425070339732">ისარი ქვემოთ</translation> <translation id="4425149324548788773">ჩემი Drive</translation> <translation id="4428374560396076622"><ph name="NETWORK_NAME" /> გამორთულია</translation> @@ -465,6 +468,7 @@ <translation id="4469288414739283461">მიწის ნაკადის ეკრანმზოგი</translation> <translation id="4479639480957787382">ეთერნეთი</translation> <translation id="4483049906298469269">არანაგულისხმევი ქსელის გეითვეისთან კავშირის შემოწმება ვერ მოხერხდა</translation> +<translation id="4500722292849917410">მალსახმობი მიუწვდომელია. დააჭირეთ ახალ მალსახმობს მოდიფიკატორი კლავიშის (ctrl, alt, shift ან <ph name="META_KEY" />) მეშვეობით.</translation> <translation id="4500966230243561393">ინტერფეისის ფერი</translation> <translation id="4503223151711056411">ისარი მარცხნივ</translation> <translation id="4507392511610824664">სიკაშკაშის მომატება</translation> @@ -512,6 +516,7 @@ <translation id="4832079907277790330">საქაღალდის არჩევა ფაილების აპიდან...</translation> <translation id="4835901797422965222">აქტიური ქსელები არ არის</translation> <translation id="4839698083503556542">შექმენით საკუთარი ფილმი</translation> +<translation id="48409034532829769">თქვენმა ადმინისტრატორმა დააყენა პარამეტრები ისე, რომ „<ph name="APP_NAME" />“ ავტომატურად გაეშვას. ამ აპს ვერ დახურავთ.</translation> <translation id="484462545196658690">ავტომატური</translation> <translation id="4847902821209177679">არჩეულია <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" />, <ph name="TOPIC_SOURCE" /> ალბომების ასარჩევად დააჭირეთ კლავიშზე Enter</translation> <translation id="484790837831576105">(Android) DNS-ის დარეგულირება</translation> @@ -538,6 +543,7 @@ <translation id="4969079779290789265">გაყოფილი</translation> <translation id="4972592110715526173">რეჟიმის შეცვლა</translation> <translation id="498186245079027698">შეამოწმეთ სკანერი და ცადეთ ხელახლა. დარწმუნდით, რომ ადგილობრივი მეხსიერება საკმარისია სკანირებული ფაილების შესანახად.</translation> +<translation id="4982627662315910959">მალსახმობი მიუწვდომელია. დააჭირეთ ახალ მალსახმობს shift-ისა და კიდევ ერთი მოდიფიკატორი კლავიშის (ctrl, alt ან <ph name="META_KEY" />) მეშვეობით.</translation> <translation id="4985509611418653372">გაშვება</translation> <translation id="4987769320337599931">ქსელის დაცვა</translation> <translation id="4988526792673242964">გვერდები</translation> @@ -844,6 +850,7 @@ <translation id="7216409898977639127">ფიჭური ქსელის პროვაიდერი</translation> <translation id="725133483556299729">აირჩიეთ ელფოსტის მისამართი</translation> <translation id="7271040990581020067">სკანერი ამჟამად გამოიყენება. ცადეთ მოგვიანებით.</translation> +<translation id="7271932918253517778">ზედა მწკრივის კლავიშების შემცველი მალსახმობი უნდა შეიცავდეს „<ph name="META_KEY" />“ კლავიშს.</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> <translation id="7281657306185710294">ბრიზი</translation> <translation id="7287310195820267359">ფონების კოლექციები</translation>
diff --git a/chromeos/strings/chromeos_strings_ms.xtb b/chromeos/strings/chromeos_strings_ms.xtb index 70b3773..56e918ca 100644 --- a/chromeos/strings/chromeos_strings_ms.xtb +++ b/chromeos/strings/chromeos_strings_ms.xtb
@@ -94,6 +94,7 @@ <translation id="1611649489706141841">ke hadapan</translation> <translation id="1615335640928990664">Penggunaan data sejak <ph name="FRIENDLY_DATE" /></translation> <translation id="1621067168122174824">Jalankan Ujian cas</translation> +<translation id="1626590945318984973">Pintasan tidak tersedia. Tekan pintasan baharu tanpa menggunakan kekunci fungsi dan <ph name="META_KEY" />.</translation> <translation id="1639239467298939599">Memuatkan</translation> <translation id="1641857168437328880">Penyuap Dokumen (Satu sisi)</translation> <translation id="1643449475550628585">Tukar imej kertas dinding setiap hari</translation> @@ -452,7 +453,9 @@ <translation id="4394049700291259645">Lumpuhkan</translation> <translation id="439429847087949098">Memulakan semula <ph name="DEVICE_NAME" /></translation> <translation id="4395835743215824109">penyesuaian papan kekunci</translation> +<translation id="4403262788869804671">Pintasan tanpa kekunci <ph name="META_KEY" /> mungkin bercanggah dengan sesetengah pintasan apl. Tekan pintasan ini sekali lagi untuk terus digunakan atau tekan pintasan baharu menggunakan kekunci <ph name="KEY" />.</translation> <translation id="4415951057168511744">Avatar Semasa</translation> +<translation id="4417830657741848074">Pentadbir anda telah menyediakan sesetengah apl untuk bermula secara automatik. Sesetengah apl tersebut mungkin tidak ditutup.</translation> <translation id="4422041425070339732">anak panah ke bawah</translation> <translation id="4425149324548788773">Drive Saya</translation> <translation id="4428374560396076622"><ph name="NETWORK_NAME" /> dimatikan</translation> @@ -465,6 +468,7 @@ <translation id="4469288414739283461">Penyelamat skrin aliran Bumi</translation> <translation id="4479639480957787382">Ethernet</translation> <translation id="4483049906298469269">Gagal untuk ping get laluan rangkaian bukan lalai</translation> +<translation id="4500722292849917410">Pintasan tidak tersedia. Tekan pintasan baharu menggunakan kekunci pengubah suai (ctrl, alt, shift atau <ph name="META_KEY" />).</translation> <translation id="4500966230243561393">Warna antara muka</translation> <translation id="4503223151711056411">Anak panah ke kiri</translation> <translation id="4507392511610824664">tambahkan kecerahan</translation> @@ -512,6 +516,7 @@ <translation id="4832079907277790330">Pilih folder dalam apl Files...</translation> <translation id="4835901797422965222">Tiada rangkaian aktif</translation> <translation id="4839698083503556542">Buat filem anda sendiri</translation> +<translation id="48409034532829769">Pentadbir anda telah menyediakan "<ph name="APP_NAME" />" untuk bermula secara automatik. Apl ini mungkin tidak ditutup.</translation> <translation id="484462545196658690">Auto</translation> <translation id="4847902821209177679"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> dipilih, tekan Enter untuk memilih album <ph name="TOPIC_SOURCE" /></translation> <translation id="484790837831576105">Peleraian DNS (Android)</translation> @@ -538,6 +543,7 @@ <translation id="4969079779290789265">Pisah</translation> <translation id="4972592110715526173">pertukaran mod</translation> <translation id="498186245079027698">Periksa pengimbas dan cuba lagi. Pastikan terdapat ruang setempat yang mencukupi untuk menyimpan fail yang diimbas.</translation> +<translation id="4982627662315910959">Pintasan tidak tersedia. Tekan pintasan baharu menggunakan shift dan 1 lagi kekunci pengubah suai (ctrl, alt atau <ph name="META_KEY" />).</translation> <translation id="4985509611418653372">Jalankan</translation> <translation id="4987769320337599931">Tembok api</translation> <translation id="4988526792673242964">Halaman</translation> @@ -844,6 +850,7 @@ <translation id="7216409898977639127">Penyedia selular</translation> <translation id="725133483556299729">Pilih e-mel</translation> <translation id="7271040990581020067">Pengimbas sedang digunakan. Cuba lagi nanti.</translation> +<translation id="7271932918253517778">Pintasan dengan kekunci baris atas perlu menyertakan kekunci <ph name="META_KEY" />.</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> <translation id="7281657306185710294">Rasai tiupan anginnya</translation> <translation id="7287310195820267359">Koleksi Kertas Dinding</translation>
diff --git a/chromeos/strings/chromeos_strings_nl.xtb b/chromeos/strings/chromeos_strings_nl.xtb index 0c75d41..2616a60c 100644 --- a/chromeos/strings/chromeos_strings_nl.xtb +++ b/chromeos/strings/chromeos_strings_nl.xtb
@@ -94,6 +94,7 @@ <translation id="1611649489706141841">vooruit</translation> <translation id="1615335640928990664">Datagebruik sinds <ph name="FRIENDLY_DATE" /></translation> <translation id="1621067168122174824">Batterijlading testen</translation> +<translation id="1626590945318984973">Sneltoets niet beschikbaar. Druk op een nieuwe sneltoets zonder de functie- en <ph name="META_KEY" />-toetsen te gebruiken.</translation> <translation id="1639239467298939599">Laden</translation> <translation id="1641857168437328880">Documentfeeder (enkelzijdig)</translation> <translation id="1643449475550628585">Achtergrondafbeelding dagelijks wijzigen</translation> @@ -452,7 +453,9 @@ <translation id="4394049700291259645">Uitzetten</translation> <translation id="439429847087949098"><ph name="DEVICE_NAME" /> wordt opnieuw opgestart</translation> <translation id="4395835743215824109">toetsenbord aanpassen</translation> +<translation id="4403262788869804671">Sneltoets zonder <ph name="META_KEY" />-toets kan conflicteren met de sneltoets van bepaalde apps. Druk opnieuw op deze sneltoets om die te blijven gebruiken of druk op een nieuwe sneltoets met de <ph name="KEY" />-toets.</translation> <translation id="4415951057168511744">Huidige avatar</translation> +<translation id="4417830657741848074">Je beheerder heeft ingesteld dat sommige apps automatisch worden gestart. Je kunt sommige van deze apps misschien niet sluiten.</translation> <translation id="4422041425070339732">pijl-omlaag</translation> <translation id="4425149324548788773">Mijn Drive</translation> <translation id="4428374560396076622"><ph name="NETWORK_NAME" /> staat uit</translation> @@ -465,6 +468,7 @@ <translation id="4469288414739283461">Screensaver Aardestroom</translation> <translation id="4479639480957787382">Ethernet</translation> <translation id="4483049906298469269">Kan de niet-standaard netwerkgateway niet pingen</translation> +<translation id="4500722292849917410">Sneltoets niet beschikbaar. Druk op een nieuwe sneltoets met een functietoets (Ctrl, Alt, Shift of <ph name="META_KEY" />).</translation> <translation id="4500966230243561393">Interfacekleur</translation> <translation id="4503223151711056411">Pijl-links</translation> <translation id="4507392511610824664">helderheid omhoog</translation> @@ -512,6 +516,7 @@ <translation id="4832079907277790330">Map selecteren in de app Bestanden...</translation> <translation id="4835901797422965222">Geen actieve netwerken</translation> <translation id="4839698083503556542">Je eigen film maken</translation> +<translation id="48409034532829769">Je beheerder heeft ingesteld dat <ph name="APP_NAME" /> automatisch wordt gestart. Je kunt deze app misschien niet sluiten.</translation> <translation id="484462545196658690">Auto</translation> <translation id="4847902821209177679"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> geselecteerd, druk op Enter om <ph name="TOPIC_SOURCE" />-albums te selecteren</translation> <translation id="484790837831576105">(Android) DNS-omzetting</translation> @@ -538,6 +543,7 @@ <translation id="4969079779290789265">Splitsen</translation> <translation id="4972592110715526173">modus wijzigen</translation> <translation id="498186245079027698">Check de scanner en probeer het opnieuw. Zorg dat er voldoende lokale ruimte is om gescande bestanden op te slaan.</translation> +<translation id="4982627662315910959">Sneltoets niet beschikbaar. Druk op een nieuwe sneltoets met Shift en nog 1 functietoets (Ctrl, Alt of <ph name="META_KEY" />).</translation> <translation id="4985509611418653372">Uitvoeren</translation> <translation id="4987769320337599931">Firewall</translation> <translation id="4988526792673242964">Pagina's</translation> @@ -844,6 +850,7 @@ <translation id="7216409898977639127">Mobiele provider</translation> <translation id="725133483556299729">E-mailadres selecteren</translation> <translation id="7271040990581020067">De scanner wordt momenteel gebruikt. Probeer het later opnieuw.</translation> +<translation id="7271932918253517778">Sneltoets met toetsen op de bovenste rij moet de <ph name="META_KEY" />-toets bevatten.</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> <translation id="7281657306185710294">Een koel briesje</translation> <translation id="7287310195820267359">Achtergrondcollecties</translation>
diff --git a/chromeos/strings/chromeos_strings_pa.xtb b/chromeos/strings/chromeos_strings_pa.xtb index b835af0d..8fad7b14 100644 --- a/chromeos/strings/chromeos_strings_pa.xtb +++ b/chromeos/strings/chromeos_strings_pa.xtb
@@ -94,6 +94,7 @@ <translation id="1611649489706141841">ਅੱਗੇ ਭੇਜੋ</translation> <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> ਤੋਂ ਡਾਟਾ ਵਰਤੋਂ</translation> <translation id="1621067168122174824">ਚਾਰਜ ਟੈਸਟ ਚਲਾਓ</translation> +<translation id="1626590945318984973">ਸ਼ਾਰਟਕੱਟ ਉਪਲਬਧ ਨਹੀਂ। ਫੰਕਸ਼ਨ ਅਤੇ <ph name="META_KEY" /> ਕੁੰਜੀਆਂ ਨੂੰ ਵਰਤੇ ਬਿਨਾਂ ਨਵਾਂ ਸ਼ਾਰਟਕੱਟ ਦਬਾਓ।</translation> <translation id="1639239467298939599">ਲੋਡ ਕਰ ਰਿਹਾ ਹੈ</translation> <translation id="1641857168437328880">ਦਸਤਾਵੇਜ਼ ਫ਼ੀਡਰ (ਇੱਕ ਪਾਸੜ)</translation> <translation id="1643449475550628585">ਵਾਲਪੇਪਰ ਚਿੱਤਰ ਨੂੰ ਰੋਜ਼ਾਨਾ ਬਦਲੋ</translation> @@ -452,7 +453,9 @@ <translation id="4394049700291259645">ਬੰਦ ਕਰੋ</translation> <translation id="439429847087949098"><ph name="DEVICE_NAME" /> ਨੂੰ ਮੁੜ-ਸ਼ੁਰੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ</translation> <translation id="4395835743215824109">ਕੀ-ਬੋਰਡ ਵਿਉਂਤਬੱਧ ਕਰੋ</translation> +<translation id="4403262788869804671"><ph name="META_KEY" /> ਕੁੰਜੀ ਤੋਂ ਬਿਨਾਂ ਸ਼ਾਰਟਕੱਟ ਦੀ ਵਰਤੋਂ ਕਰਨ 'ਤੇ ਕੁਝ ਐਪਾਂ ਦੇ ਸ਼ਾਰਟਕੱਟ ਵਿੱਚ ਗੜਬੜ ਹੋ ਸਕਦੀ ਹੈ। ਇਸਦੀ ਵਰਤੋਂ ਜਾਰੀ ਰੱਖਣ ਲਈ ਇਸ ਸ਼ਾਰਟਕੱਟ ਨੂੰ ਦੁਬਾਰਾ ਦਬਾਓ ਜਾਂ <ph name="KEY" /> ਕੁੰਜੀ ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਕੋਈ ਨਵਾਂ ਸ਼ਾਰਟਕੱਟ ਦਬਾਓ।</translation> <translation id="4415951057168511744">ਮੌਜੂਦਾ ਅਵਤਾਰ</translation> +<translation id="4417830657741848074">ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਨੇ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਕੁਝ ਐਪਾਂ ਦਾ ਸੈੱਟਅੱਪ ਕਰ ਲਿਆ ਹੈ। ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਇਨ੍ਹਾਂ ਵਿੱਚੋਂ ਕੁਝ ਐਪਾਂ ਬੰਦ ਨਾ ਹੋਣ।</translation> <translation id="4422041425070339732">ਹੇਠਾਂ ਤੀਰ</translation> <translation id="4425149324548788773">My Drive</translation> <translation id="4428374560396076622"><ph name="NETWORK_NAME" /> ਬੰਦ ਹੈ</translation> @@ -465,6 +468,7 @@ <translation id="4469288414739283461">ਧਰਤੀ ਪ੍ਰਵਾਹ ਦਾ ਸਕ੍ਰੀਨ ਸੇਵਰ</translation> <translation id="4479639480957787382">ਈਥਰਨੈਟ</translation> <translation id="4483049906298469269">ਗੈਰ-ਪੂਰਵ-ਨਿਰਧਾਰਤ ਨੈੱਟਵਰਕ ਗੇਟਵੇ ਨੂੰ ਪਿੰਗ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ</translation> +<translation id="4500722292849917410">ਸ਼ਾਰਟਕੱਟ ਉਪਲਬਧ ਨਹੀਂ। ਸੋਧਕ ਕੁੰਜੀ (ctrl, alt, shift ਜਾਂ <ph name="META_KEY" />) ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਨਵਾਂ ਸ਼ਾਰਟਕੱਟ ਦਬਾਓ।</translation> <translation id="4500966230243561393">ਇੰਟਰਫ਼ੇਸ ਦਾ ਰੰਗ</translation> <translation id="4503223151711056411">ਖੱਬਾ ਤੀਰ</translation> <translation id="4507392511610824664">ਚਮਕ ਵਧਾਓ</translation> @@ -512,6 +516,7 @@ <translation id="4832079907277790330">Files ਐਪ ਵਿੱਚ ਫੋਲਡਰ ਨੂੰ ਚੁਣੋ...</translation> <translation id="4835901797422965222">ਕੋਈ ਕਿਰਿਆਸ਼ੀਲ ਨੈੱਟਵਰਕ ਨਹੀਂ ਹਨ</translation> <translation id="4839698083503556542">ਆਪਣੀ ਖੁਦ ਦੀ ਫ਼ਿਲਮ ਬਣਾਓ</translation> +<translation id="48409034532829769">ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਨੇ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਸ਼ੁਰੂ ਕਰਨ ਲਈ "<ph name="APP_NAME" />" ਦਾ ਸੈੱਟਅੱਪ ਕਰ ਲਿਆ ਹੈ। ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਇਹ ਐਪ ਬੰਦ ਨਾ ਹੋਵੇ।</translation> <translation id="484462545196658690">ਸਵੈ</translation> <translation id="4847902821209177679"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> ਚੁਣਿਆ ਗਿਆ, <ph name="TOPIC_SOURCE" /> ਐਲਬਮਾਂ ਨੂੰ ਚੁਣਨ ਲਈ Enter ਦਬਾਓ</translation> <translation id="484790837831576105">(Android) DNS ਰੈਜ਼ੋਲਿਊਸ਼ਨ</translation> @@ -538,6 +543,7 @@ <translation id="4969079779290789265">ਵੰਡਿਆ</translation> <translation id="4972592110715526173">ਮੋਡ ਬਦਲੋ</translation> <translation id="498186245079027698">ਸਕੈਨਰ ਦੀ ਜਾਂਚ ਕਰੋ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਇਹ ਪੱਕਾ ਕਰੋ ਕਿ ਸਕੈਨ ਕੀਤੀਆਂ ਫ਼ਾਈਲਾਂ ਨੂੰ ਰੱਖਿਅਤ ਕਰਨ ਲਈ ਲੋੜੀਂਦੀ ਜਗ੍ਹਾ ਹੈ।</translation> +<translation id="4982627662315910959">ਸ਼ਾਰਟਕੱਟ ਉਪਲਬਧ ਨਹੀਂ। Shift ਅਤੇ 1 ਹੋਰ ਸੋਧਕ ਕੁੰਜੀ (ctrl, alt ਜਾਂ <ph name="META_KEY" />) ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਨਵਾਂ ਸ਼ਾਰਟਕੱਟ ਦਬਾਓ।</translation> <translation id="4985509611418653372">ਚਲਾਓ</translation> <translation id="4987769320337599931">ਫ਼ਾਇਰਵਾਲ</translation> <translation id="4988526792673242964">ਸਫ਼ੇ</translation> @@ -844,6 +850,7 @@ <translation id="7216409898977639127">ਸੈਲਿਊਲਰ ਪ੍ਰਦਾਨਕ</translation> <translation id="725133483556299729">ਈਮੇਲ ਚੁਣੋ</translation> <translation id="7271040990581020067">ਫ਼ਿਲਹਾਲ ਸਕੈਨਰ ਵਰਤੋਂ ਵਿੱਚ ਹੈ। ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> +<translation id="7271932918253517778">ਸਿਖਰਲੀ ਕਤਾਰ ਨਾਲ ਕੁੰਜੀਆਂ ਵਾਲੇ ਸ਼ਾਰਟਕੱਟ ਵਿੱਚ <ph name="META_KEY" /> ਕੁੰਜੀ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> <translation id="7281657306185710294">ਹਵਾ ਨੂੰ ਮਹਿਸੂਸ ਕਰੋ</translation> <translation id="7287310195820267359">ਵਾਲਪੇਪਰ ਸੰਗ੍ਰਹਿ</translation>
diff --git a/chromeos/strings/chromeos_strings_pl.xtb b/chromeos/strings/chromeos_strings_pl.xtb index 5fc79c7..27e77f94 100644 --- a/chromeos/strings/chromeos_strings_pl.xtb +++ b/chromeos/strings/chromeos_strings_pl.xtb
@@ -94,6 +94,7 @@ <translation id="1611649489706141841">do przodu</translation> <translation id="1615335640928990664">Użycie danych od <ph name="FRIENDLY_DATE" /></translation> <translation id="1621067168122174824">Przeprowadź test ładowania</translation> +<translation id="1626590945318984973">Brak dostępnego skrótu. Naciśnij nowy skrót bez klawiszy funkcyjnych i klawisza <ph name="META_KEY" />.</translation> <translation id="1639239467298939599">Wczytuję</translation> <translation id="1641857168437328880">Podajnik dokumentów (jednostronny)</translation> <translation id="1643449475550628585">Zmieniaj obraz tapety codziennie</translation> @@ -452,7 +453,9 @@ <translation id="4394049700291259645">Wyłącz</translation> <translation id="439429847087949098">Ponownie uruchamiam urządzenie: <ph name="DEVICE_NAME" /></translation> <translation id="4395835743215824109">dostosowywanie klawiatury</translation> +<translation id="4403262788869804671">Skrót bez klawisza <ph name="META_KEY" /> może być w konflikcie z jakimś skrótem aplikacji. Naciśnij ten skrót ponownie, aby nadal go używać, albo naciśnij nowy skrót z użyciem klawisza <ph name="KEY" />.</translation> <translation id="4415951057168511744">Bieżący awatar</translation> +<translation id="4417830657741848074">Administrator skonfigurował niektóre aplikacje tak, aby uruchamiały się automatycznie. Niektórych z nich nie można zamknąć.</translation> <translation id="4422041425070339732">strzałka w dół</translation> <translation id="4425149324548788773">Mój dysk</translation> <translation id="4428374560396076622">Sieć <ph name="NETWORK_NAME" /> jest wyłączona</translation> @@ -465,6 +468,7 @@ <translation id="4469288414739283461">Wygaszacz ekranu Ziemia</translation> <translation id="4479639480957787382">Ethernet</translation> <translation id="4483049906298469269">Nie udało się sprawdzić pingiem bramy sieciowej innej niż domyślna</translation> +<translation id="4500722292849917410">Brak dostępnego skrótu. Naciśnij nowy skrót, używając klawisza modyfikującego (Ctrl, Alt, Shift lub <ph name="META_KEY" />).</translation> <translation id="4500966230243561393">Kolor interfejsu</translation> <translation id="4503223151711056411">Strzałka w lewo</translation> <translation id="4507392511610824664">zwiększ jasność</translation> @@ -512,6 +516,7 @@ <translation id="4832079907277790330">Wybierz Folder w aplikacji Pliki...</translation> <translation id="4835901797422965222">Brak aktywnych sieci</translation> <translation id="4839698083503556542">Zmontuj własny film</translation> +<translation id="48409034532829769">Administrator skonfigurował automatyczne uruchamianie aplikacji „<ph name="APP_NAME" />”. Nie można jej zamknąć.</translation> <translation id="484462545196658690">Automatycznie</translation> <translation id="4847902821209177679">Wybrano: <ph name="TOPIC_SOURCE" /> (<ph name="TOPIC_SOURCE_DESC" />). Naciśnij Enter, by wybrać albumy ze źródła <ph name="TOPIC_SOURCE" /></translation> <translation id="484790837831576105">(Android) Rozpoznawanie nazw DNS</translation> @@ -538,6 +543,7 @@ <translation id="4969079779290789265">Podziel</translation> <translation id="4972592110715526173">zmiana trybu</translation> <translation id="498186245079027698">Sprawdź skaner i spróbuj ponownie. Upewnij się, że na urządzeniu masz miejsce na zapisanie zeskanowanych plików.</translation> +<translation id="4982627662315910959">Brak dostępnego skrótu. Naciśnij nowy skrót, używając klawisza Shift i 1 dodatkowego klawisza modyfikującego (Ctrl, Alt lub <ph name="META_KEY" />).</translation> <translation id="4985509611418653372">Uruchom</translation> <translation id="4987769320337599931">Zapora sieciowa</translation> <translation id="4988526792673242964">Strony</translation> @@ -844,6 +850,7 @@ <translation id="7216409898977639127">Operator komórkowy</translation> <translation id="725133483556299729">Wybierz adres e-mail</translation> <translation id="7271040990581020067">Skaner jest obecnie używany. Spróbuj ponownie później.</translation> +<translation id="7271932918253517778">Skrót wykorzystujący górny rząd klawiszy na klawiaturze musi zawierać klawisz <ph name="META_KEY" />.</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> <translation id="7281657306185710294">Odetchnij</translation> <translation id="7287310195820267359">Kolekcje tapet</translation>
diff --git a/chromeos/strings/chromeos_strings_sk.xtb b/chromeos/strings/chromeos_strings_sk.xtb index 023661b..09eeebe 100644 --- a/chromeos/strings/chromeos_strings_sk.xtb +++ b/chromeos/strings/chromeos_strings_sk.xtb
@@ -94,6 +94,7 @@ <translation id="1611649489706141841">dopredu</translation> <translation id="1615335640928990664">Spotreba dát od <ph name="FRIENDLY_DATE" /></translation> <translation id="1621067168122174824">Spustiť test nabitia</translation> +<translation id="1626590945318984973">Skratka nie je k dispozícii. Stlačte novú skratku bez použitia funkčných klávesov a klávesov <ph name="META_KEY" />.</translation> <translation id="1639239467298939599">Načítava sa</translation> <translation id="1641857168437328880">Podávač dokumentov (jednostranný)</translation> <translation id="1643449475550628585">Denne meniť obrázok tapety</translation> @@ -452,7 +453,9 @@ <translation id="4394049700291259645">Zakázať</translation> <translation id="439429847087949098"><ph name="DEVICE_NAME" /> sa reštartuje</translation> <translation id="4395835743215824109">prispôsobenie klávesnice</translation> +<translation id="4403262788869804671">Skratka bez klávesa <ph name="META_KEY" /> môže byť v konflikte so skratkou niektorej aplikácie. Ak chcete túto skratku naďalej používať, znova ju stlačte, prípadne stlačte novú skratku a použite pritom kláves <ph name="KEY" />.</translation> <translation id="4415951057168511744">Aktuálna avatar</translation> +<translation id="4417830657741848074">Váš správca nastavil niektoré aplikácie tak, aby sa spúšťali automaticky. Niektoré tieto aplikácie nemusia byť zavreté.</translation> <translation id="4422041425070339732">šípka nadol</translation> <translation id="4425149324548788773">Môj disk</translation> <translation id="4428374560396076622">Sieť <ph name="NETWORK_NAME" /> je vypnutá</translation> @@ -465,6 +468,7 @@ <translation id="4469288414739283461">Šetrič obrazovky s otáčaním Zeme</translation> <translation id="4479639480957787382">Ethernet</translation> <translation id="4483049906298469269">Nepredvolenú bránu siete sa nepodarilo otestovať</translation> +<translation id="4500722292849917410">Skratka nie je k dispozícii. Stlačte novú skratku použitím klávesa modifikátora (ctrl, alt, shift alebo <ph name="META_KEY" />).</translation> <translation id="4500966230243561393">Farba rozhrania</translation> <translation id="4503223151711056411">Šípka doľava</translation> <translation id="4507392511610824664">zvýšenie jasu</translation> @@ -512,6 +516,7 @@ <translation id="4832079907277790330">Vybrať priečinok v aplikácii Súbory…</translation> <translation id="4835901797422965222">Žiadne aktívne siete</translation> <translation id="4839698083503556542">Vytvorte si vlastný film</translation> +<translation id="48409034532829769">Váš správca nastavil aplikáciu <ph name="APP_NAME" /> tak, aby sa spúšťala automaticky. Táto aplikácia nemusí byť zavretá.</translation> <translation id="484462545196658690">Automaticky</translation> <translation id="4847902821209177679">Zdroj <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> je vybraný, stlačením klávesa Enter vyberte albumy zo zdroja <ph name="TOPIC_SOURCE" /></translation> <translation id="484790837831576105">(Android) Preklad DNS</translation> @@ -538,6 +543,7 @@ <translation id="4969079779290789265">Rozdeliť</translation> <translation id="4972592110715526173">zmena režimu</translation> <translation id="498186245079027698">Skontrolujte skener a skúste to znova. Uistite sa, že na uloženie naskenovaných súborov je v zariadení dostatok priestoru.</translation> +<translation id="4982627662315910959">Skratka nie je k dispozícii. Stlačte novú skratku použitím klávesa Shift a jedného ďalšieho klávesa modifikátora (ctrl, alt alebo <ph name="META_KEY" />).</translation> <translation id="4985509611418653372">Spustiť</translation> <translation id="4987769320337599931">Firewall</translation> <translation id="4988526792673242964">Stránky</translation> @@ -844,6 +850,7 @@ <translation id="7216409898977639127">Poskytovateľ mobilného pripojenia</translation> <translation id="725133483556299729">Vybrať e‑mail</translation> <translation id="7271040990581020067">Skener sa momentálne používa. Skúste to neskôr.</translation> +<translation id="7271932918253517778">Skratka s klávesmi horného radu musí zahŕňať kláves <ph name="META_KEY" />.</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> <translation id="7281657306185710294">Pocíťte vánok</translation> <translation id="7287310195820267359">Zbierky tapiet</translation>
diff --git a/chromeos/strings/chromeos_strings_th.xtb b/chromeos/strings/chromeos_strings_th.xtb index b0d203d..a563e07d 100644 --- a/chromeos/strings/chromeos_strings_th.xtb +++ b/chromeos/strings/chromeos_strings_th.xtb
@@ -94,6 +94,7 @@ <translation id="1611649489706141841">ไปข้างหน้า</translation> <translation id="1615335640928990664">ปริมาณการใช้อินเทอร์เน็ตตั้งแต่ <ph name="FRIENDLY_DATE" /></translation> <translation id="1621067168122174824">ทดสอบการชาร์จแบตเตอรี่</translation> +<translation id="1626590945318984973">แป้นพิมพ์ลัดไม่พร้อมใช้งาน กดแป้นพิมพ์ลัดใหม่โดยไม่ใช้ฟังก์ชันและแป้น<ph name="META_KEY" /></translation> <translation id="1639239467298939599">กำลังโหลด</translation> <translation id="1641857168437328880">ตัวป้อนเอกสาร (ด้านเดียว)</translation> <translation id="1643449475550628585">เปลี่ยนรูปภาพวอลเปเปอร์ทุกวัน</translation> @@ -452,7 +453,9 @@ <translation id="4394049700291259645">ปิดการใช้งาน</translation> <translation id="439429847087949098">กำลังรีสตาร์ท <ph name="DEVICE_NAME" /></translation> <translation id="4395835743215824109">การปรับแต่งแป้นพิมพ์</translation> +<translation id="4403262788869804671">แป้นพิมพ์ลัดที่ไม่มีแป้น<ph name="META_KEY" />อาจขัดแย้งกับแป้นพิมพ์ลัดของบางแอป กดแป้นพิมพ์ลัดนี้อีกครั้งเพื่อใช้ต่อไป หรือกดแป้นพิมพ์ลัดใหม่โดยใช้แป้น<ph name="KEY" /></translation> <translation id="4415951057168511744">รูปโปรไฟล์ปัจจุบัน</translation> +<translation id="4417830657741848074">ผู้ดูแลระบบของคุณตั้งค่าให้บางแอปเริ่มทำงานโดยอัตโนมัติ คุณจึงปิดบางแอปเหล่านี้ไม่ได้</translation> <translation id="4422041425070339732">ลูกศรลง</translation> <translation id="4425149324548788773">ไดรฟ์ของฉัน</translation> <translation id="4428374560396076622"><ph name="NETWORK_NAME" /> ปิดอยู่</translation> @@ -465,6 +468,7 @@ <translation id="4469288414739283461">ภาพพักหน้าจอการเคลื่อนที่ของโลก</translation> <translation id="4479639480957787382">อีเทอร์เน็ต</translation> <translation id="4483049906298469269">ใช้คำสั่ง ping กับเกตเวย์เครือข่ายที่ไม่ใช่ค่าเริ่มต้นไม่สำเร็จ</translation> +<translation id="4500722292849917410">แป้นพิมพ์ลัดไม่พร้อมใช้งาน กดแป้นพิมพ์ลัดใหม่โดยใช้แป้นกดร่วม (Ctrl, Alt, Shift หรือ<ph name="META_KEY" />)</translation> <translation id="4500966230243561393">สีของอินเทอร์เฟซ</translation> <translation id="4503223151711056411">ลูกศรซ้าย</translation> <translation id="4507392511610824664">เพิ่มความสว่าง</translation> @@ -512,6 +516,7 @@ <translation id="4832079907277790330">เลือกโฟลเดอร์ในแอป Files...</translation> <translation id="4835901797422965222">ไม่มีเครือข่ายที่ใช้งานอยู่</translation> <translation id="4839698083503556542">สร้างภาพยนตร์ของคุณเอง</translation> +<translation id="48409034532829769">ผู้ดูแลระบบของคุณตั้งค่าให้ "<ph name="APP_NAME" />" เริ่มทำงานโดยอัตโนมัติ คุณจึงปิดแอปนี้ไม่ได้</translation> <translation id="484462545196658690">อัตโนมัติ</translation> <translation id="4847902821209177679">เลือก <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> อยู่ กด Enter เพื่อเลือกอัลบั้ม <ph name="TOPIC_SOURCE" /></translation> <translation id="484790837831576105">(Android) การแปลง DNS</translation> @@ -538,6 +543,7 @@ <translation id="4969079779290789265">แยก</translation> <translation id="4972592110715526173">เปลี่ยนโหมด</translation> <translation id="498186245079027698">ตรวจสอบเครื่องสแกนแล้วลองอีกครั้ง ตรวจดูว่ามีพื้นที่ว่างในเครื่องเพียงพอสำหรับบันทึกไฟล์ที่สแกน</translation> +<translation id="4982627662315910959">แป้นพิมพ์ลัดไม่พร้อมใช้งาน กดแป้นพิมพ์ลัดใหม่โดยใช้ Shift และแป้นกดร่วมอีก 1 รายการ (Ctrl, Alt หรือ<ph name="META_KEY" />)</translation> <translation id="4985509611418653372">เรียกใช้</translation> <translation id="4987769320337599931">ไฟร์วอลล์</translation> <translation id="4988526792673242964">หน้า</translation> @@ -844,6 +850,7 @@ <translation id="7216409898977639127">ผู้ให้บริการเครือข่ายมือถือ</translation> <translation id="725133483556299729">เลือกอีเมล</translation> <translation id="7271040990581020067">เครื่องสแกนกำลังทำงานอยู่ ลองอีกครั้งในภายหลัง</translation> +<translation id="7271932918253517778">แป้นพิมพ์ลัดที่ประกอบด้วยแป้นแถวบนสุดต้องมีแป้น<ph name="META_KEY" />รวมอยู่ด้วย</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> <translation id="7281657306185710294">สัมผัสสายลมเย็น</translation> <translation id="7287310195820267359">คอลเล็กชันภาพวอลเปเปอร์</translation>
diff --git a/components/BUILD.gn b/components/BUILD.gn index 62639cf..c34fcb4 100644 --- a/components/BUILD.gn +++ b/components/BUILD.gn
@@ -630,8 +630,6 @@ "//components/permissions/android:java", "//components/policy/android:native_test_support_java", "//components/policy/android:policy_java", - "//components/search_engines/android:java", - "//components/search_engines/android:test_utils_java", "//components/signin/core/browser", "//components/signin/public/android:java", "//components/signin/public/android:signin_java_test_support",
diff --git a/components/autofill/core/browser/autofill_address_util.cc b/components/autofill/core/browser/autofill_address_util.cc index 22d4c48..6b29db2 100644 --- a/components/autofill/core/browser/autofill_address_util.cc +++ b/components/autofill/core/browser/autofill_address_util.cc
@@ -213,8 +213,6 @@ continue; } FieldType type = component.field; - if (type == NAME_FULL) - type = NAME_FULL_WITH_HONORIFIC_PREFIX; address += base::UTF16ToUTF8(profile.GetInfo(type, ui_language_code)); } if (include_country) { @@ -267,8 +265,7 @@ const AutofillProfile& second_profile, const std::string& app_locale) { static constexpr FieldType kTypeToCompare[] = { - NAME_FULL_WITH_HONORIFIC_PREFIX, ADDRESS_HOME_ADDRESS, EMAIL_ADDRESS, - PHONE_HOME_WHOLE_NUMBER}; + NAME_FULL, ADDRESS_HOME_ADDRESS, EMAIL_ADDRESS, PHONE_HOME_WHOLE_NUMBER}; base::flat_map<FieldType, std::pair<std::u16string, std::u16string>> differences = AutofillProfileComparator::GetProfileDifferenceMap( @@ -304,7 +301,7 @@ const AutofillProfile& profile, const std::string& app_locale) { std::vector<FieldType> fields = { - FieldType::NAME_FULL_WITH_HONORIFIC_PREFIX, FieldType::ADDRESS_HOME_LINE1, + FieldType::NAME_FULL, FieldType::ADDRESS_HOME_LINE1, FieldType::EMAIL_ADDRESS, FieldType::PHONE_HOME_WHOLE_NUMBER}; std::vector<std::u16string> values; values.reserve(fields.size());
diff --git a/components/autofill/core/browser/autofill_address_util_unittest.cc b/components/autofill/core/browser/autofill_address_util_unittest.cc index 4c17cef..f3ab987 100644 --- a/components/autofill/core/browser/autofill_address_util_unittest.cc +++ b/components/autofill/core/browser/autofill_address_util_unittest.cc
@@ -89,8 +89,7 @@ // some more highlevel conditions that are less probable to change. // The full name should be part of the envelope style address. - EXPECT_NE(address.find( - profile.GetInfo(NAME_FULL_WITH_HONORIFIC_PREFIX, GetLocale())), + EXPECT_NE(address.find(profile.GetInfo(NAME_FULL, GetLocale())), std::string::npos); // City should be part of the envelope style address. @@ -204,10 +203,9 @@ AutofillProfile profile2 = profile1; profile2.SetInfo(NAME_FULL, u"John Doe", "en-US"); - EXPECT_THAT( - GetProfileDifferenceForUi(profile1, profile2, "en-US"), - ElementsAre(ProfileValueDifference{NAME_FULL_WITH_HONORIFIC_PREFIX, - u"John H. Doe", u"John Doe"})); + EXPECT_THAT(GetProfileDifferenceForUi(profile1, profile2, "en-US"), + ElementsAre(ProfileValueDifference{NAME_FULL, u"John H. Doe", + u"John Doe"})); } TEST_F(AddressFormattingTest,
diff --git a/components/autofill/core/browser/autofill_data_util_unittest.cc b/components/autofill/core/browser/autofill_data_util_unittest.cc index 606e545..bc2a074b 100644 --- a/components/autofill/core/browser/autofill_data_util_unittest.cc +++ b/components/autofill/core/browser/autofill_data_util_unittest.cc
@@ -19,8 +19,7 @@ using data_util::bit_field_type_groups::kPhone; TEST(AutofillDataUtilTest, DetermineGroupsForHomeNameAndAddress) { - const FieldTypeSet field_types{NAME_HONORIFIC_PREFIX, - NAME_FULL, + const FieldTypeSet field_types{NAME_FULL, NAME_FIRST, NAME_MIDDLE, NAME_MIDDLE_INITIAL,
diff --git a/components/autofill/core/browser/autofill_external_delegate.cc b/components/autofill/core/browser/autofill_external_delegate.cc index 78b22dec..aa3ae93c 100644 --- a/components/autofill/core/browser/autofill_external_delegate.cc +++ b/components/autofill/core/browser/autofill_external_delegate.cc
@@ -1200,12 +1200,6 @@ void AutofillExternalDelegate::ApplyAutofillOptions( std::vector<Suggestion>* suggestions, bool is_all_server_suggestions) { - // Add a separator before the Autofill options unless there are no suggestions - // yet. - if (!suggestions->empty()) { - suggestions->push_back(Suggestion(PopupItemId::kSeparator)); - } - // The form has been auto-filled, so give the user the chance to clear the // form. Append the 'Clear form' menu item. if (query_field_.is_autofilled) {
diff --git a/components/autofill/core/browser/autofill_external_delegate_unittest.cc b/components/autofill/core/browser/autofill_external_delegate_unittest.cc index af86f76a..6c749166 100644 --- a/components/autofill/core/browser/autofill_external_delegate_unittest.cc +++ b/components/autofill/core/browser/autofill_external_delegate_unittest.cc
@@ -263,7 +263,7 @@ MOCK_METHOD(void, UndoAutofill, (mojom::ActionPersistence action_persistence, - FormData form, + const FormData& form, const FormFieldData& trigger_field), (override)); MOCK_METHOD(void, @@ -870,7 +870,6 @@ const auto kExpectedSuggestions = SuggestionVectorIdsAre(PopupItemId::kAddressEntry, - PopupItemId::kSeparator, PopupItemId::kAutofillOptions); EXPECT_CALL(client(), ShowAutofillPopup(PopupOpenArgsAre(kExpectedSuggestions), _)); @@ -913,7 +912,6 @@ PopupItemId::kSeparator, #endif PopupItemId::kAddressEntry, - PopupItemId::kSeparator, PopupItemId::kAutofillOptions); EXPECT_CALL(client(), ShowAutofillPopup(PopupOpenArgsAre(kExpectedSuggestions), _)); @@ -955,7 +953,6 @@ PopupItemId::kSeparator, #endif PopupItemId::kAddressEntry, - PopupItemId::kSeparator, PopupItemId::kAutofillOptions); EXPECT_CALL(client(), ShowAutofillPopup(PopupOpenArgsAre(kExpectedSuggestions), _)); @@ -997,7 +994,6 @@ PopupItemId::kSeparator, #endif PopupItemId::kAddressEntry, - PopupItemId::kSeparator, PopupItemId::kAutofillOptions); EXPECT_CALL(client(), ShowAutofillPopup(PopupOpenArgsAre(kExpectedSuggestions), _)); @@ -2318,19 +2314,16 @@ // On Desktop, the GPay icon should be stored in the store indicator icon. #if BUILDFLAG(IS_ANDROID) SuggestionVectorIconsAre(Suggestion::Icon::kNoIcon, - Suggestion::Icon::kNoIcon, AnyOf(Suggestion::Icon::kGooglePay, Suggestion::Icon::kGooglePayDark)); #elif BUILDFLAG(IS_IOS) SuggestionVectorIconsAre(Suggestion::Icon::kNoIcon, - Suggestion::Icon::kNoIcon, AnyOf(Suggestion::Icon::kGooglePay, Suggestion::Icon::kGooglePayDark)); #else SuggestionVectorStoreIndicatorIconsAre( - Suggestion::Icon::kNoIcon, Suggestion::Icon::kNoIcon, - AnyOf(Suggestion::Icon::kGooglePay, - Suggestion::Icon::kGooglePayDark)); + Suggestion::Icon::kNoIcon, AnyOf(Suggestion::Icon::kGooglePay, + Suggestion::Icon::kGooglePayDark)); #endif EXPECT_CALL(client(), ShowAutofillPopup(PopupOpenArgsAre(kExpectedSuggestions), _)); @@ -2346,7 +2339,6 @@ const auto kExpectedSuggestions = SuggestionVectorIconsAre(Suggestion::Icon::kNoIcon, - Suggestion::Icon::kNoIcon, Suggestion::Icon::kSettings); EXPECT_CALL(client(), ShowAutofillPopup(PopupOpenArgsAre(kExpectedSuggestions), _)); @@ -2361,7 +2353,6 @@ const auto kExpectedSuggestions = SuggestionVectorMainTextsAre( Suggestion::Text(std::u16string(), Suggestion::Text::IsPrimary(true)), - Suggestion::Text(std::u16string(), Suggestion::Text::IsPrimary(false)), Suggestion::Text(l10n_util::GetStringUTF16(IDS_AUTOFILL_MANAGE_ADDRESSES), Suggestion::Text::IsPrimary(true))); EXPECT_CALL(client(),
diff --git a/components/autofill/core/browser/autofill_suggestion_generator.cc b/components/autofill/core/browser/autofill_suggestion_generator.cc index 30c30b07..291f70e7 100644 --- a/components/autofill/core/browser/autofill_suggestion_generator.cc +++ b/components/autofill/core/browser/autofill_suggestion_generator.cc
@@ -1169,10 +1169,20 @@ } autofill_metrics::LogPreviouslyHiddenProfileSuggestionNumber( previously_hidden_profiles_guid.size()); - return CreateSuggestionsFromProfiles(profiles_to_suggest, field_types, - last_targeted_fields, trigger_field_type, - trigger_field.max_length, - previously_hidden_profiles_guid); + + std::vector<Suggestion> suggestions = CreateSuggestionsFromProfiles( + profiles_to_suggest, field_types, last_targeted_fields, + trigger_field_type, trigger_field.max_length, + previously_hidden_profiles_guid); + + if (suggestions.empty()) { + return suggestions; + } + + base::ranges::move(GetAddressFooterSuggestions(), + std::back_inserter(suggestions)); + + return suggestions; } std::vector<raw_ptr<const AutofillProfile, VectorExperimental>> @@ -1537,10 +1547,10 @@ return suggestions; } - for (const Suggestion& suggestion : GetCreditCardFooterSuggestions( - should_show_scan_credit_card, should_show_cards_from_account)) { - suggestions.push_back(suggestion); - } + base::ranges::move( + GetCreditCardFooterSuggestions(should_show_scan_credit_card, + should_show_cards_from_account), + std::back_inserter(suggestions)); return suggestions; } @@ -1592,6 +1602,16 @@ } suggestions.push_back(suggestion); } + + if (suggestions.empty()) { + return suggestions; + } + + base::ranges::move( + GetCreditCardFooterSuggestions(/*should_show_scan_credit_card=*/false, + /*should_show_cards_from_account=*/false), + std::back_inserter(suggestions)); + return suggestions; } @@ -2109,6 +2129,15 @@ } std::vector<Suggestion> +AutofillSuggestionGenerator::GetAddressFooterSuggestions() const { + std::vector<Suggestion> footer_suggestions; + + footer_suggestions.push_back(CreateSeparator()); + + return footer_suggestions; +} + +std::vector<Suggestion> AutofillSuggestionGenerator::GetCreditCardFooterSuggestions( bool should_show_scan_credit_card, bool should_show_cards_from_account) const { @@ -2129,6 +2158,8 @@ footer_suggestions.push_back(show_card_from_account); } + footer_suggestions.push_back(CreateSeparator()); + return footer_suggestions; }
diff --git a/components/autofill/core/browser/autofill_suggestion_generator.h b/components/autofill/core/browser/autofill_suggestion_generator.h index 05e3e69..c1b58e7 100644 --- a/components/autofill/core/browser/autofill_suggestion_generator.h +++ b/components/autofill/core/browser/autofill_suggestion_generator.h
@@ -246,6 +246,10 @@ const CreditCard& credit_card, bool virtual_card_option) const; + // Returns non address suggestions which are displayed below address + // suggestions in the Autofill popup. + std::vector<Suggestion> GetAddressFooterSuggestions() const; + // Returns non credit card suggestions which are displayed below credit card // suggestions in the Autofill popup. std::vector<Suggestion> GetCreditCardFooterSuggestions(
diff --git a/components/autofill/core/browser/autofill_suggestion_generator_unittest.cc b/components/autofill/core/browser/autofill_suggestion_generator_unittest.cc index a7143e9a..e7e556d 100644 --- a/components/autofill/core/browser/autofill_suggestion_generator_unittest.cc +++ b/components/autofill/core/browser/autofill_suggestion_generator_unittest.cc
@@ -110,6 +110,22 @@ {Suggestion::Text(first_label_value)}})); } +// Checks that `arg` contains necessary credit card footer suggestions. `arg` +// has to be of type std::vector<Suggestion>. +MATCHER(ContainsCreditCardFooterSuggestions, "") { + EXPECT_GT(arg.size(), 1ul); + EXPECT_THAT(arg.back(), EqualsSuggestion(PopupItemId::kSeparator)); + return true; +} + +// Checks that `arg` contains necessary address footer suggestions. `arg` +// has to be of type std::vector<Suggestion>. +MATCHER(ContainsAddressFooterSuggestions, "") { + EXPECT_GT(arg.size(), 1ul); + EXPECT_THAT(arg.back(), EqualsSuggestion(PopupItemId::kSeparator)); + return true; +} + } // namespace // Test component for tests to access implementation details in @@ -1466,13 +1482,15 @@ FormFieldData triggering_field; - EXPECT_EQ(suggestion_generator() - ->GetSuggestionsForProfiles( - {UNKNOWN_TYPE}, triggering_field, UNKNOWN_TYPE, - /*last_targeted_fields=*/std::nullopt, - AutofillSuggestionTriggerSource::kManualFallbackAddress) - .size(), - 2u); + std::vector<Suggestion> suggestions = + suggestion_generator()->GetSuggestionsForProfiles( + {UNKNOWN_TYPE}, triggering_field, UNKNOWN_TYPE, + /*last_targeted_fields=*/std::nullopt, + AutofillSuggestionTriggerSource::kManualFallbackAddress); + EXPECT_EQ(suggestions.size(), 3ul); + EXPECT_THAT(suggestions[0], EqualsSuggestion(PopupItemId::kAddressEntry)); + EXPECT_THAT(suggestions[1], EqualsSuggestion(PopupItemId::kAddressEntry)); + EXPECT_THAT(suggestions, ContainsAddressFooterSuggestions()); } // Generally, a profile is displayed with name as main text and address as @@ -1742,21 +1760,22 @@ .starts_with(profile1.GetRawInfo(NAME_FIRST))); // Expect that regular suggestions filter. - EXPECT_EQ(suggestion_generator() - ->GetSuggestionsForProfiles( - {NAME_FIRST}, triggering_field, NAME_FIRST, - /*last_targeted_fields=*/std::nullopt, - AutofillSuggestionTriggerSource::kFormControlElementClicked) - .size(), - 1u); + std::vector<Suggestion> address_suggestions = + suggestion_generator()->GetSuggestionsForProfiles( + {NAME_FIRST}, triggering_field, NAME_FIRST, + /*last_targeted_fields=*/std::nullopt, + AutofillSuggestionTriggerSource::kFormControlElementClicked); + EXPECT_EQ(address_suggestions.size(), 2ul); + EXPECT_THAT(address_suggestions, ContainsAddressFooterSuggestions()); + // But manual fallback suggestions do not. - EXPECT_EQ(suggestion_generator() - ->GetSuggestionsForProfiles( - {NAME_FIRST}, triggering_field, NAME_FIRST, - /*last_targeted_fields=*/std::nullopt, - AutofillSuggestionTriggerSource::kManualFallbackAddress) - .size(), - 2u); + std::vector<Suggestion> manual_fallback_suggestions = + suggestion_generator()->GetSuggestionsForProfiles( + {NAME_FIRST}, triggering_field, NAME_FIRST, + /*last_targeted_fields=*/std::nullopt, + AutofillSuggestionTriggerSource::kManualFallbackAddress); + EXPECT_EQ(manual_fallback_suggestions.size(), 3ul); + EXPECT_THAT(manual_fallback_suggestions, ContainsAddressFooterSuggestions()); } TEST_F(AutofillSuggestionGeneratorTest, @@ -2002,7 +2021,7 @@ with_offer, with_cvc, metadata_logging_context); EXPECT_TRUE(with_offer); - ASSERT_EQ(suggestions.size(), 3U); + ASSERT_EQ(suggestions.size(), 4U); // The suggestion with card linked offer available should be ranked to the // top. EXPECT_EQ(suggestions[0].GetPayload<Suggestion::BackendId>(), @@ -2015,6 +2034,7 @@ EXPECT_EQ(suggestions[2].GetPayload<Suggestion::BackendId>(), Suggestion::BackendId( Suggestion::Guid("00000000-0000-0000-0000-000000000001"))); + EXPECT_THAT(suggestions, ContainsCreditCardFooterSuggestions()); } // Ensures we appropriately generate suggestions for virtual cards on a @@ -2036,7 +2056,8 @@ suggestion_generator()->GetSuggestionsForVirtualCardStandaloneCvc( metadata_logging_context, virtual_card_guid_to_last_four_map); - ASSERT_EQ(suggestions.size(), 1U); + ASSERT_EQ(suggestions.size(), 2U); + EXPECT_THAT(suggestions, ContainsCreditCardFooterSuggestions()); } // Ensures we appropriately generate suggestions for credit saved with CVC. @@ -2055,8 +2076,9 @@ /*should_show_cards_from_account=*/false, should_display_gpay_logo, with_offer, with_cvc, metadata_logging_context); - ASSERT_EQ(suggestions.size(), 1U); + ASSERT_EQ(suggestions.size(), 2U); EXPECT_TRUE(with_cvc); + EXPECT_THAT(suggestions, ContainsCreditCardFooterSuggestions()); } // Verifies that the `should_display_gpay_logo` is set correctly. @@ -2083,8 +2105,9 @@ /*should_show_cards_from_account=*/false, should_display_gpay_logo, with_offer, with_cvc, metadata_logging_context); - EXPECT_EQ(suggestions.size(), 2U); + EXPECT_EQ(suggestions.size(), 3U); EXPECT_TRUE(should_display_gpay_logo); + EXPECT_THAT(suggestions, ContainsCreditCardFooterSuggestions()); } personal_data().ClearCreditCards(); @@ -2112,8 +2135,9 @@ /*should_show_cards_from_account=*/false, should_display_gpay_logo, with_offer, with_cvc, metadata_logging_context); - EXPECT_EQ(suggestions.size(), 2U); + EXPECT_EQ(suggestions.size(), 3U); EXPECT_FALSE(should_display_gpay_logo); + EXPECT_THAT(suggestions, ContainsCreditCardFooterSuggestions()); } personal_data().ClearCreditCards(); @@ -2143,8 +2167,9 @@ /*should_show_cards_from_account=*/false, should_display_gpay_logo, with_offer, with_cvc, metadata_logging_context); - EXPECT_EQ(suggestions.size(), 1U); + EXPECT_EQ(suggestions.size(), 2U); EXPECT_TRUE(should_display_gpay_logo); + EXPECT_THAT(suggestions, ContainsCreditCardFooterSuggestions()); } personal_data().ClearCreditCards(); @@ -2195,12 +2220,14 @@ /*should_show_cards_from_account=*/false, should_display_gpay_logo, with_offer, with_cvc, metadata_logging_context); - EXPECT_THAT(suggestions, - ElementsAre(EqualsSuggestion(PopupItemId::kCreditCardEntry), - EqualsSuggestion(PopupItemId::kScanCreditCard, - l10n_util::GetStringUTF16( - IDS_AUTOFILL_SCAN_CREDIT_CARD), - Suggestion::Icon::kScanCreditCard))); + EXPECT_EQ(suggestions.size(), 3ul); + EXPECT_THAT(suggestions[0], EqualsSuggestion(PopupItemId::kCreditCardEntry)); + EXPECT_THAT( + suggestions[1], + EqualsSuggestion(PopupItemId::kScanCreditCard, + l10n_util::GetStringUTF16(IDS_AUTOFILL_SCAN_CREDIT_CARD), + Suggestion::Icon::kScanCreditCard)); + EXPECT_THAT(suggestions, ContainsCreditCardFooterSuggestions()); } TEST_F(AutofillSuggestionGeneratorTest, ShouldShowCardsFromAccount) { @@ -2216,13 +2243,14 @@ /*should_show_cards_from_account=*/true, should_display_gpay_logo, with_offer, with_cvc, metadata_logging_context); - EXPECT_EQ(suggestions.size(), 2ul); + EXPECT_EQ(suggestions.size(), 3ul); EXPECT_THAT(suggestions[0], EqualsSuggestion(PopupItemId::kCreditCardEntry)); EXPECT_THAT(suggestions[1], EqualsSuggestion( PopupItemId::kShowAccountCards, l10n_util::GetStringUTF16(IDS_AUTOFILL_SHOW_ACCOUNT_CARDS), Suggestion::Icon::kGoogle)); + EXPECT_THAT(suggestions, ContainsCreditCardFooterSuggestions()); } // Test that the virtual card option is shown when all of the prerequisites are @@ -3089,7 +3117,8 @@ with_offer, with_cvc, metadata_logging_context); // Credit card suggestions should not depend on the field's value. - EXPECT_EQ(suggestions.size(), 1U); + EXPECT_EQ(suggestions.size(), 2U); + EXPECT_THAT(suggestions, ContainsCreditCardFooterSuggestions()); } #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS) @@ -3118,7 +3147,7 @@ // Both local card and server card suggestion should be shown when CVC field // is focused. - ASSERT_EQ(suggestions.size(), 2U); + ASSERT_EQ(suggestions.size(), 3U); #if !BUILDFLAG(IS_ANDROID) EXPECT_EQ(suggestions[0].main_text.value, u"CVC"); EXPECT_EQ(suggestions[1].main_text.value, u"CVC"); @@ -3130,6 +3159,7 @@ EXPECT_EQ(suggestions[0].minor_text.value, u""); EXPECT_EQ(suggestions[1].minor_text.value, u""); #endif + EXPECT_THAT(suggestions, ContainsCreditCardFooterSuggestions()); } // Verify that the suggestion's texts are populated correctly for a duplicate @@ -3151,8 +3181,9 @@ /*should_show_cards_from_account=*/false, should_display_gpay_logo, with_offer, with_cvc, metadata_logging_context); - // Only 1 suggestion should be shown when CVC field is focused. - ASSERT_EQ(suggestions.size(), 1U); + // Only 1 suggestion + footer should be shown when CVC field is focused. + ASSERT_EQ(suggestions.size(), 2U); + EXPECT_THAT(suggestions, ContainsCreditCardFooterSuggestions()); } // Verify that the FPAN and VCN suggestion's texts are populated correctly for a @@ -3177,7 +3208,7 @@ with_offer, with_cvc, metadata_logging_context); // Both FPAN and VCN suggestion should be shown when CVC field is focused. - ASSERT_EQ(suggestions.size(), 2U); + ASSERT_EQ(suggestions.size(), 3U); #if !BUILDFLAG(IS_ANDROID) EXPECT_EQ(suggestions[0].main_text.value, u"CVC"); @@ -3190,6 +3221,7 @@ EXPECT_EQ(suggestions[0].minor_text.value, u""); EXPECT_EQ(suggestions[1].minor_text.value, u""); #endif + EXPECT_THAT(suggestions, ContainsCreditCardFooterSuggestions()); } // Verify that the FPAN and VCN suggestion's texts are populated correctly for a @@ -3216,7 +3248,8 @@ with_offer, with_cvc, metadata_logging_context); // Both FPAN and VCN suggestion should be shown when CVC field is focused. - ASSERT_EQ(suggestions.size(), 2U); + ASSERT_EQ(suggestions.size(), 3U); + EXPECT_THAT(suggestions, ContainsCreditCardFooterSuggestions()); } #if BUILDFLAG(IS_IOS)
diff --git a/components/autofill/core/browser/browser_autofill_manager.cc b/components/autofill/core/browser/browser_autofill_manager.cc index 6a2e0c90..fd18435 100644 --- a/components/autofill/core/browser/browser_autofill_manager.cc +++ b/components/autofill/core/browser/browser_autofill_manager.cc
@@ -1205,7 +1205,11 @@ context.is_context_secure); } if (context.filling_product == FillingProduct::kAddress) { - AutofillMetrics::LogAddressSuggestionsCount(suggestions.size()); + AutofillMetrics::LogAddressSuggestionsCount(base::ranges::count_if( + suggestions, [](const Suggestion& suggestion) { + return GetFillingProductFromPopupItemId( + suggestion.popup_item_id) == FillingProduct::kAddress; + })); } } } @@ -1441,76 +1445,25 @@ void BrowserAutofillManager::UndoAutofill( mojom::ActionPersistence action_persistence, - FormData form, + const FormData& form, const FormFieldData& trigger_field) { - if (!form_autofill_history_.HasHistory(trigger_field.global_id())) { - LOG_AF(log_manager()) - << "Could not undo the filling operation on field " - << trigger_field.global_id() - << " because history was dropped upon reaching history limit of " - << kMaxStorableFieldFillHistory; + FormStructure* form_structure = FindCachedFormById(form.global_id()); + if (!form_structure) { return; } - FormAutofillHistory::FillOperation operation = - form_autofill_history_.GetLastFillingOperationForField( - trigger_field.global_id()); - - // Remove the fields to be skipped so that we only pass fields to be modified - // by the renderer. - std::erase_if( - form.fields, [this, &operation, &form](const FormFieldData& field) { - // Skip not-autofilled fields as undo only acts on autofilled fields. - return !field.is_autofilled || - // Skip fields whose last autofill operations is different than - // the one of the trigger field. - form_autofill_history_.GetLastFillingOperationForField( - field.global_id()) != operation || - // Skip fields that are not cached to avoid unexpected outcomes. - GetAutofillField(form, field) == nullptr; - }); - - for (FormFieldData& field : form.fields) { - AutofillField& autofill_field = CHECK_DEREF(GetAutofillField(form, field)); - const FormAutofillHistory::FieldFillingEntry& previous_state = - operation.GetFieldFillingEntry(field.global_id()); - // Update the FormFieldData to be sent for the renderer. - field.value = previous_state.value; - field.is_autofilled = previous_state.is_autofilled; - - // Update the cached AutofillField in the browser. - // TODO(crbug.com/1345089): Consider updating the value too. - autofill_field.is_autofilled = previous_state.is_autofilled; - autofill_field.set_autofill_source_profile_guid( - previous_state.autofill_source_profile_guid); - autofill_field.set_autofilled_type(previous_state.autofilled_type); - } - - // Do not attempt a refill after an Undo operation. - if (FillingContext* filling_context = GetFillingContext(form.global_id())) { - SetFillingContext(form.global_id(), nullptr); - } - - // Since Undo only affects fields that were already filled, and only sets - // values to fields to something that already existed in it prior to the - // filling, it is okay to bypass the filling security checks and hence passing - // dummy values for `triggered_origin` and `field_type_map`. - driver().ApplyFormAction(mojom::ActionType::kUndo, action_persistence, form, - url::Origin(), - /*field_type_map=*/{}); + // This will apply the undo operation and return information about the + // operation being undone, for metric purposes. + FillingProduct filling_product = UndoAutofillImpl( + action_persistence, form, *form_structure, trigger_field); // The remaining logic is only relevant for filling. - if (action_persistence == mojom::ActionPersistence::kPreview) { - return; + if (action_persistence != mojom::ActionPersistence::kPreview) { + if (filling_product == FillingProduct::kAddress) { + address_form_event_logger_->OnDidUndoAutofill(); + } else if (filling_product == FillingProduct::kCreditCard) { + credit_card_form_event_logger_->OnDidUndoAutofill(); + } } - - if (operation.get_filling_product() == FillingProduct::kAddress) { - address_form_event_logger_->OnDidUndoAutofill(); - } else if (operation.get_filling_product() == FillingProduct::kCreditCard) { - credit_card_form_event_logger_->OnDidUndoAutofill(); - } - // History is not cleared on previews as it might be used for future previews - // or for the filling. - form_autofill_history_.EraseFormFillEntry(operation); } void BrowserAutofillManager::FillCreditCardForm( @@ -2227,7 +2180,7 @@ return nullptr; } -std::vector<FieldFillingSkipReason> +base::flat_map<FieldGlobalId, FieldFillingSkipReason> BrowserAutofillManager::GetFieldFillingSkipReasons( const FormData& form, const FormStructure& form_structure, @@ -2245,21 +2198,26 @@ type_count.reserve(form_structure.field_count()); CHECK_EQ(form.fields.size(), form_structure.field_count()); - std::vector<FieldFillingSkipReason> skip_reasons( - form_structure.field_count()); + base::flat_map<FieldGlobalId, FieldFillingSkipReason> skip_reasons = + base::MakeFlatMap<FieldGlobalId, FieldFillingSkipReason>( + form_structure, {}, [](const std::unique_ptr<AutofillField>& field) { + return std::make_pair(field->global_id(), + FieldFillingSkipReason::kNotSkipped); + }); for (size_t i = 0; i < form_structure.field_count(); ++i) { // Log events when the fields on the form are filled by autofill suggestion. const AutofillField* autofill_field = form_structure.field(i); + const FieldGlobalId field_id = autofill_field->global_id(); const bool is_triggering_field = FormFieldData::DeepEqual(*autofill_field, trigger_field); if (autofill_field->section != filling_section) { - skip_reasons[i] = FieldFillingSkipReason::kNotInFilledSection; + skip_reasons[field_id] = FieldFillingSkipReason::kNotInFilledSection; continue; } if (autofill_field->only_fill_when_focused() && !is_triggering_field) { - skip_reasons[i] = FieldFillingSkipReason::kNotFocused; + skip_reasons[field_id] = FieldFillingSkipReason::kNotFocused; continue; } @@ -2267,22 +2225,22 @@ // when triggered through manual fallbacks. if (!is_triggering_field && skip_unrecognized_autocomplete_fields && autofill_field->ShouldSuppressSuggestionsAndFillingByDefault()) { - skip_reasons[i] = + skip_reasons[field_id] = FieldFillingSkipReason::kUnrecognizedAutocompleteAttribute; continue; } // TODO(crbug/1203667#c9): Skip if the form has changed in the meantime, // which may happen with refills. - if (autofill_field->global_id() != form.fields[i].global_id()) { - skip_reasons[i] = FieldFillingSkipReason::kFormChanged; + if (field_id != form.fields[i].global_id()) { + skip_reasons[field_id] = FieldFillingSkipReason::kFormChanged; continue; } // Don't fill unfocusable fields, with the exception of <select> fields, for // the sake of filling the synthetic fields. if (!autofill_field->IsFocusable() && !autofill_field->IsSelectElement()) { - skip_reasons[i] = FieldFillingSkipReason::kInvisibleField; + skip_reasons[field_id] = FieldFillingSkipReason::kInvisibleField; continue; } @@ -2293,20 +2251,21 @@ if ((form.fields[i].properties_mask & kUserTyped) && (!form.fields[i].value.empty() || !autofill_field->value.empty()) && !is_triggering_field) { - skip_reasons[i] = FieldFillingSkipReason::kUserFilledFields; + skip_reasons[field_id] = FieldFillingSkipReason::kUserFilledFields; continue; } // Don't fill previously autofilled fields except the initiating field or // when it's a refill. if (form.fields[i].is_autofilled && !is_triggering_field && !is_refill) { - skip_reasons[i] = FieldFillingSkipReason::kAutofilledFieldsNotRefill; + skip_reasons[field_id] = + FieldFillingSkipReason::kAutofilledFieldsNotRefill; continue; } FieldTypeGroup field_group_type = autofill_field->Type().group(); if (field_group_type == FieldTypeGroup::kNoGroup) { - skip_reasons[i] = FieldFillingSkipReason::kNoFillableGroup; + skip_reasons[field_id] = FieldFillingSkipReason::kNoFillableGroup; continue; } @@ -2315,7 +2274,7 @@ if (is_refill && optional_type_groups_originally_filled && !base::Contains(*optional_type_groups_originally_filled, field_group_type)) { - skip_reasons[i] = FieldFillingSkipReason::kRefillNotInInitialFill; + skip_reasons[field_id] = FieldFillingSkipReason::kRefillNotInInitialFill; continue; } @@ -2323,14 +2282,14 @@ // Don't fill expired cards expiration date. if (data_util::IsCreditCardExpirationType(field_type) && is_expired_credit_card) { - skip_reasons[i] = FieldFillingSkipReason::kExpiredCards; + skip_reasons[field_id] = FieldFillingSkipReason::kExpiredCards; continue; } if (base::FeatureList::IsEnabled( features::kAutofillGranularFillingAvailable)) { if (!field_types_to_fill.contains(field_type)) { - skip_reasons[i] = + skip_reasons[field_id] = FieldFillingSkipReason::kFieldDoesNotMatchTargetFieldsSet; continue; } @@ -2339,7 +2298,7 @@ // A field with a specific type is only allowed to be filled a limited // number of times given by |TypeValueFormFillingLimit(field_type)|. if (++type_count[field_type] > TypeValueFormFillingLimit(field_type)) { - skip_reasons[i] = FieldFillingSkipReason::kFillingLimitReachedType; + skip_reasons[field_id] = FieldFillingSkipReason::kFillingLimitReachedType; continue; } @@ -2347,7 +2306,7 @@ if (!is_triggering_field && !form.fields[i].value.empty() && (IsNotAPlaceholder(autofill_field) || IsMeaningfullyPreFilled(autofill_field))) { - skip_reasons[i] = FieldFillingSkipReason::kValuePrefilled; + skip_reasons[field_id] = FieldFillingSkipReason::kValuePrefilled; continue; } @@ -2362,15 +2321,90 @@ !IsAddressType(autofill_field->Type().GetStorableType())) || (filling_product == FillingProduct::kCreditCard && autofill_field->Type().group() != FieldTypeGroup::kCreditCard)) { - skip_reasons[i] = FieldFillingSkipReason::kFieldTypeUnrelated; + skip_reasons[field_id] = FieldFillingSkipReason::kFieldTypeUnrelated; continue; } - - skip_reasons[i] = FieldFillingSkipReason::kNotSkipped; + CHECK_EQ(skip_reasons[field_id], FieldFillingSkipReason::kNotSkipped); } return skip_reasons; } +FillingProduct BrowserAutofillManager::UndoAutofillImpl( + mojom::ActionPersistence action_persistence, + FormData form, + FormStructure& form_structure, + const FormFieldData& trigger_field) { + if (!form_autofill_history_.HasHistory(trigger_field.global_id())) { + LOG_AF(log_manager()) + << "Could not undo the filling operation on field " + << trigger_field.global_id() + << " because history was dropped upon reaching history limit of " + << kMaxStorableFieldFillHistory; + return FillingProduct::kNone; + } + FormAutofillHistory::FillOperation operation = + form_autofill_history_.GetLastFillingOperationForField( + trigger_field.global_id()); + + base::flat_map<FieldGlobalId, AutofillField*> cached_fields = + base::MakeFlatMap<FieldGlobalId, AutofillField*>( + form_structure.fields(), {}, + [](const std::unique_ptr<AutofillField>& field) { + return std::make_pair(field->global_id(), field.get()); + }); + // Remove the fields to be skipped so that we only pass fields to be modified + // by the renderer. + std::erase_if(form.fields, [this, &operation, + &cached_fields](const FormFieldData& field) { + // Skip not-autofilled fields as undo only acts on autofilled fields. + return !field.is_autofilled || + // Skip fields whose last autofill operations is different than + // the one of the trigger field. + form_autofill_history_.GetLastFillingOperationForField( + field.global_id()) != operation || + // Skip fields that are not cached to avoid unexpected outcomes. + !cached_fields.contains(field.global_id()); + }); + + for (FormFieldData& field : form.fields) { + AutofillField& autofill_field = + CHECK_DEREF(cached_fields[field.global_id()]); + const FormAutofillHistory::FieldFillingEntry& previous_state = + operation.GetFieldFillingEntry(field.global_id()); + // Update the FormFieldData to be sent for the renderer. + field.value = previous_state.value; + field.is_autofilled = previous_state.is_autofilled; + + // Update the cached AutofillField in the browser. + // TODO(crbug.com/1345089): Consider updating the value too. + autofill_field.is_autofilled = previous_state.is_autofilled; + autofill_field.set_autofill_source_profile_guid( + previous_state.autofill_source_profile_guid); + autofill_field.set_autofilled_type(previous_state.autofilled_type); + } + + // Do not attempt a refill after an Undo operation. + if (FillingContext* filling_context = GetFillingContext(form.global_id())) { + SetFillingContext(form.global_id(), nullptr); + } + + // Since Undo only affects fields that were already filled, and only sets + // values to fields to something that already existed in it prior to the + // filling, it is okay to bypass the filling security checks and hence passing + // dummy values for `triggered_origin` and `field_type_map`. + driver().ApplyFormAction(mojom::ActionType::kUndo, action_persistence, form, + url::Origin(), + /*field_type_map=*/{}); + + FillingProduct filling_product = operation.get_filling_product(); + if (action_persistence != mojom::ActionPersistence::kPreview) { + // History is not cleared on previews as it might be used for future + // previews or for the filling. + form_autofill_history_.EraseFormFillEntry(std::move(operation)); + } + return filling_product; +} + void BrowserAutofillManager::FillOrPreviewDataModelForm( mojom::ActionPersistence action_persistence, const FormData& form, @@ -2380,7 +2414,7 @@ const std::u16string* optional_cvc, FormStructure* form_structure, AutofillField* autofill_trigger_field, - const AutofillTriggerDetails trigger_details, + const AutofillTriggerDetails& trigger_details, bool is_refill) { bool is_credit_card = absl::holds_alternative<const CreditCard*>(profile_or_credit_card); @@ -2471,17 +2505,20 @@ result_form.fields[i].section = form_structure->field(i)->section; } - std::vector<FieldFillingSkipReason> skip_reasons = GetFieldFillingSkipReasons( - result_form, *form_structure, field, autofill_trigger_field->section, - trigger_details.field_types_to_fill, - filling_context ? &filling_context->type_groups_originally_filled - : nullptr, - is_credit_card ? FillingProduct::kCreditCard : FillingProduct::kAddress, - /*skip_unrecognized_autocomplete_fields=*/ - trigger_details.trigger_source != AutofillTriggerSource::kManualFallback, - is_refill, - is_credit_card && absl::get<const CreditCard*>(profile_or_credit_card) - ->IsExpired(AutofillClock::Now())); + base::flat_map<FieldGlobalId, FieldFillingSkipReason> skip_reasons = + GetFieldFillingSkipReasons( + result_form, *form_structure, field, autofill_trigger_field->section, + trigger_details.field_types_to_fill, + filling_context ? &filling_context->type_groups_originally_filled + : nullptr, + is_credit_card ? FillingProduct::kCreditCard + : FillingProduct::kAddress, + /*skip_unrecognized_autocomplete_fields=*/ + trigger_details.trigger_source != + AutofillTriggerSource::kManualFallback, + is_refill, + is_credit_card && absl::get<const CreditCard*>(profile_or_credit_card) + ->IsExpired(AutofillClock::Now())); constexpr DenseSet<FieldFillingSkipReason> pre_ukm_logging_skips{ FieldFillingSkipReason::kNotInFilledSection, @@ -2491,7 +2528,8 @@ for (size_t i = 0; i < result_form.fields.size(); ++i) { AutofillField* autofill_field = form_structure->field(i); - if (!pre_ukm_logging_skips.contains(skip_reasons[i]) && + if (!pre_ukm_logging_skips.contains( + skip_reasons[autofill_field->global_id()]) && !autofill_field->IsFocusable()) { form_interactions_ukm_logger() ->LogHiddenRepresentationalFieldSkipDecision( @@ -2501,14 +2539,17 @@ const bool has_value_before = !result_form.fields[i].value.empty(); // Log when the suggestion is selected and log on non-checkable fields that // skip filling. - if (skip_reasons[i] != FieldFillingSkipReason::kNotSkipped) { + if (skip_reasons[autofill_field->global_id()] != + FieldFillingSkipReason::kNotSkipped) { LOG_AF(buffer) << Tr{} << base::StringPrintf("Field %zu", i) - << GetSkipFieldFillLogMessage(skip_reasons[i]); + << GetSkipFieldFillLogMessage( + skip_reasons[autofill_field->global_id()]); if (fill_event_id && !IsCheckable(autofill_field->check_status)) { autofill_field->AppendLogEventIfNotRepeated(FillFieldLogEvent{ .fill_event_id = *fill_event_id, .had_value_before_filling = ToOptionalBoolean(has_value_before), - .autofill_skipped_status = skip_reasons[i], + .autofill_skipped_status = + skip_reasons[autofill_field->global_id()], .was_autofilled_before_security_policy = OptionalBoolean::kFalse, .had_value_after_filling = ToOptionalBoolean(has_value_before), .filling_method = AutofillFillingMethod::kNone, @@ -2538,9 +2579,9 @@ // Fill the non-empty value from `profile_or_credit_card` into the // `result_form` form, which will be sent to the renderer. - // FillFieldWithValue() may also fill a field if it had been autofilled or - // manually filled before, and also returns true in such a case; however, - // such fields don't reach this code. + // FillField() may also fill a field if it had been autofilled or manually + // filled before, and also returns true in such a case; however, such fields + // don't reach this code. const bool is_newly_autofilled = FillField(*autofill_field, profile_or_credit_card, forced_fill_values, result_form.fields[i], should_notify, @@ -2585,13 +2626,6 @@ if (could_attempt_refill) { filling_context->filled_form = result_form; } - - autofilled_form_signatures_.push_front(form_structure->form_signature()); - // Only remember the last few forms that we've seen, both to avoid false - // positives and to avoid wasting memory. - if (autofilled_form_signatures_.size() > kMaxRecentFormSignaturesToRemember) - autofilled_form_signatures_.pop_back(); - auto field_types = base::MakeFlatMap<FieldGlobalId, FieldType>( *form_structure, {}, [](const auto& field) { return std::make_pair(field->global_id(), @@ -2600,8 +2634,6 @@ base::flat_set<FieldGlobalId> safe_fields = driver().ApplyFormAction(mojom::ActionType::kFill, action_persistence, result_form, field.origin, field_types); - client().DidFillOrPreviewForm(action_persistence, - trigger_details.trigger_source, is_refill); // This will hold the fields (and autofill_fields) in the intersection of // safe_fields and newly_filled_fields_id. @@ -2611,7 +2643,6 @@ std::vector<const AutofillField*> cached; } safe_newly_filled_fields; - // Report the fields that were not filled due to the iframe security policy. for (FieldGlobalId newly_filled_field_id : newly_filled_field_ids) { if (safe_fields.contains(newly_filled_field_id)) { // A safe field was filled. Both functions will not return a nullptr @@ -2642,7 +2673,8 @@ } continue; } - // Find and report index of fields that were not filled. + // Find and report index of fields that were not filled due to the iframe + // security policy. auto it = base::ranges::find(result_form.fields, newly_filled_field_id, &FormFieldData::global_id); if (it != result_form.fields.end()) { @@ -2684,47 +2716,76 @@ << LogMessage::kSendFillingData << Br{} << std::move(buffer); - NotifyObservers(&Observer::OnFillOrPreviewDataModelForm, form.global_id(), - action_persistence, safe_newly_filled_fields.new_values, - profile_or_credit_card); - - // Call OnDidFillSuggestion() to log the metrics. - if (action_persistence == mojom::ActionPersistence::kFill && !is_refill) { - if (is_credit_card) { - // The originally selected masked card is `credit_card_`. So we must log - // `credit_card_` as opposed to - // `absl::get<CreditCard*>(profile_or_credit_card)` to correctly indicate - // whether the user filled the form using a masked card suggestion. - credit_card_form_event_logger_->OnDidFillSuggestion( - credit_card_, *form_structure, *autofill_trigger_field, - newly_filled_field_ids, safe_fields, signin_state_for_metrics_, - trigger_details.trigger_source); - } else { - // An address form was filled. - CHECK(absl::holds_alternative<const AutofillProfile*>( - profile_or_credit_card)); - if (autofill_trigger_field - ->ShouldSuppressSuggestionsAndFillingByDefault()) { - autocomplete_unrecognized_fallback_logger_->OnDidFillSuggestion(); - } else { - address_form_event_logger_->OnDidFillSuggestion( - *absl::get<const AutofillProfile*>(profile_or_credit_card), - *form_structure, *autofill_trigger_field, signin_state_for_metrics_, - trigger_details.trigger_source); - } - } - } - - // Note that this may invalidate |profile_or_credit_card|. - if (action_persistence == mojom::ActionPersistence::kFill && !is_refill) { - client().GetPersonalDataManager()->RecordUseOf(profile_or_credit_card); - } - if (filling_context) { // When a new preview/fill starts, previously forced_fill_values should be // ignored the operation could be for a different card or address. filling_context->forced_fill_values.clear(); } + + OnDidFillOrPreviewForm( + action_persistence, *form_structure, *autofill_trigger_field, + safe_newly_filled_fields.new_values, newly_filled_field_ids, safe_fields, + profile_or_credit_card, trigger_details, is_refill); +} + +void BrowserAutofillManager::OnDidFillOrPreviewForm( + mojom::ActionPersistence action_persistence, + const FormStructure& form_structure, + const AutofillField& trigger_autofill_field, + base::span<const FormFieldData*> safe_filled_fields, + const base::flat_set<FieldGlobalId>& filled_fields, + const base::flat_set<FieldGlobalId>& safe_fields, + absl::variant<const AutofillProfile*, const CreditCard*> + profile_or_credit_card, + const AutofillTriggerDetails& trigger_details, + bool is_refill) { + client().DidFillOrPreviewForm(action_persistence, + trigger_details.trigger_source, is_refill); + NotifyObservers(&Observer::OnFillOrPreviewDataModelForm, + form_structure.global_id(), action_persistence, + safe_filled_fields, profile_or_credit_card); + if (action_persistence == mojom::ActionPersistence::kPreview) { + return; + } + CHECK_EQ(action_persistence, mojom::ActionPersistence::kFill); + + autofilled_form_signatures_.push_front(form_structure.form_signature()); + // Only remember the last few forms that we've seen, both to avoid false + // positives and to avoid wasting memory. + if (autofilled_form_signatures_.size() > kMaxRecentFormSignaturesToRemember) { + autofilled_form_signatures_.pop_back(); + } + if (absl::holds_alternative<const CreditCard*>(profile_or_credit_card)) { + // The originally selected masked card is `credit_card_`. So we must log + // `credit_card_` as opposed to + // `absl::get<CreditCard*>(profile_or_credit_card)` to correctly indicate + // whether the user filled the form using a masked card suggestion. + is_refill ? credit_card_form_event_logger_->OnDidRefill( + signin_state_for_metrics_, form_structure) + : credit_card_form_event_logger_->OnDidFillSuggestion( + credit_card_, form_structure, trigger_autofill_field, + filled_fields, safe_fields, signin_state_for_metrics_, + trigger_details.trigger_source); + } else { + CHECK(absl::holds_alternative<const AutofillProfile*>( + profile_or_credit_card)); + if (!trigger_autofill_field + .ShouldSuppressSuggestionsAndFillingByDefault()) { + is_refill + ? address_form_event_logger_->OnDidRefill(signin_state_for_metrics_, + form_structure) + : address_form_event_logger_->OnDidFillSuggestion( + *absl::get<const AutofillProfile*>(profile_or_credit_card), + form_structure, trigger_autofill_field, + signin_state_for_metrics_, trigger_details.trigger_source); + } else if (!is_refill) { + autocomplete_unrecognized_fallback_logger_->OnDidFillSuggestion(); + } + } + if (!is_refill) { + // Note that this may invalidate `profile_or_credit_card`. + client().GetPersonalDataManager()->RecordUseOf(profile_or_credit_card); + } } std::unique_ptr<FormStructure> BrowserAutofillManager::ValidateSubmittedForm( @@ -2827,7 +2888,7 @@ // assumes that the passed FormData and FormStructure have the same size. If // it's not the case we just assume as a fallback that all fields are // relevant. - std::vector<FieldFillingSkipReason> skip_reasons = + base::flat_map<FieldGlobalId, FieldFillingSkipReason> skip_reasons = form.fields.size() == form_structure->field_count() ? GetFieldFillingSkipReasons( form, *form_structure, trigger_field, @@ -2842,13 +2903,14 @@ /*skip_unrecognized_autocomplete_fields=*/trigger_source != AutofillSuggestionTriggerSource::kManualFallbackAddress, /*is_refill=*/false, /*is_expired_credit_card=*/false) - : std::vector<FieldFillingSkipReason>( - form_structure->field_count(), - FieldFillingSkipReason::kNotSkipped); + : base::flat_map<FieldGlobalId, FieldFillingSkipReason>(); FieldTypeSet field_types; for (size_t i = 0; i < form_structure->field_count(); ++i) { - if (skip_reasons[i] == FieldFillingSkipReason::kNotSkipped) { - field_types.insert(form_structure->field(i)->Type().GetStorableType()); + const AutofillField* autofill_field = form_structure->field(i); + auto it = skip_reasons.find(autofill_field->global_id()); + if (it == skip_reasons.end() || + it->second == FieldFillingSkipReason::kNotSkipped) { + field_types.insert(autofill_field->Type().GetStorableType()); } } return suggestion_generator_->GetSuggestionsForProfiles( @@ -3424,12 +3486,9 @@ const FormData& form, const AutofillTriggerDetails& trigger_details) { FormStructure* form_structure = FindCachedFormById(form.global_id()); - if (!form_structure) + if (!form_structure) { return; - - address_form_event_logger_->OnDidRefill(signin_state_for_metrics_, - *form_structure); - + } FillingContext* filling_context = GetFillingContext(form_structure->global_id()); DCHECK(filling_context); @@ -3438,9 +3497,9 @@ // after waiting for a while. Therefore, although this condition has been // checked prior to calling TriggerRefill, it may not hold, when we get // here. - if (filling_context->attempted_refill) + if (filling_context->attempted_refill) { return; - + } filling_context->attempted_refill = true; // Try to find the field from which the original fill originated. @@ -3470,9 +3529,9 @@ (autofill_field->global_id() == filling_context->filled_field_id || autofill_field->GetFieldSignature() == filling_context->filled_field_signature); - if (!found_matching_element) + if (!found_matching_element) { return; - + } FormFieldData field = *autofill_field; if (absl::holds_alternative<std::pair<CreditCard, std::u16string>>( filling_context->profile_or_credit_card_with_cvc)) {
diff --git a/components/autofill/core/browser/browser_autofill_manager.h b/components/autofill/core/browser/browser_autofill_manager.h index 7df5e8f4..ca47fe9c 100644 --- a/components/autofill/core/browser/browser_autofill_manager.h +++ b/components/autofill/core/browser/browser_autofill_manager.h
@@ -12,6 +12,7 @@ #include <vector> #include "base/containers/circular_deque.h" +#include "base/containers/flat_set.h" #include "base/functional/callback.h" #include "base/gtest_prod_util.h" #include "base/memory/raw_ptr.h" @@ -154,11 +155,9 @@ const std::u16string& value, PopupItemId popup_item_id); - // Reverts the last autofill operation on `form` that affected - // `trigger_field`, virtual for testing. `renderer_action` denotes whether - // this is an actual filling or a preview operation on the renderer side. + // Calls UndoAutofillImpl and logs metrics. Virtual for testing. virtual void UndoAutofill(mojom::ActionPersistence action_persistence, - FormData form, + const FormData& form, const FormFieldData& trigger_field); // Virtual for testing virtual void DidShowSuggestions( @@ -229,6 +228,25 @@ CreditCardAccessManager& GetCreditCardAccessManager(); const CreditCardAccessManager& GetCreditCardAccessManager() const; + // Handles post-filling logic of `form_structure`, like notifying observers + // and logging form metrics. + // `filled_fields` are the fields that were filled by the browser. + // `safe_fields` are the fields that were deemed safe to fill by the router + // according to the iframe security policy. + // `safe_filled_fields` is the intersection of `filled_fields` and + // `safe_fields`. + void OnDidFillOrPreviewForm( + mojom::ActionPersistence action_persistence, + const FormStructure& form_structure, + const AutofillField& trigger_autofill_field, + base::span<const FormFieldData*> safe_filled_fields, + const base::flat_set<FieldGlobalId>& filled_fields, + const base::flat_set<FieldGlobalId>& safe_fields, + absl::variant<const AutofillProfile*, const CreditCard*> + profile_or_credit_card, + const AutofillTriggerDetails& trigger_details, + bool is_refill); + // AutofillManager: base::WeakPtr<AutofillManager> GetWeakPtr() override; bool ShouldClearPreviewedForm() override; @@ -425,8 +443,8 @@ std::optional<FormData> filled_form; }; - // Given a `form` (and corresponding `form_structure`) to fill, return a list - // of skip reasons for the fields. + // Given a `form` (and corresponding `form_structure`) to fill, return a map + // from each field's id to the skip reasons for that field. // `type_group_originally_filled` denotes, in case of a refill, what groups // where filled in the initial filling. // It is assumed here that `form` and `form_structure` have the same @@ -441,7 +459,8 @@ // experiment resumes. // TODO(crbug.com/1481035): Make `optional_type_groups_originally_filled` also // a FieldTypeSet. - std::vector<FieldFillingSkipReason> GetFieldFillingSkipReasons( + base::flat_map<FieldGlobalId, FieldFillingSkipReason> + GetFieldFillingSkipReasons( const FormData& form, const FormStructure& form_structure, const FormFieldData& trigger_field, @@ -480,6 +499,15 @@ // profile does not exist. AutofillProfile* GetProfile(Suggestion::BackendId unique_id); + // Reverts the last autofill operation on `form` that affected + // `trigger_field`. `renderer_action` denotes whether this is an actual + // filling or a preview operation on the renderer side. Returns the filling + // product of the operation being undone. + FillingProduct UndoAutofillImpl(mojom::ActionPersistence action_persistence, + FormData form, + FormStructure& form_structure, + const FormFieldData& trigger_field); + // Fills or previews |data_model| in the |form|. // TODO(crbug.com/1330108): Clean up the API. void FillOrPreviewDataModelForm( @@ -491,7 +519,7 @@ const std::u16string* optional_cvc, FormStructure* form_structure, AutofillField* autofill_field, - const AutofillTriggerDetails trigger_details, + const AutofillTriggerDetails& trigger_details, bool is_refill = false); // Creates a FormStructure using the FormData received from the renderer. Will
diff --git a/components/autofill/core/browser/browser_autofill_manager_unittest.cc b/components/autofill/core/browser/browser_autofill_manager_unittest.cc index 205c1d4..c60215a 100644 --- a/components/autofill/core/browser/browser_autofill_manager_unittest.cc +++ b/components/autofill/core/browser/browser_autofill_manager_unittest.cc
@@ -1544,15 +1544,15 @@ // Suggestions should be returned for the first two fields. GetAutofillSuggestions(form, form.fields[0]); - external_delegate()->CheckSuggestionCount(form.fields[0].global_id(), 2); + external_delegate()->CheckSuggestionCount(form.fields[0].global_id(), 3); GetAutofillSuggestions(form, form.fields[1]); - external_delegate()->CheckSuggestionCount(form.fields[1].global_id(), 2); + external_delegate()->CheckSuggestionCount(form.fields[1].global_id(), 3); GetAutofillSuggestions(form, form.fields[2]); // For the third field, suggestions should only be shown on mobile due to the // unrecognized autocomplete attribute. #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) - external_delegate()->CheckSuggestionCount(form.fields[2].global_id(), 2); + external_delegate()->CheckSuggestionCount(form.fields[2].global_id(), 3); #else external_delegate()->CheckNoSuggestions(form.fields[2].global_id()); #endif @@ -1571,13 +1571,13 @@ AutocompleteParsingResult{.field_type = HtmlFieldType::kUnrecognized}; FormsSeen({form}); - // Expect that two suggestions are returned for all fields, independently of - // the autocomplete attribute. Two, because the fixture created three profiles - // during set up, one of which is empty and cannot be suggested - // (see `CreateTestAutofillProfiles()`). + // Expect that two suggestions + footer are returned for all fields, + // independently of the autocomplete attribute. Two, because the fixture + // created three profiles during set up, one of which is empty and cannot be + // suggested (see `CreateTestAutofillProfiles()`). for (const FormFieldData& field : form.fields) { GetAutofillSuggestions(form, field); - external_delegate()->CheckSuggestionCount(field.global_id(), 2); + external_delegate()->CheckSuggestionCount(field.global_id(), 3); } } #else @@ -1601,12 +1601,12 @@ form, first_field, AutofillSuggestionTriggerSource::kManualFallbackAddress); external_delegate()->CheckSuggestionsNotReturned(first_field.global_id()); - // Expect 3 credit card suggestions because the fixture created 3 credit cards - // during setup (see `CreateTestCreditCards()`). + // Expect 3 credit card suggestions + footer because the fixture created 3 + // credit cards during setup (see `CreateTestCreditCards()`). GetAutofillSuggestions( form, first_field, AutofillSuggestionTriggerSource::kManualFallbackPayments); - external_delegate()->CheckSuggestionCount(first_field.global_id(), 3); + external_delegate()->CheckSuggestionCount(first_field.global_id(), 4); } TEST_F(BrowserAutofillManagerTest, @@ -1622,24 +1622,25 @@ GetAutofillSuggestions(form, first_field); external_delegate()->CheckNoSuggestions(first_field.global_id()); - // Expect 2 suggestions because the fixture created three profiles during set - // up, one of which is empty and cannot be suggested + // Expect 2 address suggestions + footer because the fixture created three + // profiles during set up, one of which is empty and cannot be suggested // (see `CreateTestAutofillProfiles()`). GetAutofillSuggestions( form, first_field, AutofillSuggestionTriggerSource::kManualFallbackAddress); - external_delegate()->CheckSuggestionCount(first_field.global_id(), 2); - // Expect 3 credit card suggestions because the fixture created 3 credit cards - // during setup (see `CreateTestCreditCards()`). + external_delegate()->CheckSuggestionCount(first_field.global_id(), 3); + // Expect 4 credit card suggestions + footer because the fixture created 3 + // credit cards during setup (see `CreateTestCreditCards()`). GetAutofillSuggestions( form, first_field, AutofillSuggestionTriggerSource::kManualFallbackPayments); - external_delegate()->CheckSuggestionCount(first_field.global_id(), 3); + external_delegate()->CheckSuggestionCount(first_field.global_id(), 4); - // Expect that two suggestions are returned for all other fields. + // Expect that two address suggestions + footer are returned for all other + // fields. for (size_t i = 1; i < form.fields.size(); i++) { GetAutofillSuggestions(form, form.fields[i]); - external_delegate()->CheckSuggestionCount(form.fields[i].global_id(), 2); + external_delegate()->CheckSuggestionCount(form.fields[i].global_id(), 3); } } @@ -1650,25 +1651,26 @@ FormsSeen({form}); for (const auto& field : form.fields) { - // Expect 2 suggestions because the fixture created three profiles during - // set up, one of which is empty and cannot be suggested + // Expect 2 address suggestions + footer because the fixture created three + // profiles during set up, one of which is empty and cannot be suggested // (see `CreateTestAutofillProfiles()`). GetAutofillSuggestions( form, field, AutofillSuggestionTriggerSource::kManualFallbackAddress); - external_delegate()->CheckSuggestionCount(field.global_id(), 2); + external_delegate()->CheckSuggestionCount(field.global_id(), 3); base::ranges::all_of( external_delegate()->suggestions(), [](const Suggestion& suggestion) { return suggestion.popup_item_id == PopupItemId::kAddressEntry; }); - // Expect 3 credit card suggestions because the fixture created 3 credit - // cards during setup (see `CreateTestCreditCards()`). + // Expect 3 credit card suggestions + footer because the fixture created 3 + // credit cards during setup (see `CreateTestCreditCards()`). GetAutofillSuggestions( form, field, AutofillSuggestionTriggerSource::kManualFallbackPayments); - external_delegate()->CheckSuggestionCount(field.global_id(), 3); - EXPECT_TRUE(base::ranges::all_of(external_delegate()->suggestions(), - [](const Suggestion& suggestion) { - return !suggestion.is_acceptable; - })); + external_delegate()->CheckSuggestionCount(field.global_id(), 4); + EXPECT_TRUE(base::ranges::all_of( + external_delegate()->suggestions(), [](const Suggestion& suggestion) { + return suggestion.popup_item_id != PopupItemId::kAddressEntry || + !suggestion.is_acceptable; + })); } } @@ -1683,16 +1685,15 @@ // suggestions shown after the address suggestions are generated for // unclassified fields. const FormFieldData& cc_name_field = form.fields[0]; - // Expect 2 suggestions because manual fallback flow triggered on a classified - // credit card field should generate regular suggestions. + // Expect 2 credit card suggestions + footer because manual fallback flow + // triggered on a classified credit card field should generate regular + // suggestions. GetAutofillSuggestions( form, cc_name_field, AutofillSuggestionTriggerSource::kManualFallbackPayments); - external_delegate()->CheckSuggestionCount(cc_name_field.global_id(), 2); - EXPECT_TRUE(base::ranges::all_of( - external_delegate()->suggestions(), [](const Suggestion& suggestion) { - return suggestion.popup_item_id == PopupItemId::kCreditCardEntry; - })); + external_delegate()->CheckSuggestionCount(cc_name_field.global_id(), 3); + EXPECT_EQ(external_delegate()->GetMainFillingProduct(), + FillingProduct::kCreditCard); } #endif // BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) @@ -1749,7 +1750,8 @@ {Suggestion("Charles", "", Suggestion::Icon::kNoIcon, PopupItemId::kAddressEntry), Suggestion("Elvis", "", Suggestion::Icon::kNoIcon, - PopupItemId::kAddressEntry)}); + PopupItemId::kAddressEntry), + AutofillSuggestionGenerator::CreateSeparator()}); // Check that there are no suggestions for the field without the autocomplete // attribute. @@ -1781,7 +1783,8 @@ {Suggestion("Charles", "Charles Hardin Holley", kAddressEntryIcon, PopupItemId::kAddressEntry), Suggestion("Elvis", "Elvis Aaron Presley", kAddressEntryIcon, - PopupItemId::kAddressEntry)}); + PopupItemId::kAddressEntry), + AutofillSuggestionGenerator::CreateSeparator()}); GetAutofillSuggestions(form, form.fields[1]); external_delegate()->CheckSuggestions( @@ -1789,7 +1792,8 @@ {Suggestion("Holley", "Charles Hardin Holley", kAddressEntryIcon, PopupItemId::kAddressEntry), Suggestion("Presley", "Elvis Aaron Presley", kAddressEntryIcon, - PopupItemId::kAddressEntry)}); + PopupItemId::kAddressEntry), + AutofillSuggestionGenerator::CreateSeparator()}); } // Test that the call is properly forwarded to its SingleFieldFormFillRouter. @@ -1881,7 +1885,8 @@ {Suggestion("Charles", "123 Apple St.", kAddressEntryIcon, PopupItemId::kAddressEntry), Suggestion("Elvis", "3734 Elvis Presley Blvd.", kAddressEntryIcon, - PopupItemId::kAddressEntry)}); + PopupItemId::kAddressEntry), + AutofillSuggestionGenerator::CreateSeparator()}); } // Test that we return only matching address profile suggestions when the @@ -1898,7 +1903,8 @@ external_delegate()->CheckSuggestions( field.global_id(), {Suggestion("Elvis", "3734 Elvis Presley Blvd.", kAddressEntryIcon, - PopupItemId::kAddressEntry)}); + PopupItemId::kAddressEntry), + AutofillSuggestionGenerator::CreateSeparator()}); } // Tests that we return address profile suggestions values when the section @@ -1947,7 +1953,8 @@ {Suggestion("Googler", "1600 Amphitheater pkwy", kAddressEntryIcon, PopupItemId::kAddressEntry), Suggestion("Grimes", "1234 Smith Blvd.", kAddressEntryIcon, - PopupItemId::kAddressEntry)}); + PopupItemId::kAddressEntry), + AutofillSuggestionGenerator::CreateSeparator()}); } // Tests that we return address profile suggestions values when the section @@ -1969,7 +1976,8 @@ external_delegate()->CheckSuggestions( field.global_id(), {Suggestion("Elvis", "3734 Elvis Presley Blvd.", kAddressEntryIcon, - PopupItemId::kAddressEntry)}); + PopupItemId::kAddressEntry), + AutofillSuggestionGenerator::CreateSeparator()}); } // Test that we return no suggestions when the form has no relevant fields. @@ -2101,7 +2109,8 @@ {Suggestion("Charles", "123 Apple St.", kAddressEntryIcon, PopupItemId::kAddressEntry), Suggestion("Elvis", "3734 Elvis Presley Blvd.", kAddressEntryIcon, - PopupItemId::kAddressEntry)}); + PopupItemId::kAddressEntry), + AutofillSuggestionGenerator::CreateSeparator()}); } // Test that we return no suggestions when autofill is disabled. @@ -2193,7 +2202,8 @@ // Test that we sent the credit card suggestions to the external delegate. external_delegate()->CheckSuggestions( form.fields[1].global_id(), - {GetCardSuggestion(kVisaCard), GetCardSuggestion(kMasterCard)}); + {GetCardSuggestion(kVisaCard), GetCardSuggestion(kMasterCard), + AutofillSuggestionGenerator::CreateSeparator()}); } // Test that we return all credit card profile suggestions when the triggering @@ -2212,7 +2222,8 @@ // Test that we sent the right values to the external delegate. external_delegate()->CheckSuggestions( field.global_id(), - {GetCardSuggestion(kVisaCard), GetCardSuggestion(kMasterCard)}); + {GetCardSuggestion(kVisaCard), GetCardSuggestion(kMasterCard), + AutofillSuggestionGenerator::CreateSeparator()}); } // Test that we return all credit card profile suggestions when the triggering @@ -2230,7 +2241,8 @@ // Test that we sent the right values to the external delegate. external_delegate()->CheckSuggestions( field.global_id(), - {GetCardSuggestion(kVisaCard), GetCardSuggestion(kMasterCard)}); + {GetCardSuggestion(kVisaCard), GetCardSuggestion(kMasterCard), + AutofillSuggestionGenerator::CreateSeparator()}); } // Test that we return all credit card profile suggestions when the triggering @@ -2249,7 +2261,8 @@ // Test that we sent the right values to the external delegate. external_delegate()->CheckSuggestions( field.global_id(), - {GetCardSuggestion(kVisaCard), GetCardSuggestion(kMasterCard)}); + {GetCardSuggestion(kVisaCard), GetCardSuggestion(kMasterCard), + AutofillSuggestionGenerator::CreateSeparator()}); } // Test that we return all credit card profile suggestions when the triggering @@ -2274,8 +2287,9 @@ GetAutofillSuggestions(form, field); // Test that we sent the right value to the external delegate. - external_delegate()->CheckSuggestions(field.global_id(), - {GetCardSuggestion(kMasterCard)}); + external_delegate()->CheckSuggestions( + field.global_id(), {GetCardSuggestion(kMasterCard), + AutofillSuggestionGenerator::CreateSeparator()}); } // Test that we return only matching credit card profile suggestions when the @@ -2292,8 +2306,9 @@ GetAutofillSuggestions(form, field); // Test that we sent the right values to the external delegate. - external_delegate()->CheckSuggestions(field.global_id(), - {GetCardSuggestion(kVisaCard)}); + external_delegate()->CheckSuggestions( + field.global_id(), {GetCardSuggestion(kVisaCard), + AutofillSuggestionGenerator::CreateSeparator()}); } // Test that we return credit card profile suggestions when the selected form @@ -2334,7 +2349,8 @@ PopupItemId::kCreditCardEntry), Suggestion(master_card_value, master_card_label, Suggestion::Icon::kCardMasterCard, - PopupItemId::kCreditCardEntry)}); + PopupItemId::kCreditCardEntry), + AutofillSuggestionGenerator::CreateSeparator()}); } // Test that we return credit card profile suggestions when the selected form @@ -2385,7 +2401,8 @@ PopupItemId::kCreditCardEntry), Suggestion("Buddy Holly", master_card_label, Suggestion::Icon::kCardMasterCard, - PopupItemId::kCreditCardEntry)}); + PopupItemId::kCreditCardEntry), + AutofillSuggestionGenerator::CreateSeparator()}); } // Test that we return a warning explaining that credit card profile suggestions @@ -2433,7 +2450,8 @@ // Test that we sent the right values to the external delegate. external_delegate()->CheckSuggestions( form.fields[1].global_id(), - {GetCardSuggestion(kVisaCard), GetCardSuggestion(kMasterCard)}); + {GetCardSuggestion(kVisaCard), GetCardSuggestion(kMasterCard), + AutofillSuggestionGenerator::CreateSeparator()}); } // Test that we return credit card suggestions for secure pages that have a @@ -2452,7 +2470,8 @@ // Test that we sent the right values to the external delegate. external_delegate()->CheckSuggestions( form.fields[1].global_id(), - {GetCardSuggestion(kVisaCard), GetCardSuggestion(kMasterCard)}); + {GetCardSuggestion(kVisaCard), GetCardSuggestion(kMasterCard), + AutofillSuggestionGenerator::CreateSeparator()}); } // Test that we return all credit card suggestions in the case that two cards @@ -2480,7 +2499,8 @@ external_delegate()->CheckSuggestions( form.fields[1].global_id(), {GetCardSuggestion(kVisaCard), GetCardSuggestion(kMasterCard), - GetCardSuggestion(kMasterCard)}); + GetCardSuggestion(kMasterCard), + AutofillSuggestionGenerator::CreateSeparator()}); } // Test that a masked server card is not suggested if more than six digits @@ -2563,7 +2583,8 @@ // Test that we sent the credit card suggestions to the external delegate. external_delegate()->CheckSuggestions( form.fields[1].global_id(), - {mastercard_suggestion, amex_suggestion, visa_suggestion}); + {mastercard_suggestion, amex_suggestion, visa_suggestion, + AutofillSuggestionGenerator::CreateSeparator()}); } // Test cards that are expired AND disused are suppressed when suppression is @@ -2615,8 +2636,8 @@ Suggestion::Icon::kCardMasterCard, PopupItemId::kCreditCardEntry), Suggestion("Clyde Barrow", GenerateLabelsFromCreditCard(credit_card1), - Suggestion::Icon::kCardVisa, - PopupItemId::kCreditCardEntry)}); + Suggestion::Icon::kCardVisa, PopupItemId::kCreditCardEntry), + AutofillSuggestionGenerator::CreateSeparator()}); } // Query with name prefix for card0 returns card0. @@ -2629,7 +2650,8 @@ form.fields[0].global_id(), {Suggestion("Bonnie Parker", GenerateLabelsFromCreditCard(credit_card0), Suggestion::Icon::kCardMasterCard, - PopupItemId::kCreditCardEntry)}); + PopupItemId::kCreditCardEntry), + AutofillSuggestionGenerator::CreateSeparator()}); } // Query with name prefix for card1 returns card1. @@ -2641,8 +2663,8 @@ external_delegate()->CheckSuggestions( form.fields[0].global_id(), {Suggestion("Clyde Barrow", GenerateLabelsFromCreditCard(credit_card1), - Suggestion::Icon::kCardVisa, - PopupItemId::kCreditCardEntry)}); + Suggestion::Icon::kCardVisa, PopupItemId::kCreditCardEntry), + AutofillSuggestionGenerator::CreateSeparator()}); } // Query with name prefix for card2 returns card2. @@ -2656,7 +2678,8 @@ {Suggestion("John Dillinger", GenerateLabelsFromCreditCard(credit_card2), Suggestion::Icon::kCardAmericanExpress, - PopupItemId::kCreditCardEntry)}); + PopupItemId::kCreditCardEntry), + AutofillSuggestionGenerator::CreateSeparator()}); } } @@ -2699,7 +2722,9 @@ // Sublabel is expiration date when filling card number. The second card // doesn't have a number so it should not be included in the suggestions. external_delegate()->CheckSuggestions( - form.fields[1].global_id(), {GetCardSuggestion(kAmericanExpressCard)}); + form.fields[1].global_id(), + {GetCardSuggestion(kAmericanExpressCard), + AutofillSuggestionGenerator::CreateSeparator()}); // Query by cardholder name field. GetAutofillSuggestions(form, form.fields[0]); @@ -2710,7 +2735,8 @@ PopupItemId::kCreditCardEntry), Suggestion("Clyde Barrow", GenerateLabelsFromCreditCard(credit_card0), Suggestion::Icon::kCardAmericanExpress, - PopupItemId::kCreditCardEntry)}); + PopupItemId::kCreditCardEntry), + AutofillSuggestionGenerator::CreateSeparator()}); } // Test that we return profile and credit card suggestions for combined forms. @@ -2727,7 +2753,8 @@ {Suggestion("Charles", "123 Apple St.", kAddressEntryIcon, PopupItemId::kAddressEntry), Suggestion("Elvis", "3734 Elvis Presley Blvd.", kAddressEntryIcon, - PopupItemId::kAddressEntry)}); + PopupItemId::kAddressEntry), + AutofillSuggestionGenerator::CreateSeparator()}); FormFieldData field = CreateTestFormField("Card Number", "cardnumber", "", FormControlType::kInputText); @@ -2736,7 +2763,8 @@ // Test that we sent the credit card suggestions to the external delegate. external_delegate()->CheckSuggestions( field.global_id(), - {GetCardSuggestion(kVisaCard), GetCardSuggestion(kMasterCard)}); + {GetCardSuggestion(kVisaCard), GetCardSuggestion(kMasterCard), + AutofillSuggestionGenerator::CreateSeparator()}); } // Test that for non-https forms with both address and credit card fields, we @@ -3497,7 +3525,8 @@ {Suggestion("Charles", "123 Apple St.", kAddressEntryIcon, PopupItemId::kAddressEntry), Suggestion("Elvis", "3734 Elvis Presley Blvd.", kAddressEntryIcon, - PopupItemId::kAddressEntry)}); + PopupItemId::kAddressEntry), + AutofillSuggestionGenerator::CreateSeparator()}); } // The method `AutofillSuggestionGenerator::GetPrefixMatchedProfiles` prevents @@ -3526,7 +3555,8 @@ external_delegate()->CheckSuggestions( field.global_id(), {Suggestion("Elvis", "3734 Elvis Presley Blvd.", kAddressEntryIcon, - PopupItemId::kAddressEntry)}); + PopupItemId::kAddressEntry), + AutofillSuggestionGenerator::CreateSeparator()}); } #endif @@ -3570,7 +3600,8 @@ external_delegate()->CheckSuggestions( form.fields[2].global_id(), {Suggestion("356", "1800FLOWERS", kAddressEntryIcon, - PopupItemId::kAddressEntry)}); + PopupItemId::kAddressEntry), + AutofillSuggestionGenerator::CreateSeparator()}); const FormFieldData& phone_suffix = form.fields[3]; GetAutofillSuggestions(form, phone_suffix); @@ -3579,7 +3610,8 @@ external_delegate()->CheckSuggestions( form.fields[3].global_id(), {Suggestion("9377", "1800FLOWERS", kAddressEntryIcon, - PopupItemId::kAddressEntry)}); + PopupItemId::kAddressEntry), + AutofillSuggestionGenerator::CreateSeparator()}); } // Tests that the suggestion consists of phone number without the country code @@ -3602,7 +3634,8 @@ external_delegate()->CheckSuggestions( form.fields[9].global_id(), {Suggestion("123456789", "Natty Bumppo", kAddressEntryIcon, - PopupItemId::kAddressEntry)}); + PopupItemId::kAddressEntry), + AutofillSuggestionGenerator::CreateSeparator()}); } // Tests that we return email profile suggestions values @@ -3647,7 +3680,8 @@ external_delegate()->CheckSuggestions( form.fields[2].global_id(), {Suggestion("test@example.com", "Natty Bumppo", kAddressEntryIcon, - PopupItemId::kAddressEntry)}); + PopupItemId::kAddressEntry), + AutofillSuggestionGenerator::CreateSeparator()}); } // Test that we correctly fill an address form. @@ -8255,8 +8289,10 @@ // Get the suggestions for already filled credit card |number_field|. GetAutofillSuggestions(form, number_field); - external_delegate()->CheckSuggestions(form.fields[3].global_id(), - {GetCardSuggestion(kVisaCard)}); + external_delegate()->CheckSuggestions( + form.fields[3].global_id(), + {GetCardSuggestion(kVisaCard), + AutofillSuggestionGenerator::CreateSeparator()}); } // Test that inputs detected to be CVC inputs are forced to @@ -8690,7 +8726,8 @@ std::string("nickname ") + test::ObfuscatedCardDigitsAsUTF8( "3456", ObfuscationLengthForCreditCardLastFourDigits()), - label, Suggestion::Icon::kCardVisa, PopupItemId::kCreditCardEntry)}); + label, Suggestion::Icon::kCardVisa, PopupItemId::kCreditCardEntry), + AutofillSuggestionGenerator::CreateSeparator()}); // Non card number field (cardholder name field). GetAutofillSuggestions(form, form.fields[0]); @@ -8714,7 +8751,8 @@ form.fields[0].global_id(), {virtual_card_suggestion, Suggestion("Elvis Presley", label, Suggestion::Icon::kCardVisa, - PopupItemId::kCreditCardEntry)}); + PopupItemId::kCreditCardEntry), + AutofillSuggestionGenerator::CreateSeparator()}); // Incomplete form. GetAutofillSuggestions(form, form.fields[0]); @@ -8723,7 +8761,8 @@ form.fields[0].global_id(), {virtual_card_suggestion, Suggestion("Elvis Presley", label, Suggestion::Icon::kCardVisa, - PopupItemId::kCreditCardEntry)}); + PopupItemId::kCreditCardEntry), + AutofillSuggestionGenerator::CreateSeparator()}); } TEST_F(BrowserAutofillManagerTest, @@ -10063,7 +10102,8 @@ {Suggestion("buddy@gmail.com", "", Suggestion::Icon::kNoIcon, PopupItemId::kAddressEntry), Suggestion("theking@gmail.com", "", Suggestion::Icon::kNoIcon, - PopupItemId::kAddressEntry)}); + PopupItemId::kAddressEntry), + AutofillSuggestionGenerator::CreateSeparator()}); } // Tests that compose suggestions are not queried if Autofill has suggestions @@ -10088,7 +10128,8 @@ PopupItemId::kAddressEntry), Suggestion("3734 Elvis Presley Blvd., Apt. 10", "3734 Elvis Presley Blvd.", kAddressEntryIcon, - PopupItemId::kAddressEntry)}); + PopupItemId::kAddressEntry), + AutofillSuggestionGenerator::CreateSeparator()}); } // Tests that Compose suggestions are queried if the trigger source indicates @@ -10387,7 +10428,8 @@ external_delegate()->CheckSuggestions( form.fields[1].global_id(), - {GetCardSuggestion(kAmericanExpressCard, expected_nickname_)}); + {GetCardSuggestion(kAmericanExpressCard, expected_nickname_), + AutofillSuggestionGenerator::CreateSeparator()}); } TEST_P(BrowserAutofillManagerTestForSharingNickname, @@ -10416,7 +10458,8 @@ external_delegate()->CheckSuggestions( form.fields[1].global_id(), {GetCardSuggestion(kAmericanExpressCard, local_nickname_), - GetCardSuggestion(kAmericanExpressCard, server_nickname_)}); + GetCardSuggestion(kAmericanExpressCard, server_nickname_), + AutofillSuggestionGenerator::CreateSeparator()}); } // The following Refill Tests ensure that Autofill can handle the situation @@ -10826,7 +10869,8 @@ {Suggestion("Charles", "", Suggestion::Icon::kNoIcon, PopupItemId::kAddressEntry), Suggestion("Elvis", "", Suggestion::Icon::kNoIcon, - PopupItemId::kAddressEntry)}); + PopupItemId::kAddressEntry), + AutofillSuggestionGenerator::CreateSeparator()}); // Also check that there are no suggestions for the field without the // autocomplete attribute, ensuring that unrecognized fields don't get plus @@ -10861,7 +10905,8 @@ Suggestion("buddy@gmail.com", "", Suggestion::Icon::kNoIcon, PopupItemId::kAddressEntry), Suggestion("theking@gmail.com", "", Suggestion::Icon::kNoIcon, - PopupItemId::kAddressEntry)}); + PopupItemId::kAddressEntry), + AutofillSuggestionGenerator::CreateSeparator()}); EXPECT_THAT( histogram_tester_.GetAllSamples(kPlusAddressSuggestionMetric), BucketsAre(base::Bucket( @@ -10897,7 +10942,8 @@ Suggestion("buddy@gmail.com", "", Suggestion::Icon::kNoIcon, PopupItemId::kAddressEntry), Suggestion("theking@gmail.com", "", Suggestion::Icon::kNoIcon, - PopupItemId::kAddressEntry)}); + PopupItemId::kAddressEntry), + AutofillSuggestionGenerator::CreateSeparator()}); EXPECT_THAT(histogram_tester_.GetAllSamples(kPlusAddressSuggestionMetric), BucketsAre(base::Bucket(plus_addresses::PlusAddressMetrics::
diff --git a/components/autofill/core/browser/data_model/address_unittest.cc b/components/autofill/core/browser/data_model/address_unittest.cc index f409d6b..d8c1828 100644 --- a/components/autofill/core/browser/data_model/address_unittest.cc +++ b/components/autofill/core/browser/data_model/address_unittest.cc
@@ -610,7 +610,7 @@ address.SetRawInfo(ADDRESS_HOME_COUNTRY, u"BR"); EXPECT_FALSE(address.IsLegacyAddress()); - address.SetRawInfo(ADDRESS_HOME_COUNTRY, u"DE"); + address.SetRawInfo(ADDRESS_HOME_COUNTRY, u"AZ"); EXPECT_TRUE(address.IsLegacyAddress()); address.SetRawInfo(ADDRESS_HOME_COUNTRY, u"MX"); @@ -622,7 +622,6 @@ TEST_F(AddressTest, TestUpdateLegacyToCustomHierarchy) { Address address(kLegacyHierarchyCountryCode); - address.SetRawInfo(ADDRESS_HOME_COUNTRY, u"DE"); address.SetRawInfoWithVerificationStatus(ADDRESS_HOME_CITY, u"Munich", VerificationStatus::kObserved); address.SetRawInfoWithVerificationStatus(ADDRESS_HOME_STATE, u"Bayern", @@ -723,10 +722,10 @@ VerificationStatus::kParsed); // Updates the internal hierarchy and copies the data into the legacy model. - address.SetRawInfo(ADDRESS_HOME_COUNTRY, u"DE"); + address.SetRawInfo(ADDRESS_HOME_COUNTRY, u"AZ"); address.FinalizeAfterImport(); - EXPECT_EQ(address.GetRawInfo(ADDRESS_HOME_COUNTRY), u"DE"); + EXPECT_EQ(address.GetRawInfo(ADDRESS_HOME_COUNTRY), u"AZ"); EXPECT_EQ(address.GetRawInfo(ADDRESS_HOME_CITY), u"Munich"); EXPECT_EQ(address.GetRawInfo(ADDRESS_HOME_STATE), u"Bayern"); EXPECT_EQ(address.GetRawInfo(ADDRESS_HOME_ZIP), u"111");
diff --git a/components/autofill/core/browser/data_model/autofill_i18n_api.cc b/components/autofill/core/browser/data_model/autofill_i18n_api.cc index 90f9d2a2e..a5cf575 100644 --- a/components/autofill/core/browser/data_model/autofill_i18n_api.cc +++ b/components/autofill/core/browser/data_model/autofill_i18n_api.cc
@@ -198,9 +198,9 @@ } TreeEdgesList GetTreeEdges(AddressCountryCode country_code) { - // Always use legacy rules while `kAutofillUseI18nAddressModel` is not rolled - // out. - if (!base::FeatureList::IsEnabled(features::kAutofillUseI18nAddressModel)) { + // Always use legacy rules if the country has no available custom address + // model. + if (!IsCustomHierarchyAvailableForCountry(country_code)) { return kAutofillModelRules.find(kLegacyHierarchyCountryCode.value()) ->second; } @@ -301,15 +301,15 @@ bool IsTypeEnabledForCountry(FieldType field_type, AddressCountryCode country_code) { - auto* it = kAutofillModelRules.find(country_code.value()); - if (it == kAutofillModelRules.end()) { - return false; + if (!IsCustomHierarchyAvailableForCountry(country_code)) { + country_code = kLegacyHierarchyCountryCode; } if (kAddressComputedTypes.contains(field_type)) { return true; } + auto* it = kAutofillModelRules.find(country_code.value()); return base::ranges::any_of( it->second, [field_type](const FieldTypeDescription& description) { return description.field_type == field_type || @@ -322,6 +322,12 @@ !base::FeatureList::IsEnabled(features::kAutofillUseI18nAddressModel)) { return false; } + + if (country_code == AddressCountryCode("DE") && + !base::FeatureList::IsEnabled(features::kAutofillUseDEAddressModel)) { + return false; + } + return kAutofillModelRules.find(country_code.value()) != kAutofillModelRules.end(); }
diff --git a/components/autofill/core/browser/data_model/autofill_i18n_api_unittest.cc b/components/autofill/core/browser/data_model/autofill_i18n_api_unittest.cc index dd554e0..a59346c 100644 --- a/components/autofill/core/browser/data_model/autofill_i18n_api_unittest.cc +++ b/components/autofill/core/browser/data_model/autofill_i18n_api_unittest.cc
@@ -47,12 +47,18 @@ class AutofillI18nApiTest : public testing::Test { public: - AutofillI18nApiTest() = default; + AutofillI18nApiTest() { + feature_list_.InitWithFeatures( + { + features::kAutofillUseI18nAddressModel, + features::kAutofillUseDEAddressModel, + }, + {}); + } ~AutofillI18nApiTest() override = default; private: - base::test::ScopedFeatureList feature_list_{ - features::kAutofillUseI18nAddressModel}; + base::test::ScopedFeatureList feature_list_; }; TEST_F(AutofillI18nApiTest, GetAddressComponentModel_ReturnsNonEmptyModel) { @@ -162,14 +168,14 @@ std::string street_address = "street no 123 apt 10"; - // Parsing expression for address street in not available for Germany. + // Parsing expression for address street in not available for Spain. ASSERT_TRUE( - kAutofillParsingRulesMap.find({"DE", ADDRESS_HOME_STREET_ADDRESS}) == + kAutofillParsingRulesMap.find({"ES", ADDRESS_HOME_STREET_ADDRESS}) == kAutofillParsingRulesMap.end()); // In that case the legacy expression is used (if available). EXPECT_EQ(ParseValueByI18nRegularExpression(street_address, ADDRESS_HOME_STREET_ADDRESS, - AddressCountryCode("DE")), + AddressCountryCode("ES")), ParseValueByI18nRegularExpression(street_address, ADDRESS_HOME_STREET_ADDRESS, kLegacyHierarchyCountryCode)); @@ -211,14 +217,10 @@ << "Testing type " << FieldTypeToStringView(field_type) << " in country " << address_country_code); - if (!kAutofillModelRules.contains(country_code)) { - EXPECT_FALSE(IsTypeEnabledForCountry(field_type, address_country_code)); - } else { - bool is_contained = - test_api(store.Root()).GetNodeForType(field_type) != nullptr; - EXPECT_EQ(is_contained, - IsTypeEnabledForCountry(field_type, address_country_code)); - } + bool is_contained = + test_api(store.Root()).GetNodeForType(field_type) != nullptr; + EXPECT_EQ(is_contained, + IsTypeEnabledForCountry(field_type, address_country_code)); } } }
diff --git a/components/autofill/core/browser/data_model/autofill_i18n_formatting_expressions.h b/components/autofill/core/browser/data_model/autofill_i18n_formatting_expressions.h index 30ef3c3..bfbd49c 100644 --- a/components/autofill/core/browser/data_model/autofill_i18n_formatting_expressions.h +++ b/components/autofill/core/browser/data_model/autofill_i18n_formatting_expressions.h
@@ -28,6 +28,9 @@ {{"BR", ADDRESS_HOME_OVERFLOW}, u"${ADDRESS_HOME_SUBPREMISE;;}"}, {{"BR", ADDRESS_HOME_SUBPREMISE}, u"${ADDRESS_HOME_FLOOR;Andar ;}, ${ADDRESS_HOME_APT;;}"}, {{"BR", ADDRESS_HOME_APT}, u"${ADDRESS_HOME_APT_TYPE;;} ${ADDRESS_HOME_APT_NUM;;}"}, + {{"DE", ADDRESS_HOME_ADDRESS}, u"${ADDRESS_HOME_STREET_ADDRESS;;}\n${ADDRESS_HOME_ZIP;;} ${ADDRESS_HOME_CITY;;}"}, + {{"DE", ADDRESS_HOME_STREET_ADDRESS}, u"${ADDRESS_HOME_STREET_LOCATION;;}\n${ADDRESS_HOME_OVERFLOW;;}"}, + {{"DE", ADDRESS_HOME_STREET_LOCATION}, u"${ADDRESS_HOME_STREET_NAME;;} ${ADDRESS_HOME_HOUSE_NUMBER;;}"}, {{"MX", ADDRESS_HOME_ADDRESS}, u"${ADDRESS_HOME_STREET_ADDRESS;;}\n${ADDRESS_HOME_DEPENDENT_LOCALITY;;}\n${ADDRESS_HOME_ADMIN_LEVEL2;;}\n${ADDRESS_HOME_ZIP;;} ${ADDRESS_HOME_CITY;;}, ${ADDRESS_HOME_STATE;;}"}, {{"MX", ADDRESS_HOME_STREET_ADDRESS}, u"${ADDRESS_HOME_STREET_LOCATION;;}, ${ADDRESS_HOME_SUBPREMISE;;}\n${ADDRESS_HOME_OVERFLOW;;}"}, {{"MX", ADDRESS_HOME_STREET_LOCATION}, u"${ADDRESS_HOME_STREET_NAME;;} ${ADDRESS_HOME_HOUSE_NUMBER;;}"}, @@ -45,4 +48,4 @@ } // namespace autofill::i18n_model_definition -#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_AUTOFILL_I18N_FORMATTING_EXPRESSIONS_H_ \ No newline at end of file +#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_AUTOFILL_I18N_FORMATTING_EXPRESSIONS_H_
diff --git a/components/autofill/core/browser/data_model/autofill_i18n_hierarchies.h b/components/autofill/core/browser/data_model/autofill_i18n_hierarchies.h index f4b0527..50a8184 100644 --- a/components/autofill/core/browser/data_model/autofill_i18n_hierarchies.h +++ b/components/autofill/core/browser/data_model/autofill_i18n_hierarchies.h
@@ -23,6 +23,10 @@ inline constexpr FieldType kFieldTypeChildren_BR_ADDRESS_HOME_OVERFLOW_AND_LANDMARK[] = {ADDRESS_HOME_OVERFLOW, ADDRESS_HOME_LANDMARK}; inline constexpr FieldType kFieldTypeChildren_BR_ADDRESS_HOME_STREET_ADDRESS[] = {ADDRESS_HOME_STREET_LOCATION, ADDRESS_HOME_OVERFLOW_AND_LANDMARK}; inline constexpr FieldType kFieldTypeChildren_BR_ADDRESS_HOME_ADDRESS[] = {ADDRESS_HOME_STREET_ADDRESS, ADDRESS_HOME_CITY, ADDRESS_HOME_DEPENDENT_LOCALITY, ADDRESS_HOME_STATE, ADDRESS_HOME_ZIP, ADDRESS_HOME_COUNTRY}; +// Field types for country DE. +inline constexpr FieldType kFieldTypeChildren_DE_ADDRESS_HOME_STREET_LOCATION[] = {ADDRESS_HOME_STREET_NAME, ADDRESS_HOME_HOUSE_NUMBER}; +inline constexpr FieldType kFieldTypeChildren_DE_ADDRESS_HOME_STREET_ADDRESS[] = {ADDRESS_HOME_STREET_LOCATION, ADDRESS_HOME_OVERFLOW}; +inline constexpr FieldType kFieldTypeChildren_DE_ADDRESS_HOME_ADDRESS[] = {ADDRESS_HOME_STREET_ADDRESS, ADDRESS_HOME_CITY, ADDRESS_HOME_STATE, ADDRESS_HOME_ZIP, ADDRESS_HOME_COUNTRY}; // Field types for country MX. inline constexpr FieldType kFieldTypeChildren_MX_ADDRESS_HOME_STREET_LOCATION[] = {ADDRESS_HOME_STREET_NAME, ADDRESS_HOME_HOUSE_NUMBER}; inline constexpr FieldType kFieldTypeChildren_MX_ADDRESS_HOME_APT[] = {ADDRESS_HOME_APT_TYPE, ADDRESS_HOME_APT_NUM}; @@ -57,6 +61,11 @@ FieldTypeDescription{.field_type = ADDRESS_HOME_OVERFLOW_AND_LANDMARK, .children = kFieldTypeChildren_BR_ADDRESS_HOME_OVERFLOW_AND_LANDMARK}, FieldTypeDescription{.field_type = ADDRESS_HOME_STREET_ADDRESS, .children = kFieldTypeChildren_BR_ADDRESS_HOME_STREET_ADDRESS}, FieldTypeDescription{.field_type = ADDRESS_HOME_ADDRESS, .children = kFieldTypeChildren_BR_ADDRESS_HOME_ADDRESS}}; +// Node properties for country DE. +inline constexpr FieldTypeDescription kModel_DE[] = { + FieldTypeDescription{.field_type = ADDRESS_HOME_STREET_LOCATION, .children = kFieldTypeChildren_DE_ADDRESS_HOME_STREET_LOCATION}, + FieldTypeDescription{.field_type = ADDRESS_HOME_STREET_ADDRESS, .children = kFieldTypeChildren_DE_ADDRESS_HOME_STREET_ADDRESS}, + FieldTypeDescription{.field_type = ADDRESS_HOME_ADDRESS, .children = kFieldTypeChildren_DE_ADDRESS_HOME_ADDRESS}}; // Node properties for country MX. inline constexpr FieldTypeDescription kModel_MX[] = { FieldTypeDescription{.field_type = ADDRESS_HOME_STREET_LOCATION, .children = kFieldTypeChildren_MX_ADDRESS_HOME_STREET_LOCATION}, @@ -84,6 +93,7 @@ inline constexpr auto kAutofillModelRules = base::MakeFixedFlatMap<std::string_view, base::span<const FieldTypeDescription>>({ {"BR", kModel_BR}, + {"DE", kModel_DE}, {"MX", kModel_MX}, {"US", kModel_US}, {"XX", kModel_XX}
diff --git a/components/autofill/core/browser/data_model/autofill_i18n_parsing_expressions.h b/components/autofill/core/browser/data_model/autofill_i18n_parsing_expressions.h index 8b1c7dfb..9e684251 100644 --- a/components/autofill/core/browser/data_model/autofill_i18n_parsing_expressions.h +++ b/components/autofill/core/browser/data_model/autofill_i18n_parsing_expressions.h
@@ -28,13 +28,15 @@ inline constexpr char kRegularExpression_4[] = "(?m)(?i:(?:(?:[,-]\\s*|^)(?P<ADDRESS_HOME_FLOOR>\\d+)\\s*(?:º\\s*)?andar(?:\\s*[,-]|$)))"; // nocheck inline constexpr char kRegularExpression_5[] = "(?m)(?i:(?:(?:ponto de )?refer[êe]ncia(?::\\s*|\\s+)(?P<ADDRESS_HOME_LANDMARK>[^,\\n]+)))"; // nocheck inline constexpr char kRegularExpression_6[] = "(?m)(?i:(?P<ADDRESS_HOME_APT>(?P<ADDRESS_HOME_APT_TYPE>(?:apto\\.?|apt\\.?|apartamento|sala nº|sala|conjunto))?(?:(?:^|\\s+)(?P<ADDRESS_HOME_APT_NUM>(?:\\d+\\w?\\b|\\w\\b)))))"; // nocheck -inline constexpr char kRegularExpression_7[] = "(?m)(?i:(?P<ADDRESS_HOME_STREET_LOCATION>\\A\\s*(?P<ADDRESS_HOME_STREET_NAME>(?:calle\\s+\\d+\\s+[^\\d,\\n\\r]*?|(?:[^\\s,]+(?:[^\\S\\r\\n]+[^\\s,]+)*?)))(?:[,]?\\s+?(?:(?:#|No\\.?|número\\s)\\s*)?(?P<ADDRESS_HOME_HOUSE_NUMBER>(?:(?:S/Num\\.?|S/N|Sin Nombre)|(?:KM\\s+)?\\d+\\w?)))))"; // nocheck -inline constexpr char kRegularExpression_8[] = "(?m)(?i:(?P<ADDRESS_HOME_APT>(?P<ADDRESS_HOME_APT_TYPE>(?:despacho|loc\\.?|local|int(?:erior|\\.?)|n[uú]m(?:ero|\\.)? int(?:erno|\\.)?|Apartamento|Apto\\.?|Departamento|apto\\.?))(?:(?:^|\\s+)(?P<ADDRESS_HOME_APT_NUM>(?:\\d+\\w?\\b|\\w\\b))\\b)))"; // nocheck -inline constexpr char kRegularExpression_9[] = "(?m)(?i:(?:piso\\s*(?P<ADDRESS_HOME_FLOOR>\\d+)))"; // nocheck -inline constexpr char kRegularExpression_10[] = "(?m)(?i:(?:\\b(?:x|Entre( Calles)?)\\s+(?P<ADDRESS_HOME_BETWEEN_STREETS>(?P<ADDRESS_HOME_BETWEEN_STREETS_1>(?:[^\\s,]+(?:[^\\S\\r\\n]+[^\\s,]+)*?))(?:\\s+y\\s+)(?P<ADDRESS_HOME_BETWEEN_STREETS_2>(?:[^,\\r\\n]+)))))"; // nocheck -inline constexpr char kRegularExpression_11[] = "(?m)(?i:(?:(?:Cerca del)(?P<ADDRESS_HOME_LANDMARK>[^,\\n]+)))"; // nocheck -inline constexpr char kRegularExpression_12[] = "(?m)(?i:(?P<ADDRESS_HOME_APT>(?P<ADDRESS_HOME_APT_TYPE>(?:despacho|loc\\.?|local|int(?:erior|\\.?)|n[uú]m(?:ero|\\.)? int(?:erno|\\.)?|Apartamento|Apto\\.?|Departamento|apto\\.?))?(?:(?:^|\\s+)(?P<ADDRESS_HOME_APT_NUM>(?:\\d+\\w?\\b|\\w\\b)))))"; // nocheck -inline constexpr char kRegularExpression_13[] = "(?m)(?i:(?P<ADDRESS_HOME_STREET_ADDRESS>(?:(?:(?:((no|°|º|number)(\\.|-|\\s)*)?)(?P<ADDRESS_HOME_HOUSE_NUMBER>(?:\\d+\\w?))(th\\.|\\.)?)(?:(?:^|\\s+)(?P<ADDRESS_HOME_STREET_NAME>(?:[^\\s,]+(?:[^\\S\\r\\n]+[^\\s,]+)*?)))|(?P<ADDRESS_HOME_STREET_NAME__2>(?:[^\\s,]+(?:[^\\S\\r\\n]+[^\\s,]+)*?))(?:(?:^|[,\\s]+)(?:((no|°|º|number)(\\.|-|\\s)*)?)(?P<ADDRESS_HOME_HOUSE_NUMBER__2>(?:\\d+\\w?))(th\\.|\\.)?))(?:(?:^|[,\\s]+)(?P<ADDRESS_HOME_SUBPREMISE>(?:(?:(?:(?:(°|º|\\.|\\s|-)*(floor|flur|fl|og|obergeschoss|ug|untergeschoss|geschoss|andar|piso|º)(\\.|\\s|-)*)(?P<ADDRESS_HOME_FLOOR>(?:(\\d{0,3}\\w?))))|(?:(?P<ADDRESS_HOME_FLOOR__2>(?:(\\d{1,3}\\w?|\\w)))(?:(°|º|\\.|\\s|-)*(floor|flur|fl|og|obergeschoss|ug|untergeschoss|geschoss|andar|piso|º)(\\.|\\s|-)*)))(?:(?:^|[,\\s]+)(?:(?:(?:(apt|apartment|wohnung|apto|-)(\\.|\\s|-)*)(?P<ADDRESS_HOME_APT_NUM>(?:(\\d{0,3}\\w?))))|(?:(-\\s*)?(?P<ADDRESS_HOME_APT_NUM__2>(?:(\\d{1,3}\\w?|\\w)))(?:(\\.|\\s|-)*(ª)))?))?|(?:(?:(?:(apt|apartment|wohnung|apto|-)(\\.|\\s|-)*)(?P<ADDRESS_HOME_APT_NUM__3>(?:(\\d{0,3}\\w?))))|(?:(-\\s*)?(?P<ADDRESS_HOME_APT_NUM__4>(?:(\\d{1,3}\\w?|\\w)))(?:(\\.|\\s|-)*(ª)))?))))?))"; // nocheck +inline constexpr char kRegularExpression_7[] = "(?m)(?i:(?P<ADDRESS_HOME_STREET_LOCATION>\\A\\s*(?P<ADDRESS_HOME_STREET_NAME>(?:[^\\s,]+(?:[^\\S\\r\\n]+[^\\s,]+)*?))(?:(?:^|[,\\s]+)(?:(?:no|°|º|nummer|number)[-.\\s]*)?(?P<ADDRESS_HOME_HOUSE_NUMBER>\\d+(?:\\s*[[:alpha:]]\\b|\\s*[\\/-]\\s*\\d+)?))))"; // nocheck +inline constexpr char kRegularExpression_8[] = "(?m)(?i:(?P<ADDRESS_HOME_STREET_ADDRESS>(?P<ADDRESS_HOME_STREET_LOCATION>\\A\\s*(?P<ADDRESS_HOME_STREET_NAME>(?:[^\\s,]+(?:[^\\S\\r\\n]+[^\\s,]+)*?))(?:(?:^|[,\\s]+)(?:(?:no|°|º|nummer|number)[-.\\s]*)?(?P<ADDRESS_HOME_HOUSE_NUMBER>\\d+(?:\\s*[[:alpha:]]\\b|\\s*[\\/-]\\s*\\d+)?)))(?:(?:^|[,\\s]+)(?P<ADDRESS_HOME_OVERFLOW>(?:[^\\s,]+(?:[^\\S\\r\\n]+[^\\s,]+)*?)))?))"; // nocheck +inline constexpr char kRegularExpression_9[] = "(?m)(?i:(?P<ADDRESS_HOME_STREET_LOCATION>\\A\\s*(?P<ADDRESS_HOME_STREET_NAME>(?:calle\\s+\\d+\\s+[^\\d,\\n\\r]*?|(?:[^\\s,]+(?:[^\\S\\r\\n]+[^\\s,]+)*?)))(?:[,]?\\s+?(?:(?:#|No\\.?|número\\s)\\s*)?(?P<ADDRESS_HOME_HOUSE_NUMBER>(?:(?:S/Num\\.?|S/N|Sin Nombre)|(?:KM\\s+)?\\d+\\w?)))))"; // nocheck +inline constexpr char kRegularExpression_10[] = "(?m)(?i:(?P<ADDRESS_HOME_APT>(?P<ADDRESS_HOME_APT_TYPE>(?:despacho|loc\\.?|local|int(?:erior|\\.?)|n[uú]m(?:ero|\\.)? int(?:erno|\\.)?|Apartamento|Apto\\.?|Departamento|apto\\.?))(?:(?:^|\\s+)(?P<ADDRESS_HOME_APT_NUM>(?:\\d+\\w?\\b|\\w\\b))\\b)))"; // nocheck +inline constexpr char kRegularExpression_11[] = "(?m)(?i:(?:piso\\s*(?P<ADDRESS_HOME_FLOOR>\\d+)))"; // nocheck +inline constexpr char kRegularExpression_12[] = "(?m)(?i:(?:\\b(?:x|Entre( Calles)?)\\s+(?P<ADDRESS_HOME_BETWEEN_STREETS>(?P<ADDRESS_HOME_BETWEEN_STREETS_1>(?:[^\\s,]+(?:[^\\S\\r\\n]+[^\\s,]+)*?))(?:\\s+y\\s+)(?P<ADDRESS_HOME_BETWEEN_STREETS_2>(?:[^,\\r\\n]+)))))"; // nocheck +inline constexpr char kRegularExpression_13[] = "(?m)(?i:(?:(?:Cerca del)(?P<ADDRESS_HOME_LANDMARK>[^,\\n]+)))"; // nocheck +inline constexpr char kRegularExpression_14[] = "(?m)(?i:(?P<ADDRESS_HOME_APT>(?P<ADDRESS_HOME_APT_TYPE>(?:despacho|loc\\.?|local|int(?:erior|\\.?)|n[uú]m(?:ero|\\.)? int(?:erno|\\.)?|Apartamento|Apto\\.?|Departamento|apto\\.?))?(?:(?:^|\\s+)(?P<ADDRESS_HOME_APT_NUM>(?:\\d+\\w?\\b|\\w\\b)))))"; // nocheck +inline constexpr char kRegularExpression_15[] = "(?m)(?i:(?P<ADDRESS_HOME_STREET_ADDRESS>(?:(?:(?:((no|°|º|number)(\\.|-|\\s)*)?)(?P<ADDRESS_HOME_HOUSE_NUMBER>(?:\\d+\\w?))(th\\.|\\.)?)(?:(?:^|\\s+)(?P<ADDRESS_HOME_STREET_NAME>(?:[^\\s,]+(?:[^\\S\\r\\n]+[^\\s,]+)*?)))|(?P<ADDRESS_HOME_STREET_NAME__2>(?:[^\\s,]+(?:[^\\S\\r\\n]+[^\\s,]+)*?))(?:(?:^|[,\\s]+)(?:((no|°|º|number)(\\.|-|\\s)*)?)(?P<ADDRESS_HOME_HOUSE_NUMBER__2>(?:\\d+\\w?))(th\\.|\\.)?))(?:(?:^|[,\\s]+)(?P<ADDRESS_HOME_SUBPREMISE>(?:(?:(?:(?:(°|º|\\.|\\s|-)*(floor|flur|fl|og|obergeschoss|ug|untergeschoss|geschoss|andar|piso|º)(\\.|\\s|-)*)(?P<ADDRESS_HOME_FLOOR>(?:(\\d{0,3}\\w?))))|(?:(?P<ADDRESS_HOME_FLOOR__2>(?:(\\d{1,3}\\w?|\\w)))(?:(°|º|\\.|\\s|-)*(floor|flur|fl|og|obergeschoss|ug|untergeschoss|geschoss|andar|piso|º)(\\.|\\s|-)*)))(?:(?:^|[,\\s]+)(?:(?:(?:(apt|apartment|wohnung|apto|-)(\\.|\\s|-)*)(?P<ADDRESS_HOME_APT_NUM>(?:(\\d{0,3}\\w?))))|(?:(-\\s*)?(?P<ADDRESS_HOME_APT_NUM__2>(?:(\\d{1,3}\\w?|\\w)))(?:(\\.|\\s|-)*(ª)))?))?|(?:(?:(?:(apt|apartment|wohnung|apto|-)(\\.|\\s|-)*)(?P<ADDRESS_HOME_APT_NUM__3>(?:(\\d{0,3}\\w?))))|(?:(-\\s*)?(?P<ADDRESS_HOME_APT_NUM__4>(?:(\\d{1,3}\\w?|\\w)))(?:(\\.|\\s|-)*(ª)))?))))?))"; // nocheck // Section for singular decomposition(s). @@ -42,9 +44,11 @@ Decomposition(kRegularExpression_1, true, true), Decomposition(kRegularExpression_6, true, true), Decomposition(kRegularExpression_7, true, true), - Decomposition(kRegularExpression_10, true, true), + Decomposition(kRegularExpression_8, true, true), + Decomposition(kRegularExpression_9, true, true), Decomposition(kRegularExpression_12, true, true), - Decomposition(kRegularExpression_13, true, true), + Decomposition(kRegularExpression_14, true, true), + Decomposition(kRegularExpression_15, true, true), }; // Section for singular extract part(s). @@ -54,11 +58,11 @@ ExtractPart("", kRegularExpression_4), ExtractPart("", kRegularExpression_5), ExtractPart("", kRegularExpression_1), - ExtractPart("", kRegularExpression_8), - ExtractPart("", kRegularExpression_9), - ExtractPart("", kRegularExpression_11), ExtractPart("", kRegularExpression_10), - ExtractPart("", kRegularExpression_7), + ExtractPart("", kRegularExpression_11), + ExtractPart("", kRegularExpression_13), + ExtractPart("", kRegularExpression_12), + ExtractPart("", kRegularExpression_9), }; // Section for decomposition cascades and their alternatives. @@ -91,14 +95,16 @@ {{"BR", ADDRESS_HOME_OVERFLOW_AND_LANDMARK}, &kExtractParts_2}, {{"BR", ADDRESS_HOME_STREET_ADDRESS}, &kExtractParts_3}, {{"BR", ADDRESS_HOME_APT}, &kDecompositionList[1]}, - {{"MX", ADDRESS_HOME_STREET_LOCATION}, &kDecompositionList[2]}, + {{"DE", ADDRESS_HOME_STREET_LOCATION}, &kDecompositionList[2]}, + {{"DE", ADDRESS_HOME_STREET_ADDRESS}, &kDecompositionList[3]}, + {{"MX", ADDRESS_HOME_STREET_LOCATION}, &kDecompositionList[4]}, {{"MX", ADDRESS_HOME_SUBPREMISE}, &kExtractParts_4}, - {{"MX", ADDRESS_HOME_BETWEEN_STREETS}, &kDecompositionList[3]}, + {{"MX", ADDRESS_HOME_BETWEEN_STREETS}, &kDecompositionList[5]}, {{"MX", ADDRESS_HOME_BETWEEN_STREETS_OR_LANDMARK}, &kExtractParts_5}, {{"MX", ADDRESS_HOME_OVERFLOW}, &kExtractParts_6}, {{"MX", ADDRESS_HOME_STREET_ADDRESS}, &kExtractParts_7}, - {{"MX", ADDRESS_HOME_APT}, &kDecompositionList[4]}, - {{"XX", ADDRESS_HOME_STREET_ADDRESS}, &kDecompositionList[5]} + {{"MX", ADDRESS_HOME_APT}, &kDecompositionList[6]}, + {{"XX", ADDRESS_HOME_STREET_ADDRESS}, &kDecompositionList[7]} }); } // namespace autofill::i18n_model_definition
diff --git a/components/autofill/core/browser/data_model/autofill_profile.cc b/components/autofill/core/browser/data_model/autofill_profile.cc index 3e4fca9..0a1e1c61 100644 --- a/components/autofill/core/browser/data_model/autofill_profile.cc +++ b/components/autofill/core/browser/data_model/autofill_profile.cc
@@ -407,7 +407,7 @@ for (FieldType type : GetDatabaseStoredTypesOfAutofillProfile()) { auto status = static_cast<jint>(GetVerificationStatus(type)); // TODO(crbug.com/1471502): Reconcile usage of GetInfo and GetRawInfo below. - if (type == NAME_FULL || type == NAME_HONORIFIC_PREFIX) { + if (type == NAME_FULL) { Java_AutofillProfile_setInfo( env, jprofile, static_cast<jint>(type), base::android::ConvertUTF16ToJavaString( @@ -582,8 +582,6 @@ int AutofillProfile::Compare(const AutofillProfile& profile) const { const FieldType types[] = { - // TODO(crbug.com/1113617): Honorifics are temporally disabled. - // NAME_HONORIFIC_PREFIX, NAME_FULL, NAME_FIRST, NAME_MIDDLE,
diff --git a/components/autofill/core/browser/data_model/autofill_profile_comparator.cc b/components/autofill/core/browser/data_model/autofill_profile_comparator.cc index 93ab30c..133259a 100644 --- a/components/autofill/core/browser/data_model/autofill_profile_comparator.cc +++ b/components/autofill/core/browser/data_model/autofill_profile_comparator.cc
@@ -187,7 +187,6 @@ FieldTypeSet GetUserVisibleTypes() { static const FieldTypeSet user_visible_type = { NAME_FULL, - NAME_HONORIFIC_PREFIX, ADDRESS_HOME_STREET_ADDRESS, ADDRESS_HOME_CITY, ADDRESS_HOME_DEPENDENT_LOCALITY,
diff --git a/components/autofill/core/browser/data_model/autofill_structured_address_name_unittest.cc b/components/autofill/core/browser/data_model/autofill_structured_address_name_unittest.cc index 0414949..eb9fd8198 100644 --- a/components/autofill/core/browser/data_model/autofill_structured_address_name_unittest.cc +++ b/components/autofill/core/browser/data_model/autofill_structured_address_name_unittest.cc
@@ -30,7 +30,6 @@ // A test record that contains all entries of the hybrid-structure name tree. struct NameParserTestRecord { std::string full; - std::string honorific; std::string first; std::string middle; std::string last; @@ -51,7 +50,6 @@ // Function to test the parsing of a name from the full (unstructured) // representation into its subcomponents. void TestNameParsing(const std::u16string& full, - const std::u16string& honorific, const std::u16string& first, const std::u16string& middle, const std::u16string& last, @@ -133,115 +131,107 @@ NameParserTestRecord name_tests[] = { // Name starting with a last name, followed by a comma and the first and // middle name. - {"Mueller, Hans Peter", "", "Hans", "Peter", "Mueller", "", "", + {"Mueller, Hans Peter", "Hans", "Peter", "Mueller", "", "", "Mueller"}, + // Same with multiple middle names. + {"Mueller, Hans Walter Peter", "Hans", "Walter Peter", "Mueller", "", "", "Mueller"}, - // Same with an honorific prefix an multiple middle names. - // middle name. - {"Prof. Mueller, Hans Walter Peter", "Prof.", "Hans", "Walter Peter", - "Mueller", "", "", "Mueller"}, // Name that includes a hyphen. - {"Dr. Hans-Peter Mueller", "Dr.", "Hans-Peter", "", "Mueller", "", "", - "Mueller"}, - // Name with honorific prefix but without a middle name. - {"Prof. Albert Einstein", "Prof.", "Albert", "", "Einstein", "", "", - "Einstein"}, - // Name with honorific prefix and a middle name. - {"Dr. Richard Phillips Feynman", "Dr.", "Richard", "Phillips", "Feynman", + {"Hans-Peter Mueller", "Hans-Peter", "", "Mueller", "", "", "Mueller"}, + // Name but without a middle name. + {"Albert Einstein", "Albert", "", "Einstein", "", "", "Einstein"}, + // Name and a middle name. + {"Richard Phillips Feynman", "Richard", "Phillips", "Feynman", "", "", + "Feynman"}, + // Name and multiple middle names. + {"Richard Phillips Isaac Feynman", "Richard", "Phillips Isaac", "Feynman", "", "", "Feynman"}, - // Name with honorific prefix and multiple middle name. - {"Dr. Richard Phillips Isaac Feynman", "Dr.", "Richard", "Phillips Isaac", - "Feynman", "", "", "Feynman"}, // Hispanic/Latinx name with two surname and a conjunction. - {"Pablo Diego Ruiz y Picasso", "", "Pablo Diego", "", "Ruiz y Picasso", + {"Pablo Diego Ruiz y Picasso", "Pablo Diego", "", "Ruiz y Picasso", "Ruiz", "y", "Picasso"}, - // Hispanic/Latinx name with two surname and a conjunction with an - // honorific prefix. - {"Mr. Pablo Ruiz y Picasso", "Mr.", "Pablo", "", "Ruiz y Picasso", "Ruiz", - "y", "Picasso"}, + // Hispanic/Latinx name with two surname and a conjunction. + {"Pablo Ruiz y Picasso", "Pablo", "", "Ruiz y Picasso", "Ruiz", "y", + "Picasso"}, // Name with multiple middle names. - {"George Walker Junior Bush", "", "George", "Walker Junior", "Bush", "", - "", "Bush"}, + {"George Walker Junior Bush", "George", "Walker Junior", "Bush", "", "", + "Bush"}, // Name with a middle name initial. - {"George W Bush", "", "George", "W", "Bush", "", "", "Bush"}, + {"George W Bush", "George", "W", "Bush", "", "", "Bush"}, // Name with a middle name initial. - {"George W. Bush", "", "George", "W.", "Bush", "", "", "Bush"}, + {"George W. Bush", "George", "W.", "Bush", "", "", "Bush"}, // Name with a single middle name. - {"George Walker Bush", "", "George", "Walker", "Bush", "", "", "Bush"}, + {"George Walker Bush", "George", "Walker", "Bush", "", "", "Bush"}, // Name without names. - {"George Bush", "", "George", "", "Bush", "", "", "Bush"}, + {"George Bush", "George", "", "Bush", "", "", "Bush"}, // Three character Korean name wit two-character surname. - {"欧阳龙", "", "龙", "", "欧阳", "", "", "欧阳"}, + {"欧阳龙", "龙", "", "欧阳", "", "", "欧阳"}, // Four character Korean name wit two-character surname. - {"欧阳龙龙", "", "龙龙", "", "欧阳", "", "", "欧阳"}, + {"欧阳龙龙", "龙龙", "", "欧阳", "", "", "欧阳"}, // Full name including given, middle and family names. - {"Homer Jay Simpson", "", "Homer", "Jay", "Simpson", "", "", "Simpson"}, + {"Homer Jay Simpson", "Homer", "Jay", "Simpson", "", "", "Simpson"}, // No middle name. - {"Moe Szyslak", "", "Moe", "", "Szyslak", "", "", "Szyslak"}, - // Common name prefixes parsed into the honorific prefix. - {"Reverend Timothy Lovejoy", "Reverend", "Timothy", "", "Lovejoy", "", "", - "Lovejoy"}, + {"Moe Szyslak", "Moe", "", "Szyslak", "", "", "Szyslak"}, + // Common name. + {"Timothy Lovejoy", "Timothy", "", "Lovejoy", "", "", "Lovejoy"}, // Only a last name with a preposition. - {"von Gutenberg", "", "", "", "von Gutenberg", "", "", "von Gutenberg"}, + {"von Gutenberg", "", "", "von Gutenberg", "", "", "von Gutenberg"}, // Common name suffixes removed. - {"John Frink Phd", "", "John", "", "Frink", "", "", "Frink"}, + {"John Frink Phd", "John", "", "Frink", "", "", "Frink"}, // Only lase name with common name suffixes removed. - {"Frink Phd", "", "", "", "Frink", "", "", "Frink"}, + {"Frink Phd", "", "", "Frink", "", "", "Frink"}, // Since "Ma" is a common last name, "Ma" was removed from the suffixes. - {"John Ma", "", "John", "", "Ma", "", "", "Ma"}, + {"John Ma", "John", "", "Ma", "", "", "Ma"}, // Common family name prefixes not considered a middle name. - {"Milhouse Van Houten", "", "Milhouse", "", "Van Houten", "", "", + {"Milhouse Van Houten", "Milhouse", "", "Van Houten", "", "", "Van Houten"}, // Chinese name, Unihan - {"孫 德明", "", "德明", "", "孫", "", "", "孫"}, + {"孫 德明", "德明", "", "孫", "", "", "孫"}, // Chinese name, Unihan, 'IDEOGRAPHIC SPACE' - {"孫 德明", "", "德明", "", "孫", "", "", "孫"}, + {"孫 德明", "德明", "", "孫", "", "", "孫"}, // Korean name, Hangul - {"홍 길동", "", "길동", "", "홍", "", "", "홍"}, + {"홍 길동", "길동", "", "홍", "", "", "홍"}, // Japanese name, Unihan - {"山田 貴洋", "", "貴洋", "", "山田", "", "", "山田"}, + {"山田 貴洋", "貴洋", "", "山田", "", "", "山田"}, // In Japanese, foreign names use 'KATAKANA MIDDLE DOT' (U+30FB) as a // separator. There is no consensus for the ordering. For now, we use // the same ordering as regular Japanese names ("last・first"). // Foreign name in Japanese, Katakana - {"ゲイツ・ビル", "", "ビル", "", "ゲイツ", "", "", "ゲイツ"}, + {"ゲイツ・ビル", "ビル", "", "ゲイツ", "", "", "ゲイツ"}, // 'KATAKANA MIDDLE DOT' is occasionally typo-ed as 'MIDDLE DOT' (U+00B7). - {"ゲイツ·ビル", "", "ビル", "", "ゲイツ", "", "", "ゲイツ"}, + {"ゲイツ·ビル", "ビル", "", "ゲイツ", "", "", "ゲイツ"}, // CJK names don't usually have a space in the middle, but most of the // time, the surname is only one character (in Chinese & Korean). - {"최성훈", "", "성훈", "", "최", "", "", "최"}, // Korean name, Hangul + {"최성훈", "성훈", "", "최", "", "", "최"}, // Korean name, Hangul // (Simplified) Chinese name, Unihan - {"刘翔", "", "翔", "", "刘", "", "", "刘"}, + {"刘翔", "翔", "", "刘", "", "", "刘"}, // (Traditional) Chinese name, Unihan - {"劉翔", "", "翔", "", "劉", "", "", "劉"}, + {"劉翔", "翔", "", "劉", "", "", "劉"}, // Korean name, Hangul - {"남궁도", "", "도", "", "남궁", "", "", "남궁"}, + {"남궁도", "도", "", "남궁", "", "", "남궁"}, // Korean name, Hangul - {"황보혜정", "", "혜정", "", "황보", "", "", "황보"}, + {"황보혜정", "혜정", "", "황보", "", "", "황보"}, // (Traditional) Chinese name, Unihan - {"歐陽靖", "", "靖", "", "歐陽", "", "", "歐陽"}, + {"歐陽靖", "靖", "", "歐陽", "", "", "歐陽"}, // In Korean, some 2-character surnames are rare/ambiguous, like "강전": // "강" is a common surname, and "전" can be part of a given name. In // those cases, we assume it's 1/2 for 3-character names, or 2/2 for // 4-character names. // Korean name, Hangul - {"강전희", "", "전희", "", "강", "", "", "강"}, + {"강전희", "전희", "", "강", "", "", "강"}, // Korean name, Hangul - {"황목치승", "", "치승", "", "황목", "", "", "황목"}, + {"황목치승", "치승", "", "황목", "", "", "황목"}, // It occasionally happens that a full name is 2 characters, 1/1. // Korean name, Hangul - {"이도", "", "도", "", "이", "", "", "이"}, + {"이도", "도", "", "이", "", "", "이"}, // Chinese name, Unihan - {"孫文", "", "文", "", "孫", "", "", "孫"}}; + {"孫文", "文", "", "孫", "", "", "孫"}}; for (const auto& name_test : name_tests) { - TestNameParsing(base::UTF8ToUTF16(name_test.full), - base::UTF8ToUTF16(name_test.honorific), - base::UTF8ToUTF16(name_test.first), - base::UTF8ToUTF16(name_test.middle), - base::UTF8ToUTF16(name_test.last), - base::UTF8ToUTF16(name_test.last_first), - base::UTF8ToUTF16(name_test.last_conjunction), - base::UTF8ToUTF16(name_test.last_second)); + TestNameParsing( + base::UTF8ToUTF16(name_test.full), base::UTF8ToUTF16(name_test.first), + base::UTF8ToUTF16(name_test.middle), base::UTF8ToUTF16(name_test.last), + base::UTF8ToUTF16(name_test.last_first), + base::UTF8ToUTF16(name_test.last_conjunction), + base::UTF8ToUTF16(name_test.last_second)); } } @@ -554,8 +544,6 @@ // a correctly observed structure of title, first, middle, last. original.SetValueForType(NAME_FULL, u"Mr Pablo Diego Ruiz y Picasso", VerificationStatus::kUserVerified); - original.SetValueForType(NAME_HONORIFIC_PREFIX, u"Mr", - VerificationStatus::kObserved); original.SetValueForType(NAME_FIRST, u"Pablo Diego", VerificationStatus::kObserved); original.SetValueForType(NAME_MIDDLE, u"", VerificationStatus::kObserved);
diff --git a/components/autofill/core/browser/data_model/autofill_structured_address_regex_provider.cc b/components/autofill/core/browser/data_model/autofill_structured_address_regex_provider.cc index c4c2570..2f130b4 100644 --- a/components/autofill/core/browser/data_model/autofill_structured_address_regex_provider.cc +++ b/components/autofill/core/browser/data_model/autofill_structured_address_regex_provider.cc
@@ -478,20 +478,6 @@ }, CaptureOptions{.quantifier = MatchQuantifier::kOptional})}); } - -// Returns a regular expression to parse a name with a honorific into the prefix -// and the full name. -std::string ParsePrefixedName() { - return CaptureTypeWithPattern( - NAME_FULL_WITH_HONORIFIC_PREFIX, - {CaptureTypeWithPattern( - NAME_HONORIFIC_PREFIX, kHonorificPrefixRe, - CaptureOptions{.quantifier = MatchQuantifier::kOptional}), - CaptureTypeWithPattern( - NAME_FULL, ".+", - CaptureOptions{.quantifier = MatchQuantifier::kRequired})}); -} - } // namespace StructuredAddressesRegExProvider::StructuredAddressesRegExProvider() = default; @@ -545,8 +531,6 @@ return ParseStreetNameHouseNumberSuffixedFloorAndAppartmentExpression(); case RegEx::kParseStreetNameHouseNumber: return ParseStreetNameHouseNumberExpression(); - case RegEx::kParsePrefixedName: - return ParsePrefixedName(); } NOTREACHED(); }
diff --git a/components/autofill/core/browser/data_model/autofill_structured_address_regex_provider.h b/components/autofill/core/browser/data_model/autofill_structured_address_regex_provider.h index a1288390..7ad8dd2 100644 --- a/components/autofill/core/browser/data_model/autofill_structured_address_regex_provider.h +++ b/components/autofill/core/browser/data_model/autofill_structured_address_regex_provider.h
@@ -37,8 +37,7 @@ kParseStreetNameHouseNumberSuffixedFloor, kParseStreetNameHouseNumberSuffixedFloorAndApartmentRe, kParseHouseNumberStreetName, - kParsePrefixedName, - kLastRegEx = kParseLastNameIntoSecondLastName, + kLastRegEx = kParseHouseNumberStreetName, }; // This singleton class builds and caches the regular expressions for value
diff --git a/components/autofill/core/browser/data_model/autofill_structured_address_unittest.cc b/components/autofill/core/browser/data_model/autofill_structured_address_unittest.cc index e1e13bc..927529b 100644 --- a/components/autofill/core/browser/data_model/autofill_structured_address_unittest.cc +++ b/components/autofill/core/browser/data_model/autofill_structured_address_unittest.cc
@@ -1638,6 +1638,140 @@ } } +TEST_F(AutofillI18nStructuredAddress, ParseStreetAddressDE) { + base::test::ScopedFeatureList features_{features::kAutofillUseDEAddressModel}; + std::vector<AddressLineParsingTestCase> test_cases = { + // Examples for Germany. + {.country_code = "DE", + .street_address = "Implerstr. 73a Obergeschoss 2 Wohnung 3", + .street_location = "Implerstr. 73a", + .street_name = "Implerstr.", + .house_number = "73a", + .overflow = "Obergeschoss 2 Wohnung 3"}, + {.country_code = "DE", + .street_address = "Implerstr. 73 OG 2", + .street_location = "Implerstr. 73", + .street_name = "Implerstr.", + .house_number = "73", + .overflow = "OG 2"}, + {.country_code = "DE", + .street_address = "Implerstr. nummer 73 2. OG", + .street_location = "Implerstr. nummer 73", + .street_name = "Implerstr.", + .house_number = "73", + .overflow = "2. OG"}, + {.country_code = "DE", + .street_address = "Implerstr. 73 abcdefg", + .street_location = "Implerstr. 73", + .street_name = "Implerstr.", + .house_number = "73", + .overflow = "abcdefg"}, + }; + + for (const auto& test_case : test_cases) { + AddressComponentsStore address = + i18n_model_definition::CreateAddressComponentModel( + AddressCountryCode(test_case.country_code)); + + const AddressComponentTestValues test_value = { + {.type = ADDRESS_HOME_STREET_ADDRESS, + .value = test_case.street_address, + .status = VerificationStatus::kObserved}}; + + SetTestValues(address.Root(), test_value); + + const AddressComponentTestValues expectation = { + {.type = ADDRESS_HOME_COUNTRY, + .value = test_case.country_code, + .status = VerificationStatus::kObserved}, + {.type = ADDRESS_HOME_STREET_ADDRESS, + .value = test_case.street_address, + .status = VerificationStatus::kObserved}, + {.type = ADDRESS_HOME_STREET_LOCATION, + .value = test_case.street_location, + .status = VerificationStatus::kParsed}, + {.type = ADDRESS_HOME_STREET_NAME, + .value = test_case.street_name, + .status = VerificationStatus::kParsed}, + {.type = ADDRESS_HOME_HOUSE_NUMBER, + .value = test_case.house_number, + .status = VerificationStatus::kParsed}, + {.type = ADDRESS_HOME_OVERFLOW, + .value = test_case.overflow, + .status = VerificationStatus::kParsed}, + }; + VerifyTestValues(address.Root(), expectation); + } +} + +TEST_F(AutofillI18nStructuredAddress, ParseStreetLocationDE) { + base::test::ScopedFeatureList features_{features::kAutofillUseDEAddressModel}; + std::vector<AddressLineParsingTestCase> test_cases = { + // Examples for Germany. + {.country_code = "DE", + .street_location = "Erika-Mann-Str. 3", + .street_name = "Erika-Mann-Str.", + .house_number = "3"}, + {.country_code = "DE", + .street_location = "Implerstr. 73a", + .street_name = "Implerstr.", + .house_number = "73a"}, + {.country_code = "DE", + .street_location = "Implerstr. no 73a", + .street_name = "Implerstr.", + .house_number = "73a"}, + {.country_code = "DE", + .street_location = "Implerstr. °73a", + .street_name = "Implerstr.", + .house_number = "73a"}, + {.country_code = "DE", + .street_location = "Implerstr. Nummer 73a", + .street_name = "Implerstr.", + .house_number = "73a"}, + {.country_code = "DE", + .street_location = "Implerstr. 10/12", + .street_name = "Implerstr.", + .house_number = "10/12"}, + {.country_code = "DE", + .street_location = "Implerstr. Nummer 10 - 12", + .street_name = "Implerstr.", + .house_number = "10 - 12"}, + {.country_code = "DE", + .street_location = "Implerstr. 73 a", + .street_name = "Implerstr.", + .house_number = "73 a"}, + }; + + for (const auto& test_case : test_cases) { + AddressComponentsStore address = + i18n_model_definition::CreateAddressComponentModel( + AddressCountryCode(test_case.country_code)); + + const AddressComponentTestValues test_value = { + {.type = ADDRESS_HOME_STREET_LOCATION, + .value = test_case.street_location, + .status = VerificationStatus::kObserved}}; + + SetTestValues(address.Root(), test_value); + + const AddressComponentTestValues expectation = { + {.type = ADDRESS_HOME_COUNTRY, + .value = test_case.country_code, + .status = VerificationStatus::kObserved}, + {.type = ADDRESS_HOME_STREET_LOCATION, + .value = test_case.street_location, + .status = VerificationStatus::kObserved}, + {.type = ADDRESS_HOME_STREET_NAME, + .value = test_case.street_name, + .status = VerificationStatus::kParsed}, + {.type = ADDRESS_HOME_HOUSE_NUMBER, + .value = test_case.house_number, + .status = VerificationStatus::kParsed}, + }; + VerifyTestValues(address.Root(), expectation); + } +} + } // namespace } // namespace autofill
diff --git a/components/autofill/core/browser/form_parsing/address_field_parser_unittest.cc b/components/autofill/core/browser/form_parsing/address_field_parser_unittest.cc index da1d896..8134767 100644 --- a/components/autofill/core/browser/form_parsing/address_field_parser_unittest.cc +++ b/components/autofill/core/browser/form_parsing/address_field_parser_unittest.cc
@@ -15,54 +15,57 @@ namespace autofill { -class AddressFieldTest - : public FormFieldTestBase, +class AddressFieldParserTest + : public FormFieldParserTestBase, public ::testing::TestWithParam<PatternProviderFeatureState> { public: - AddressFieldTest() : FormFieldTestBase(GetParam()) {} - AddressFieldTest(const AddressFieldTest&) = delete; - AddressFieldTest& operator=(const AddressFieldTest&) = delete; + AddressFieldParserTest() : FormFieldParserTestBase(GetParam()) {} + AddressFieldParserTest(const AddressFieldParserTest&) = delete; + AddressFieldParserTest& operator=(const AddressFieldParserTest&) = delete; protected: std::unique_ptr<FormFieldParser> Parse(ParsingContext& context, AutofillScanner* scanner) override { return AddressFieldParser::Parse(context, scanner); } + + base::test::ScopedFeatureList default_features{ + features::kAutofillUseI18nAddressModel}; }; INSTANTIATE_TEST_SUITE_P( - AddressFieldTest, - AddressFieldTest, + AddressFieldParserTest, + AddressFieldParserTest, ::testing::ValuesIn(PatternProviderFeatureState::All())); -TEST_P(AddressFieldTest, Empty) { +TEST_P(AddressFieldParserTest, Empty) { ClassifyAndVerify(ParseResult::NOT_PARSED); } -TEST_P(AddressFieldTest, NonParse) { +TEST_P(AddressFieldParserTest, NonParse) { AddTextFormFieldData("", "", UNKNOWN_TYPE); ClassifyAndVerify(ParseResult::NOT_PARSED); } -TEST_P(AddressFieldTest, ParseOneLineAddress) { +TEST_P(AddressFieldParserTest, ParseOneLineAddress) { AddTextFormFieldData("address", "Address", ADDRESS_HOME_LINE1); ClassifyAndVerify(); } -TEST_P(AddressFieldTest, ParseTwoLineAddress) { +TEST_P(AddressFieldParserTest, ParseTwoLineAddress) { AddTextFormFieldData("address", "Address", ADDRESS_HOME_LINE1); AddTextFormFieldData("address2", "Address", ADDRESS_HOME_LINE2); ClassifyAndVerify(); } -TEST_P(AddressFieldTest, ParseThreeLineAddress) { +TEST_P(AddressFieldParserTest, ParseThreeLineAddress) { AddTextFormFieldData("Address1", "Address Line 1", ADDRESS_HOME_LINE1); AddTextFormFieldData("Address1", "Address Line 2", ADDRESS_HOME_LINE2); AddTextFormFieldData("Address1", "Address Line 3", ADDRESS_HOME_LINE3); ClassifyAndVerify(); } -TEST_P(AddressFieldTest, ParseStreetAddressFromTextArea) { +TEST_P(AddressFieldParserTest, ParseStreetAddressFromTextArea) { AddFormFieldData(FormControlType::kTextArea, "address", "Address", ADDRESS_HOME_STREET_ADDRESS); ClassifyAndVerify(); @@ -71,7 +74,7 @@ // Tests that fields are classified as |ADDRESS_HOME_STREET_NAME| and // |ADDRESS_HOME_HOUSE_NUMBER| when they are labeled accordingly and // both are present. -TEST_P(AddressFieldTest, ParseStreetNameAndHouseNumber) { +TEST_P(AddressFieldParserTest, ParseStreetNameAndHouseNumber) { AddTextFormFieldData("street", "Street", ADDRESS_HOME_STREET_NAME); AddTextFormFieldData("house-number", "House number", ADDRESS_HOME_HOUSE_NUMBER); @@ -81,7 +84,8 @@ // Tests that fields are classified as |ADDRESS_HOME_STREET_NAME|, and // |ADDRESS_HOME_HOUSE_NUMBER| |ADDRESS_HOME_APT_NUM| when they are labeled // accordingly and all are present. -TEST_P(AddressFieldTest, ParseStreetNameAndHouseNumberAndApartmentNumber) { +TEST_P(AddressFieldParserTest, + ParseStreetNameAndHouseNumberAndApartmentNumber) { // TODO(crbug.com/1125978): Remove once launched. base::test::ScopedFeatureList enabled; enabled.InitAndEnableFeature( @@ -98,7 +102,7 @@ // Tests that an address field after a |ADDRESS_HOME_STREET_NAME|, // |ADDRESS_HOME_HOUSE_NUMBER| combination is classified as // |ADDRESS_HOME_LINE2| instead of |ADDRESS_HOME_LINE1|. -TEST_P(AddressFieldTest, ParseAsAddressLine2AfterStreetNameNotEnabled) { +TEST_P(AddressFieldParserTest, ParseAsAddressLine2AfterStreetNameNotEnabled) { base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitAndDisableFeature( features::kAutofillStructuredFieldsDisableAddressLines); @@ -108,7 +112,7 @@ ClassifyAndVerify(); } -TEST_P(AddressFieldTest, ParseAsAddressLine2AfterStreetNameEnabled) { +TEST_P(AddressFieldParserTest, ParseAsAddressLine2AfterStreetNameEnabled) { base::test::ScopedFeatureList scoped_feature_list( features::kAutofillStructuredFieldsDisableAddressLines); AddTextFormFieldData("street", "Street", ADDRESS_HOME_STREET_NAME); @@ -120,7 +124,7 @@ // Tests that the field is not classified as |ADDRESS_HOME_STREET_NAME| when // it is labeled accordingly but an adjacent field classified as // |ADDRESS_HOME_HOUSE_NUMBER| is absent. -TEST_P(AddressFieldTest, NotParseStreetNameWithoutHouseNumber) { +TEST_P(AddressFieldParserTest, NotParseStreetNameWithoutHouseNumber) { AddTextFormFieldData("street", "Street", ADDRESS_HOME_LINE1); ClassifyAndVerify(); } @@ -128,14 +132,14 @@ // Tests that the field is not classified as |ADDRESS_HOME_HOUSE_NUMBER| when // it is labeled accordingly but adjacent field classified as // |ADDRESS_HOME_STREET_NAME| is absent. -TEST_P(AddressFieldTest, NotParseHouseNumberWithoutStreetName) { +TEST_P(AddressFieldParserTest, NotParseHouseNumberWithoutStreetName) { AddTextFormFieldData("house-number", "House number", UNKNOWN_TYPE); ClassifyAndVerify(ParseResult::NOT_PARSED); } // Tests that the dependent locality is correctly classified with // an unambiguous field name and label. -TEST_P(AddressFieldTest, ParseDependentLocality) { +TEST_P(AddressFieldParserTest, ParseDependentLocality) { // TODO(crbug.com/1157405): Remove once launched. base::test::ScopedFeatureList enabled; enabled.InitAndEnableFeature( @@ -147,10 +151,10 @@ } // Tests that the landmark is correctly classified. -TEST_P(AddressFieldTest, ParseLandmark) { +TEST_P(AddressFieldParserTest, ParseLandmark) { // TODO(crbug.com/1441904): Remove once launched. - base::test::ScopedFeatureList enabled; - enabled.InitAndEnableFeature(features::kAutofillEnableSupportForLandmark); + base::test::ScopedFeatureList enabled{ + features::kAutofillEnableSupportForLandmark}; AddTextFormFieldData("landmark", "Landmark", ADDRESS_HOME_LANDMARK); ClassifyAndVerify(ParseResult::PARSED, GeoIpCountryCode("BR"), @@ -158,7 +162,7 @@ } // Tests that between streets field is correctly classified. -TEST_P(AddressFieldTest, ParseBetweenStreets) { +TEST_P(AddressFieldParserTest, ParseBetweenStreets) { // TODO(crbug.com/1441904): Remove once launched. base::test::ScopedFeatureList enabled; enabled.InitAndEnableFeature( @@ -171,7 +175,7 @@ } // Tests that multiple between streets field are correctly classified. -TEST_P(AddressFieldTest, ParseBetweenStreetsLines) { +TEST_P(AddressFieldParserTest, ParseBetweenStreetsLines) { // TODO(crbug.com/1441904): Remove once launched. base::test::ScopedFeatureList scoped_feature_list{ features::kAutofillEnableSupportForBetweenStreets}; @@ -199,7 +203,7 @@ } // Tests that address level 2 field is correctly classified. -TEST_P(AddressFieldTest, ParseAdminLevel2) { +TEST_P(AddressFieldParserTest, ParseAdminLevel2) { // TODO(crbug.com/1441904): Remove once launched. base::test::ScopedFeatureList enabled; enabled.InitAndEnableFeature(features::kAutofillEnableSupportForAdminLevel2); @@ -210,7 +214,7 @@ } // Tests that overflow field is correctly classified. -TEST_P(AddressFieldTest, ParseOverflow) { +TEST_P(AddressFieldParserTest, ParseOverflow) { // TODO(crbug.com/1441904): Remove once launched. base::test::ScopedFeatureList enabled( features::kAutofillEnableSupportForAddressOverflow); @@ -221,7 +225,7 @@ } // Tests that overflow field is correctly classified. -TEST_P(AddressFieldTest, ParseOverflowAndLandmark) { +TEST_P(AddressFieldParserTest, ParseOverflowAndLandmark) { // TODO(crbug.com/1441904): Remove once launched. base::test::ScopedFeatureList features; features.InitWithFeatures( @@ -236,28 +240,28 @@ LanguageCode("pt")); } -TEST_P(AddressFieldTest, ParseCity) { +TEST_P(AddressFieldParserTest, ParseCity) { AddTextFormFieldData("city", "City", ADDRESS_HOME_CITY); ClassifyAndVerify(); } -TEST_P(AddressFieldTest, ParseState) { +TEST_P(AddressFieldParserTest, ParseState) { AddTextFormFieldData("state", "State", ADDRESS_HOME_STATE); ClassifyAndVerify(); } -TEST_P(AddressFieldTest, ParseZip) { +TEST_P(AddressFieldParserTest, ParseZip) { AddTextFormFieldData("zip", "Zip", ADDRESS_HOME_ZIP); ClassifyAndVerify(); } -TEST_P(AddressFieldTest, ParseZipFileExtension) { +TEST_P(AddressFieldParserTest, ParseZipFileExtension) { AddTextFormFieldData("filename", "Supported formats: .zip, .rar", UNKNOWN_TYPE); ClassifyAndVerify(ParseResult::NOT_PARSED); } -TEST_P(AddressFieldTest, ParseStateAndZipOneLabel) { +TEST_P(AddressFieldParserTest, ParseStateAndZipOneLabel) { AddTextFormFieldData("state", "State/Province, Zip/Postal Code", ADDRESS_HOME_STATE); AddTextFormFieldData("zip", "State/Province, Zip/Postal Code", @@ -265,19 +269,19 @@ ClassifyAndVerify(); } -TEST_P(AddressFieldTest, ParseCountry) { +TEST_P(AddressFieldParserTest, ParseCountry) { AddTextFormFieldData("country", "Country", ADDRESS_HOME_COUNTRY); ClassifyAndVerify(); } -TEST_P(AddressFieldTest, ParseCompany) { +TEST_P(AddressFieldParserTest, ParseCompany) { AddTextFormFieldData("company", "Company", COMPANY_NAME); ClassifyAndVerify(); } // Tests that the dependent locality, city, state, country and zip-code // fields are correctly classfied with unambiguous field names and labels. -TEST_P(AddressFieldTest, +TEST_P(AddressFieldParserTest, ParseDependentLocalityCityStateCountryZipcodeTogether) { // TODO(crbug.com/1157405): Remove once launched. base::test::ScopedFeatureList enabled; @@ -308,13 +312,13 @@ // Tests that the field is classified as |ADDRESS_HOME_COUNTRY| when the field // contains 'region'. -TEST_P(AddressFieldTest, ParseAmbiguousCountryState) { +TEST_P(AddressFieldParserTest, ParseAmbiguousCountryState) { // The strings are ambiguous between country and state. Country should be // preferred. AddTextFormFieldData("country/region", "asdf", ADDRESS_HOME_COUNTRY); ClassifyAndVerify(); } -TEST_P(AddressFieldTest, ParseAmbiguousCountryState2) { +TEST_P(AddressFieldParserTest, ParseAmbiguousCountryState2) { // The strings are ambiguous between country and state. Country should be // preferred. AddTextFormFieldData("asdf", "country/region", ADDRESS_HOME_COUNTRY); @@ -324,7 +328,7 @@ // Tests that city and state fields are classified correctly when their names // contain keywords for different types. This is achieved by giving the priority // to the label over the name for pages in Turkish. -TEST_P(AddressFieldTest, ParseTurkishCityStateWithLabelPrecedence) { +TEST_P(AddressFieldParserTest, ParseTurkishCityStateWithLabelPrecedence) { // TODO(crbug.com/1156315): Remove once launched. base::test::ScopedFeatureList enabled; enabled.InitAndEnableFeature( @@ -337,7 +341,7 @@ } // Tests that address name is not misclassified as address. -TEST_P(AddressFieldTest, NotParseAddressName_TR) { +TEST_P(AddressFieldParserTest, NotParseAddressName_TR) { AddTextFormFieldData("address", "Adres Başlığı", UNKNOWN_TYPE); ClassifyAndVerify(ParseResult::NOT_PARSED, GeoIpCountryCode("TR"), LanguageCode("tr")); @@ -345,7 +349,7 @@ // Tests that an address name does not lead to a classification even if the // field mentions the word city. -TEST_P(AddressFieldTest, NotParseAddressName_BR) { +TEST_P(AddressFieldParserTest, NotParseAddressName_BR) { AddTextFormFieldData("-", "nombre de la dirección, city", UNKNOWN_TYPE); ClassifyAndVerify(ParseResult::NOT_PARSED, GeoIpCountryCode("BR"), LanguageCode("es")); @@ -353,7 +357,7 @@ // Tests that the address components sequence in a label is classified // as |ADDRESS_HOME_LINE1|. -TEST_P(AddressFieldTest, ParseAddressComponentsSequenceAsAddressLine1) { +TEST_P(AddressFieldParserTest, ParseAddressComponentsSequenceAsAddressLine1) { AddTextFormFieldData("detail", "Улица, дом, квартира", ADDRESS_HOME_LINE1); ClassifyAndVerify(ParseResult::PARSED, GeoIpCountryCode("RU"), LanguageCode("ru")); @@ -361,7 +365,7 @@ // Tests that the address components sequence in a label is classified // as |ADDRESS_HOME_STREET_ADDRESS|. -TEST_P(AddressFieldTest, ParseAddressComponentsSequenceAsStreetAddress) { +TEST_P(AddressFieldParserTest, ParseAddressComponentsSequenceAsStreetAddress) { AddFormFieldData(FormControlType::kTextArea, "detail", "Mahalle, sokak, cadde ve diğer bilgilerinizi girin", ADDRESS_HOME_STREET_ADDRESS);
diff --git a/components/autofill/core/browser/form_parsing/birthdate_field_parser_unittest.cc b/components/autofill/core/browser/form_parsing/birthdate_field_parser_unittest.cc index 8ba099a..8235521c 100644 --- a/components/autofill/core/browser/form_parsing/birthdate_field_parser_unittest.cc +++ b/components/autofill/core/browser/form_parsing/birthdate_field_parser_unittest.cc
@@ -39,13 +39,13 @@ } // namespace -class BirthdateFieldTest - : public FormFieldTestBase, +class BirthdateFieldParserTest + : public FormFieldParserTestBase, public testing::TestWithParam<PatternProviderFeatureState> { public: - BirthdateFieldTest() : FormFieldTestBase(GetParam()) {} - BirthdateFieldTest(const BirthdateFieldTest&) = delete; - BirthdateFieldTest& operator=(const BirthdateFieldTest&) = delete; + BirthdateFieldParserTest() : FormFieldParserTestBase(GetParam()) {} + BirthdateFieldParserTest(const BirthdateFieldParserTest&) = delete; + BirthdateFieldParserTest& operator=(const BirthdateFieldParserTest&) = delete; protected: std::unique_ptr<FormFieldParser> Parse(ParsingContext& context, @@ -55,25 +55,25 @@ }; INSTANTIATE_TEST_SUITE_P( - BirthdateFieldTest, - BirthdateFieldTest, + BirthdateFieldParserTest, + BirthdateFieldParserTest, ::testing::ValuesIn(PatternProviderFeatureState::All())); -TEST_P(BirthdateFieldTest, ParseDMY) { +TEST_P(BirthdateFieldParserTest, ParseDMY) { AddSelectOneFormFieldData("", "", GetDays(), BIRTHDATE_DAY); AddSelectOneFormFieldData("", "", GetMonths(), BIRTHDATE_MONTH); AddSelectOneFormFieldData("", "", GetYears(), BIRTHDATE_4_DIGIT_YEAR); ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(BirthdateFieldTest, ParseYMD) { +TEST_P(BirthdateFieldParserTest, ParseYMD) { AddSelectOneFormFieldData("", "", GetYears(), BIRTHDATE_4_DIGIT_YEAR); AddSelectOneFormFieldData("", "", GetMonths(), BIRTHDATE_MONTH); AddSelectOneFormFieldData("", "", GetDays(), BIRTHDATE_DAY); ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(BirthdateFieldTest, DefaultOptions) { +TEST_P(BirthdateFieldParserTest, DefaultOptions) { auto days = GetDays(); days.insert(days.begin(), {u"", u"Day"}); auto months = GetMonths(); @@ -86,7 +86,7 @@ ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(BirthdateFieldTest, LeadingZeros) { +TEST_P(BirthdateFieldParserTest, LeadingZeros) { // Replace the first 9 day entries with 01-09. auto days = GetDays(); ASSERT_GE(days.size(), 9u); @@ -100,7 +100,7 @@ ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(BirthdateFieldTest, TooManyOptions) { +TEST_P(BirthdateFieldParserTest, TooManyOptions) { auto days = GetDays(); days.insert(days.begin(), {u"", u"Hello"}); days.insert(days.begin(), {u"", u"World"}); @@ -111,13 +111,13 @@ ClassifyAndVerify(ParseResult::NOT_PARSED); } -TEST_P(BirthdateFieldTest, MissingYear) { +TEST_P(BirthdateFieldParserTest, MissingYear) { AddSelectOneFormFieldData("", "", GetDays(), BIRTHDATE_DAY); AddSelectOneFormFieldData("", "", GetMonths(), BIRTHDATE_MONTH); ClassifyAndVerify(ParseResult::NOT_PARSED); } -TEST_P(BirthdateFieldTest, IncompleteMonth) { +TEST_P(BirthdateFieldParserTest, IncompleteMonth) { auto months = GetMonths(); months.resize(5); AddSelectOneFormFieldData("", "", GetDays(), BIRTHDATE_DAY);
diff --git a/components/autofill/core/browser/form_parsing/credit_card_field_parser.h b/components/autofill/core/browser/form_parsing/credit_card_field_parser.h index 539aac3..a1307ea 100644 --- a/components/autofill/core/browser/form_parsing/credit_card_field_parser.h +++ b/components/autofill/core/browser/form_parsing/credit_card_field_parser.h
@@ -79,7 +79,7 @@ void AddClassifications(FieldCandidatesMap& field_candidates) const override; private: - friend class CreditCardFieldTestBase; + friend class CreditCardFieldParserTestBase; // Returns true if |scanner| points to a field that looks like a month // <select>.
diff --git a/components/autofill/core/browser/form_parsing/credit_card_field_parser_unittest.cc b/components/autofill/core/browser/form_parsing/credit_card_field_parser_unittest.cc index 30c074d4..c567aa6 100644 --- a/components/autofill/core/browser/form_parsing/credit_card_field_parser_unittest.cc +++ b/components/autofill/core/browser/form_parsing/credit_card_field_parser_unittest.cc
@@ -79,13 +79,14 @@ return options; } -class CreditCardFieldTestBase : public FormFieldTestBase { +class CreditCardFieldParserTestBase : public FormFieldParserTestBase { public: - explicit CreditCardFieldTestBase( + explicit CreditCardFieldParserTestBase( PatternProviderFeatureState pattern_provider_feature_state) - : FormFieldTestBase(pattern_provider_feature_state) {} - CreditCardFieldTestBase(const CreditCardFieldTestBase&) = delete; - CreditCardFieldTestBase& operator=(const CreditCardFieldTestBase&) = delete; + : FormFieldParserTestBase(pattern_provider_feature_state) {} + CreditCardFieldParserTestBase(const CreditCardFieldParserTestBase&) = delete; + CreditCardFieldParserTestBase& operator=( + const CreditCardFieldParserTestBase&) = delete; protected: std::unique_ptr<FormFieldParser> Parse(ParsingContext& context, @@ -116,43 +117,44 @@ base::test::ScopedFeatureList scoped_feature_list_; }; -class CreditCardFieldTest - : public CreditCardFieldTestBase, +class CreditCardFieldParserTest + : public CreditCardFieldParserTestBase, public ::testing::TestWithParam<PatternProviderFeatureState> { public: - CreditCardFieldTest() : CreditCardFieldTestBase(GetParam()) {} - CreditCardFieldTest(const CreditCardFieldTest&) = delete; - CreditCardFieldTest& operator=(const CreditCardFieldTest&) = delete; + CreditCardFieldParserTest() : CreditCardFieldParserTestBase(GetParam()) {} + CreditCardFieldParserTest(const CreditCardFieldParserTest&) = delete; + CreditCardFieldParserTest& operator=(const CreditCardFieldParserTest&) = + delete; }; -INSTANTIATE_TEST_SUITE_P(CreditCardFieldTest, - CreditCardFieldTest, +INSTANTIATE_TEST_SUITE_P(CreditCardFieldParserTest, + CreditCardFieldParserTest, testing::ValuesIn(PatternProviderFeatureState::All())); -TEST_P(CreditCardFieldTest, Empty) { +TEST_P(CreditCardFieldParserTest, Empty) { ClassifyAndVerify(ParseResult::NOT_PARSED); } -TEST_P(CreditCardFieldTest, NonParse) { +TEST_P(CreditCardFieldParserTest, NonParse) { AddTextFormFieldData("", "", UNKNOWN_TYPE); ClassifyAndVerify(ParseResult::NOT_PARSED); } -TEST_P(CreditCardFieldTest, ParseCreditCardNoNumber) { +TEST_P(CreditCardFieldParserTest, ParseCreditCardNoNumber) { AddTextFormFieldData("ccmonth", "Exp Month", UNKNOWN_TYPE); AddTextFormFieldData("ccyear", "Exp Year", UNKNOWN_TYPE); ClassifyAndVerify(ParseResult::NOT_PARSED); } -TEST_P(CreditCardFieldTest, ParseCreditCardNoDate) { +TEST_P(CreditCardFieldParserTest, ParseCreditCardNoDate) { AddTextFormFieldData("card_number", "Card Number", UNKNOWN_TYPE); ClassifyAndVerify(ParseResult::NOT_PARSED); } -TEST_P(CreditCardFieldTest, ParseMiniumCreditCard) { +TEST_P(CreditCardFieldParserTest, ParseMiniumCreditCard) { AddTextFormFieldData("card_number", "Card Number", CREDIT_CARD_NUMBER); AddTextFormFieldData("ccmonth", "Exp Month", CREDIT_CARD_EXP_MONTH); AddTextFormFieldData("ccyear", "Exp Year", CREDIT_CARD_EXP_4_DIGIT_YEAR); @@ -161,7 +163,7 @@ } // Ensure that a placeholder hint for a 2-digit year is respected -TEST_P(CreditCardFieldTest, ParseMiniumCreditCardWith2DigitYearHint) { +TEST_P(CreditCardFieldParserTest, ParseMiniumCreditCardWith2DigitYearHint) { base::test::ScopedFeatureList scoped_features{ features::kAutofillEnableExpirationDateImprovements}; AddTextFormFieldData("card_number", "Card Number", CREDIT_CARD_NUMBER); @@ -172,7 +174,7 @@ } // Ensure that a max-length can trump an incorrect 4-digit placeholder hint. -TEST_P(CreditCardFieldTest, ParseMiniumCreditCardWithMaxLength) { +TEST_P(CreditCardFieldParserTest, ParseMiniumCreditCardWithMaxLength) { base::test::ScopedFeatureList scoped_features{ features::kAutofillEnableExpirationDateImprovements}; AddTextFormFieldData("card_number", "Card Number", CREDIT_CARD_NUMBER); @@ -191,13 +193,13 @@ }; class CreditCardFieldYearTest - : public CreditCardFieldTestBase, + : public CreditCardFieldParserTestBase, public testing::TestWithParam<std::tuple<PatternProviderFeatureState, CreditCardFieldYearTestCase, bool>> { public: CreditCardFieldYearTest() - : CreditCardFieldTestBase(std::get<0>(GetParam())) {} + : CreditCardFieldParserTestBase(std::get<0>(GetParam())) {} bool with_noise() const { return std::get<1>(GetParam()).with_noise; } @@ -237,7 +239,7 @@ } INSTANTIATE_TEST_SUITE_P( - CreditCardFieldTest, + CreditCardFieldParserTest, CreditCardFieldYearTest, testing::Combine( testing::ValuesIn(PatternProviderFeatureState::All()), @@ -248,7 +250,7 @@ CreditCardFieldYearTestCase{true, CREDIT_CARD_EXP_4_DIGIT_YEAR}), testing::Bool())); -TEST_P(CreditCardFieldTest, ParseFullCreditCard) { +TEST_P(CreditCardFieldParserTest, ParseFullCreditCard) { AddTextFormFieldData("name_on_card", "Name on Card", CREDIT_CARD_NAME_FULL); AddTextFormFieldData("card_number", "Card Number", CREDIT_CARD_NUMBER); AddTextFormFieldData("ccmonth", "Exp Month", CREDIT_CARD_EXP_MONTH); @@ -261,7 +263,7 @@ ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(CreditCardFieldTest, ParseExpMonthYear) { +TEST_P(CreditCardFieldParserTest, ParseExpMonthYear) { AddTextFormFieldData("name_on_card", "Name on Card", CREDIT_CARD_NAME_FULL); AddTextFormFieldData("card_number", "Card Number", CREDIT_CARD_NUMBER); AddTextFormFieldData("ExpDate", "ExpDate Month / Year", @@ -272,7 +274,7 @@ ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(CreditCardFieldTest, ParseExpMonthYear2) { +TEST_P(CreditCardFieldParserTest, ParseExpMonthYear2) { AddTextFormFieldData("name_on_card", "Name on Card", CREDIT_CARD_NAME_FULL); AddTextFormFieldData("card_number", "Card Number", CREDIT_CARD_NUMBER); AddTextFormFieldData("ExpDate", "Expiration date Month / Year", @@ -283,7 +285,7 @@ ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(CreditCardFieldTest, ParseGiftCard) { +TEST_P(CreditCardFieldParserTest, ParseGiftCard) { AddTextFormFieldData("name_on_card", "Name on Card", CREDIT_CARD_NAME_FULL); AddTextFormFieldData("card_number", "Card Number", CREDIT_CARD_NUMBER); AddTextFormFieldData("gift.certificate", "Gift certificate", UNKNOWN_TYPE); @@ -300,11 +302,12 @@ }; class ParseExpFieldTest - : public CreditCardFieldTestBase, + : public CreditCardFieldParserTestBase, public testing::TestWithParam< std::tuple<PatternProviderFeatureState, ParseExpFieldTestCase>> { public: - ParseExpFieldTest() : CreditCardFieldTestBase(std::get<0>(GetParam())) {} + ParseExpFieldTest() + : CreditCardFieldParserTestBase(std::get<0>(GetParam())) {} const ParseExpFieldTestCase& test_case() const { return std::get<1>(GetParam()); @@ -336,7 +339,7 @@ } INSTANTIATE_TEST_SUITE_P( - CreditCardFieldTest, + CreditCardFieldParserTest, ParseExpFieldTest, testing::Combine( testing::ValuesIn(PatternProviderFeatureState::All()), @@ -511,14 +514,14 @@ "Expiration Date (MM/YYYY)", 5, CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR}))); -TEST_P(CreditCardFieldTest, ParseCreditCardHolderNameWithCCFullName) { +TEST_P(CreditCardFieldParserTest, ParseCreditCardHolderNameWithCCFullName) { AddTextFormFieldData("ccfullname", "Name", CREDIT_CARD_NAME_FULL); ClassifyAndVerify(ParseResult::PARSED); } // Verifies that <input type="month"> controls are able to be parsed correctly. -TEST_P(CreditCardFieldTest, ParseMonthControl) { +TEST_P(CreditCardFieldParserTest, ParseMonthControl) { AddTextFormFieldData("ccnumber", "Card number:", CREDIT_CARD_NUMBER); AddFormFieldData(FormControlType::kInputMonth, "ccexp", "Expiration date:", CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR); @@ -528,7 +531,7 @@ // Verify that heuristics <input name="ccyear" maxlength="2"/> considers // *maxlength* attribute while parsing 2 Digit expiration year. -TEST_P(CreditCardFieldTest, ParseCreditCardExpYear_2DigitMaxLength) { +TEST_P(CreditCardFieldParserTest, ParseCreditCardExpYear_2DigitMaxLength) { AddTextFormFieldData("card_number", "Card Number", CREDIT_CARD_NUMBER); AddTextFormFieldData("ccmonth", "Expiration Date", CREDIT_CARD_EXP_MONTH); AddFormFieldDataWithLength(FormControlType::kInputText, "ccyear", @@ -538,7 +541,7 @@ ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(CreditCardFieldTest, ParseMultipleCreditCardNumbers) { +TEST_P(CreditCardFieldParserTest, ParseMultipleCreditCardNumbers) { AddTextFormFieldData("name_on_card", "Name on Card", CREDIT_CARD_NAME_FULL); AddTextFormFieldData("card_number", "Card Number", CREDIT_CARD_NUMBER); AddTextFormFieldData("confirm_card_number", "Confirm Card Number", @@ -549,7 +552,7 @@ ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(CreditCardFieldTest, ParseFirstAndLastNames) { +TEST_P(CreditCardFieldParserTest, ParseFirstAndLastNames) { AddTextFormFieldData("cc-fname", "First Name on Card", CREDIT_CARD_NAME_FIRST); AddTextFormFieldData("cc-lname", "Last Name", CREDIT_CARD_NAME_LAST); @@ -560,7 +563,7 @@ ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(CreditCardFieldTest, ParseConsecutiveCvc) { +TEST_P(CreditCardFieldParserTest, ParseConsecutiveCvc) { AddTextFormFieldData("name_on_card", "Name on Card", CREDIT_CARD_NAME_FULL); AddTextFormFieldData("card_number", "Card Number", CREDIT_CARD_NUMBER); AddTextFormFieldData("ccmonth", "Exp Month", CREDIT_CARD_EXP_MONTH); @@ -573,7 +576,7 @@ ClassifyAndVerifyWithMultipleParses(); } -TEST_P(CreditCardFieldTest, ParseNonConsecutiveCvc) { +TEST_P(CreditCardFieldParserTest, ParseNonConsecutiveCvc) { AddTextFormFieldData("name_on_card", "Name on Card", CREDIT_CARD_NAME_FULL); AddTextFormFieldData("card_number", "Card Number", CREDIT_CARD_NUMBER); AddTextFormFieldData("ccmonth", "Exp Month", CREDIT_CARD_EXP_MONTH); @@ -585,14 +588,15 @@ ClassifyAndVerifyWithMultipleParses(); } -TEST_P(CreditCardFieldTest, ParseCreditCardContextualNameNotCard) { +TEST_P(CreditCardFieldParserTest, ParseCreditCardContextualNameNotCard) { AddTextFormFieldData("accNum", "Account ID", UNKNOWN_TYPE); AddTextFormFieldData("name", "Account Name", UNKNOWN_TYPE); AddTextFormFieldData("toAcctNum", "Move to Account ID", UNKNOWN_TYPE); ClassifyAndVerify(ParseResult::NOT_PARSED); } -TEST_P(CreditCardFieldTest, ParseCreditCardContextualNameNotCardAcctMatch) { +TEST_P(CreditCardFieldParserTest, + ParseCreditCardContextualNameNotCardAcctMatch) { // TODO(crbug.com/1167977): This should be not parseable, but waiting before // changing kNameOnCardRe to use word boundaries. AddTextFormFieldData("acctNum", "Account ID", CREDIT_CARD_NUMBER); @@ -601,7 +605,7 @@ ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(CreditCardFieldTest, ParseCreditCardContextualNameWithExpiration) { +TEST_P(CreditCardFieldParserTest, ParseCreditCardContextualNameWithExpiration) { AddTextFormFieldData("acctNum", "Account ID", CREDIT_CARD_NUMBER); AddTextFormFieldData("name", "Account Name", CREDIT_CARD_NAME_FULL); AddTextFormFieldData("ccmonth", "Exp Month", CREDIT_CARD_EXP_MONTH); @@ -609,7 +613,8 @@ ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(CreditCardFieldTest, ParseCreditCardContextualNameWithVerification) { +TEST_P(CreditCardFieldParserTest, + ParseCreditCardContextualNameWithVerification) { AddTextFormFieldData("acctNum", "Account ID", CREDIT_CARD_NUMBER); AddTextFormFieldData("name", "Account Name", CREDIT_CARD_NAME_FULL); AddTextFormFieldData("cvv", "Verification", CREDIT_CARD_VERIFICATION_CODE); @@ -641,7 +646,7 @@ }; INSTANTIATE_TEST_SUITE_P( - CreditCardFieldTest, + CreditCardFieldParserTest, DetermineExpirationDateFormat, testing::Values( // The order of parameters is:
diff --git a/components/autofill/core/browser/form_parsing/form_field_parser_unittest.cc b/components/autofill/core/browser/form_parsing/form_field_parser_unittest.cc index 5376610..e47655c9 100644 --- a/components/autofill/core/browser/form_parsing/form_field_parser_unittest.cc +++ b/components/autofill/core/browser/form_parsing/form_field_parser_unittest.cc
@@ -21,13 +21,13 @@ namespace autofill { -class FormFieldTest - : public FormFieldTestBase, +class FormFieldParserTest + : public FormFieldParserTestBase, public ::testing::TestWithParam<PatternProviderFeatureState> { public: - FormFieldTest() : FormFieldTestBase(GetParam()) {} - FormFieldTest(const FormFieldTest&) = delete; - FormFieldTest& operator=(const FormFieldTest&) = delete; + FormFieldParserTest() : FormFieldParserTestBase(GetParam()) {} + FormFieldParserTest(const FormFieldParserTest&) = delete; + FormFieldParserTest& operator=(const FormFieldParserTest&) = delete; protected: // Parses all added fields using `ParseFormFields`. @@ -68,7 +68,7 @@ return field_candidates_map_.size(); } - // FormFieldTestBase: + // FormFieldParserTestBase: // This function is unused in these unit tests, because FormFieldParser is not // a parser itself, but the infrastructure combining them. std::unique_ptr<FormFieldParser> Parse(ParsingContext& context, @@ -80,8 +80,8 @@ }; INSTANTIATE_TEST_SUITE_P( - FormFieldTest, - FormFieldTest, + FormFieldParserTest, + FormFieldParserTest, ::testing::ValuesIn(PatternProviderFeatureState::All())); struct MatchTestCase { @@ -118,7 +118,7 @@ // Make sure the circumflex in 'crêpe' is not treated as a word boundary. {u"crêpe", {}, {u"\\bcr\\b"}}}; -INSTANTIATE_TEST_SUITE_P(FormFieldTest, +INSTANTIATE_TEST_SUITE_P(FormFieldParserTest, MatchTest, testing::ValuesIn(kMatchTestCases)); @@ -146,7 +146,7 @@ } // Test that we ignore checkable elements. -TEST_P(FormFieldTest, ParseFormFieldsIgnoreCheckableElements) { +TEST_P(FormFieldParserTest, ParseFormFieldsIgnoreCheckableElements) { AddFormFieldData(FormControlType::kInputCheckbox, "", "Is PO Box", UNKNOWN_TYPE); // Add 3 dummy fields to reach kMinRequiredFieldsForHeuristics = 3. @@ -159,7 +159,7 @@ // Test that the minimum number of required fields for the heuristics considers // whether a field is actually fillable. -TEST_P(FormFieldTest, ParseFormFieldsEnforceMinFillableFields) { +TEST_P(FormFieldParserTest, ParseFormFieldsEnforceMinFillableFields) { AddTextFormFieldData("", "Address line 1", ADDRESS_HOME_LINE1); AddTextFormFieldData("", "Address line 2", ADDRESS_HOME_LINE2); AddTextFormFieldData("", "Search", SEARCH_TERM); @@ -169,7 +169,7 @@ } // Tests that the `parseable_name()` is parsed as an autocomplete type. -TEST_P(FormFieldTest, ParseNameAsAutocompleteType) { +TEST_P(FormFieldParserTest, ParseNameAsAutocompleteType) { base::test::ScopedFeatureList autocomplete_feature; autocomplete_feature.InitAndEnableFeature( features::kAutofillParseNameAsAutocompleteType); @@ -184,7 +184,7 @@ } // Test that the parseable label is used when the feature is enabled. -TEST_P(FormFieldTest, TestParseableLabels) { +TEST_P(FormFieldParserTest, TestParseableLabels) { AddTextFormFieldData("", "not a parseable label", UNKNOWN_TYPE); AutofillField* autofill_field = list_.back().get(); autofill_field->set_parseable_label(u"First Name"); @@ -211,7 +211,7 @@ } // Tests that `ParseSingleFieldForms` is called as part of `ParseFormFields`. -TEST_P(FormFieldTest, ParseSingleFieldFormsInsideParseFormField) { +TEST_P(FormFieldParserTest, ParseSingleFieldFormsInsideParseFormField) { AddTextFormFieldData( "", "Phone", base::FeatureList::IsEnabled(features::kAutofillDefaultToCityAndNumber) @@ -226,7 +226,7 @@ } // Test that `ParseSingleFieldForms` parses single field promo codes. -TEST_P(FormFieldTest, ParseFormFieldsForSingleFieldPromoCode) { +TEST_P(FormFieldParserTest, ParseFormFieldsForSingleFieldPromoCode) { // Parse single field promo code. AddTextFormFieldData("", "Promo code", MERCHANT_PROMO_CODE); EXPECT_EQ(1, ParseSingleFieldForms()); @@ -241,7 +241,7 @@ } // Test that `ParseSingleFieldForms` parses single field IBAN. -TEST_P(FormFieldTest, ParseSingleFieldFormsIban) { +TEST_P(FormFieldParserTest, ParseSingleFieldFormsIban) { // Parse single field IBAN. AddTextFormFieldData("", "IBAN", IBAN_VALUE); EXPECT_EQ(1, ParseSingleFieldForms()); @@ -256,7 +256,7 @@ } // Test that `ParseStandaloneCvcField` parses standalone CVC fields. -TEST_P(FormFieldTest, ParseStandaloneCVCFields) { +TEST_P(FormFieldParserTest, ParseStandaloneCVCFields) { base::test::ScopedFeatureList scoped_feature( features::kAutofillParseVcnCardOnFileStandaloneCvcFields); @@ -290,7 +290,7 @@ // No field matches. {{{false, false}, {false, false}}, {}}}; -INSTANTIATE_TEST_SUITE_P(FormFieldTest, +INSTANTIATE_TEST_SUITE_P(FormFieldParserTest, ParseInAnyOrderTest, testing::ValuesIn(kParseInAnyOrderTestcases)); @@ -352,7 +352,7 @@ // rule to require at least 3 different field *types*. // Note that "fillable" refers to the field type, not whether a specific field // is visible and editable by the user. -TEST_P(FormFieldTest, ParseFormRequires3DistinctFieldTypes) { +TEST_P(FormFieldParserTest, ParseFormRequires3DistinctFieldTypes) { AddTextFormFieldData("name_origin", "From:", NAME_FULL); AddTextFormFieldData("name_destination", "To:", NAME_FULL); AddTextFormFieldData("name_via", "Via...", NAME_FULL); @@ -370,14 +370,14 @@ TestClassificationExpectations(); } -TEST_P(FormFieldTest, ParseStandaloneZipDisabledForUS) { +TEST_P(FormFieldParserTest, ParseStandaloneZipDisabledForUS) { base::test::ScopedFeatureList enabled{ features::kAutofillEnableZipOnlyAddressForms}; AddTextFormFieldData("zip", "ZIP", ADDRESS_HOME_ZIP); EXPECT_EQ(0, ParseFormFields(GeoIpCountryCode("US"))); } -TEST_P(FormFieldTest, ParseStandaloneZipEnabledForBR) { +TEST_P(FormFieldParserTest, ParseStandaloneZipEnabledForBR) { base::test::ScopedFeatureList enabled{ features::kAutofillEnableZipOnlyAddressForms}; AddTextFormFieldData("cep", "CEP", ADDRESS_HOME_ZIP); @@ -385,14 +385,14 @@ TestClassificationExpectations(); } -TEST_P(FormFieldTest, ParseStandaloneEmail) { +TEST_P(FormFieldParserTest, ParseStandaloneEmail) { AddTextFormFieldData("email", "email", EMAIL_ADDRESS); AddTextFormFieldData("unknown", "Horseradish", UNKNOWN_TYPE); EXPECT_EQ(1, ParseStandaloneEmailFields()); TestClassificationExpectations(); } -TEST_P(FormFieldTest, ParseStandaloneEmailWithNoEmailFields) { +TEST_P(FormFieldParserTest, ParseStandaloneEmailWithNoEmailFields) { AddTextFormFieldData("unknown", "Horseradish", UNKNOWN_TYPE); EXPECT_EQ(0, ParseStandaloneEmailFields()); TestClassificationExpectations(); @@ -400,7 +400,7 @@ // Tests that an email field is recognized even though it matches the pattern // nombre.*dirección, which is used to detect address name/type patterns. -TEST_P(FormFieldTest, ParseStandaloneEmailSimilarToAddressName) { +TEST_P(FormFieldParserTest, ParseStandaloneEmailSimilarToAddressName) { AddTextFormFieldData("-", "nombre de usuario o dirección de correo electrónico", EMAIL_ADDRESS);
diff --git a/components/autofill/core/browser/form_parsing/iban_field_parser_unittest.cc b/components/autofill/core/browser/form_parsing/iban_field_parser_unittest.cc index 4095a8d..2fed0f4 100644 --- a/components/autofill/core/browser/form_parsing/iban_field_parser_unittest.cc +++ b/components/autofill/core/browser/form_parsing/iban_field_parser_unittest.cc
@@ -8,13 +8,13 @@ namespace autofill { -class IbanFieldTest - : public FormFieldTestBase, +class IbanFieldParserTest + : public FormFieldParserTestBase, public testing::TestWithParam<PatternProviderFeatureState> { public: - IbanFieldTest() : FormFieldTestBase(GetParam()) {} - IbanFieldTest(const IbanFieldTest&) = delete; - IbanFieldTest& operator=(const IbanFieldTest&) = delete; + IbanFieldParserTest() : FormFieldParserTestBase(GetParam()) {} + IbanFieldParserTest(const IbanFieldParserTest&) = delete; + IbanFieldParserTest& operator=(const IbanFieldParserTest&) = delete; protected: std::unique_ptr<FormFieldParser> Parse(ParsingContext& context, @@ -24,24 +24,24 @@ }; INSTANTIATE_TEST_SUITE_P( - IbanFieldTest, - IbanFieldTest, + IbanFieldParserTest, + IbanFieldParserTest, ::testing::ValuesIn(PatternProviderFeatureState::All())); // Match IBAN -TEST_P(IbanFieldTest, ParseIban) { +TEST_P(IbanFieldParserTest, ParseIban) { AddTextFormFieldData("iban-field", "Enter account number", IBAN_VALUE); ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(IbanFieldTest, ParseIbanBanks) { +TEST_P(IbanFieldParserTest, ParseIbanBanks) { AddTextFormFieldData("accountNumber", "IBAN*", IBAN_VALUE); ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(IbanFieldTest, ParseNonIban) { +TEST_P(IbanFieldParserTest, ParseNonIban) { AddTextFormFieldData("other-field", "Field for Account Number", UNKNOWN_TYPE); ClassifyAndVerify(ParseResult::NOT_PARSED);
diff --git a/components/autofill/core/browser/form_parsing/merchant_promo_code_field_parser.h b/components/autofill/core/browser/form_parsing/merchant_promo_code_field_parser.h index 28b0dbd..6e98a5f 100644 --- a/components/autofill/core/browser/form_parsing/merchant_promo_code_field_parser.h +++ b/components/autofill/core/browser/form_parsing/merchant_promo_code_field_parser.h
@@ -35,11 +35,12 @@ void AddClassifications(FieldCandidatesMap& field_candidates) const override; private: - FRIEND_TEST_ALL_PREFIXES(MerchantPromoCodeFieldTest, ParsePromoCode); - FRIEND_TEST_ALL_PREFIXES(MerchantPromoCodeFieldTest, ParseCouponCode); - FRIEND_TEST_ALL_PREFIXES(MerchantPromoCodeFieldTest, ParseGiftCode); - FRIEND_TEST_ALL_PREFIXES(MerchantPromoCodeFieldTest, ParseNonPromoCode); - FRIEND_TEST_ALL_PREFIXES(MerchantPromoCodeFieldTest, ParsePromoCodeFlagOff); + FRIEND_TEST_ALL_PREFIXES(MerchantPromoCodeFieldParserTest, ParsePromoCode); + FRIEND_TEST_ALL_PREFIXES(MerchantPromoCodeFieldParserTest, ParseCouponCode); + FRIEND_TEST_ALL_PREFIXES(MerchantPromoCodeFieldParserTest, ParseGiftCode); + FRIEND_TEST_ALL_PREFIXES(MerchantPromoCodeFieldParserTest, ParseNonPromoCode); + FRIEND_TEST_ALL_PREFIXES(MerchantPromoCodeFieldParserTest, + ParsePromoCodeFlagOff); raw_ptr<const AutofillField> field_; };
diff --git a/components/autofill/core/browser/form_parsing/merchant_promo_code_field_parser_unittest.cc b/components/autofill/core/browser/form_parsing/merchant_promo_code_field_parser_unittest.cc index 3bc95e1..9f37c91 100644 --- a/components/autofill/core/browser/form_parsing/merchant_promo_code_field_parser_unittest.cc +++ b/components/autofill/core/browser/form_parsing/merchant_promo_code_field_parser_unittest.cc
@@ -11,14 +11,15 @@ namespace autofill { -class MerchantPromoCodeFieldTest - : public FormFieldTestBase, +class MerchantPromoCodeFieldParserTest + : public FormFieldParserTestBase, public testing::TestWithParam<PatternProviderFeatureState> { public: - MerchantPromoCodeFieldTest() : FormFieldTestBase(GetParam()) {} - MerchantPromoCodeFieldTest(const MerchantPromoCodeFieldTest&) = delete; - MerchantPromoCodeFieldTest& operator=(const MerchantPromoCodeFieldTest&) = + MerchantPromoCodeFieldParserTest() : FormFieldParserTestBase(GetParam()) {} + MerchantPromoCodeFieldParserTest(const MerchantPromoCodeFieldParserTest&) = delete; + MerchantPromoCodeFieldParserTest& operator=( + const MerchantPromoCodeFieldParserTest&) = delete; protected: std::unique_ptr<FormFieldParser> Parse(ParsingContext& context, @@ -28,12 +29,12 @@ }; INSTANTIATE_TEST_SUITE_P( - MerchantPromoCodeFieldTest, - MerchantPromoCodeFieldTest, + MerchantPromoCodeFieldParserTest, + MerchantPromoCodeFieldParserTest, ::testing::ValuesIn(PatternProviderFeatureState::All())); // Match promo(tion|tional)?[-_. ]*code -TEST_P(MerchantPromoCodeFieldTest, ParsePromoCode) { +TEST_P(MerchantPromoCodeFieldParserTest, ParsePromoCode) { AddTextFormFieldData("promoCodeField", "Enter promo code here", MERCHANT_PROMO_CODE); @@ -41,7 +42,7 @@ } // Match promo(tion|tional)?[-_. ]*code -TEST_P(MerchantPromoCodeFieldTest, ParsePromotionalCode) { +TEST_P(MerchantPromoCodeFieldParserTest, ParsePromotionalCode) { AddTextFormFieldData("promoCodeField", "Use the promotional code here", MERCHANT_PROMO_CODE); @@ -49,7 +50,7 @@ } // Match promo(tion|tional)?[-_. ]*code -TEST_P(MerchantPromoCodeFieldTest, ParsePromoCodeWithPrefixAndSuffix) { +TEST_P(MerchantPromoCodeFieldParserTest, ParsePromoCodeWithPrefixAndSuffix) { AddTextFormFieldData("mypromocodefield", "promoCodeField", MERCHANT_PROMO_CODE); @@ -57,7 +58,7 @@ } // Match coupon[-_. ]*code -TEST_P(MerchantPromoCodeFieldTest, ParseCouponCode) { +TEST_P(MerchantPromoCodeFieldParserTest, ParseCouponCode) { AddTextFormFieldData("couponCodeField", "Enter new coupon__code", MERCHANT_PROMO_CODE); @@ -65,7 +66,7 @@ } // Match gift[-_. ]*code -TEST_P(MerchantPromoCodeFieldTest, ParseGiftCode) { +TEST_P(MerchantPromoCodeFieldParserTest, ParseGiftCode) { AddTextFormFieldData("giftCodeField", "Check out with gift.codes", MERCHANT_PROMO_CODE); @@ -73,14 +74,14 @@ } // Match discount[-_. ]*code -TEST_P(MerchantPromoCodeFieldTest, ParseDiscountCode) { +TEST_P(MerchantPromoCodeFieldParserTest, ParseDiscountCode) { AddTextFormFieldData("discountCodeField", "Check out with discount-code", MERCHANT_PROMO_CODE); ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(MerchantPromoCodeFieldTest, ParseNonPromoCode) { +TEST_P(MerchantPromoCodeFieldParserTest, ParseNonPromoCode) { // Regex relies on "promo/coupon/gift" + "code" together. AddTextFormFieldData("otherField", "Field for gift card or promo details", UNKNOWN_TYPE);
diff --git a/components/autofill/core/browser/form_parsing/name_field_parser_unittest.cc b/components/autofill/core/browser/form_parsing/name_field_parser_unittest.cc index aae1727..5a752c8 100644 --- a/components/autofill/core/browser/form_parsing/name_field_parser_unittest.cc +++ b/components/autofill/core/browser/form_parsing/name_field_parser_unittest.cc
@@ -16,13 +16,13 @@ namespace autofill { -class NameFieldTest - : public FormFieldTestBase, +class NameFieldParserTest + : public FormFieldParserTestBase, public testing::TestWithParam<PatternProviderFeatureState> { public: - NameFieldTest() : FormFieldTestBase(GetParam()) {} - NameFieldTest(const NameFieldTest&) = delete; - NameFieldTest& operator=(const NameFieldTest&) = delete; + NameFieldParserTest() : FormFieldParserTestBase(GetParam()) {} + NameFieldParserTest(const NameFieldParserTest&) = delete; + NameFieldParserTest& operator=(const NameFieldParserTest&) = delete; protected: std::unique_ptr<FormFieldParser> Parse(ParsingContext& context, @@ -32,11 +32,11 @@ }; INSTANTIATE_TEST_SUITE_P( - NameFieldTest, - NameFieldTest, + NameFieldParserTest, + NameFieldParserTest, ::testing::ValuesIn(PatternProviderFeatureState::All())); -TEST_P(NameFieldTest, FirstMiddleLast) { +TEST_P(NameFieldParserTest, FirstMiddleLast) { AddTextFormFieldData("First", "First Name", NAME_FIRST); AddTextFormFieldData("Middle", "Name Middle", NAME_MIDDLE); AddTextFormFieldData("Last", "Last Name", NAME_LAST); @@ -44,7 +44,7 @@ ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(NameFieldTest, FirstMiddleLast2) { +TEST_P(NameFieldParserTest, FirstMiddleLast2) { AddTextFormFieldData("firstName", "", NAME_FIRST); AddTextFormFieldData("middleName", "", NAME_MIDDLE); AddTextFormFieldData("lastName", "", NAME_LAST); @@ -53,7 +53,7 @@ } // Test that a field for a honorific title is parsed correctly. -TEST_P(NameFieldTest, HonorificPrefixFirstLast) { +TEST_P(NameFieldParserTest, HonorificPrefixFirstLast) { AddTextFormFieldData("salutation", "", NAME_HONORIFIC_PREFIX); AddTextFormFieldData("first_name", "", NAME_FIRST); AddTextFormFieldData("last_name", "", NAME_LAST); @@ -61,21 +61,21 @@ ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(NameFieldTest, FirstLast) { +TEST_P(NameFieldParserTest, FirstLast) { AddTextFormFieldData("first_name", "", NAME_FIRST); AddTextFormFieldData("last_name", "", NAME_LAST); ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(NameFieldTest, NameSurname) { +TEST_P(NameFieldParserTest, NameSurname) { AddTextFormFieldData("name", "name", NAME_FIRST); AddTextFormFieldData("surname", "surname", NAME_LAST); ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(NameFieldTest, NameSurnameWithMiddleName) { +TEST_P(NameFieldParserTest, NameSurnameWithMiddleName) { AddTextFormFieldData("name", "name", NAME_FIRST); AddTextFormFieldData("middlename", "middlename", NAME_MIDDLE); AddTextFormFieldData("surname", "surname", NAME_LAST); @@ -83,21 +83,21 @@ ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(NameFieldTest, NameSurname_DE) { +TEST_P(NameFieldParserTest, NameSurname_DE) { AddTextFormFieldData("name", "name", NAME_FIRST); AddTextFormFieldData("nachname", "nachname", NAME_LAST); ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(NameFieldTest, FirstLast2) { +TEST_P(NameFieldParserTest, FirstLast2) { AddTextFormFieldData("first_name", "Name", NAME_FIRST); AddTextFormFieldData("last_name", "Name", NAME_LAST); ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(NameFieldTest, FirstLastMiddleWithSpaces) { +TEST_P(NameFieldParserTest, FirstLastMiddleWithSpaces) { AddTextFormFieldData("fist_name", "First Name", NAME_FIRST); AddTextFormFieldData("middle_name", "Middle Name", NAME_MIDDLE); AddTextFormFieldData("last_name", "Last Name", NAME_LAST); @@ -105,14 +105,14 @@ ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(NameFieldTest, FirstLastEmpty) { +TEST_P(NameFieldParserTest, FirstLastEmpty) { AddTextFormFieldData("first_name", "Name", NAME_FIRST); AddTextFormFieldData("last_name", "", NAME_LAST); ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(NameFieldTest, FirstMiddleLastEmpty) { +TEST_P(NameFieldParserTest, FirstMiddleLastEmpty) { AddTextFormFieldData("first_name", "Name", NAME_FIRST); AddTextFormFieldData("middle_name", "", NAME_MIDDLE_INITIAL); AddTextFormFieldData("last_name", "", NAME_LAST); @@ -120,7 +120,7 @@ ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(NameFieldTest, MiddleInitial) { +TEST_P(NameFieldParserTest, MiddleInitial) { AddTextFormFieldData("first_name", "Name", NAME_FIRST); AddTextFormFieldData("middle_initial", "MI", NAME_MIDDLE_INITIAL); AddTextFormFieldData("last_name", "", NAME_LAST); @@ -128,7 +128,7 @@ ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(NameFieldTest, MiddleInitialNoLastName) { +TEST_P(NameFieldParserTest, MiddleInitialNoLastName) { AddTextFormFieldData("first_name", "First Name", UNKNOWN_TYPE); AddTextFormFieldData("middle_initial", "MI", UNKNOWN_TYPE); @@ -137,7 +137,7 @@ // Tests that a website with a first and second surname field is parsed // correctly. -TEST_P(NameFieldTest, HonorificPrefixAndFirstNameAndHispanicLastNames) { +TEST_P(NameFieldParserTest, HonorificPrefixAndFirstNameAndHispanicLastNames) { AddTextFormFieldData("tratamiento", "tratamiento", NAME_HONORIFIC_PREFIX); AddTextFormFieldData("nombre", "nombre", NAME_FIRST); AddTextFormFieldData("apellido paterno", "apellido_paterno", NAME_LAST_FIRST); @@ -149,7 +149,8 @@ // Tests that a website with a first and second surname field is parsed // correctly. -TEST_P(NameFieldTest, FirstNameAndOptionalMiddleNameAndHispanicLastNames) { +TEST_P(NameFieldParserTest, + FirstNameAndOptionalMiddleNameAndHispanicLastNames) { AddTextFormFieldData("nombre", "nombre", NAME_FIRST); AddTextFormFieldData("middle_name", "middle name", NAME_MIDDLE); AddTextFormFieldData("apellido_paterno", "apellido paterno", NAME_LAST_FIRST); @@ -161,7 +162,7 @@ // This case is from the dell.com checkout page. The middle initial "mi" string // came at the end following other descriptive text. http://crbug.com/45123. -TEST_P(NameFieldTest, MiddleInitialAtEnd) { +TEST_P(NameFieldParserTest, MiddleInitialAtEnd) { AddTextFormFieldData("XXXnameXXXfirst", "", NAME_FIRST); AddTextFormFieldData("XXXnameXXXmi", "", NAME_MIDDLE_INITIAL); AddTextFormFieldData("XXXnameXXXlast", "", NAME_LAST); @@ -170,7 +171,7 @@ } // Test the coverage of all found strings for first and second last names. -TEST_P(NameFieldTest, HispanicLastNameRegexConverage) { +TEST_P(NameFieldParserTest, HispanicLastNameRegexConverage) { std::vector<std::u16string> first_last_name_strings = { u"Primer apellido", u"apellidoPaterno", u"apellido_paterno", u"first_surname", u"first surname", u"apellido1"}; @@ -203,7 +204,7 @@ } // Tests that address name is not misclassified as name or honorific prefix. -TEST_P(NameFieldTest, NotAddressName) { +TEST_P(NameFieldParserTest, NotAddressName) { AddTextFormFieldData("name", "Identificação do Endereço", UNKNOWN_TYPE); AddTextFormFieldData("title", "Adres Adı", UNKNOWN_TYPE); @@ -211,7 +212,7 @@ } // Tests that contact name is classified as full name. -TEST_P(NameFieldTest, ContactNameFull) { +TEST_P(NameFieldParserTest, ContactNameFull) { AddTextFormFieldData("contact", "Контактное лицо", NAME_FULL); ClassifyAndVerify(ParseResult::PARSED);
diff --git a/components/autofill/core/browser/form_parsing/numeric_quantity_field_parser_unittest.cc b/components/autofill/core/browser/form_parsing/numeric_quantity_field_parser_unittest.cc index 937d10c8c..1f8e3f5 100644 --- a/components/autofill/core/browser/form_parsing/numeric_quantity_field_parser_unittest.cc +++ b/components/autofill/core/browser/form_parsing/numeric_quantity_field_parser_unittest.cc
@@ -8,13 +8,16 @@ namespace autofill { -class NumericQuantityFieldTest - : public FormFieldTestBase, +class NumericQuantityFieldParserTest + : public FormFieldParserTestBase, public testing::TestWithParam<PatternProviderFeatureState> { public: - explicit NumericQuantityFieldTest() : FormFieldTestBase(GetParam()) {} - NumericQuantityFieldTest(const NumericQuantityFieldTest&) = delete; - NumericQuantityFieldTest& operator=(const NumericQuantityFieldTest&) = delete; + explicit NumericQuantityFieldParserTest() + : FormFieldParserTestBase(GetParam()) {} + NumericQuantityFieldParserTest(const NumericQuantityFieldParserTest&) = + delete; + NumericQuantityFieldParserTest& operator=( + const NumericQuantityFieldParserTest&) = delete; protected: std::unique_ptr<FormFieldParser> Parse(ParsingContext& context, @@ -24,17 +27,17 @@ }; INSTANTIATE_TEST_SUITE_P( - NumericQuantityFieldTest, - NumericQuantityFieldTest, + NumericQuantityFieldParserTest, + NumericQuantityFieldParserTest, ::testing::ValuesIn(PatternProviderFeatureState::All())); -TEST_P(NumericQuantityFieldTest, ParseNumericQuantity) { +TEST_P(NumericQuantityFieldParserTest, ParseNumericQuantity) { AddTextFormFieldData("quantity", "quantity", NUMERIC_QUANTITY); ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(NumericQuantityFieldTest, ParseNonNumericQuantity) { +TEST_P(NumericQuantityFieldParserTest, ParseNonNumericQuantity) { AddTextFormFieldData("name", "Name", UNKNOWN_TYPE); ClassifyAndVerify(ParseResult::NOT_PARSED);
diff --git a/components/autofill/core/browser/form_parsing/parsing_test_utils.cc b/components/autofill/core/browser/form_parsing/parsing_test_utils.cc index 5a8990887..e8bd4351 100644 --- a/components/autofill/core/browser/form_parsing/parsing_test_utils.cc +++ b/components/autofill/core/browser/form_parsing/parsing_test_utils.cc
@@ -24,7 +24,7 @@ }; } -FormFieldTestBase::FormFieldTestBase( +FormFieldParserTestBase::FormFieldParserTestBase( PatternProviderFeatureState pattern_provider_feature_state) { std::vector<base::test::FeatureRefAndParams> enabled; std::vector<base::test::FeatureRef> disabled; @@ -40,21 +40,22 @@ scoped_feature_list_.InitWithFeaturesAndParameters(enabled, disabled); } -FormFieldTestBase::~FormFieldTestBase() = default; +FormFieldParserTestBase::~FormFieldParserTestBase() = default; -void FormFieldTestBase::AddFormFieldData(FormControlType control_type, - std::string name, - std::string label, - FieldType expected_type) { +void FormFieldParserTestBase::AddFormFieldData(FormControlType control_type, + std::string name, + std::string label, + FieldType expected_type) { AddFormFieldDataWithLength(control_type, name, label, /*max_length=*/0, expected_type); } -void FormFieldTestBase::AddFormFieldDataWithLength(FormControlType control_type, - std::string name, - std::string label, - int max_length, - FieldType expected_type) { +void FormFieldParserTestBase::AddFormFieldDataWithLength( + FormControlType control_type, + std::string name, + std::string label, + int max_length, + FieldType expected_type) { FormFieldData field_data; field_data.form_control_type = control_type; field_data.name = base::UTF8ToUTF16(name); @@ -66,7 +67,7 @@ std::make_pair(field_data.global_id(), expected_type)); } -void FormFieldTestBase::AddSelectOneFormFieldData( +void FormFieldParserTestBase::AddSelectOneFormFieldData( std::string name, std::string label, const std::vector<SelectOption>& options, @@ -77,9 +78,9 @@ } // Convenience wrapper for text control elements. -void FormFieldTestBase::AddTextFormFieldData(std::string name, - std::string label, - FieldType expected_type) { +void FormFieldParserTestBase::AddTextFormFieldData(std::string name, + std::string label, + FieldType expected_type) { AddFormFieldData(FormControlType::kInputText, name, label, expected_type); } @@ -87,7 +88,7 @@ // |parsed| indicates if at least one field could be parsed successfully. // |page_language| the language to be used for parsing, default empty value // means the language is unknown and patterns of all languages are used. -void FormFieldTestBase::ClassifyAndVerify( +void FormFieldParserTestBase::ClassifyAndVerify( ParseResult parse_result, const GeoIpCountryCode& client_country, const LanguageCode& page_language) { @@ -106,7 +107,7 @@ TestClassificationExpectations(); } -void FormFieldTestBase::TestClassificationExpectations() { +void FormFieldParserTestBase::TestClassificationExpectations() { size_t num_classifications = 0; for (const auto [field_id, expected_field_type] : expected_classifications_) { FieldType actual_field_type = @@ -124,11 +125,11 @@ EXPECT_EQ(num_classifications, field_candidates_map_.size()); } -FieldRendererId FormFieldTestBase::MakeFieldRendererId() { +FieldRendererId FormFieldParserTestBase::MakeFieldRendererId() { return FieldRendererId(++id_counter_); } -void FormFieldTestBase::ClearFieldsAndExpectations() { +void FormFieldParserTestBase::ClearFieldsAndExpectations() { field_ = nullptr; list_.clear(); expected_classifications_.clear();
diff --git a/components/autofill/core/browser/form_parsing/parsing_test_utils.h b/components/autofill/core/browser/form_parsing/parsing_test_utils.h index e21f50f0..b65752bf 100644 --- a/components/autofill/core/browser/form_parsing/parsing_test_utils.h +++ b/components/autofill/core/browser/form_parsing/parsing_test_utils.h
@@ -41,13 +41,13 @@ const char* active_source = nullptr; }; -class FormFieldTestBase { +class FormFieldParserTestBase { public: - explicit FormFieldTestBase( + explicit FormFieldParserTestBase( PatternProviderFeatureState pattern_provider_feature_state); - FormFieldTestBase(const FormFieldTestBase&) = delete; - FormFieldTestBase& operator=(const FormFieldTestBase&) = delete; - ~FormFieldTestBase(); + FormFieldParserTestBase(const FormFieldParserTestBase&) = delete; + FormFieldParserTestBase& operator=(const FormFieldParserTestBase&) = delete; + ~FormFieldParserTestBase(); protected: // Add a field with |control_type|, the |name|, the |label| the expected
diff --git a/components/autofill/core/browser/form_parsing/phone_field_parser_unittest.cc b/components/autofill/core/browser/form_parsing/phone_field_parser_unittest.cc index 7ee3520c..5352ea8d 100644 --- a/components/autofill/core/browser/form_parsing/phone_field_parser_unittest.cc +++ b/components/autofill/core/browser/form_parsing/phone_field_parser_unittest.cc
@@ -35,10 +35,10 @@ } // namespace -class PhoneFieldTest +class PhoneFieldParserTest : public testing::TestWithParam<PatternProviderFeatureState> { public: - PhoneFieldTest() { + PhoneFieldParserTest() { std::vector<base::test::FeatureRefAndParams> enabled; std::vector<base::test::FeatureRef> disabled; if (GetParam().enable) { @@ -53,8 +53,8 @@ scoped_feature_list_.InitWithFeaturesAndParameters(enabled, disabled); } - PhoneFieldTest(const PhoneFieldTest&) = delete; - PhoneFieldTest& operator=(const PhoneFieldTest&) = delete; + PhoneFieldParserTest(const PhoneFieldParserTest&) = delete; + PhoneFieldParserTest& operator=(const PhoneFieldParserTest&) = delete; protected: // Downcast for tests. @@ -108,14 +108,14 @@ FieldCandidatesMap field_candidates_map_; }; -void PhoneFieldTest::CheckField(const FieldGlobalId id, - FieldType expected_type) const { +void PhoneFieldParserTest::CheckField(const FieldGlobalId id, + FieldType expected_type) const { auto it = field_candidates_map_.find(id); ASSERT_TRUE(it != field_candidates_map_.end()); EXPECT_EQ(expected_type, it->second.BestHeuristicType()); } -autofill::FieldGlobalId PhoneFieldTest::AppendField( +autofill::FieldGlobalId PhoneFieldParserTest::AppendField( const TestFieldData& field_data) { FormFieldData field; field.form_control_type = field_data.type; @@ -131,8 +131,9 @@ return list_.back()->global_id(); } -void PhoneFieldTest::RunParsingTest(const std::vector<TestFieldData>& fields, - bool expect_success) { +void PhoneFieldParserTest::RunParsingTest( + const std::vector<TestFieldData>& fields, + bool expect_success) { Clear(); // Construct all the test fields. @@ -157,31 +158,31 @@ } } -FieldRendererId PhoneFieldTest::MakeFieldRendererId() { +FieldRendererId PhoneFieldParserTest::MakeFieldRendererId() { return FieldRendererId(++id_counter_); } -void PhoneFieldTest::Clear() { +void PhoneFieldParserTest::Clear() { field_candidates_map_.clear(); field_.reset(); list_.clear(); } INSTANTIATE_TEST_SUITE_P( - PhoneFieldTest, - PhoneFieldTest, + PhoneFieldParserTest, + PhoneFieldParserTest, ::testing::ValuesIn(PatternProviderFeatureState::All())); -TEST_P(PhoneFieldTest, Empty) { +TEST_P(PhoneFieldParserTest, Empty) { RunParsingTest({}, /*expect_success=*/false); } -TEST_P(PhoneFieldTest, NonParse) { +TEST_P(PhoneFieldParserTest, NonParse) { list_.push_back(std::make_unique<AutofillField>()); RunParsingTest({}, /*expect_success=*/false); } -TEST_P(PhoneFieldTest, ParseOneLinePhoneWithoutDefaultToCityAndNumber) { +TEST_P(PhoneFieldParserTest, ParseOneLinePhoneWithoutDefaultToCityAndNumber) { base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitAndDisableFeature( features::kAutofillDefaultToCityAndNumber); @@ -190,7 +191,7 @@ } } -TEST_P(PhoneFieldTest, ParseOneLinePhoneWithDefaultToCityAndNumber) { +TEST_P(PhoneFieldParserTest, ParseOneLinePhoneWithDefaultToCityAndNumber) { base::test::ScopedFeatureList scoped_feature_list{ features::kAutofillDefaultToCityAndNumber}; for (FormControlType field_type : kFieldTypes) { @@ -204,7 +205,7 @@ } } -TEST_P(PhoneFieldTest, ParseTwoLinePhone) { +TEST_P(PhoneFieldParserTest, ParseTwoLinePhone) { for (FormControlType field_type : kFieldTypes) { RunParsingTest( {{field_type, u"Area Code", u"area code", PHONE_HOME_CITY_CODE}, @@ -217,7 +218,7 @@ // <country code> - <area code> - <phone>. The only distinguishing feature is // size: <prefix> is no bigger than 3 characters, and <suffix> is no bigger // than 4. -TEST_P(PhoneFieldTest, ThreePartPhoneNumber) { +TEST_P(PhoneFieldParserTest, ThreePartPhoneNumber) { for (FormControlType field_type : kFieldTypes) { RunParsingTest( {{field_type, u"Phone:", u"dayphone1", PHONE_HOME_CITY_CODE}, @@ -232,7 +233,7 @@ // This scenario of explicitly labeled "prefix" and "suffix" phone numbers // encountered in http://crbug.com/40694 with page // https://www.wrapables.com/jsp/Signup.jsp. -TEST_P(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix) { +TEST_P(PhoneFieldParserTest, ThreePartPhoneNumberPrefixSuffix) { for (FormControlType field_type : kFieldTypes) { RunParsingTest({{field_type, u"Phone:", u"area", PHONE_HOME_CITY_CODE}, {field_type, u"", u"prefix", PHONE_HOME_NUMBER_PREFIX}, @@ -241,7 +242,7 @@ } } -TEST_P(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix2) { +TEST_P(PhoneFieldParserTest, ThreePartPhoneNumberPrefixSuffix2) { for (FormControlType field_type : kFieldTypes) { RunParsingTest( {{field_type, u"(", u"phone1", PHONE_HOME_CITY_CODE, /*max_length=*/3}, @@ -253,7 +254,7 @@ } // Phone in format <country code> - <city and number> -TEST_P(PhoneFieldTest, CountryAndCityAndPhoneNumber) { +TEST_P(PhoneFieldParserTest, CountryAndCityAndPhoneNumber) { for (FormControlType field_type : kFieldTypes) { RunParsingTest({{field_type, u"Phone Number", u"CountryCode", PHONE_HOME_COUNTRY_CODE, /*max_length=*/3}, @@ -262,7 +263,7 @@ } } -TEST_P(PhoneFieldTest, EmptyLabels) { +TEST_P(PhoneFieldParserTest, EmptyLabels) { base::test::ScopedFeatureList enabled_features; enabled_features.InitAndEnableFeature( features::kAutofillEnableParsingEmptyPhoneNumberLabels); @@ -281,7 +282,7 @@ // Tests that when a phone field is parsed, a metric indicating the used grammar // is emitted. -TEST_P(PhoneFieldTest, GrammarMetrics) { +TEST_P(PhoneFieldParserTest, GrammarMetrics) { // PHONE_HOME_WHOLE_NUMBER corresponds to the last grammar. We thus expect // that 2*16 + 1 = 33 is logged. base::HistogramTester histogram_tester; @@ -297,7 +298,7 @@ // Tests if the country code, city code and phone number fields are correctly // classified by the heuristic when the phone code is a select element. -TEST_P(PhoneFieldTest, CountryCodeIsSelectElement) { +TEST_P(PhoneFieldParserTest, CountryCodeIsSelectElement) { RunParsingTest({{FormControlType::kSelectOne, u"Phone Country Code", u"ccode", PHONE_HOME_COUNTRY_CODE}, {FormControlType::kInputText, u"Phone City Code", u"areacode", @@ -310,7 +311,7 @@ // Tests if the country code, city code and phone number fields are correctly // classified by the heuristic when the phone code field is a select element // consisting of valid options. -TEST_P(PhoneFieldTest, CountryCodeWithOptions) { +TEST_P(PhoneFieldParserTest, CountryCodeWithOptions) { // Options consisting of the country code followed by the country names. std::vector<const char*> augmented_field_options_list = { "(+91) India", "(+49) Germany", "(+1) United States", "(+20) Egypt", @@ -326,7 +327,7 @@ // Tests if the country code field is correctly classified by the heuristic when // the phone code is a select element and consists of valid options. -TEST_P(PhoneFieldTest, IsPhoneCountryCodeField) { +TEST_P(PhoneFieldParserTest, IsPhoneCountryCodeField) { std::vector<std::vector<const char*>> augmented_field_options_list = { // Options with the country name followed by the country code in brackets. {"India(+91) ", "Germany(+49)", "United States(+1)", "Egypt(+20)", @@ -393,7 +394,7 @@ } // Tests that the month field is not classified as |PHONE_HOME_COUNTRY_CODE|. -TEST_P(PhoneFieldTest, IsMonthField) { +TEST_P(PhoneFieldParserTest, IsMonthField) { std::vector<std::vector<const char*>> augmented_field_options_list = { // Month options in numeric. {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"}, @@ -415,7 +416,7 @@ } // Tests that the day field is not classified as |PHONE_HOME_COUNTRY_CODE|. -TEST_P(PhoneFieldTest, IsDayField) { +TEST_P(PhoneFieldParserTest, IsDayField) { std::vector<std::vector<const char*>> augmented_field_options_list = { // Numeric day options. {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", @@ -467,7 +468,7 @@ } // Tests that the field is not classified as |PHONE_HOME_COUNTRY_CODE|. -TEST_P(PhoneFieldTest, IsYearField) { +TEST_P(PhoneFieldParserTest, IsYearField) { std::vector<std::vector<const char*>> augmented_field_options_list = { // Numeric four digit year options. {"1990", "1991", "1992", "1993", "1994", "1995", "1996", @@ -505,7 +506,7 @@ } // Tests that the timezone field is not classified as |PHONE_HOME_COUNTRY_CODE|. -TEST_P(PhoneFieldTest, IsTimeZoneField) { +TEST_P(PhoneFieldParserTest, IsTimeZoneField) { std::vector<std::vector<const char*>> augmented_field_options_list = { // Time Zone options. {"Yemen (UTC+03:00)", "Uruguay (UTC−03:00)", "UAE (UTC+04:00)",
diff --git a/components/autofill/core/browser/form_parsing/price_field_parser.h b/components/autofill/core/browser/form_parsing/price_field_parser.h index ee84635..c637c671 100644 --- a/components/autofill/core/browser/form_parsing/price_field_parser.h +++ b/components/autofill/core/browser/form_parsing/price_field_parser.h
@@ -34,8 +34,8 @@ void AddClassifications(FieldCandidatesMap& field_candidates) const override; private: - FRIEND_TEST_ALL_PREFIXES(PriceFieldTest, ParsePrice); - FRIEND_TEST_ALL_PREFIXES(PriceFieldTest, ParseNonPrice); + FRIEND_TEST_ALL_PREFIXES(PriceFieldParserTest, ParsePrice); + FRIEND_TEST_ALL_PREFIXES(PriceFieldParserTest, ParseNonPrice); raw_ptr<const AutofillField> field_; };
diff --git a/components/autofill/core/browser/form_parsing/price_field_parser_unittest.cc b/components/autofill/core/browser/form_parsing/price_field_parser_unittest.cc index f3ae0a9d..be0971f9 100644 --- a/components/autofill/core/browser/form_parsing/price_field_parser_unittest.cc +++ b/components/autofill/core/browser/form_parsing/price_field_parser_unittest.cc
@@ -10,13 +10,13 @@ namespace autofill { -class PriceFieldTest - : public FormFieldTestBase, +class PriceFieldParserTest + : public FormFieldParserTestBase, public testing::TestWithParam<PatternProviderFeatureState> { public: - PriceFieldTest() : FormFieldTestBase(GetParam()) {} - PriceFieldTest(const PriceFieldTest&) = delete; - PriceFieldTest& operator=(const PriceFieldTest&) = delete; + PriceFieldParserTest() : FormFieldParserTestBase(GetParam()) {} + PriceFieldParserTest(const PriceFieldParserTest&) = delete; + PriceFieldParserTest& operator=(const PriceFieldParserTest&) = delete; protected: std::unique_ptr<FormFieldParser> Parse(ParsingContext& context, @@ -26,17 +26,17 @@ }; INSTANTIATE_TEST_SUITE_P( - PriceFieldTest, - PriceFieldTest, + PriceFieldParserTest, + PriceFieldParserTest, ::testing::ValuesIn(PatternProviderFeatureState::All())); -TEST_P(PriceFieldTest, ParsePrice) { +TEST_P(PriceFieldParserTest, ParsePrice) { AddTextFormFieldData("userPrice", "name your price", PRICE); ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(PriceFieldTest, ParseNonPrice) { +TEST_P(PriceFieldParserTest, ParseNonPrice) { AddTextFormFieldData("firstName", "Name", UNKNOWN_TYPE); ClassifyAndVerify(ParseResult::NOT_PARSED);
diff --git a/components/autofill/core/browser/form_parsing/search_field_parser.h b/components/autofill/core/browser/form_parsing/search_field_parser.h index 7fe8357..e5adac9 100644 --- a/components/autofill/core/browser/form_parsing/search_field_parser.h +++ b/components/autofill/core/browser/form_parsing/search_field_parser.h
@@ -34,8 +34,8 @@ void AddClassifications(FieldCandidatesMap& field_candidates) const override; private: - FRIEND_TEST_ALL_PREFIXES(SearchFieldTest, ParseSearchTerm); - FRIEND_TEST_ALL_PREFIXES(SearchFieldTest, ParseNonSearchTerm); + FRIEND_TEST_ALL_PREFIXES(SearchFieldParserTest, ParseSearchTerm); + FRIEND_TEST_ALL_PREFIXES(SearchFieldParserTest, ParseNonSearchTerm); raw_ptr<const AutofillField> field_; };
diff --git a/components/autofill/core/browser/form_parsing/search_field_parser_unittest.cc b/components/autofill/core/browser/form_parsing/search_field_parser_unittest.cc index 259ca38..44f8ad3 100644 --- a/components/autofill/core/browser/form_parsing/search_field_parser_unittest.cc +++ b/components/autofill/core/browser/form_parsing/search_field_parser_unittest.cc
@@ -11,13 +11,13 @@ namespace autofill { -class SearchFieldTest - : public FormFieldTestBase, +class SearchFieldParserTest + : public FormFieldParserTestBase, public testing::TestWithParam<PatternProviderFeatureState> { public: - SearchFieldTest() : FormFieldTestBase(GetParam()) {} - SearchFieldTest(const SearchFieldTest&) = delete; - SearchFieldTest& operator=(const SearchFieldTest&) = delete; + SearchFieldParserTest() : FormFieldParserTestBase(GetParam()) {} + SearchFieldParserTest(const SearchFieldParserTest&) = delete; + SearchFieldParserTest& operator=(const SearchFieldParserTest&) = delete; protected: std::unique_ptr<FormFieldParser> Parse(ParsingContext& context, @@ -27,17 +27,17 @@ }; INSTANTIATE_TEST_SUITE_P( - SearchFieldTest, - SearchFieldTest, + SearchFieldParserTest, + SearchFieldParserTest, ::testing::ValuesIn(PatternProviderFeatureState::All())); -TEST_P(SearchFieldTest, ParseSearchTerm) { +TEST_P(SearchFieldParserTest, ParseSearchTerm) { AddTextFormFieldData("search", "Search", SEARCH_TERM); ClassifyAndVerify(ParseResult::PARSED); } -TEST_P(SearchFieldTest, ParseNonSearchTerm) { +TEST_P(SearchFieldParserTest, ParseNonSearchTerm) { AddTextFormFieldData("address", "Address", UNKNOWN_TYPE); ClassifyAndVerify(ParseResult::NOT_PARSED);
diff --git a/components/autofill/core/browser/form_parsing/standalone_cvc_field_parser_unittest.cc b/components/autofill/core/browser/form_parsing/standalone_cvc_field_parser_unittest.cc index e778dbd..581ae9e 100644 --- a/components/autofill/core/browser/form_parsing/standalone_cvc_field_parser_unittest.cc +++ b/components/autofill/core/browser/form_parsing/standalone_cvc_field_parser_unittest.cc
@@ -10,13 +10,14 @@ namespace autofill { -class StandaloneCvcFieldTest - : public FormFieldTestBase, +class StandaloneCvcFieldParserTest + : public FormFieldParserTestBase, public testing::TestWithParam<PatternProviderFeatureState> { public: - StandaloneCvcFieldTest() : FormFieldTestBase(GetParam()) {} - StandaloneCvcFieldTest(const StandaloneCvcFieldTest&) = delete; - StandaloneCvcFieldTest& operator=(const StandaloneCvcFieldTest&) = delete; + StandaloneCvcFieldParserTest() : FormFieldParserTestBase(GetParam()) {} + StandaloneCvcFieldParserTest(const StandaloneCvcFieldParserTest&) = delete; + StandaloneCvcFieldParserTest& operator=(const StandaloneCvcFieldParserTest&) = + delete; protected: std::unique_ptr<FormFieldParser> Parse(ParsingContext& context, @@ -28,12 +29,12 @@ }; INSTANTIATE_TEST_SUITE_P( - StandaloneCvcFieldTest, - StandaloneCvcFieldTest, + StandaloneCvcFieldParserTest, + StandaloneCvcFieldParserTest, ::testing::ValuesIn(PatternProviderFeatureState::All())); // Match standalone cvc. -TEST_P(StandaloneCvcFieldTest, ParseStandaloneCvc) { +TEST_P(StandaloneCvcFieldParserTest, ParseStandaloneCvc) { scoped_feature_list_.InitAndEnableFeature( features::kAutofillParseVcnCardOnFileStandaloneCvcFields); @@ -43,7 +44,7 @@ } // Do not parse non cvc standalone fields. -TEST_P(StandaloneCvcFieldTest, ParseNonStandaloneCvc) { +TEST_P(StandaloneCvcFieldParserTest, ParseNonStandaloneCvc) { scoped_feature_list_.InitAndEnableFeature( features::kAutofillParseVcnCardOnFileStandaloneCvcFields); @@ -53,7 +54,7 @@ } // Do not parse when standalone cvc flag is disabled. -TEST_P(StandaloneCvcFieldTest, ParseStandaloneCvcFlagOff) { +TEST_P(StandaloneCvcFieldParserTest, ParseStandaloneCvcFlagOff) { scoped_feature_list_.InitAndDisableFeature( features::kAutofillParseVcnCardOnFileStandaloneCvcFields); @@ -63,7 +64,7 @@ } // Do not parse gift card as standalone cvc fields. -TEST_P(StandaloneCvcFieldTest, NotParseGiftCardAsStandaloneCvc) { +TEST_P(StandaloneCvcFieldParserTest, NotParseGiftCardAsStandaloneCvc) { scoped_feature_list_.InitAndEnableFeature( features::kAutofillParseVcnCardOnFileStandaloneCvcFields);
diff --git a/components/autofill/core/browser/metrics/address_rewriter_in_profile_subset_metrics_unittest.cc b/components/autofill/core/browser/metrics/address_rewriter_in_profile_subset_metrics_unittest.cc index b2a6dfd..4a4eba4 100644 --- a/components/autofill/core/browser/metrics/address_rewriter_in_profile_subset_metrics_unittest.cc +++ b/components/autofill/core/browser/metrics/address_rewriter_in_profile_subset_metrics_unittest.cc
@@ -73,9 +73,10 @@ std::nullopt, AutofillSuggestionTriggerSource::kUnspecified); histogram_tester.ExpectUniqueSample( "Autofill.PreviouslyHiddenSuggestionNumber", 1, 1); - ASSERT_EQ(suggestions.size(), 2u); + ASSERT_EQ(suggestions.size(), 3u); EXPECT_FALSE(suggestions[0].hidden_prior_to_address_rewriter_usage); EXPECT_TRUE(suggestions[1].hidden_prior_to_address_rewriter_usage); + EXPECT_EQ(suggestions[2].popup_item_id, PopupItemId::kSeparator); external_delegate().DidAcceptSuggestion( suggestions[0], AutofillPopupDelegate::SuggestionPosition{.row = 0});
diff --git a/components/autofill/core/browser/metrics/autofill_metrics_unittest.cc b/components/autofill/core/browser/metrics/autofill_metrics_unittest.cc index 285192d7..5f42b95 100644 --- a/components/autofill/core/browser/metrics/autofill_metrics_unittest.cc +++ b/components/autofill/core/browser/metrics/autofill_metrics_unittest.cc
@@ -6915,11 +6915,10 @@ Bucket(FORM_EVENT_DYNAMIC_CHANGE_AFTER_REFILL, 0))); // Trigger a refill, the refill metric should be updated. - test_api(autofill_manager()) - .TriggerRefill(form, {.trigger_source = AutofillTriggerSource::kPopup}); + autofill_manager().OnFormsSeen({form}, /*removed_forms=*/{}); EXPECT_THAT( histogram_tester.GetAllSamples("Autofill.FormEvents.Address"), - BucketsInclude(Bucket(FORM_EVENT_DID_SEE_FILLABLE_DYNAMIC_FORM, 1), + BucketsInclude(Bucket(FORM_EVENT_DID_SEE_FILLABLE_DYNAMIC_FORM, 2), Bucket(FORM_EVENT_DID_DYNAMIC_REFILL, 1), Bucket(FORM_EVENT_DYNAMIC_CHANGE_AFTER_REFILL, 0))); @@ -6931,7 +6930,7 @@ RefillTriggerReason::kFormChanged); EXPECT_THAT( histogram_tester.GetAllSamples("Autofill.FormEvents.Address"), - BucketsInclude(Bucket(FORM_EVENT_DID_SEE_FILLABLE_DYNAMIC_FORM, 2), + BucketsInclude(Bucket(FORM_EVENT_DID_SEE_FILLABLE_DYNAMIC_FORM, 3), Bucket(FORM_EVENT_DID_DYNAMIC_REFILL, 1), Bucket(FORM_EVENT_DYNAMIC_CHANGE_AFTER_REFILL, 1))); }
diff --git a/components/autofill/core/browser/metrics/form_events/address_form_event_logger_unittest.cc b/components/autofill/core/browser/metrics/form_events/address_form_event_logger_unittest.cc index ee1f4a7..eda43e75 100644 --- a/components/autofill/core/browser/metrics/form_events/address_form_event_logger_unittest.cc +++ b/components/autofill/core/browser/metrics/form_events/address_form_event_logger_unittest.cc
@@ -35,9 +35,14 @@ // Creates an arbitrary address form and triggers AutofillManager's // OnFormSeen() event. + // TODO(crbug.com/1007974): Replace this with a modern form creation function. FormData CreateAndSeeForm() { FormData form = CreateEmptyForm(); form.fields.resize(3); + for (FormFieldData& field : form.fields) { + field.unique_renderer_id = + autofill_test_environment_.NextFieldRendererId(); + } autofill_manager().AddSeenForm( form, {NAME_FULL, ADDRESS_HOME_STREET_ADDRESS, EMAIL_ADDRESS}); SeeForm(form);
diff --git a/components/autofill/core/browser/metrics/payments/card_unmask_authentication_metrics.cc b/components/autofill/core/browser/metrics/payments/card_unmask_authentication_metrics.cc index c39689a..a2f83519 100644 --- a/components/autofill/core/browser/metrics/payments/card_unmask_authentication_metrics.cc +++ b/components/autofill/core/browser/metrics/payments/card_unmask_authentication_metrics.cc
@@ -7,6 +7,7 @@ #include <string> #include "base/metrics/histogram_functions.h" +#include "base/strings/strcat.h" #include "components/autofill/core/browser/metrics/autofill_metrics.h" #include "components/autofill/core/browser/payments/card_unmask_challenge_option.h"
diff --git a/components/autofill/core/browser/metrics/payments/card_unmask_flow_metrics.cc b/components/autofill/core/browser/metrics/payments/card_unmask_flow_metrics.cc index 445f485..1b720a63 100644 --- a/components/autofill/core/browser/metrics/payments/card_unmask_flow_metrics.cc +++ b/components/autofill/core/browser/metrics/payments/card_unmask_flow_metrics.cc
@@ -4,7 +4,10 @@ #include "components/autofill/core/browser/metrics/payments/card_unmask_flow_metrics.h" +#include <string> + #include "base/metrics/histogram_functions.h" +#include "base/strings/strcat.h" #include "components/autofill/core/browser/metrics/autofill_metrics.h" namespace autofill::autofill_metrics {
diff --git a/components/autofill/core/browser/metrics/payments/iban_metrics.cc b/components/autofill/core/browser/metrics/payments/iban_metrics.cc index ecde6eb..2b5e981 100644 --- a/components/autofill/core/browser/metrics/payments/iban_metrics.cc +++ b/components/autofill/core/browser/metrics/payments/iban_metrics.cc
@@ -4,8 +4,12 @@ #include "components/autofill/core/browser/metrics/payments/iban_metrics.h" +#include <string> +#include <vector> + #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" +#include "base/strings/strcat.h" #include "components/autofill/core/browser/data_model/iban.h" #include "components/autofill/core/common/autofill_clock.h"
diff --git a/components/autofill/core/browser/webdata/addresses/address_autofill_table.cc b/components/autofill/core/browser/webdata/addresses/address_autofill_table.cc index 6bc5e16..448dcd95 100644 --- a/components/autofill/core/browser/webdata/addresses/address_autofill_table.cc +++ b/components/autofill/core/browser/webdata/addresses/address_autofill_table.cc
@@ -104,7 +104,6 @@ constexpr std::string_view kAutofillProfileNamesTable = "autofill_profile_names"; // kGuid = "guid" -constexpr std::string_view kHonorificPrefix = "honorific_prefix"; constexpr std::string_view kFirstName = "first_name"; constexpr std::string_view kMiddleName = "middle_name"; constexpr std::string_view kLastName = "last_name"; @@ -112,9 +111,6 @@ constexpr std::string_view kConjunctionLastName = "conjunction_last_name"; constexpr std::string_view kSecondLastName = "second_last_name"; constexpr std::string_view kFullName = "full_name"; -constexpr std::string_view kFullNameWithHonorificPrefix = - "full_name_with_honorific_prefix"; -constexpr std::string_view kHonorificPrefixStatus = "honorific_prefix_status"; constexpr std::string_view kFirstNameStatus = "first_name_status"; constexpr std::string_view kMiddleNameStatus = "middle_name_status"; constexpr std::string_view kLastNameStatus = "last_name_status"; @@ -123,8 +119,6 @@ "conjunction_last_name_status"; constexpr std::string_view kSecondLastNameStatus = "second_last_name_status"; constexpr std::string_view kFullNameStatus = "full_name_status"; -constexpr std::string_view kFullNameWithHonorificPrefixStatus = - "full_name_with_honorific_prefix_status"; constexpr std::string_view kAutofillProfileEmailsTable = "autofill_profile_emails"; @@ -167,20 +161,17 @@ sql::Statement s; if (SelectByGuid( db, s, kAutofillProfileNamesTable, - {kGuid, kHonorificPrefix, kHonorificPrefixStatus, kFirstName, - kFirstNameStatus, kMiddleName, kMiddleNameStatus, kFirstLastName, - kFirstLastNameStatus, kConjunctionLastName, + {kGuid, kFirstName, kFirstNameStatus, kMiddleName, kMiddleNameStatus, + kFirstLastName, kFirstLastNameStatus, kConjunctionLastName, kConjunctionLastNameStatus, kSecondLastName, kSecondLastNameStatus, - kLastName, kLastNameStatus, kFullName, kFullNameStatus, - kFullNameWithHonorificPrefix, kFullNameWithHonorificPrefixStatus}, + kLastName, kLastNameStatus, kFullName, kFullNameStatus}, profile->guid())) { DCHECK_EQ(profile->guid(), s.ColumnString(0)); int index = 1; for (FieldType type : - {NAME_HONORIFIC_PREFIX, NAME_FIRST, NAME_MIDDLE, NAME_LAST_FIRST, - NAME_LAST_CONJUNCTION, NAME_LAST_SECOND, NAME_LAST, NAME_FULL, - NAME_FULL_WITH_HONORIFIC_PREFIX}) { + {NAME_FIRST, NAME_MIDDLE, NAME_LAST_FIRST, NAME_LAST_CONJUNCTION, + NAME_LAST_SECOND, NAME_LAST, NAME_FULL}) { profile->SetRawInfoWithVerificationStatusInt( type, s.ColumnString16(index), s.ColumnInt(index + 1)); index += 2; @@ -815,18 +806,19 @@ } bool AddressAutofillTable::MigrateToVersion88AddNewNameColumns() { - for (std::string_view column : {kHonorificPrefix, kFirstLastName, - kConjunctionLastName, kSecondLastName}) { + for (std::string_view column : + std::vector<std::string_view>{"honorific_prefix", kFirstLastName, + kConjunctionLastName, kSecondLastName}) { if (!AddColumnIfNotExists(db_, kAutofillProfileNamesTable, column, "VARCHAR")) { return false; } } - for (std::string_view column : - {kHonorificPrefixStatus, kFirstNameStatus, kMiddleNameStatus, - kLastNameStatus, kFirstLastNameStatus, kConjunctionLastNameStatus, - kSecondLastNameStatus, kFullNameStatus}) { + for (std::string_view column : std::vector<std::string_view>{ + "honorific_prefix_status", kFirstNameStatus, kMiddleNameStatus, + kLastNameStatus, kFirstLastNameStatus, kConjunctionLastNameStatus, + kSecondLastNameStatus, kFullNameStatus}) { // The default value of 0 corresponds to the verification status // |kNoStatus|. if (!AddColumnIfNotExists(db_, kAutofillProfileNamesTable, column, @@ -839,9 +831,9 @@ bool AddressAutofillTable::MigrateToVersion92AddNewPrefixedNameColumn() { return AddColumnIfNotExists(db_, kAutofillProfileNamesTable, - kFullNameWithHonorificPrefix, "VARCHAR") && + "full_name_with_honorific_prefix", "VARCHAR") && AddColumnIfNotExists(db_, kAutofillProfileNamesTable, - kFullNameWithHonorificPrefixStatus, + "full_name_with_honorific_prefix_status", "INTEGER DEFAULT 0"); }
diff --git a/components/autofill/core/browser/webdata/addresses/address_autofill_table_unittest.cc b/components/autofill/core/browser/webdata/addresses/address_autofill_table_unittest.cc index 74517db..f661afa 100644 --- a/components/autofill/core/browser/webdata/addresses/address_autofill_table_unittest.cc +++ b/components/autofill/core/browser/webdata/addresses/address_autofill_table_unittest.cc
@@ -100,14 +100,6 @@ TEST_P(AddressAutofillTableProfileTest, AutofillProfile) { AutofillProfile home_profile = CreateAutofillProfile(); - // TODO(crbug.com/1113617): Honorifics are temporally disabled. - // home_profile.SetRawInfoWithVerificationStatus( - // NAME_HONORIFIC_PREFIX, u"Dr.", - // VerificationStatus::kObserved); - - home_profile.SetRawInfoWithVerificationStatus(NAME_HONORIFIC_PREFIX, u"Dr.", - VerificationStatus::kObserved); - home_profile.SetRawInfoWithVerificationStatus(NAME_FIRST, u"John", VerificationStatus::kObserved); @@ -129,10 +121,6 @@ home_profile.SetRawInfoWithVerificationStatus( NAME_FULL, u"John Q. Agent 007 Smith", VerificationStatus::kObserved); - home_profile.SetRawInfoWithVerificationStatus(NAME_FULL_WITH_HONORIFIC_PREFIX, - u"Dr. John Q. Agent 007 Smith", - VerificationStatus::kObserved); - home_profile.SetRawInfo(EMAIL_ADDRESS, u"js@smith.xyz"); home_profile.SetRawInfo(COMPANY_NAME, u"Google");
diff --git a/components/autofill/core/common/autofill_features.cc b/components/autofill/core/common/autofill_features.cc index fa9a74c..ee46598 100644 --- a/components/autofill/core/common/autofill_features.cc +++ b/components/autofill/core/common/autofill_features.cc
@@ -320,11 +320,19 @@ // Enables using the newer i18n address model, overriding the legacy one. // This includes: +// - Using newer i18n address hierarchies. // - Using newer i18n address format strings. +// - Using newer i18n address parsing rules. BASE_FEATURE(kAutofillUseI18nAddressModel, "AutofillUseI18nAddressModel", base::FEATURE_DISABLED_BY_DEFAULT); +// Enables using the a custom address model for Germany, overriding the legacy +// one. +BASE_FEATURE(kAutofillUseDEAddressModel, + "AutofillUseDEAddressModel", + base::FEATURE_DISABLED_BY_DEFAULT); + // Changes Autofill Clear Form into Undo Autofill. BASE_FEATURE(kAutofillUndo, "AutofillUndo", base::FEATURE_DISABLED_BY_DEFAULT); @@ -455,9 +463,7 @@ base::FEATURE_DISABLED_BY_DEFAULT); // If the feature is enabled, then custom cursor exceeding the (24 dips) -// dimension limit are disallowed in extension-hosted content. This feature is -// dependent on `kAutofillPopupMultiWindowCursorSuppression` - if the latter is -// disabled, so is this. +// dimension limit are disallowed in extension-hosted content. BASE_FEATURE(kAutofillPopupExtensionCursorSuppression, "AutofillPopupExtensionCursorSuppression", base::FEATURE_ENABLED_BY_DEFAULT); @@ -471,12 +477,6 @@ "AutofillPopupImprovedTimingChecks", base::FEATURE_DISABLED_BY_DEFAULT); -// If the feature is enabled, custom cursors exceeding the (24 dips) dimension -// limit are disallowed for all active tabs in all active windows. -BASE_FEATURE(kAutofillPopupMultiWindowCursorSuppression, - "AutofillPopupMultiWindowCursorSuppression", - base::FEATURE_ENABLED_BY_DEFAULT); - // Controls whether the threshold for accepting Autofill popup suggestions // should take into account latency information of the user event. BASE_FEATURE(kAutofillPopupUseLatencyInformationForAcceptThreshold,
diff --git a/components/autofill/core/common/autofill_features.h b/components/autofill/core/common/autofill_features.h index 35e0009..abbe88d 100644 --- a/components/autofill/core/common/autofill_features.h +++ b/components/autofill/core/common/autofill_features.h
@@ -109,6 +109,8 @@ COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillUseI18nAddressModel); COMPONENT_EXPORT(AUTOFILL) +BASE_DECLARE_FEATURE(kAutofillUseDEAddressModel); +COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillUndo); COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillConvergeToExtremeLengthStreetAddress); @@ -150,8 +152,6 @@ COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillPopupImprovedTimingChecks); COMPONENT_EXPORT(AUTOFILL) -BASE_DECLARE_FEATURE(kAutofillPopupMultiWindowCursorSuppression); -COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillPopupUseLatencyInformationForAcceptThreshold); COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillPreferLabelsInSomeCountries);
diff --git a/components/autofill_strings.grdp b/components/autofill_strings.grdp index 881609f..27bc95ac 100644 --- a/components/autofill_strings.grdp +++ b/components/autofill_strings.grdp
@@ -590,10 +590,7 @@ <message name="IDS_AUTOFILL_EDIT_ADDRESS_DIALOG_CANCEL_BUTTON_LABEL" desc="Label of the Cancel button in the dialog that edits an address before saving it."> Cancel </message> - <message name="IDS_AUTOFILL_EXPANDABLE_SUGGESTION_CONTROLL_A11Y_NAME" desc="Autofill desktop popup: the a11y name for the expandable suggestion controll." translateable="false"> - Expand suggestion - </message> - <message name="IDS_AUTOFILL_EXPANDABLE_SUGGESTION_FULL_ADDRESS_A11Y_ADDON" desc="Autofill desktop popup: additional screen reader info to distinguish the address top level suggestions from others."> + <message name="IDS_AUTOFILL_EXPANDABLE_SUGGESTION_FILL_ADDRESS_A11Y_ADDON" desc="Autofill desktop popup: call to action message part for expandable address suggestions."> Fill address </message> <message name="IDS_AUTOFILL_EXPANDABLE_SUGGESTION_EXPAND_SHORTCUT" desc="Autofill desktop popup: the shortcut used to focus the expanding control and effectively open the sub-menu, used in IDS_AUTOFILL_EXPANDABLE_SUGGESTION_SUBMENU_HINT.">
diff --git a/components/autofill_strings_grdp/IDS_AUTOFILL_EXPANDABLE_SUGGESTION_FULL_ADDRESS_A11Y_ADDON.png.sha1 b/components/autofill_strings_grdp/IDS_AUTOFILL_EXPANDABLE_SUGGESTION_FILL_ADDRESS_A11Y_ADDON.png.sha1 similarity index 97% rename from components/autofill_strings_grdp/IDS_AUTOFILL_EXPANDABLE_SUGGESTION_FULL_ADDRESS_A11Y_ADDON.png.sha1 rename to components/autofill_strings_grdp/IDS_AUTOFILL_EXPANDABLE_SUGGESTION_FILL_ADDRESS_A11Y_ADDON.png.sha1 index 80111e5d..de7aff4 100644 --- a/components/autofill_strings_grdp/IDS_AUTOFILL_EXPANDABLE_SUGGESTION_FULL_ADDRESS_A11Y_ADDON.png.sha1 +++ b/components/autofill_strings_grdp/IDS_AUTOFILL_EXPANDABLE_SUGGESTION_FILL_ADDRESS_A11Y_ADDON.png.sha1
@@ -1 +1 @@ -7261852e4e09f881b6430a9dbeef60862db1c1e9 \ No newline at end of file +7261852e4e09f881b6430a9dbeef60862db1c1e9
diff --git a/components/bookmarks/browser/bookmark_client.cc b/components/bookmarks/browser/bookmark_client.cc index 0757c95..70b54c6 100644 --- a/components/bookmarks/browser/bookmark_client.cc +++ b/components/bookmarks/browser/bookmark_client.cc
@@ -4,10 +4,7 @@ #include "components/bookmarks/browser/bookmark_client.h" -#include "base/feature_list.h" #include "base/notreached.h" -#include "build/build_config.h" -#include "components/bookmarks/common/bookmark_features.h" namespace bookmarks { @@ -33,30 +30,4 @@ NOTREACHED(); } -bool BookmarkClient::IsPermanentNodeVisibleWhenEmpty( - bookmarks::BookmarkNode::Type type) const { -#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) - bool is_desktop = false; -#else - bool is_desktop = true; -#endif - - switch (type) { - case BookmarkNode::URL: - NOTREACHED_NORETURN(); - case BookmarkNode::FOLDER: - // Managed node. - return false; - case BookmarkNode::BOOKMARK_BAR: - return is_desktop; - case BookmarkNode::OTHER_NODE: - return is_desktop || base::FeatureList::IsEnabled( - kAllBookmarksBaselineFolderVisibility); - case BookmarkNode::MOBILE: - // Either MOBILE or OTHER_NODE is visible when empty, but never both. - return !IsPermanentNodeVisibleWhenEmpty(BookmarkNode::OTHER_NODE); - } - NOTREACHED_NORETURN(); -} - } // namespace bookmarks
diff --git a/components/bookmarks/browser/bookmark_client.h b/components/bookmarks/browser/bookmark_client.h index 13eefcca..7fa0d302 100644 --- a/components/bookmarks/browser/bookmark_client.h +++ b/components/bookmarks/browser/bookmark_client.h
@@ -12,7 +12,6 @@ #include "base/functional/callback_forward.h" #include "base/task/cancelable_task_tracker.h" -#include "components/bookmarks/browser/bookmark_node.h" #include "components/bookmarks/common/bookmark_metrics.h" #include "components/favicon_base/favicon_callback.h" #include "components/keyed_service/core/keyed_service.h" @@ -22,6 +21,7 @@ namespace bookmarks { class BookmarkModel; +class BookmarkNode; class BookmarkPermanentNode; // A callback that generates a std::unique_ptr<BookmarkPermanentNode>, given a @@ -40,10 +40,6 @@ virtual ~BookmarkClient() = default; - // Returns whether the embedder wants permanent node of type |type| - // to always be visible or to only show them when not empty. - bool IsPermanentNodeVisibleWhenEmpty(BookmarkNode::Type type) const; - // Called during initialization of BookmarkModel. virtual void Init(BookmarkModel* model);
diff --git a/components/bookmarks/browser/bookmark_load_details.cc b/components/bookmarks/browser/bookmark_load_details.cc index 553eaf6..b799264 100644 --- a/components/bookmarks/browser/bookmark_load_details.cc +++ b/components/bookmarks/browser/bookmark_load_details.cc
@@ -26,17 +26,11 @@ // constant (but can vary between embedders with the initial visibility // of permanent nodes). bb_node_ = static_cast<BookmarkPermanentNode*>( - root_node_->Add(BookmarkPermanentNode::CreateBookmarkBar( - max_id_++, client->IsPermanentNodeVisibleWhenEmpty( - BookmarkNode::BOOKMARK_BAR)))); + root_node_->Add(BookmarkPermanentNode::CreateBookmarkBar(max_id_++))); other_folder_node_ = static_cast<BookmarkPermanentNode*>( - root_node_->Add(BookmarkPermanentNode::CreateOtherBookmarks( - max_id_++, - client->IsPermanentNodeVisibleWhenEmpty(BookmarkNode::OTHER_NODE)))); + root_node_->Add(BookmarkPermanentNode::CreateOtherBookmarks(max_id_++))); mobile_folder_node_ = static_cast<BookmarkPermanentNode*>( - root_node_->Add(BookmarkPermanentNode::CreateMobileBookmarks( - max_id_++, - client->IsPermanentNodeVisibleWhenEmpty(BookmarkNode::MOBILE)))); + root_node_->Add(BookmarkPermanentNode::CreateMobileBookmarks(max_id_++))); } BookmarkLoadDetails::~BookmarkLoadDetails() = default;
diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmarks/browser/bookmark_model.cc index 8983198a..dc741755 100644 --- a/components/bookmarks/browser/bookmark_model.cc +++ b/components/bookmarks/browser/bookmark_model.cc
@@ -68,8 +68,8 @@ const std::unique_ptr<BookmarkNode>& n2) { DCHECK(n1->is_permanent_node()); DCHECK(n2->is_permanent_node()); - bool n1_visible = client_->IsPermanentNodeVisibleWhenEmpty(n1->type()); - bool n2_visible = client_->IsPermanentNodeVisibleWhenEmpty(n2->type()); + bool n1_visible = BookmarkPermanentNode::IsTypeVisibleWhenEmpty(n1->type()); + bool n2_visible = BookmarkPermanentNode::IsTypeVisibleWhenEmpty(n2->type()); return n1_visible != n2_visible && n1_visible; } @@ -1145,7 +1145,7 @@ other_node_ = details->other_folder_node(); mobile_node_ = details->mobile_folder_node(); - // TODO(crbug.com/1494120): Load nodes for account storage as well and load + // TODO(crbug.com/1520418): Load nodes for account storage as well and load // UUIDs onto `uuid_index_`. titled_url_index_->SetNodeSorter( @@ -1353,9 +1353,7 @@ { std::unique_ptr<BookmarkPermanentNode> account_bookmark_bar_node = - BookmarkPermanentNode::CreateBookmarkBar( - next_node_id_++, client_->IsPermanentNodeVisibleWhenEmpty( - BookmarkNode::BOOKMARK_BAR)); + BookmarkPermanentNode::CreateBookmarkBar(next_node_id_++); account_bookmark_bar_node_ = account_bookmark_bar_node.get(); AddNode(root_, root_->children().size(), std::move(account_bookmark_bar_node), @@ -1363,18 +1361,14 @@ } { std::unique_ptr<BookmarkPermanentNode> account_other_node = - BookmarkPermanentNode::CreateOtherBookmarks( - next_node_id_++, - client_->IsPermanentNodeVisibleWhenEmpty(BookmarkNode::OTHER_NODE)); + BookmarkPermanentNode::CreateOtherBookmarks(next_node_id_++); account_other_node_ = account_other_node.get(); AddNode(root_, root_->children().size(), std::move(account_other_node), /*added_by_user=*/false, NodeTypeForUuidLookup::kAccountNodes); } { std::unique_ptr<BookmarkPermanentNode> account_mobile_node = - BookmarkPermanentNode::CreateMobileBookmarks( - next_node_id_++, - client_->IsPermanentNodeVisibleWhenEmpty(BookmarkNode::MOBILE)); + BookmarkPermanentNode::CreateMobileBookmarks(next_node_id_++); account_mobile_node_ = account_mobile_node.get(); AddNode(root_, root_->children().size(), std::move(account_mobile_node), /*added_by_user=*/false, NodeTypeForUuidLookup::kAccountNodes);
diff --git a/components/bookmarks/browser/bookmark_node.cc b/components/bookmarks/browser/bookmark_node.cc index edcf0b7..3b4b0af 100644 --- a/components/bookmarks/browser/bookmark_node.cc +++ b/components/bookmarks/browser/bookmark_node.cc
@@ -10,12 +10,15 @@ #include "base/check.h" #include "base/check_op.h" +#include "base/feature_list.h" #include "base/memory/ptr_util.h" #include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/uuid.h" +#include "build/build_config.h" #include "components/bookmarks/browser/bookmark_uuids.h" +#include "components/bookmarks/common/bookmark_features.h" #include "components/strings/grit/components_strings.h" #include "ui/base/l10n/l10n_util.h" @@ -146,8 +149,33 @@ // base::WrapUnique() used because the constructor is private. return base::WrapUnique(new BookmarkPermanentNode( id, FOLDER, base::Uuid::ParseLowercase(kManagedNodeUuid), - std::u16string(), - /*visible_when_empty=*/false)); + std::u16string())); +} + +// static +bool BookmarkPermanentNode::IsTypeVisibleWhenEmpty(Type type) { +#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) + bool is_desktop = false; +#else + bool is_desktop = true; +#endif + + switch (type) { + case BookmarkNode::URL: + NOTREACHED_NORETURN(); + case BookmarkNode::FOLDER: + // Managed node. + return false; + case BookmarkNode::BOOKMARK_BAR: + return is_desktop; + case BookmarkNode::OTHER_NODE: + return is_desktop || base::FeatureList::IsEnabled( + kAllBookmarksBaselineFolderVisibility); + case BookmarkNode::MOBILE: + // Either MOBILE or OTHER_NODE is visible when empty, but never both. + return !IsTypeVisibleWhenEmpty(BookmarkNode::OTHER_NODE); + } + NOTREACHED_NORETURN(); } BookmarkPermanentNode::~BookmarkPermanentNode() = default; @@ -158,45 +186,38 @@ // static std::unique_ptr<BookmarkPermanentNode> BookmarkPermanentNode::CreateBookmarkBar( - int64_t id, - bool visible_when_empty) { + int64_t id) { // base::WrapUnique() used because the constructor is private. return base::WrapUnique(new BookmarkPermanentNode( id, BOOKMARK_BAR, base::Uuid::ParseLowercase(kBookmarkBarNodeUuid), - l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_FOLDER_NAME), - visible_when_empty)); + l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_FOLDER_NAME))); } // static std::unique_ptr<BookmarkPermanentNode> -BookmarkPermanentNode::CreateOtherBookmarks(int64_t id, - bool visible_when_empty) { +BookmarkPermanentNode::CreateOtherBookmarks(int64_t id) { // base::WrapUnique() used because the constructor is private. return base::WrapUnique(new BookmarkPermanentNode( id, OTHER_NODE, base::Uuid::ParseLowercase(kOtherBookmarksNodeUuid), - l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_OTHER_FOLDER_NAME), - visible_when_empty)); + l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_OTHER_FOLDER_NAME))); } // static std::unique_ptr<BookmarkPermanentNode> -BookmarkPermanentNode::CreateMobileBookmarks(int64_t id, - bool visible_when_empty) { +BookmarkPermanentNode::CreateMobileBookmarks(int64_t id) { // base::WrapUnique() used because the constructor is private. return base::WrapUnique(new BookmarkPermanentNode( id, MOBILE, base::Uuid::ParseLowercase(kMobileBookmarksNodeUuid), - l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_MOBILE_FOLDER_NAME), - visible_when_empty)); + l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_MOBILE_FOLDER_NAME))); } BookmarkPermanentNode::BookmarkPermanentNode(int64_t id, Type type, const base::Uuid& uuid, - const std::u16string& title, - bool visible_when_empty) + const std::u16string& title) : BookmarkNode(id, uuid, GURL(), type, /*is_permanent_node=*/true), - visible_when_empty_(visible_when_empty) { - DCHECK(type != URL); + visible_when_empty_(IsTypeVisibleWhenEmpty(type)) { + CHECK(type != URL); SetTitle(title); }
diff --git a/components/bookmarks/browser/bookmark_node.h b/components/bookmarks/browser/bookmark_node.h index e472e07..5d8dc121 100644 --- a/components/bookmarks/browser/bookmark_node.h +++ b/components/bookmarks/browser/bookmark_node.h
@@ -46,7 +46,6 @@ typedef base::flat_map<std::string, std::string> MetaInfoMap; - // Creates a new node with |id|, |uuid| and |url|. BookmarkNode(int64_t id, const base::Uuid& uuid, const GURL& url); BookmarkNode(const BookmarkNode&) = delete; @@ -112,8 +111,8 @@ // representation but we may want to suppress some nodes. virtual bool IsVisible() const; - // Gets/sets/deletes value of |key| in the meta info represented by - // |meta_info_str_|. Return true if key is found in meta info for gets or + // Gets/sets/deletes value of `key` in the meta info represented by + // `meta_info_str_`. Return true if key is found in meta info for gets or // meta info is changed indeed for sets/deletes. bool GetMetaInfo(const std::string& key, std::string* value) const; bool SetMetaInfo(const std::string& key, const std::string& value); @@ -173,7 +172,7 @@ int64_t id_; // The UUID for this node. A BookmarkNode UUID is immutable and differs from - // the |id_| in that it is consistent across different clients and + // the `id_` in that it is consistent across different clients and // stable throughout the lifetime of the bookmark, with the exception of nodes // added to the Managed Bookmarks folder, whose UUIDs are re-assigned at // start-up every time. @@ -224,6 +223,10 @@ static std::unique_ptr<BookmarkPermanentNode> CreateManagedBookmarks( int64_t id); + // Returns whether the permanent node of type `type` should be visible even + // when it is empty (i.e. no children). + static bool IsTypeVisibleWhenEmpty(Type type); + BookmarkPermanentNode(const BookmarkPermanentNode&) = delete; BookmarkPermanentNode& operator=(const BookmarkPermanentNode&) = delete; @@ -239,23 +242,18 @@ // Permanent nodes are well-known, it's not allowed to create arbitrary ones. // Note that the same UUID is used for local-or-syncable instances and // account permanent folders (as exposed by BookmarkModel APIs). - static std::unique_ptr<BookmarkPermanentNode> CreateBookmarkBar( - int64_t id, - bool visible_when_empty); + static std::unique_ptr<BookmarkPermanentNode> CreateBookmarkBar(int64_t id); static std::unique_ptr<BookmarkPermanentNode> CreateOtherBookmarks( - int64_t id, - bool visible_when_empty); + int64_t id); static std::unique_ptr<BookmarkPermanentNode> CreateMobileBookmarks( - int64_t id, - bool visible_when_empty); + int64_t id); // Constructor is private to disallow the construction of permanent nodes // other than the well-known ones, see factory methods. BookmarkPermanentNode(int64_t id, Type type, const base::Uuid& uuid, - const std::u16string& title, - bool visible_when_empty); + const std::u16string& title); const bool visible_when_empty_; };
diff --git a/components/bookmarks/browser/typed_count_sorter.cc b/components/bookmarks/browser/typed_count_sorter.cc index f19ba83..ebf311d 100644 --- a/components/bookmarks/browser/typed_count_sorter.cc +++ b/components/bookmarks/browser/typed_count_sorter.cc
@@ -7,6 +7,7 @@ #include "base/memory/raw_ref.h" #include "base/ranges/algorithm.h" #include "components/bookmarks/browser/bookmark_client.h" +#include "components/bookmarks/browser/titled_url_node.h" namespace bookmarks {
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ar.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ar.xtb index b411aaaa..21ee1c3 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ar.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ar.xtb
@@ -331,6 +331,7 @@ <translation id="6405650995156823521"><ph name="FIRST_PART" /> • <ph name="SECOND_PART" /></translation> <translation id="6439114592976064011">منع المواقع الإلكترونية من استخدام جهاز الواقع الافتراضي وبياناته.</translation> <translation id="6447842834002726250">ملفّات تعريف الارتباط</translation> +<translation id="6452138246455930388">انخفاض في السعر ضِمن علامة التبويب المفتوحة من <ph name="OLD_PRICE" /> إلى <ph name="NEW_PRICE" />، للمنتج "<ph name="PRODUCT_NAME" />"، على النطاق <ph name="DOMAIN_NAME" /></translation> <translation id="6500423977866688905">تفعيل الإعداد "العرض المخصص للجهاز الجوّال" عند صغر حجم النافذة</translation> <translation id="6527303717912515753">مشاركة</translation> <translation id="652937045869844725">جرِّب السماح باستخدام ملفات تعريف الارتباط التابعة لجهات خارجية. هذا يعني أنّك ستحظى بمستوى حماية أقل، غير أنّ ميزات الموقع الإلكتروني ستعمل غالبًا.</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_cs.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_cs.xtb index 0bd3305..3abbbb2 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_cs.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_cs.xtb
@@ -330,6 +330,7 @@ <translation id="6405650995156823521"><ph name="FIRST_PART" /> • <ph name="SECOND_PART" /></translation> <translation id="6439114592976064011">Bránit webům v používání zařízení a dat pro virtuální realitu</translation> <translation id="6447842834002726250">Soubory cookie</translation> +<translation id="6452138246455930388">Pokles ceny na otevřené kartě z <ph name="OLD_PRICE" /> na <ph name="NEW_PRICE" />, <ph name="PRODUCT_NAME" />, <ph name="DOMAIN_NAME" /></translation> <translation id="6500423977866688905">Když je okno úzké, požádejte o mobilní zobrazení</translation> <translation id="6527303717912515753">Sdílet</translation> <translation id="652937045869844725">Zkuste povolit soubory cookie třetích stran – budete méně chráněni, ale funkce webu budou s větší pravděpodobností fungovat</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_en-GB.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_en-GB.xtb index ba57957..49c5a1d 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_en-GB.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_en-GB.xtb
@@ -330,6 +330,7 @@ <translation id="6405650995156823521"><ph name="FIRST_PART" /> • <ph name="SECOND_PART" /></translation> <translation id="6439114592976064011">Block sites from using your virtual reality device and data</translation> <translation id="6447842834002726250">Cookies</translation> +<translation id="6452138246455930388">Price drop on your open tab, from <ph name="OLD_PRICE" /> to <ph name="NEW_PRICE" />, <ph name="PRODUCT_NAME" />, <ph name="DOMAIN_NAME" /></translation> <translation id="6500423977866688905">When the window is narrow, request mobile view</translation> <translation id="6527303717912515753">Share</translation> <translation id="652937045869844725">Try allowing third-party cookies, which means less protection but that site features are more likely to work</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_fi.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_fi.xtb index b094e13..46f7afe 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_fi.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_fi.xtb
@@ -330,6 +330,7 @@ <translation id="6405650995156823521"><ph name="FIRST_PART" /> • <ph name="SECOND_PART" /></translation> <translation id="6439114592976064011">Estä sivustoja käyttämästä virtuaalitodellisuuslaitteitasi ja ‑dataasi</translation> <translation id="6447842834002726250">Evästeet</translation> +<translation id="6452138246455930388">Hinnanalennus avoimella välilehdellä, vanha hinta <ph name="OLD_PRICE" />, nyt <ph name="NEW_PRICE" />, <ph name="PRODUCT_NAME" />, <ph name="DOMAIN_NAME" /></translation> <translation id="6500423977866688905">Kun ikkuna on kapea, pyydä mobiilinäkymää</translation> <translation id="6527303717912515753">Jaa</translation> <translation id="652937045869844725">Kokeile sallia kolmannen osapuolen evästeet. Suojaus ei tällöin ole niin vahva, mutta sivuston ominaisuudet toimivat todennäköisemmin.</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ja.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ja.xtb index 88bf148..616b087 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ja.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ja.xtb
@@ -330,6 +330,7 @@ <translation id="6405650995156823521"><ph name="FIRST_PART" /> • <ph name="SECOND_PART" /></translation> <translation id="6439114592976064011">サイトによるバーチャル リアリティ デバイスとデータの使用をブロックする</translation> <translation id="6447842834002726250">Cookie</translation> +<translation id="6452138246455930388">開いているタブの値下げ情報(<ph name="OLD_PRICE" /> から <ph name="NEW_PRICE" />、<ph name="PRODUCT_NAME" />、<ph name="DOMAIN_NAME" />)</translation> <translation id="6500423977866688905">ウィンドウが狭い場合はモバイルビューをリクエストする</translation> <translation id="6527303717912515753">共有</translation> <translation id="652937045869844725">サードパーティ Cookie を許可してみてください。保護の強度は低下しますが、サイトの機能が動作する可能性が高くなります</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_kn.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_kn.xtb index 3c33d4ef..40cc7a3 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_kn.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_kn.xtb
@@ -330,6 +330,7 @@ <translation id="6405650995156823521"><ph name="FIRST_PART" /> • <ph name="SECOND_PART" /></translation> <translation id="6439114592976064011">ನಿಮ್ಮ ವರ್ಚುವಲ್ ರಿಯಾಲಿಟಿ ಸಾಧನ ಮತ್ತು ಡೇಟಾವನ್ನು ಬಳಸದ ಹಾಗೆ ಸೈಟ್ಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ</translation> <translation id="6447842834002726250">ಕುಕೀಸ್</translation> +<translation id="6452138246455930388">ನಿಮ್ಮ ತೆರೆದ ಟ್ಯಾಬ್ನಲ್ಲಿ ಬೆಲೆ ಇಳಿಕೆ, <ph name="OLD_PRICE" /> ರಿಂದ <ph name="NEW_PRICE" />, <ph name="PRODUCT_NAME" />, <ph name="DOMAIN_NAME" /></translation> <translation id="6500423977866688905">ವಿಂಡೋ ಚಿಕ್ಕದಾಗಿದ್ದರೆ, ಮೊಬೈಲ್ ವೀಕ್ಷಣೆಯನ್ನು ವಿನಂತಿಸಿ</translation> <translation id="6527303717912515753">ಹಂಚಿಕೊಳ್ಳು</translation> <translation id="652937045869844725">ಥರ್ಡ್-ಪಾರ್ಟಿ ಕುಕೀಗಳನ್ನು ಅನುಮತಿಸಲು ಪ್ರಯತ್ನಿಸಿ, ಇದು ನಿಮ್ಮ ಸೈಟ್ನ ಸುರಕ್ಷತೆಯು ರಾಜಿ ಮಾಡಿಕೊಂಡರೂ ಸಹ ಸೈಟ್ನ ಫೀಚರ್ಗಳು ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ko.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ko.xtb index 3d28aa2a..91c42448 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ko.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ko.xtb
@@ -330,6 +330,7 @@ <translation id="6405650995156823521"><ph name="FIRST_PART" /> • <ph name="SECOND_PART" /></translation> <translation id="6439114592976064011">사이트에서 내 가상 현실 기기 및 데이터를 사용하지 못하도록 차단</translation> <translation id="6447842834002726250">쿠키</translation> +<translation id="6452138246455930388">열려 있는 탭의 가격 인하(<ph name="OLD_PRICE" />~<ph name="NEW_PRICE" />, <ph name="PRODUCT_NAME" />, <ph name="DOMAIN_NAME" />)</translation> <translation id="6500423977866688905">창이 좁은 경우 모바일 뷰 요청</translation> <translation id="6527303717912515753">공유</translation> <translation id="652937045869844725">서드 파티 쿠키를 허용해 보세요. 보안은 취약해지지만 사이트 기능이 작동할 가능성은 높아집니다.</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_mr.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_mr.xtb index 86149ead..90075eb 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_mr.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_mr.xtb
@@ -330,6 +330,7 @@ <translation id="6405650995156823521"><ph name="FIRST_PART" /> • <ph name="SECOND_PART" /></translation> <translation id="6439114592976064011">साइटना तुमचे आभासी वास्तविकता डिव्हाइस आणि डेटा वापरण्यापासून ब्लॉक करा</translation> <translation id="6447842834002726250">कुकीज</translation> +<translation id="6452138246455930388">तुमच्या उघड्या असलेल्या टॅबवरील किमतीमध्ये <ph name="OLD_PRICE" /> वरून <ph name="NEW_PRICE" /> वर घट झाली आहे, <ph name="PRODUCT_NAME" />, <ph name="DOMAIN_NAME" /></translation> <translation id="6500423977866688905">विंडो अरुंद असते, तेव्हा मोबाइल दृश्याची विनंती करा</translation> <translation id="6527303717912515753">शेअर करा</translation> <translation id="652937045869844725">तृतीय पक्ष कुकीना अनुमती देऊन पहा, ज्यामुळे कमी संरक्षण मिळेल, पण साइटची वैशिष्ट्ये काम करण्याची अधिक शक्यता आहे</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ro.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ro.xtb index 1a5166e..ec2ddbca 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ro.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ro.xtb
@@ -330,6 +330,7 @@ <translation id="6405650995156823521"><ph name="FIRST_PART" /> • <ph name="SECOND_PART" /></translation> <translation id="6439114592976064011">Împiedică site-urile să folosească dispozitivul de realitate virtuală și datele conexe</translation> <translation id="6447842834002726250">Cookie-uri</translation> +<translation id="6452138246455930388">Scădere de preț în fila deschisă, de la <ph name="OLD_PRICE" /> la <ph name="NEW_PRICE" />, <ph name="PRODUCT_NAME" />, <ph name="DOMAIN_NAME" /></translation> <translation id="6500423977866688905">Când fereastra este îngustă, solicită afișarea pe mobil</translation> <translation id="6527303717912515753">Trimite</translation> <translation id="652937045869844725">Permite cookie-urile terță parte, ceea ce înseamnă mai puțină protecție, dar mai multe șanse ca funcțiile site-ului să ruleze</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sl.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sl.xtb index 04b6e7d..4874f2d 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_sl.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sl.xtb
@@ -330,6 +330,7 @@ <translation id="6405650995156823521"><ph name="FIRST_PART" /> • <ph name="SECOND_PART" /></translation> <translation id="6439114592976064011">Spletnim mestom prepreči spremljanje naprave in podatkov za navidezno resničnost</translation> <translation id="6447842834002726250">Piškotki</translation> +<translation id="6452138246455930388">Znižanje cene na odprtem zavihku s cene <ph name="OLD_PRICE" /> na <ph name="NEW_PRICE" />, <ph name="PRODUCT_NAME" />, <ph name="DOMAIN_NAME" /></translation> <translation id="6500423977866688905">Če je okno omejeno, zahtevajte pogled za mobilno napravo</translation> <translation id="6527303717912515753">Skupna raba</translation> <translation id="652937045869844725">Poskusite omogočiti piškotke tretjih oseb, kar pomeni manj zaščite, vendar je večja verjetnost, da bodo funkcije spletnega mesta delovale</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_uk.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_uk.xtb index 0a8d8ef..ae81406 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_uk.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_uk.xtb
@@ -330,6 +330,7 @@ <translation id="6405650995156823521"><ph name="FIRST_PART" /> • <ph name="SECOND_PART" /></translation> <translation id="6439114592976064011">Заборонити сайтам доступ до даних і пристрою віртуальної реальності</translation> <translation id="6447842834002726250">Файли cookie</translation> +<translation id="6452138246455930388">Зниження ціни на відкритій вкладці з <ph name="OLD_PRICE" /> до <ph name="NEW_PRICE" /> (<ph name="PRODUCT_NAME" />, <ph name="DOMAIN_NAME" />)</translation> <translation id="6500423977866688905">Коли вікно завузьке, показувати мобільну версію</translation> <translation id="6527303717912515753">Надіслати</translation> <translation id="652937045869844725">Спробуйте дозволити сторонні файли cookie. Це зменшить рівень захисту, але функції сайту з більшою імовірністю працюватимуть.</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb index 2bb1207..1dcb19a 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb
@@ -330,6 +330,7 @@ <translation id="6405650995156823521"><ph name="FIRST_PART" /> • <ph name="SECOND_PART" /></translation> <translation id="6439114592976064011">禁止网站使用您的虚拟现实设备和数据</translation> <translation id="6447842834002726250">Cookie</translation> +<translation id="6452138246455930388">您打开的标签页中有降价,原价为 <ph name="OLD_PRICE" />,现价为 <ph name="NEW_PRICE" />”,<ph name="PRODUCT_NAME" />,<ph name="DOMAIN_NAME" /></translation> <translation id="6500423977866688905">当窗口狭窄时,请求使用移动版视图</translation> <translation id="6527303717912515753">分享</translation> <translation id="652937045869844725">尝试允许使用第三方 Cookie,这意味着您将采用较低级别的保护措施,但网站功能更有可能正常运行</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-HK.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-HK.xtb index 954a29cf..9e3eb59 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-HK.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-HK.xtb
@@ -330,6 +330,7 @@ <translation id="6405650995156823521"><ph name="FIRST_PART" /> • <ph name="SECOND_PART" /></translation> <translation id="6439114592976064011">禁止網站使用您的虛擬實境裝置和資料</translation> <translation id="6447842834002726250">Cookie</translation> +<translation id="6452138246455930388">開咗嘅分頁有商品減價,由 <ph name="OLD_PRICE" /> 減到 <ph name="NEW_PRICE" />,<ph name="PRODUCT_NAME" />,<ph name="DOMAIN_NAME" /></translation> <translation id="6500423977866688905">視窗縮小時要求使用流動裝置檢視模式</translation> <translation id="6527303717912515753">分享</translation> <translation id="652937045869844725">請嘗試允許使用第三方 Cookie,這代表保護程度較低,但網站功能較容易運作</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-TW.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-TW.xtb index 1098186..92c77fe3 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-TW.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-TW.xtb
@@ -330,6 +330,7 @@ <translation id="6405650995156823521"><ph name="FIRST_PART" /> • <ph name="SECOND_PART" /></translation> <translation id="6439114592976064011">禁止網站使用你的虛擬實境裝置和資料</translation> <translation id="6447842834002726250">Cookie</translation> +<translation id="6452138246455930388">開啟的分頁中有商品降價,原價為 <ph name="OLD_PRICE" />,現價為 <ph name="NEW_PRICE" />,<ph name="PRODUCT_NAME" />,<ph name="DOMAIN_NAME" /></translation> <translation id="6500423977866688905">視窗縮小時要求使用行動裝置檢視畫面</translation> <translation id="6527303717912515753">分享</translation> <translation id="652937045869844725">請嘗試允許使用第三方 Cookie,這代表保護程度較低,但網站功能較容易運作</translation>
diff --git a/components/capture_mode/camera_video_frame_handler.cc b/components/capture_mode/camera_video_frame_handler.cc index 494155e..0fb57ea4 100644 --- a/components/capture_mode/camera_video_frame_handler.cc +++ b/components/capture_mode/camera_video_frame_handler.cc
@@ -45,7 +45,6 @@ // to the display compositor, and may be used as overlays. constexpr uint32_t kSharedImageUsage = gpu::SHARED_IMAGE_USAGE_GLES2_READ | gpu::SHARED_IMAGE_USAGE_RASTER_READ | - gpu::SHARED_IMAGE_USAGE_RASTER_WRITE | gpu::SHARED_IMAGE_USAGE_DISPLAY_READ | gpu::SHARED_IMAGE_USAGE_SCANOUT; // The usage of the GpuMemoryBuffer that backs the video frames on an actual
diff --git a/components/certificate_transparency/data/log_list.json b/components/certificate_transparency/data/log_list.json index 6bd9b0c..f89f9839 100644 --- a/components/certificate_transparency/data/log_list.json +++ b/components/certificate_transparency/data/log_list.json
@@ -1,6 +1,6 @@ { - "version": "30.5", - "log_list_timestamp": "2024-01-21T12:53:58Z", + "version": "30.6", + "log_list_timestamp": "2024-01-22T12:55:42Z", "operators": [ { "name": "Google",
diff --git a/components/enterprise/data_controls/BUILD.gn b/components/enterprise/data_controls/BUILD.gn index a3927a3..f0b2d55 100644 --- a/components/enterprise/data_controls/BUILD.gn +++ b/components/enterprise/data_controls/BUILD.gn
@@ -40,6 +40,7 @@ "//components/policy/core/browser", "//components/policy/core/common:common_constants", "//components/prefs", + "//components/strings", "//components/url_matcher", "//url", ]
diff --git a/components/enterprise/data_controls/attributes_condition.cc b/components/enterprise/data_controls/attributes_condition.cc index f429265..2c7a5d4 100644 --- a/components/enterprise/data_controls/attributes_condition.cc +++ b/components/enterprise/data_controls/attributes_condition.cc
@@ -12,20 +12,6 @@ namespace data_controls { -namespace { - -// Constants used to parse sub-dictionaries of DLP policies that should map to -// an AttributesCondition. -constexpr char kKeyUrls[] = "urls"; -constexpr char kKeyIncognito[] = "incognito"; -constexpr char kKeyOsClipboard[] = "os_clipboard"; - -#if BUILDFLAG(IS_CHROMEOS) -constexpr char kKeyComponents[] = "components"; -#endif // BUILDFLAG(IS_CHROMEOS) - -} // namespace - AttributesCondition::~AttributesCondition() = default; AttributesCondition::AttributesCondition(const base::Value::Dict& value) {
diff --git a/components/enterprise/data_controls/attributes_condition.h b/components/enterprise/data_controls/attributes_condition.h index 936fdad..c6c38c0 100644 --- a/components/enterprise/data_controls/attributes_condition.h +++ b/components/enterprise/data_controls/attributes_condition.h
@@ -32,6 +32,16 @@ // DataLeakPreventionRulesList policy (see sub-classes below). class AttributesCondition { public: + // Constants used to parse sub-dictionaries of Data Controls policies that + // should map to an AttributesCondition. If an attribute is not used outside + // of this class, declare it in the anonymous namespace instead. + static constexpr char kKeyUrls[] = "urls"; + static constexpr char kKeyIncognito[] = "incognito"; + static constexpr char kKeyOsClipboard[] = "os_clipboard"; +#if BUILDFLAG(IS_CHROMEOS) + static constexpr char kKeyComponents[] = "components"; +#endif // BUILDFLAG(IS_CHROMEOS) + explicit AttributesCondition(const base::Value::Dict& value); AttributesCondition(AttributesCondition&& other); ~AttributesCondition();
diff --git a/components/enterprise/data_controls/data_controls_policy_handler.cc b/components/enterprise/data_controls/data_controls_policy_handler.cc index 1f4b43b..83fc80a 100644 --- a/components/enterprise/data_controls/data_controls_policy_handler.cc +++ b/components/enterprise/data_controls/data_controls_policy_handler.cc
@@ -4,6 +4,7 @@ #include "components/enterprise/data_controls/data_controls_policy_handler.h" +#include "components/enterprise/data_controls/rule.h" #include "components/prefs/pref_value_map.h" namespace data_controls { @@ -24,6 +25,7 @@ if (!pref_path_) { return; } + // It is safe to use `GetValueUnsafe()` as multiple policy types are handled. const base::Value* value = policies.GetValueUnsafe(policy_name()); if (value) { @@ -31,4 +33,29 @@ } } +bool DataControlsPolicyHandler::CheckPolicySettings( + const policy::PolicyMap& policies, + policy::PolicyErrorMap* errors) { + if (!policy::CloudOnlyPolicyHandler::CheckPolicySettings(policies, errors)) { + return false; + } + + const base::Value* value = + policies.GetValue(policy_name(), base::Value::Type::LIST); + if (!value) { + return true; + } + + DCHECK(value->is_list()); + const auto& rules_list = value->GetList(); + + bool valid = true; + for (size_t i = 0; i < rules_list.size(); ++i) { + DCHECK(rules_list[i].is_dict()); + valid &= Rule::ValidateRuleValue(policy_name(), rules_list[i].GetDict(), + {i}, errors); + } + return valid; +} + } // namespace data_controls
diff --git a/components/enterprise/data_controls/data_controls_policy_handler.h b/components/enterprise/data_controls/data_controls_policy_handler.h index b346eb14..50d7c16 100644 --- a/components/enterprise/data_controls/data_controls_policy_handler.h +++ b/components/enterprise/data_controls/data_controls_policy_handler.h
@@ -9,6 +9,10 @@ class PrefValueMap; +namespace policy { +class PolicyErrorMap; +} // namespace policy + namespace data_controls { class DataControlsPolicyHandler : public policy::CloudOnlyPolicyHandler { @@ -21,6 +25,9 @@ void ApplyPolicySettings(const policy::PolicyMap& policies, PrefValueMap* prefs) override; + bool CheckPolicySettings(const policy::PolicyMap& policies, + policy::PolicyErrorMap* errors) override; + private: const char* pref_path_; };
diff --git a/components/enterprise/data_controls/data_controls_policy_handler_unittest.cc b/components/enterprise/data_controls/data_controls_policy_handler_unittest.cc index 0a8fd98..d5fce760 100644 --- a/components/enterprise/data_controls/data_controls_policy_handler_unittest.cc +++ b/components/enterprise/data_controls/data_controls_policy_handler_unittest.cc
@@ -22,32 +22,324 @@ constexpr char kPolicyName[] = "PolicyForTesting"; +// Schema copied from out/Default/gen/chrome/app/policy/policy_templates.json constexpr char kSchema[] = R"( - { - "type": "object", +{ + "type": "object", + "properties": { + "PolicyForTesting": { + "items": { "properties": { - "PolicyForTesting": { - "type": "array", + "and": { "items": { - "type": "object", + "id": "DataControlsCondition", "properties": { - "url": { "type": "string" }, - "incognito": { "type": "boolean" }, + "and": { + "items": { + "$ref": "DataControlsCondition" + }, + "type": "array" + }, + "destinations": { + "properties": { + "incognito": { + "type": "boolean" + }, + "os_clipboard": { + "type": "boolean" + }, + "other_profile": { + "type": "boolean" + }, + "urls": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "not": { + "$ref": "DataControlsCondition" + }, + "or": { + "items": { + "$ref": "DataControlsCondition" + }, + "type": "array" + }, + "sources": { + "properties": { + "incognito": { + "type": "boolean" + }, + "os_clipboard": { + "type": "boolean" + }, + "other_profile": { + "type": "boolean" + }, + "urls": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "destinations": { + "properties": { + "incognito": { + "type": "boolean" + }, + "os_clipboard": { + "type": "boolean" + }, + "other_profile": { + "type": "boolean" + }, + "urls": { + "items": { + "type": "string" + }, + "type": "array" } - } + }, + "type": "object" + }, + "name": { + "type": "string" + }, + "not": { + "properties": { + "and": { + "items": { + "$ref": "DataControlsCondition" + }, + "type": "array" + }, + "destinations": { + "properties": { + "incognito": { + "type": "boolean" + }, + "os_clipboard": { + "type": "boolean" + }, + "other_profile": { + "type": "boolean" + }, + "urls": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "not": { + "$ref": "DataControlsCondition" + }, + "or": { + "items": { + "$ref": "DataControlsCondition" + }, + "type": "array" + }, + "sources": { + "properties": { + "incognito": { + "type": "boolean" + }, + "os_clipboard": { + "type": "boolean" + }, + "other_profile": { + "type": "boolean" + }, + "urls": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "or": { + "items": { + "properties": { + "and": { + "items": { + "$ref": "DataControlsCondition" + }, + "type": "array" + }, + "destinations": { + "properties": { + "incognito": { + "type": "boolean" + }, + "os_clipboard": { + "type": "boolean" + }, + "other_profile": { + "type": "boolean" + }, + "urls": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "not": { + "$ref": "DataControlsCondition" + }, + "or": { + "items": { + "$ref": "DataControlsCondition" + }, + "type": "array" + }, + "sources": { + "properties": { + "incognito": { + "type": "boolean" + }, + "os_clipboard": { + "type": "boolean" + }, + "other_profile": { + "type": "boolean" + }, + "urls": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "restrictions": { + "items": { + "properties": { + "class": { + "enum": [ + "CLIPBOARD", + "FILE_ATTACH", + "FILE_DOWNLOAD", + "PRINTING" + ], + "type": "string" + }, + "level": { + "enum": [ + "BLOCK", + "WARN", + "REPORT" + ], + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "rule_id": { + "type": "string" + }, + "sources": { + "properties": { + "byte_size_higher_than": { + "minimum": 0, + "type": "integer" + }, + "byte_size_lower_than": { + "minimum": 0, + "type": "integer" + }, + "file_number_higher_than": { + "minimum": 0, + "type": "integer" + }, + "file_number_lower_than": { + "minimum": 0, + "type": "integer" + }, + "file_type": { + "items": { + "type": "string" + }, + "type": "array" + }, + "incognito": { + "type": "boolean" + }, + "mime_type": { + "items": { + "type": "string" + }, + "type": "array" + }, + "os_clipboard": { + "type": "boolean" + }, + "other_profile": { + "type": "boolean" + }, + "urls": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" } - } - })"; + }, + "type": "object" + }, + "type": "array" + } + } +})"; constexpr char kValidPolicy[] = R"( [ { - "url": "https://google.com", - "incognito": true, + "destinations": { + "urls": ["https://google.com"], + "incognito": true, + } }, { - "url": "https://foo.com", - "incognito": false, + "sources": { + "urls": ["https://foo.com"], + "incognito": false, + } } ] )"; @@ -67,6 +359,38 @@ constexpr char kInvalidPolicy[] = "[1,2,3]"; +constexpr std::pair<const char*, const char16_t*> kInvalidTestCases[] = { + { + R"([ + { + "or": [], + "and": [], + } + ])", + u"Error at PolicyForTesting[0]: Keys \"and, or\" cannot be set in the " + u"same dictionary"}, + + { + R"([ + { + "not": {}, + "destinations": {} + } + ])", + u"Error at PolicyForTesting[0]: Keys \"destinations\" cannot be set in " + u"the same dictionary as the \"not\" keys"}, + { + R"([ + { + "sources": { + "os_clipboard": true, + "incognito": true + } + } + ])", + u"Error at PolicyForTesting[0].sources: Keys \"incognito\" cannot be " + u"set in the same dictionary as the \"os_clipboard\" keys"}}; + class DataControlsPolicyHandlerTest : public testing::Test { public: policy::Schema schema() { @@ -92,6 +416,20 @@ } }; +// Tests polices with a valid schema, but invalid key usages. +class DataControlsPolicyHandlerInvalidKeysTest + : public testing::WithParamInterface< + std::pair<const char*, const char16_t*>>, + public DataControlsPolicyHandlerTest { + public: + const char* policy_value() { return GetParam().first; } + const char16_t* expected_messages() { return GetParam().second; } +}; + +INSTANTIATE_TEST_SUITE_P(All, + DataControlsPolicyHandlerInvalidKeysTest, + testing::ValuesIn(kInvalidTestCases)); + } // namespace TEST_F(DataControlsPolicyHandlerTest, AllowsCloudSources) { @@ -132,7 +470,7 @@ } } -TEST_F(DataControlsPolicyHandlerTest, BlocksInvalidPolicy) { +TEST_F(DataControlsPolicyHandlerTest, BlocksInvalidSchema) { for (auto scope : kCloudSources) { policy::PolicyMap map = CreatePolicyMap(kInvalidPolicy, scope); auto handler = std::make_unique<DataControlsPolicyHandler>( @@ -149,4 +487,18 @@ } } +TEST_P(DataControlsPolicyHandlerInvalidKeysTest, Test) { + policy::PolicyMap map = CreatePolicyMap( + policy_value(), policy::PolicySource::POLICY_SOURCE_CLOUD); + auto handler = std::make_unique<DataControlsPolicyHandler>( + kPolicyName, kTestPref, schema()); + + policy::PolicyErrorMap errors; + ASSERT_FALSE(handler->CheckPolicySettings(map, &errors)); + ASSERT_FALSE(errors.empty()); + ASSERT_TRUE(errors.HasError(kPolicyName)); + std::u16string messages = errors.GetErrorMessages(kPolicyName); + ASSERT_EQ(messages, expected_messages()); +} + } // namespace data_controls
diff --git a/components/enterprise/data_controls/rule.cc b/components/enterprise/data_controls/rule.cc index a8ebdc8..e378f86 100644 --- a/components/enterprise/data_controls/rule.cc +++ b/components/enterprise/data_controls/rule.cc
@@ -4,10 +4,15 @@ #include "components/enterprise/data_controls/rule.h" +#include <vector> + #include "base/containers/fixed_flat_map.h" #include "base/logging.h" +#include "base/strings/string_util.h" #include "components/enterprise/data_controls/and_condition.h" #include "components/enterprise/data_controls/attributes_condition.h" +#include "components/policy/core/browser/policy_error_map.h" +#include "components/strings/grit/components_strings.h" namespace data_controls { namespace { @@ -20,6 +25,9 @@ constexpr char kKeySources[] = "sources"; constexpr char kKeyDestinations[] = "destinations"; constexpr char kKeyRestrictions[] = "restrictions"; +constexpr char kKeyAnd[] = "and"; +constexpr char kKeyOr[] = "or"; +constexpr char kKeyNot[] = "not"; constexpr char kKeyClass[] = "class"; constexpr char kKeyLevel[] = "level"; @@ -29,6 +37,61 @@ return value ? *value : std::string(); } +// A oneof attribute is an attribute that needs to be the only condition in +// their dictionary. If other attributes are present alongside them, it creates +// ambiguity as to how the rule is evaluated, and as such this is considered an +// error in the set policy. +std::vector<base::StringPiece> OneOfConditions(const base::Value::Dict& value) { + std::vector<base::StringPiece> oneof_conditions; + for (const char* oneof_value : + {// "and", "or" and "not" need to be the only value at their level as it + // is otherwise ambiguous which of them has precedence or how they are + // combined together into one condition. + kKeyAnd, kKeyOr, kKeyNot, + + // "os_clipboard" needs to be the only value in its dictionary as it + // represents a unique source/destination. For example, a clipboard + // interaction cannot both be the OS clipboard and match URL patterns + // at the same time. + AttributesCondition::kKeyOsClipboard}) { + if (value.contains(oneof_value)) { + oneof_conditions.push_back(oneof_value); + } + } + return oneof_conditions; +} + +// Returns any condition present in `value` that wouldn't match +// `OneOfConditions`. +std::vector<base::StringPiece> AnyOfConditions(const base::Value::Dict& value) { + std::vector<base::StringPiece> anyof_conditions; + for (const char* anyof_condition : + {kKeySources, kKeyDestinations, AttributesCondition::kKeyUrls, + AttributesCondition::kKeyIncognito, +#if BUILDFLAG(IS_CHROMEOS) + AttributesCondition::kKeyComponents +#endif // BUILDFLAG(IS_CHROMEOS) + }) { + if (value.contains(anyof_condition)) { + anyof_conditions.push_back(anyof_condition); + } + } + return anyof_conditions; +} + +// Clones `error_path` and update the copy with a new value. +policy::PolicyErrorPath CreateErrorPath( + const policy::PolicyErrorPath& error_path, + std::string new_value, + std::optional<int> new_list_index = std::nullopt) { + policy::PolicyErrorPath new_error_path(error_path); + new_error_path.push_back(std::move(new_value)); + if (new_list_index) { + new_error_path.push_back(*new_list_index); + } + return new_error_path; +} + } // namespace Rule::Rule(Rule&& other) = default; @@ -46,23 +109,23 @@ restrictions_(std::move(restrictions)) {} // static -absl::optional<Rule> Rule::Create(const base::Value& value) { +std::optional<Rule> Rule::Create(const base::Value& value) { if (!value.is_dict()) { - return absl::nullopt; + return std::nullopt; } return Create(value.GetDict()); } // static -absl::optional<Rule> Rule::Create(const base::Value::Dict& value) { +std::optional<Rule> Rule::Create(const base::Value::Dict& value) { auto condition = GetCondition(value); if (!condition) { - return absl::nullopt; + return std::nullopt; } auto restrictions = GetRestrictions(value); if (restrictions.empty()) { - return absl::nullopt; + return std::nullopt; } return absl::make_optional(Rule( @@ -266,4 +329,70 @@ } } +// static +bool Rule::ValidateRuleValue(const char* policy_name, + const base::Value::Dict& value, + policy::PolicyErrorPath error_path, + policy::PolicyErrorMap* errors) { + std::vector<base::StringPiece> oneof_conditions = OneOfConditions(value); + std::vector<base::StringPiece> anyof_conditions = AnyOfConditions(value); + + if (oneof_conditions.size() > 1 || + (oneof_conditions.size() == 1 && anyof_conditions.size() != 0)) { + AddMutuallyExclusiveErrors(oneof_conditions, anyof_conditions, policy_name, + std::move(error_path), errors); + return false; + } + + // Even if the values in `oneof_conditions` and `anyof_conditions` are + // acceptable for `value`, it's possible there are errors in nested values, so + // additional checks must be performed recursively. + + bool valid = true; + for (const char* sub_key : {kKeySources, kKeyDestinations, kKeyNot}) { + if (value.contains(sub_key)) { + valid &= ValidateRuleValue(policy_name, *value.FindDict(sub_key), + CreateErrorPath(error_path, sub_key), errors); + } + } + for (const char* sub_key : {kKeyAnd, kKeyOr}) { + if (value.contains(sub_key)) { + int index = 0; + for (const base::Value& sub_condition : *value.FindList(sub_key)) { + valid &= ValidateRuleValue(policy_name, sub_condition.GetDict(), + CreateErrorPath(error_path, sub_key, index), + errors); + ++index; + } + } + } + + return valid; +} + +// static +void Rule::AddMutuallyExclusiveErrors( + const std::vector<base::StringPiece>& oneof_conditions, + const std::vector<base::StringPiece>& anyof_conditions, + const char* policy_name, + policy::PolicyErrorPath error_path, + policy::PolicyErrorMap* errors) { + if (oneof_conditions.size() == 0) { + return; + } + + if (oneof_conditions.size() > 1) { + errors->AddError(policy_name, + IDS_POLICY_DATA_CONTROLS_MUTUALLY_EXCLUSIVE_KEYS, + base::JoinString(oneof_conditions, ", "), error_path); + } + + if (anyof_conditions.size() > 0) { + errors->AddError(policy_name, + IDS_POLICY_DATA_CONTROLS_MUTUALLY_EXCLUSIVE_KEY_SETS, + base::JoinString(anyof_conditions, ", "), + base::JoinString(oneof_conditions, ", "), error_path); + } +} + } // namespace data_controls
diff --git a/components/enterprise/data_controls/rule.h b/components/enterprise/data_controls/rule.h index 97118262..ac2a7ba9 100644 --- a/components/enterprise/data_controls/rule.h +++ b/components/enterprise/data_controls/rule.h
@@ -5,13 +5,20 @@ #ifndef COMPONENTS_ENTERPRISE_DATA_CONTROLS_RULE_H_ #define COMPONENTS_ENTERPRISE_DATA_CONTROLS_RULE_H_ +#include <optional> #include <string> +#include "base/strings/string_piece.h" #include "base/values.h" #include "components/enterprise/data_controls/action_context.h" #include "components/enterprise/data_controls/condition.h" +#include "components/policy/core/common/schema.h" #include "third_party/abseil-cpp/absl/types/optional.h" +namespace policy { +class PolicyErrorMap; +} // namespace policy + namespace data_controls { // Constants used to parse sub-dictionaries of DLP policies that should map to @@ -83,8 +90,8 @@ }; // Returns nullopt if the passed JSON doesn't match the expected schema. - static absl::optional<Rule> Create(const base::Value& value); - static absl::optional<Rule> Create(const base::Value::Dict& value); + static std::optional<Rule> Create(const base::Value& value); + static std::optional<Rule> Create(const base::Value::Dict& value); // Helpers to help conversions when parsing JSON. static Restriction StringToRestriction(const std::string& restriction); @@ -92,6 +99,14 @@ static const char* RestrictionToString(Restriction restriction); static const char* LevelToString(Level level); + // Helpers used by Data Controls's policy handler to validate rules, and add + // relevant context to `errors. It is assumed `value` has had its schema + // validated by SchemaValidatingPolicyHandler. + static bool ValidateRuleValue(const char* policy_name, + const base::Value::Dict& value, + policy::PolicyErrorPath error_path, + policy::PolicyErrorMap* errors); + Rule(Rule&& other); ~Rule(); @@ -124,6 +139,15 @@ static base::flat_map<Rule::Restriction, Rule::Level> GetRestrictions( const base::Value::Dict& value); + // Helper called by `ValidateRuleValue` to populate errors related to mutually + // exclusive fields being used in a rule. + static void AddMutuallyExclusiveErrors( + const std::vector<base::StringPiece>& oneof_conditions, + const std::vector<base::StringPiece>& anyof_conditions, + const char* policy_name, + policy::PolicyErrorPath error_path, + policy::PolicyErrorMap* errors); + // Metadata fields directly taken from the rule's JSON. const std::string name_; const std::string rule_id_;
diff --git a/components/feature_engagement/public/feature_constants.cc b/components/feature_engagement/public/feature_constants.cc index 7d95244..cac250c 100644 --- a/components/feature_engagement/public/feature_constants.cc +++ b/components/feature_engagement/public/feature_constants.cc
@@ -590,6 +590,15 @@ BASE_FEATURE(kIPHiOSDockingPromoRemindMeLaterFeature, "IPH_iOSDockingPromoRemindMeLater", base::FEATURE_DISABLED_BY_DEFAULT); +BASE_FEATURE(kIPHiOSPromoAllTabsFeature, + "IPH_iOSPromoAllTabs", + base::FEATURE_DISABLED_BY_DEFAULT); +BASE_FEATURE(kIPHiOSPromoMadeForIOSFeature, + "IPH_iOSPromoMadeForIOS", + base::FEATURE_DISABLED_BY_DEFAULT); +BASE_FEATURE(kIPHiOSPromoStaySafeFeature, + "IPH_iOSPromoStaySafe", + base::FEATURE_DISABLED_BY_DEFAULT); // Non-FET feature. BASE_FEATURE(kDefaultBrowserEligibilitySlidingWindow,
diff --git a/components/feature_engagement/public/feature_constants.h b/components/feature_engagement/public/feature_constants.h index 0308d1cd..4ed5a5b9 100644 --- a/components/feature_engagement/public/feature_constants.h +++ b/components/feature_engagement/public/feature_constants.h
@@ -236,6 +236,9 @@ BASE_DECLARE_FEATURE(kIPHiOSTabGridSwipeLeftForIncognito); BASE_DECLARE_FEATURE(kIPHiOSDockingPromoFeature); BASE_DECLARE_FEATURE(kIPHiOSDockingPromoRemindMeLaterFeature); +BASE_DECLARE_FEATURE(kIPHiOSPromoAllTabsFeature); +BASE_DECLARE_FEATURE(kIPHiOSPromoMadeForIOSFeature); +BASE_DECLARE_FEATURE(kIPHiOSPromoStaySafeFeature); // A feature flag to enable and parametrize the sliding window of time for a // user's eligibility to be shown a default browser promo. This is not an FET
diff --git a/components/feature_engagement/public/feature_list.cc b/components/feature_engagement/public/feature_list.cc index 09624a5..05532434 100644 --- a/components/feature_engagement/public/feature_list.cc +++ b/components/feature_engagement/public/feature_list.cc
@@ -152,6 +152,9 @@ &kIPHiOSTabGridSwipeLeftForIncognito, &kIPHiOSDockingPromoFeature, &kIPHiOSDockingPromoRemindMeLaterFeature, + &kIPHiOSPromoAllTabsFeature, + &kIPHiOSPromoMadeForIOSFeature, + &kIPHiOSPromoStaySafeFeature, #endif // BUILDFLAG(IS_IOS) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
diff --git a/components/feature_engagement/public/feature_list.h b/components/feature_engagement/public/feature_list.h index 226324b..382d083 100644 --- a/components/feature_engagement/public/feature_list.h +++ b/components/feature_engagement/public/feature_list.h
@@ -282,6 +282,9 @@ DEFINE_VARIATION_PARAM(kIPHiOSDockingPromoFeature, "IPH_iOSDockingPromo"); DEFINE_VARIATION_PARAM(kIPHiOSDockingPromoRemindMeLaterFeature, "IPH_iOSDockingPromoRemindMeLater"); +DEFINE_VARIATION_PARAM(kIPHiOSPromoAllTabsFeature, "IPH_iOSPromoAllTabs"); +DEFINE_VARIATION_PARAM(kIPHiOSPromoMadeForIOSFeature, "IPH_iOSPromoMadeForIOS"); +DEFINE_VARIATION_PARAM(kIPHiOSPromoStaySafeFeature, "IPH_iOSPromoStaySafe"); #endif // BUILDFLAG(IS_IOS) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \ @@ -608,6 +611,9 @@ VARIATION_ENTRY(kIPHiOSTabGridSwipeLeftForIncognito), VARIATION_ENTRY(kIPHiOSDockingPromoFeature), VARIATION_ENTRY(kIPHiOSDockingPromoRemindMeLaterFeature), + VARIATION_ENTRY(kIPHiOSPromoAllTabsFeature), + VARIATION_ENTRY(kIPHiOSPromoMadeForIOSFeature), + VARIATION_ENTRY(kIPHiOSPromoStaySafeFeature), #elif BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) VARIATION_ENTRY(kIPHBatterySaverModeFeature),
diff --git a/components/feature_engagement/public/group_configurations.cc b/components/feature_engagement/public/group_configurations.cc index cfc297f..5b68b189 100644 --- a/components/feature_engagement/public/group_configurations.cc +++ b/components/feature_engagement/public/group_configurations.cc
@@ -7,6 +7,7 @@ #include "base/strings/string_util.h" #include "build/build_config.h" #include "components/feature_engagement/public/configuration.h" +#include "components/feature_engagement/public/event_constants.h" #include "components/feature_engagement/public/group_constants.h" namespace feature_engagement { @@ -26,6 +27,27 @@ "fullscreen_promos_group_trigger", Comparator(LESS_THAN, 3), 7, 1000)); return config; } + + if (kiOSDefaultBrowserPromosGroup.name == group->name) { + absl::optional<GroupConfig> config = GroupConfig(); + config->valid = true; + config->session_rate = Comparator(EQUAL, 0); + // Default browser promos should be at least 14 days apart. + config->trigger = EventConfig("default_browser_promos_group_trigger", + Comparator(LESS_THAN, 1), 14, 365); + // Default Browser promos shouldn't be shown if the Post Restore Default + // Browser Promo has been shown in the past 7 days. + config->event_configs.insert( + EventConfig("post_restore_default_browser_promo_trigger", + Comparator(EQUAL, 0), 7, 365)); + + // Default Browser promos can be shown only after Chrome has been opened 7 + // or more times. + config->event_configs.insert(EventConfig( + events::kChromeOpened, Comparator(GREATER_THAN_OR_EQUAL, 7), 365, 365)); + + return config; + } #endif // BUILDFLAG(IS_IOS) if (kIPHDummyGroup.name == group->name) {
diff --git a/components/feature_engagement/public/group_constants.cc b/components/feature_engagement/public/group_constants.cc index e339c65..ce8435c 100644 --- a/components/feature_engagement/public/group_constants.cc +++ b/components/feature_engagement/public/group_constants.cc
@@ -20,6 +20,9 @@ BASE_FEATURE(kiOSFullscreenPromosGroup, "IPH_iOSFullscreenPromosGroup", base::FEATURE_ENABLED_BY_DEFAULT); +BASE_FEATURE(kiOSDefaultBrowserPromosGroup, + "IPH_iOSDefaultBrowserPromosGroup", + base::FEATURE_ENABLED_BY_DEFAULT); #endif // BUILDFLAG(IS_IOS) } // namespace feature_engagement
diff --git a/components/feature_engagement/public/group_constants.h b/components/feature_engagement/public/group_constants.h index 7d636e7..fc0ad39f 100644 --- a/components/feature_engagement/public/group_constants.h +++ b/components/feature_engagement/public/group_constants.h
@@ -15,6 +15,7 @@ #if BUILDFLAG(IS_IOS) BASE_DECLARE_FEATURE(kiOSFullscreenPromosGroup); +BASE_DECLARE_FEATURE(kiOSDefaultBrowserPromosGroup); #endif // BUILDFLAG(IS_IOS) } // namespace feature_engagement
diff --git a/components/feature_engagement/public/group_list.cc b/components/feature_engagement/public/group_list.cc index 0c4290d..1b723c55 100644 --- a/components/feature_engagement/public/group_list.cc +++ b/components/feature_engagement/public/group_list.cc
@@ -14,6 +14,7 @@ &kIPHDummyGroup, // Ensures non-empty array for all platforms. #if BUILDFLAG(IS_IOS) &kiOSFullscreenPromosGroup, + &kiOSDefaultBrowserPromosGroup, #endif // BUILDFLAG(IS_IOS) }; } // namespace
diff --git a/components/feature_engagement/public/ios_promo_feature_configuration.cc b/components/feature_engagement/public/ios_promo_feature_configuration.cc index 1577df4d..6ad1829 100644 --- a/components/feature_engagement/public/ios_promo_feature_configuration.cc +++ b/components/feature_engagement/public/ios_promo_feature_configuration.cc
@@ -67,6 +67,7 @@ config->availability = Comparator(ANY, 0); config->session_rate = Comparator(ANY, 0); config->groups.push_back(kiOSFullscreenPromosGroup.name); + config->groups.push_back(kiOSDefaultBrowserPromosGroup.name); config->used = EventConfig("default_browser_promo_used", Comparator(ANY, 0), 365, 365); if (base::FeatureList::IsEnabled(kDefaultBrowserEligibilitySlidingWindow)) { @@ -81,15 +82,66 @@ config->trigger = EventConfig("default_browser_promo_trigger", Comparator(LESS_THAN, 4), 365, 365); } + } - config->event_configs.insert( - EventConfig(feature_engagement::events::kChromeOpened, - Comparator(GREATER_THAN_OR_EQUAL, 7), 365, 365)); - // Default Browser promo shouldn't be shown if the Post Restore Default - // Browser Promo has been shown in the past 7 days. - config->event_configs.insert( - EventConfig("post_restore_default_browser_promo_trigger", - Comparator(EQUAL, 0), 7, 365)); + if (kIPHiOSPromoAllTabsFeature.name == feature->name) { + // Should show this promo only once if promo specific and group conditions + // are met. + config = FeatureConfig(); + config->valid = true; + config->availability = Comparator(ANY, 0); + config->session_rate = Comparator(ANY, 0); + config->groups.push_back(kiOSFullscreenPromosGroup.name); + config->groups.push_back(kiOSDefaultBrowserPromosGroup.name); + + config->trigger = + EventConfig("all_tabs_promo_trigger", Comparator(EQUAL, 0), + feature_engagement::kMaxStoragePeriod, + feature_engagement::kMaxStoragePeriod); + config->event_configs.insert(EventConfig( + "all_tabs_promo_conditions_met", Comparator(GREATER_THAN, 0), + feature_engagement::kMaxStoragePeriod, + feature_engagement::kMaxStoragePeriod)); + } + + if (kIPHiOSPromoMadeForIOSFeature.name == feature->name) { + // Should show this promo only once if promo specific and group conditions + // are met. + config = FeatureConfig(); + config->valid = true; + config->availability = Comparator(ANY, 0); + config->session_rate = Comparator(ANY, 0); + config->groups.push_back(kiOSFullscreenPromosGroup.name); + config->groups.push_back(kiOSDefaultBrowserPromosGroup.name); + + config->trigger = + EventConfig("made_for_ios_promo_trigger", Comparator(EQUAL, 0), + feature_engagement::kMaxStoragePeriod, + feature_engagement::kMaxStoragePeriod); + config->event_configs.insert(EventConfig( + "made_for_ios_promo_conditions_met", Comparator(GREATER_THAN, 0), + feature_engagement::kMaxStoragePeriod, + feature_engagement::kMaxStoragePeriod)); + } + + if (kIPHiOSPromoStaySafeFeature.name == feature->name) { + // Should show this promo only once if promo specific and group conditions + // are met. + config = FeatureConfig(); + config->valid = true; + config->availability = Comparator(ANY, 0); + config->session_rate = Comparator(ANY, 0); + config->groups.push_back(kiOSFullscreenPromosGroup.name); + config->groups.push_back(kiOSDefaultBrowserPromosGroup.name); + + config->trigger = + EventConfig("stay_safe_promo_trigger", Comparator(EQUAL, 0), + feature_engagement::kMaxStoragePeriod, + feature_engagement::kMaxStoragePeriod); + config->event_configs.insert(EventConfig( + "stay_safe_promo_conditions_met", Comparator(GREATER_THAN, 0), + feature_engagement::kMaxStoragePeriod, + feature_engagement::kMaxStoragePeriod)); } if (kIPHiOSPromoCredentialProviderExtensionFeature.name == feature->name) { @@ -113,7 +165,6 @@ config->event_configs.insert( EventConfig("credential_provider_extension_promo_snoozed", Comparator(EQUAL, 0), 1, 365)); - return config; } if (kIPHiOSPromoOmniboxPositionFeature.name == feature->name) {
diff --git a/components/feature_engagement/test/test_tracker.cc b/components/feature_engagement/test/test_tracker.cc index ac85a1b..f4eff46 100644 --- a/components/feature_engagement/test/test_tracker.cc +++ b/components/feature_engagement/test/test_tracker.cc
@@ -29,7 +29,8 @@ auto storage_validator = std::make_unique<FeatureConfigEventStorageValidator>(); - storage_validator->InitializeFeatures(GetAllFeatures(), {}, *configuration); + storage_validator->InitializeFeatures(GetAllFeatures(), GetAllGroups(), + *configuration); auto raw_event_model = std::make_unique<EventModelImpl>( std::make_unique<InMemoryEventStore>(), std::move(storage_validator));
diff --git a/components/guest_view/browser/test_guest_view_manager.cc b/components/guest_view/browser/test_guest_view_manager.cc index 0f678c1..4786e33 100644 --- a/components/guest_view/browser/test_guest_view_manager.cc +++ b/components/guest_view/browser/test_guest_view_manager.cc
@@ -8,7 +8,7 @@ #include <utility> #include "base/task/single_thread_task_runner.h" -#include "base/test/test_timeouts.h" +#include "base/test/run_until.h" #include "components/guest_view/browser/guest_view_base.h" #include "components/guest_view/browser/guest_view_manager_delegate.h" #include "content/public/browser/render_frame_host.h" @@ -145,12 +145,7 @@ // Completion of the attachment process may be delayed despite AttachGuest // having been called. We need to wait until the attachment is no longer // considered in progress. - while (!guest_view->attached()) { - base::RunLoop run_loop; - base::SingleThreadTaskRunner::GetCurrentDefault()->PostDelayedTask( - FROM_HERE, run_loop.QuitClosure(), TestTimeouts::tiny_timeout()); - run_loop.Run(); - } + EXPECT_TRUE(base::test::RunUntil([&]() { return guest_view->attached(); })); } void TestGuestViewManager::WaitForViewGarbageCollected() {
diff --git a/components/history/core/browser/history_backend.cc b/components/history/core/browser/history_backend.cc index a9a7d21..b1a1026 100644 --- a/components/history/core/browser/history_backend.cc +++ b/components/history/core/browser/history_backend.cc
@@ -1022,7 +1022,7 @@ request.visit_source, IsTypedIncrement(t), opener_visit, request.consider_for_ntp_most_visited, request.local_navigation_id, request.title, top_level_url, - frame_url) + frame_url, request.app_id) .second; // Update the segment for this visit. KEYWORD_GENERATED visits should not @@ -1154,7 +1154,7 @@ redirect_index == 0 ? opener_visit : 0, request.consider_for_ntp_most_visited, request.local_navigation_id, request.title, - top_level_url, frame_url) + top_level_url, frame_url, request.app_id) .second; if (t & ui::PAGE_TRANSITION_CHAIN_START) { @@ -1361,6 +1361,7 @@ absl::optional<std::u16string> title, absl::optional<GURL> top_level_url, absl::optional<GURL> frame_url, + absl::optional<std::string> app_id, absl::optional<base::TimeDelta> visit_duration, absl::optional<std::string> originator_cache_guid, absl::optional<VisitID> originator_visit_id, @@ -1465,6 +1466,7 @@ visit_info.is_known_to_sync = is_known_to_sync; visit_info.consider_for_ntp_most_visited = consider_for_ntp_most_visited; + visit_info.app_id = app_id; visit_info.visit_id = db_->AddVisit(&visit_info, visit_source); if (visit_info.visit_time < first_recorded_time_) @@ -1708,7 +1710,7 @@ visit.consider_for_ntp_most_visited, /*local_navigation_id=*/absl::nullopt, title, /*top_level_url=*/absl::nullopt, /*frame_url=*/absl::nullopt, - visit.visit_duration, visit.originator_cache_guid, + visit.app_id, visit.visit_duration, visit.originator_cache_guid, visit.originator_visit_id, visit.originator_referring_visit, visit.originator_opener_visit, visit.is_known_to_sync);
diff --git a/components/history/core/browser/history_backend.h b/components/history/core/browser/history_backend.h index f8ae30f5..bb74f334 100644 --- a/components/history/core/browser/history_backend.h +++ b/components/history/core/browser/history_backend.h
@@ -828,6 +828,7 @@ // // This does not schedule database commits, it is intended to be used as a // subroutine for AddPage only. It also assumes the database is valid. + // Note that |app_is| is used for mobile only; |nullopt| on other platforms. std::pair<URLID, VisitID> AddPageVisit( const GURL& url, base::Time time, @@ -843,6 +844,7 @@ absl::optional<std::u16string> title = absl::nullopt, absl::optional<GURL> top_level_url = absl::nullopt, absl::optional<GURL> frame_url = absl::nullopt, + absl::optional<std::string> app_id = absl::nullopt, absl::optional<base::TimeDelta> visit_duration = absl::nullopt, absl::optional<std::string> originator_cache_guid = absl::nullopt, absl::optional<VisitID> originator_visit_id = absl::nullopt,
diff --git a/components/history/core/browser/history_backend_db_unittest.cc b/components/history/core/browser/history_backend_db_unittest.cc index ae84fa7..9d7c1ba 100644 --- a/components/history/core/browser/history_backend_db_unittest.cc +++ b/components/history/core/browser/history_backend_db_unittest.cc
@@ -3044,6 +3044,57 @@ } } +TEST_F(HistoryBackendDBTest, MigrateVisitsAddAppId) { + ASSERT_NO_FATAL_FAILURE(CreateDBVersion(68)); + + const VisitID visit_id = 1; + const URLID url_id = 2; + const base::Time visit_time(base::Time::Now()); + const ui::PageTransition transition = ui::PAGE_TRANSITION_TYPED; + const base::TimeDelta visit_duration(base::Seconds(45)); + + const char kInsertStatement[] = + "INSERT INTO visits " + "(id, url, visit_time, transition, visit_duration) " + "VALUES (?, ?, ?, ?, ?)"; + + // Open the old version of the DB and make sure the new column doesn't exist + // yet. + { + sql::Database db; + ASSERT_TRUE(db.Open(history_dir_.Append(kHistoryFilename))); + ASSERT_FALSE(db.DoesColumnExist("visits", "app_id")); + + // Add entry to visits. + sql::Statement s(db.GetUniqueStatement(kInsertStatement)); + s.BindInt64(0, visit_id); + s.BindInt64(1, url_id); + s.BindInt64(2, visit_time.ToDeltaSinceWindowsEpoch().InMicroseconds()); + s.BindInt64(3, transition); + s.BindInt64(4, visit_duration.InMicroseconds()); + ASSERT_TRUE(s.Run()); + } + + // Re-open the db, triggering migration. + CreateBackendAndDatabase(); + + // The version should have been updated. + ASSERT_GE(HistoryDatabase::GetCurrentVersion(), 69); + + VisitRow visit_row; + db_->GetRowForVisit(visit_id, &visit_row); + EXPECT_FALSE(visit_row.app_id); + + DeleteBackend(); + + // Open the db manually again and make sure the new columns exist. + { + sql::Database db; + ASSERT_TRUE(db.Open(history_dir_.Append(kHistoryFilename))); + EXPECT_TRUE(db.DoesColumnExist("visits", "app_id")); + } +} + // ^^^ NEW MIGRATION TESTS GO HERE ^^^ // Preparation for the next DB migration: This test verifies that the test DB
diff --git a/components/history/core/browser/history_backend_unittest.cc b/components/history/core/browser/history_backend_unittest.cc index bcc3f857..943962e4b 100644 --- a/components/history/core/browser/history_backend_unittest.cc +++ b/components/history/core/browser/history_backend_unittest.cc
@@ -3913,7 +3913,8 @@ /*did_replace_entry=*/false, /*consider_for_ntp_most_visited=*/true, /*title=*/absl::nullopt, /*top_level_url*/ absl::nullopt, /*opener=*/absl::nullopt, - /*bookmark_id=*/absl::nullopt, context_annotations); + /*bookmark_id=*/absl::nullopt, /*app_id=*/absl::nullopt, + context_annotations); backend_->AddPage(request); // Read the visit back from the DB and make sure the annotations are there.
diff --git a/components/history/core/browser/history_database.cc b/components/history/core/browser/history_database.cc index 11b81c3..5c682024 100644 --- a/components/history/core/browser/history_database.cc +++ b/components/history/core/browser/history_database.cc
@@ -38,7 +38,7 @@ // Current version number. We write databases at the "current" version number, // but any previous version that can read the "compatible" one can make do with // our database without *too* many bad effects. -const int kCurrentVersionNumber = 68; +const int kCurrentVersionNumber = 69; const int kCompatibleVersionNumber = 16; const char kEarlyExpirationThresholdKey[] = "early_expiration_threshold"; @@ -986,6 +986,15 @@ std::ignore = meta_table_.SetVersionNumber(cur_version); } + if (cur_version == 68) { + if (!MigrateVisitsAddAppId()) { + return LogMigrationFailure(68); + } + cur_version++; + // TODO(crbug.com/1414092): Handle failure instead of ignoring it. + std::ignore = meta_table_.SetVersionNumber(cur_version); + } + // ========================= ^^ new migration code goes here ^^ // ADDING NEW MIGRATION CODE // =========================
diff --git a/components/history/core/browser/history_types.cc b/components/history/core/browser/history_types.cc index a3c1fcea..cc96c77 100644 --- a/components/history/core/browser/history_types.cc +++ b/components/history/core/browser/history_types.cc
@@ -295,6 +295,7 @@ absl::nullopt, absl::nullopt, absl::nullopt, + absl::nullopt, absl::nullopt) {} HistoryAddPageArgs::HistoryAddPageArgs( @@ -314,6 +315,7 @@ absl::optional<GURL> top_level_url, absl::optional<Opener> opener, absl::optional<int64_t> bookmark_id, + absl::optional<std::string> app_id, absl::optional<VisitContextAnnotations::OnVisitFields> context_annotations) : url(url), time(time), @@ -331,6 +333,7 @@ top_level_url(top_level_url), opener(opener), bookmark_id(bookmark_id), + app_id(app_id), context_annotations(std::move(context_annotations)) {} HistoryAddPageArgs::HistoryAddPageArgs(const HistoryAddPageArgs& other) =
diff --git a/components/history/core/browser/history_types.h b/components/history/core/browser/history_types.h index 5f981030..b94d71c5 100644 --- a/components/history/core/browser/history_types.h +++ b/components/history/core/browser/history_types.h
@@ -181,7 +181,10 @@ // many-to-one relationship with the VisitedLinkDatabase. As such, more than // one visit may correspond to the same VisitedLinkID. VisitedLinkID visited_link_id = kInvalidVisitedLinkID; - + // The package name of the app if this visit takes place in Custom Tab opened + // by an app. This is set only on Android if the Custom Tab knows which app + // launched it; otherwise remains null. + absl::optional<std::string> app_id = absl::nullopt; // We allow the implicit copy constructor and operator=. }; @@ -399,6 +402,9 @@ // reached. Will affect visit order as well. VisitOrder visit_order = RECENT_FIRST; + // If nullopt, search doesn't take app_id into consideration. + absl::optional<std::string> app_id = absl::nullopt; + // Helpers to get the effective parameters values, since a value of 0 means // "unspecified". int EffectiveMaxCount() const; @@ -1193,7 +1199,7 @@ // RedirectList(), ui::PAGE_TRANSITION_LINK, // false, SOURCE_BROWSED, false, true, // absl::nullopt, absl::nullopt, absl::nullopt, absl::nullopt, - // absl::nullopt) + // absl::nullopt, absl::nullopt) HistoryAddPageArgs(); HistoryAddPageArgs(const GURL& url, base::Time time, @@ -1211,6 +1217,7 @@ absl::optional<GURL> top_level_url = absl::nullopt, absl::optional<Opener> opener = absl::nullopt, absl::optional<int64_t> bookmark_id = absl::nullopt, + absl::optional<std::string> app_id = absl::nullopt, absl::optional<VisitContextAnnotations::OnVisitFields> context_annotations = absl::nullopt); HistoryAddPageArgs(const HistoryAddPageArgs& other); @@ -1238,6 +1245,7 @@ absl::optional<GURL> top_level_url; absl::optional<Opener> opener; absl::optional<int64_t> bookmark_id; + absl::optional<std::string> app_id; absl::optional<VisitContextAnnotations::OnVisitFields> context_annotations; };
diff --git a/components/history/core/browser/visit_database.cc b/components/history/core/browser/visit_database.cc index ec14c20..de04ee2 100644 --- a/components/history/core/browser/visit_database.cc +++ b/components/history/core/browser/visit_database.cc
@@ -195,7 +195,12 @@ // does not has a transition type of `LINK` or `MANUAL_SUBFRAME`, it // will not be stored in the VisitedLinkDatabase and the code will // write its `visited_link_id` as 0 (kInvalidVisitedLinkID). - "visited_link_id INTEGER DEFAULT 0 NOT NULL)")) { + "visited_link_id INTEGER DEFAULT 0 NOT NULL," + // Package name (e.g. com.google.android.youtube) of the app opening + // the Custom Tab that contributes to this visit. This is set to a + // non-null string only on Android, if the app identity is known to + // the Custom Tab. + "app_id TEXT)")) { return false; } } @@ -269,6 +274,10 @@ visit->is_known_to_sync = statement.ColumnBool(14); visit->consider_for_ntp_most_visited = statement.ColumnBool(15); visit->visited_link_id = statement.ColumnInt64(16); + std::string app_id = statement.ColumnString(17); + if (!app_id.empty()) { + visit->app_id = app_id; + } } // static @@ -331,8 +340,8 @@ "segment_id, visit_duration, incremented_omnibox_typed_score," "opener_visit, originator_cache_guid, originator_visit_id, " "originator_from_visit, originator_opener_visit, is_known_to_sync, " - "consider_for_ntp_most_visited, visited_link_id) " - "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)")); + "consider_for_ntp_most_visited, visited_link_id, app_id) " + "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)")); // Although some columns are NULLable, we never write NULL. We write 0 or "" // instead for simplicity. See the CREATE TABLE comments for details. statement.BindInt64(0, visit->url_id); @@ -351,6 +360,7 @@ statement.BindBool(13, visit->is_known_to_sync); statement.BindBool(14, visit->consider_for_ntp_most_visited); statement.BindInt64(15, visit->visited_link_id); + statement.BindString(16, visit->app_id ? *visit->app_id : ""); if (!statement.Run()) { DVLOG(0) << "Failed to execute visit insert statement: " @@ -476,10 +486,11 @@ "url=?,visit_time=?,from_visit=?,external_referrer_url=?,transition=?," "segment_id=?,visit_duration=?,incremented_omnibox_typed_score=?," "opener_visit=?,originator_cache_guid=?,originator_visit_id=?," - "is_known_to_sync=?,consider_for_ntp_most_visited=?,visited_link_id=? " - "WHERE id=?")); + "is_known_to_sync=?,consider_for_ntp_most_visited=?,visited_link_id=?," + "app_id=? WHERE id=?")); // Although some columns are NULLable, we never write NULL. We write 0 or "" // instead for simplicity. See the CREATE TABLE comments for details. + // |app_id| is not expected to be updated. Not included in the statement. statement.BindInt64(0, visit.url_id); statement.BindTime(1, visit.visit_time); statement.BindInt64(2, visit.referring_visit); @@ -494,7 +505,8 @@ statement.BindInt64(11, visit.is_known_to_sync); statement.BindInt64(12, visit.consider_for_ntp_most_visited); statement.BindInt64(13, visit.visited_link_id); - statement.BindInt64(14, visit.visit_id); + statement.BindString(14, visit.app_id ? *visit.app_id : ""); + statement.BindInt64(15, visit.visit_id); return statement.Run(); } @@ -523,20 +535,41 @@ sql::Statement statement; if (options.visit_order == QueryOptions::RECENT_FIRST) { - statement.Assign(GetDB().GetCachedStatement( - SQL_FROM_HERE, "SELECT" HISTORY_VISIT_ROW_FIELDS "FROM visits " - "WHERE url=? AND visit_time>=? AND visit_time<? " - "ORDER BY visit_time DESC")); + if (options.app_id) { + statement.Assign(GetDB().GetCachedStatement( + SQL_FROM_HERE, + "SELECT" HISTORY_VISIT_ROW_FIELDS + "FROM visits " + "WHERE url=? AND visit_time>=? AND visit_time<? AND app_id=? " + "ORDER BY visit_time DESC")); + } else { + statement.Assign(GetDB().GetCachedStatement( + SQL_FROM_HERE, "SELECT" HISTORY_VISIT_ROW_FIELDS "FROM visits " + "WHERE url=? AND visit_time>=? AND visit_time<? " + "ORDER BY visit_time DESC")); + } } else { - statement.Assign(GetDB().GetCachedStatement( - SQL_FROM_HERE, "SELECT" HISTORY_VISIT_ROW_FIELDS "FROM visits " - "WHERE url=? AND visit_time>? AND visit_time<=? " - "ORDER BY visit_time ASC")); + if (options.app_id) { + statement.Assign(GetDB().GetCachedStatement( + SQL_FROM_HERE, + "SELECT" HISTORY_VISIT_ROW_FIELDS + "FROM visits " + "WHERE url=? AND visit_time>? AND visit_time<=? AND app_id=? " + "ORDER BY visit_time ASC")); + } else { + statement.Assign(GetDB().GetCachedStatement( + SQL_FROM_HERE, "SELECT" HISTORY_VISIT_ROW_FIELDS "FROM visits " + "WHERE url=? AND visit_time>? AND visit_time<=? " + "ORDER BY visit_time ASC")); + } } statement.BindInt64(0, url_id); statement.BindInt64(1, options.EffectiveBeginTime()); statement.BindInt64(2, options.EffectiveEndTime()); + if (options.app_id) { + statement.BindString(3, *options.app_id); + } return FillVisitVectorWithOptions(statement, options, visits); } @@ -652,19 +685,36 @@ sql::Statement statement; if (options.visit_order == QueryOptions::RECENT_FIRST) { - statement.Assign(GetDB().GetCachedStatement( - SQL_FROM_HERE, "SELECT" HISTORY_VISIT_ROW_FIELDS "FROM visits " - "WHERE visit_time>=? AND visit_time<? " - "ORDER BY visit_time DESC, id DESC")); + if (options.app_id) { + statement.Assign(GetDB().GetCachedStatement( + SQL_FROM_HERE, "SELECT" HISTORY_VISIT_ROW_FIELDS "FROM visits " + "WHERE visit_time>=? AND visit_time<? AND app_id=? " + "ORDER BY visit_time DESC, id DESC")); + } else { + statement.Assign(GetDB().GetCachedStatement( + SQL_FROM_HERE, "SELECT" HISTORY_VISIT_ROW_FIELDS "FROM visits " + "WHERE visit_time>=? AND visit_time<? " + "ORDER BY visit_time DESC, id DESC")); + } } else { - statement.Assign(GetDB().GetCachedStatement( - SQL_FROM_HERE, "SELECT" HISTORY_VISIT_ROW_FIELDS "FROM visits " - "WHERE visit_time>? AND visit_time<=? " - "ORDER BY visit_time ASC, id DESC")); + if (options.app_id) { + statement.Assign(GetDB().GetCachedStatement( + SQL_FROM_HERE, "SELECT" HISTORY_VISIT_ROW_FIELDS "FROM visits " + "WHERE visit_time>? AND visit_time<=? AND app_id=? " + "ORDER BY visit_time ASC, id DESC")); + } else { + statement.Assign(GetDB().GetCachedStatement( + SQL_FROM_HERE, "SELECT" HISTORY_VISIT_ROW_FIELDS "FROM visits " + "WHERE visit_time>? AND visit_time<=? " + "ORDER BY visit_time ASC, id DESC")); + } } statement.BindInt64(0, options.EffectiveBeginTime()); statement.BindInt64(1, options.EffectiveEndTime()); + if (options.app_id) { + statement.BindString(2, *options.app_id); + } return FillVisitVectorWithOptions(statement, options, visits); } @@ -1412,4 +1462,16 @@ return true; } +bool VisitDatabase::MigrateVisitsAddAppId() { + if (!GetDB().DoesTableExist("visits")) { + NOTREACHED() << " Visits table should exist before migration"; + return false; + } + if (!GetDB().DoesColumnExist("visits", "app_id")) { + if (!GetDB().Execute("ALTER TABLE visits ADD COLUMN app_id TEXT")) { + return false; + } + } + return true; +} } // namespace history
diff --git a/components/history/core/browser/visit_database.h b/components/history/core/browser/visit_database.h index 1052902..16df73a 100644 --- a/components/history/core/browser/visit_database.h +++ b/components/history/core/browser/visit_database.h
@@ -351,6 +351,10 @@ // Called by the derived classes to migrate the older visits table which // doesn't have the `visited_link_id` column. bool MigrateVisitsAddVisitedLinkIdColumn(); + + // Called by the derived classes to migrate the older visits table which + // doesn't have the `app_id` column. + bool MigrateVisitsAddAppId(); }; // Columns, in order, of the visit table. @@ -359,7 +363,7 @@ "segment_id,visit_duration,incremented_omnibox_typed_score," \ "opener_visit,originator_cache_guid,originator_visit_id," \ "originator_from_visit,originator_opener_visit,is_known_to_sync," \ - "consider_for_ntp_most_visited,visited_link_id " + "consider_for_ntp_most_visited,visited_link_id,app_id " } // namespace history
diff --git a/components/history/core/browser/visit_database_unittest.cc b/components/history/core/browser/visit_database_unittest.cc index 26c6a84b..3730cb6 100644 --- a/components/history/core/browser/visit_database_unittest.cc +++ b/components/history/core/browser/visit_database_unittest.cc
@@ -37,7 +37,8 @@ a.originator_cache_guid == b.originator_cache_guid && a.originator_visit_id == b.originator_visit_id && a.is_known_to_sync == b.is_known_to_sync && - a.consider_for_ntp_most_visited == b.consider_for_ntp_most_visited; + a.consider_for_ntp_most_visited == b.consider_for_ntp_most_visited && + a.app_id == b.app_id; } } // namespace @@ -355,6 +356,10 @@ TEST_F(VisitDatabaseTest, GetVisibleVisitsInRange) { std::vector<VisitRow> test_visit_rows = GetTestVisitRows(); + test_visit_rows[1].app_id = "org.chromium.dino"; + test_visit_rows[2].app_id = "org.chromium.dino"; + test_visit_rows[3].app_id = "org.chromium.dino"; + for (size_t i = 0; i < test_visit_rows.size(); ++i) { EXPECT_TRUE(AddVisit(&test_visit_rows[i], SOURCE_BROWSED)); } @@ -368,6 +373,23 @@ EXPECT_TRUE(IsVisitInfoEqual(results[0], test_visit_rows[5])); EXPECT_TRUE(IsVisitInfoEqual(results[1], test_visit_rows[3])); + // Query the visits with app_id. Only those with the matching app_id will be + // returned. + options.app_id = "org.chromium.dino"; + GetVisibleVisitsInRange(options, &results); + ASSERT_EQ(static_cast<size_t>(2), results.size()); + EXPECT_TRUE(IsVisitInfoEqual(results[0], test_visit_rows[3])); + EXPECT_TRUE(IsVisitInfoEqual(results[1], test_visit_rows[1])); + + // Test the query with app_id, but in the reverse order. + options.visit_order = QueryOptions::OLDEST_FIRST; + GetVisibleVisitsInRange(options, &results); + ASSERT_EQ(static_cast<size_t>(2), results.size()); + EXPECT_TRUE(IsVisitInfoEqual(results[0], test_visit_rows[1])); + EXPECT_TRUE(IsVisitInfoEqual(results[1], test_visit_rows[3])); + + options = QueryOptions(); // Reset options to default. + // Now try with only per-day de-duping -- the second visit should appear, // since it's a duplicate of visit6 but on a different day. options.duplicate_policy = QueryOptions::REMOVE_DUPLICATES_PER_DAY;
diff --git a/components/onc/docs/onc_spec.md b/components/onc/docs/onc_spec.md index 30f0a10..6aef6d78 100644 --- a/components/onc/docs/onc_spec.md +++ b/components/onc/docs/onc_spec.md
@@ -1949,6 +1949,7 @@ * **Authentication** * (optional) - **string** * Type of authentication protocol for sending username and password. + Possible values are "", "PAP", or "CHAP". * **Language** * (optional, required if **LocalizedName** is provided) - **string**
diff --git a/components/password_manager/core/browser/password_manager_metrics_util.h b/components/password_manager/core/browser/password_manager_metrics_util.h index da1b980d..b44f418 100644 --- a/components/password_manager/core/browser/password_manager_metrics_util.h +++ b/components/password_manager/core/browser/password_manager_metrics_util.h
@@ -574,7 +574,8 @@ kNoteFullySelected = 14, kNotePartiallyCopied = 15, kNoteFullyCopied = 16, - kMaxValue = kNoteFullyCopied, + kMovePasswordLinkClicked = 17, + kMaxValue = kMovePasswordLinkClicked, }; // Represents different causes for showing the password migration warning.
diff --git a/components/password_manager/core/browser/password_reuse_manager_impl.cc b/components/password_manager/core/browser/password_reuse_manager_impl.cc index 125fd4f..0ea0b5bc 100644 --- a/components/password_manager/core/browser/password_reuse_manager_impl.cc +++ b/components/password_manager/core/browser/password_reuse_manager_impl.cc
@@ -488,6 +488,7 @@ saved_creds_entry->FindDouble(kLoginHashedPassword).value()); password_hash_data.force_update = true; hash_password_manager_.SavePasswordHash(password_hash_data); + SchedulePasswordHashUpdate(/*sign_in_state_for_metrics=*/std::nullopt); metrics_util::LogGaiaPasswordHashChange( metrics_util::GaiaPasswordHashChange::SAVED_ON_CHROME_SIGNIN, /*is_sync_password=*/true);
diff --git a/components/password_manager/core/browser/password_reuse_manager_impl_unittest.cc b/components/password_manager/core/browser/password_reuse_manager_impl_unittest.cc index 6606d99..e540435 100644 --- a/components/password_manager/core/browser/password_reuse_manager_impl_unittest.cc +++ b/components/password_manager/core/browser/password_reuse_manager_impl_unittest.cc
@@ -104,6 +104,46 @@ private: testing::NiceMock<MockStoreResultFilter> filter_; }; + +class MockPasswordReuseDetector : public PasswordReuseDetector { + public: + MOCK_METHOD(void, + OnGetPasswordStoreResults, + (std::vector<std::unique_ptr<PasswordForm>>), + (override)); + MOCK_METHOD(void, + OnLoginsChanged, + (const password_manager::PasswordStoreChangeList&), + (override)); + MOCK_METHOD(void, + OnLoginsRetained, + (const std::vector<PasswordForm>&), + (override)); + MOCK_METHOD(void, ClearCachedAccountStorePasswords, (), (override)); + MOCK_METHOD(void, + CheckReuse, + (const std::u16string&, + const std::string&, + PasswordReuseDetectorConsumer*), + (override)); + MOCK_METHOD(void, + UseGaiaPasswordHash, + (std::optional<std::vector<PasswordHashData>>), + (override)); + MOCK_METHOD(void, + UseNonGaiaEnterprisePasswordHash, + (std::optional<std::vector<PasswordHashData>>), + (override)); + MOCK_METHOD(void, + UseEnterprisePasswordURLs, + (std::optional<std::vector<GURL>>, std::optional<GURL>), + (override)); + MOCK_METHOD(void, ClearGaiaPasswordHash, (const std::string&), (override)); + MOCK_METHOD(void, ClearAllGaiaPasswordHash, (), (override)); + MOCK_METHOD(void, ClearAllEnterprisePasswordHash, (), (override)); + MOCK_METHOD(void, ClearAllNonGmailPasswordHash, (), (override)); +}; + class PasswordReuseManagerImplTest : public testing::Test { public: PasswordReuseManagerImplTest() = default; @@ -126,19 +166,31 @@ profile_store_->Init(&prefs_, /*affiliated_match_helper=*/nullptr); account_store_ = base::MakeRefCounted<TestPasswordStore>(); account_store_->Init(&prefs_, /*affiliated_match_helper=*/nullptr); - signin::IdentityManager* identity_manager = nullptr; + } + + void Initialize(bool should_mock_password_reuse_detector = false) { std::unique_ptr<MockSharedPreferencesDelegateAndroid> mock_shared_pref_delegate_android; + std::unique_ptr<MockPasswordReuseDetector> mock_password_reuse_detector; #if BUILDFLAG(IS_ANDROID) - identity_manager = identity_test_env_.identity_manager(); mock_shared_pref_delegate_android = std::make_unique<MockSharedPreferencesDelegateAndroid>(); shared_pref_delegate_android_ = mock_shared_pref_delegate_android.get(); + mock_password_reuse_detector = + std::make_unique<MockPasswordReuseDetector>(); + password_reuse_detector_ = mock_password_reuse_detector.get(); #endif - reuse_manager_.Init(&prefs(), profile_store(), account_store(), - std::make_unique<PasswordReuseDetectorImpl>(), - identity_manager, - std::move(mock_shared_pref_delegate_android)); + if (should_mock_password_reuse_detector) { + reuse_manager_.Init(&prefs(), profile_store(), account_store(), + std::move(mock_password_reuse_detector), + identity_test_env_.identity_manager(), + std::move(mock_shared_pref_delegate_android)); + } else { + reuse_manager_.Init(&prefs(), profile_store(), account_store(), + std::make_unique<PasswordReuseDetectorImpl>(), + identity_test_env_.identity_manager(), + std::move(mock_shared_pref_delegate_android)); + } FastForwardUntilNoTasksRemain(); } @@ -164,6 +216,9 @@ MockSharedPreferencesDelegateAndroid* shared_pref_delegate_android() { return shared_pref_delegate_android_; } + MockPasswordReuseDetector* password_reuse_detector() { + return password_reuse_detector_; + } private: base::test::TaskEnvironment task_environment_{ @@ -174,10 +229,12 @@ scoped_refptr<TestPasswordStore> account_store_; signin::IdentityTestEnvironment identity_test_env_; raw_ptr<MockSharedPreferencesDelegateAndroid> shared_pref_delegate_android_; + raw_ptr<MockPasswordReuseDetector> password_reuse_detector_; PasswordReuseManagerImpl reuse_manager_; }; TEST_F(PasswordReuseManagerImplTest, CheckPasswordReuse) { + Initialize(); std::vector<PasswordForm> forms = { CreateForm("https://www.google.com", u"username1", u"password"), CreateForm("https://facebook.com", u"username2", u"topsecret")}; @@ -219,6 +276,7 @@ } TEST_F(PasswordReuseManagerImplTest, BasicSynced) { + Initialize(); ASSERT_FALSE(prefs().HasPrefPath(prefs::kSyncPasswordHash)); const std::u16string sync_password = u"password"; @@ -244,6 +302,7 @@ } TEST_F(PasswordReuseManagerImplTest, BasicUnsynced) { + Initialize(); ASSERT_FALSE(prefs().HasPrefPath(prefs::kSyncPasswordHash)); const std::u16string gaia_password = u"3password"; @@ -267,6 +326,7 @@ } TEST_F(PasswordReuseManagerImplTest, ClearGaiaPasswordHash) { + Initialize(); ASSERT_FALSE(prefs().HasPrefPath(prefs::kSyncPasswordHash)); const std::u16string gaia_password = u"3password"; @@ -291,6 +351,7 @@ } TEST_F(PasswordReuseManagerImplTest, ClearAllGaiaPasswordHash) { + Initialize(); ASSERT_FALSE(prefs().HasPrefPath(prefs::kSyncPasswordHash)); const std::u16string gaia_password = u"3password"; @@ -316,6 +377,7 @@ } TEST_F(PasswordReuseManagerImplTest, SaveEnterprisePasswordHash) { + Initialize(); ASSERT_FALSE(prefs().HasPrefPath(prefs::kSyncPasswordHash)); const std::u16string input = u"123password"; @@ -337,6 +399,7 @@ } TEST_F(PasswordReuseManagerImplTest, ClearAllEnterprisePasswordHash) { + Initialize(); ASSERT_FALSE(prefs().HasPrefPath(prefs::kSyncPasswordHash)); const std::u16string input = u"123password"; @@ -359,6 +422,7 @@ } TEST_F(PasswordReuseManagerImplTest, ClearAllNonGmailPasswordHash) { + Initialize(); const std::u16string non_sync_gaia_password = u"3password"; const std::u16string gmail_password = u"gmailpass"; @@ -404,6 +468,7 @@ } TEST_F(PasswordReuseManagerImplTest, ReportMetrics) { + Initialize(); // Hash does not exist yet. base::HistogramTester histogram_tester; reuse_manager()->ReportMetrics("not_sync_username"); @@ -431,6 +496,7 @@ TEST_F(PasswordReuseManagerImplTest, SubscriptionAndUnsubscriptionFromSignInEvents) { + Initialize(); std::unique_ptr<MockPasswordStoreSigninNotifier> notifier = std::make_unique<MockPasswordStoreSigninNotifier>(); MockPasswordStoreSigninNotifier* notifier_weak = notifier.get(); @@ -446,6 +512,7 @@ TEST_F(PasswordReuseManagerImplTest, CheckReuseCalledOnPasteReuseExistsInBothStores) { + Initialize(); std::vector<PasswordForm> profile_forms = { CreateForm("https://www.google.com", u"username1", u"password"), CreateForm("https://www.google.com", u"username2", u"secretword")}; @@ -478,6 +545,7 @@ } TEST_F(PasswordReuseManagerImplTest, NoReuseFoundAfterClearingAccountStorage) { + Initialize(); std::vector<PasswordForm> account_forms = { CreateForm("https://www.google.com", u"username1", u"password", PasswordForm::Store::kAccountStore), @@ -501,6 +569,7 @@ } TEST_F(PasswordReuseManagerImplTest, MaybeSavePasswordHashNoHashSaved) { + Initialize(); PasswordForm submitted_form = CreateForm("http://yahoo.com", u"user@yahoo.com", u"password", PasswordForm::Store::kAccountStore); @@ -512,6 +581,7 @@ } TEST_F(PasswordReuseManagerImplTest, MaybeSavePasswordHashGaiaHashSaved) { + Initialize(); PasswordForm submitted_form = CreateForm("http://google.com", u"user@gmail.com", u"password", PasswordForm::Store::kAccountStore); @@ -530,6 +600,7 @@ } TEST_F(PasswordReuseManagerImplTest, MaybeSavePasswordHashEnterpriseHashSaved) { + Initialize(); PasswordForm submitted_form = CreateForm("http://somecorp.com", u"user@somecorp.com", u"password", PasswordForm::Store::kAccountStore); @@ -549,11 +620,13 @@ #if BUILDFLAG(IS_ANDROID) TEST_F(PasswordReuseManagerImplTest, GaiaPasswordSavedFromSharedPref) { + Initialize(/*should_mock_password_reuse_detector=*/true); ON_CALL(*shared_pref_delegate_android(), GetCredentials(_)) .WillByDefault(Return( "[{\"Login.accountIdentifier\": \"test_user@gmail.com\", " "\"Login.hashedPassword\": 23423423432, \"Login.salt\": \"salt\"}]")); EXPECT_CALL(*shared_pref_delegate_android(), SetCredentials("[]")); + EXPECT_CALL(*password_reuse_detector(), UseGaiaPasswordHash(_)); identity_test_env().SetPrimaryAccount("test_user@gmail.com", signin::ConsentLevel::kSignin); @@ -572,6 +645,7 @@ TEST_F(PasswordReuseManagerImplTest, NoPasswordSavedFromEmptyJsonArraySharedPref) { + Initialize(); ON_CALL(*shared_pref_delegate_android(), GetCredentials(_)) .WillByDefault(Return("[]")); identity_test_env().SetPrimaryAccount("test_user@gmail.com", @@ -583,6 +657,7 @@ } TEST_F(PasswordReuseManagerImplTest, NoPasswordSavedFromEmptySharedPref) { + Initialize(); ON_CALL(*shared_pref_delegate_android(), GetCredentials(_)) .WillByDefault(Return("")); identity_test_env().SetPrimaryAccount("test_user@gmail.com", @@ -594,6 +669,7 @@ } TEST_F(PasswordReuseManagerImplTest, NoPasswordSavedFromDifferentUsernames) { + Initialize(); ON_CALL(*shared_pref_delegate_android(), GetCredentials(_)) .WillByDefault(Return( "[{\"Login.accountIdentifier\": \"test_user@gmail.com\", "
diff --git a/components/password_manager/core/browser/password_store/BUILD.gn b/components/password_manager/core/browser/password_store/BUILD.gn index f55462a..3ff13dd 100644 --- a/components/password_manager/core/browser/password_store/BUILD.gn +++ b/components/password_manager/core/browser/password_store/BUILD.gn
@@ -77,10 +77,7 @@ "//url", ] if (is_android) { - sources += [ - "android_backend_error.cc", - "android_backend_error.h", - ] + sources += [ "android_backend_error.h" ] } if ((is_posix && !is_apple) || is_fuchsia) {
diff --git a/components/password_manager/core/browser/password_store/android_backend_error.cc b/components/password_manager/core/browser/password_store/android_backend_error.cc deleted file mode 100644 index cd591ae..0000000 --- a/components/password_manager/core/browser/password_store/android_backend_error.cc +++ /dev/null
@@ -1,14 +0,0 @@ -// Copyright 2021 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "components/password_manager/core/browser/password_store/android_backend_error.h" - -namespace password_manager { - -AndroidBackendError::AndroidBackendError(AndroidBackendErrorType error_type) - : type(error_type) {} - -AndroidBackendError::AndroidBackendError(AndroidBackendError&& error) = default; - -} // namespace password_manager
diff --git a/components/password_manager/core/browser/password_store/android_backend_error.h b/components/password_manager/core/browser/password_store/android_backend_error.h index 87125c06..7894e45 100644 --- a/components/password_manager/core/browser/password_store/android_backend_error.h +++ b/components/password_manager/core/browser/password_store/android_backend_error.h
@@ -42,13 +42,6 @@ }; struct AndroidBackendError { - explicit AndroidBackendError(AndroidBackendErrorType error_type); - - AndroidBackendError(const AndroidBackendError&) = delete; - AndroidBackendError(AndroidBackendError&&); - AndroidBackendError& operator=(const AndroidBackendError&) = delete; - AndroidBackendError& operator=(AndroidBackendError&&) = delete; - // Type of the error returned by the bridge. AndroidBackendErrorType type;
diff --git a/components/password_manager_strings.grdp b/components/password_manager_strings.grdp index 48612d1..81cb165 100644 --- a/components/password_manager_strings.grdp +++ b/components/password_manager_strings.grdp
@@ -272,4 +272,10 @@ </message> </if> </if> + <message name="IDS_PASSWORD_MANAGER_MANAGEMENT_BUBBLE_FOOTER_MOVE_PASSWORD" desc="Text that appears in the footer of managment bubble, suggesting to save the local password in the account."> + This password is saved only to this device. To use it on your other devices, <ph name="GOOGLE_PASSWORD_MANAGER">$1<ex>save it in your Google Account</ex></ph>. + </message> + <message name="IDS_PASSWORD_MANAGER_MANAGEMENT_BUBBLE_LINK_TEXT_MOVE_PASSWORD" desc="Link text that appears in the footer of managment bubble, suggesting to save the local password in the account."> + save it in your Google Account + </message> </grit-part>
diff --git a/components/password_manager_strings_grdp/IDS_PASSWORD_MANAGER_MANAGEMENT_BUBBLE_FOOTER_MOVE_PASSWORD.png.sha1 b/components/password_manager_strings_grdp/IDS_PASSWORD_MANAGER_MANAGEMENT_BUBBLE_FOOTER_MOVE_PASSWORD.png.sha1 new file mode 100644 index 0000000..2dd483f --- /dev/null +++ b/components/password_manager_strings_grdp/IDS_PASSWORD_MANAGER_MANAGEMENT_BUBBLE_FOOTER_MOVE_PASSWORD.png.sha1
@@ -0,0 +1 @@ +3317f7a32296be4d5ab1aff4e417e3473fe5725a \ No newline at end of file
diff --git a/components/password_manager_strings_grdp/IDS_PASSWORD_MANAGER_MANAGEMENT_BUBBLE_LINK_TEXT_MOVE_PASSWORD.png.sha1 b/components/password_manager_strings_grdp/IDS_PASSWORD_MANAGER_MANAGEMENT_BUBBLE_LINK_TEXT_MOVE_PASSWORD.png.sha1 new file mode 100644 index 0000000..2dd483f --- /dev/null +++ b/components/password_manager_strings_grdp/IDS_PASSWORD_MANAGER_MANAGEMENT_BUBBLE_LINK_TEXT_MOVE_PASSWORD.png.sha1
@@ -0,0 +1 @@ +3317f7a32296be4d5ab1aff4e417e3473fe5725a \ No newline at end of file
diff --git a/components/permissions/BUILD.gn b/components/permissions/BUILD.gn index ba0dffc9..d9c4566 100644 --- a/components/permissions/BUILD.gn +++ b/components/permissions/BUILD.gn
@@ -2,8 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -# TODO(crbug.com/1327384): Make `permissions_common` source_set. -component("permissions_common") { +source_set("permissions_common") { sources = [ "constants.cc", "constants.h",
diff --git a/components/plus_addresses/resources/internal b/components/plus_addresses/resources/internal index b8de132..61a9cd6 160000 --- a/components/plus_addresses/resources/internal +++ b/components/plus_addresses/resources/internal
@@ -1 +1 @@ -Subproject commit b8de132a09f542f2db9567c5a9969f55b4499122 +Subproject commit 61a9cd635c8317c7c4be901936629e12b2bdea3c
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb index b6ec36c..14eaa83 100644 --- a/components/policy/resources/policy_templates_fr.xtb +++ b/components/policy/resources/policy_templates_fr.xtb
@@ -6500,6 +6500,11 @@ Si vous définissez <ph name="CLEAR_BROWSING_HISTORY_ACTION" />, <ph name="CLEAR_PASSWORD_SIGNIN_ACTION" />, <ph name="CLEAR_AUTOFILL_ACTION" /> et <ph name="CLEAR_SITE_SETTINGS_ACTION" />, la synchronisation sera désactivée pour les types de données respectifs si <ph name="CHROME_SYNC_NAME" /> n'est pas désactivé en définissant la règle <ph name="SYNC_DISABLED_POLICY_NAME" /> et que <ph name="BROWSER_SIGNIN_POLICY_NAME" /> n'est pas désactivé.</translation> <translation id="6462604655173570082">Si cette règle est activée ou qu'elle n'est pas configurée, les utilisateurs peuvent afficher et utiliser le bouton <ph name="GOOGLE_LENS_PRODUCT_NAME" /> dans le champ de recherche de la page "Nouvel onglet". Si cette règle est désactivée, les utilisateurs ne verront pas le bouton <ph name="GOOGLE_LENS_PRODUCT_NAME" /> dans ce champ de recherche.</translation> <translation id="6464074037294098618">Activer la saisie automatique pour les adresses</translation> +<translation id="6464564464230511695">Si cette règle est activée ou n'est pas configurée, <ph name="SEARCH_SIDE_PANEL_FEATURE_NAME" /> est autorisé sur toutes les pages Web. + +Si elle est désactivée, <ph name="SEARCH_SIDE_PANEL_FEATURE_NAME" /> n'est disponible sur aucune page Web. + +Les capacités d'IA générative de cette fonctionnalité ne sont pas disponibles pour les comptes Education ou Enterprise.</translation> <translation id="6467613372414922590">Autoriser les hôtes de messagerie natifs au niveau de l'utilisateur (installés sans l'autorisation d'un administrateur)</translation> <translation id="6467707081687600148">Programmer un redémarrage automatique après l'installation des mises à jour de <ph name="PRODUCT_OS_NAME" />.
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb index 82acd3ec..5abdccf 100644 --- a/components/policy/resources/policy_templates_id.xtb +++ b/components/policy/resources/policy_templates_id.xtb
@@ -3033,6 +3033,17 @@ <translation id="3423703250826790403">Aplikasi Android</translation> <translation id="3426434797050451264">Kebijakan ini juga dapat digunakan untuk menentukan aplikasi Android sebagai pengendali file default.</translation> <translation id="3428247105888806363">Aktifkan prediksi jaringan</translation> +<translation id="3430198032663063246">Bantu Menulis adalah asisten menulis berbasis AI untuk konten berdurasi singkat di web. Konten yang disarankan didasarkan pada perintah yang dimasukkan oleh pengguna dan konten halaman web. + +Nilai 0 = Mengaktifkan fitur bagi pengguna, dan mengirim data yang relevan ke Google untuk membantu melatih atau meningkatkan kualitas model AI. Data yang relevan dapat mencakup perintah, input, output, dan materi sumber, bergantung pada fiturnya. Data ini dapat ditinjau oleh manusia dengan tujuan meningkatkan kualitas model AI. + +Nilai 0 adalah nilai default, kecuali jika dinyatakan di bawah. + +Nilai 1 = Mengaktifkan fitur bagi pengguna, tetapi tidak mengirim data ke Google untuk melatih atau meningkatkan kualitas model AI. Nilai 1 adalah nilai default bagi pengguna Enterprise yang dikelola oleh <ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" />. + +Nilai 2 = Menonaktifkan fitur. Nilai 2 adalah nilai default untuk akun Education yang dikelola oleh <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />. + +Untuk informasi selengkapnya tentang penanganan data untuk fitur AI generatif, lihat https://support.google.com/chrome/a?p=generative_ai_settings.</translation> <translation id="3432863169147125747">Mengontrol setelan pencetakan.</translation> <translation id="3434053014926283175">Mengalihkan tombol mouse utama ke kanan pada layar login. @@ -8900,6 +8911,17 @@ <translation id="822055204938220476">Daftar URL yang diizinkan tetap berada dalam mode layar penuh tanpa menampilkan notifikasi</translation> <translation id="8225579382697740712">Mengontrol penggunaan WebHID API</translation> <translation id="8229912067600517877">Aktifkan Developer Tools</translation> +<translation id="8234565689501421293">Buat Tema dengan AI memungkinkan pengguna membuat tema/wallpaper kustom dengan memilih berbagai pilihan dari daftar opsi. + +Nilai 0 = Mengaktifkan fitur bagi pengguna, dan mengirim data yang relevan ke Google untuk membantu melatih atau meningkatkan kualitas model AI. Data yang relevan dapat mencakup perintah, input, output, dan materi sumber, bergantung pada fiturnya. Data ini dapat ditinjau oleh manusia dengan tujuan meningkatkan kualitas model AI. + +Nilai 0 adalah nilai default, kecuali jika dinyatakan di bawah. + +Nilai 1 = Mengaktifkan fitur bagi pengguna, tetapi tidak mengirim data ke Google untuk melatih atau meningkatkan kualitas model AI. Nilai 1 adalah nilai default bagi pengguna Enterprise yang dikelola oleh <ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" />. + +Nilai 2 = Menonaktifkan fitur. Nilai 2 adalah nilai default untuk akun Education yang dikelola oleh <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />. + +Untuk informasi selengkapnya tentang penanganan data untuk fitur AI generatif, lihat https://support.google.com/chrome/a?p=generative_ai_settings.</translation> <translation id="8238421250255592181">Tanda boolean menunjukkan apakah keyboard virtual dapat memberikan pelengkapan otomatis.</translation> <translation id="8239109177194627162">Nonaktifkan Isi Otomatis untuk kartu kredit</translation> <translation id="8239143983379015783">Memaksa pengaktifan kuota persisten</translation> @@ -10126,6 +10148,17 @@ <translation id="942977875497446094">Luncurkan browser secara otomatis saat memulai</translation> <translation id="943865157632139008">Memungkinkan Anda mengonfigurasi perender HTML default jika <ph name="PRODUCT_FRAME_NAME" /> diinstal. Setelan defaultnya adalah mengizinkan browser host melakukan rendering, tetapi Anda dapat mengganti ini secara opsional dan memerintahkan <ph name="PRODUCT_FRAME_NAME" /> me-render halaman HTML secara default.</translation> <translation id="944817693306670849">Setel ukuran cache disk</translation> +<translation id="946458935955389273">Pengelola Tab adalah alat berbasis AI yang otomatis membuat grup tab berdasarkan tab terbuka milik pengguna. Saran didasarkan pada tab terbuka (bukan konten halaman). + +Nilai 0 = Mengaktifkan fitur bagi pengguna, dan mengirim data yang relevan ke Google untuk membantu melatih atau meningkatkan kualitas model AI. Data yang relevan dapat mencakup perintah, input, output, dan materi sumber, bergantung pada fiturnya. Data ini dapat ditinjau oleh manusia dengan tujuan meningkatkan kualitas model AI. + +Nilai 0 adalah nilai default, kecuali jika dinyatakan di bawah. + +Nilai 1 = Mengaktifkan fitur bagi pengguna, tetapi tidak mengirim data ke Google untuk melatih atau meningkatkan kualitas model AI. Nilai 1 adalah nilai default bagi pengguna Enterprise yang dikelola oleh <ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" />. + +Nilai 2 = Menonaktifkan fitur. Nilai 2 adalah nilai default untuk akun Education yang dikelola oleh <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />. + +Untuk informasi selengkapnya tentang penanganan data untuk fitur AI generatif, lihat https://support.google.com/chrome/a?p=generative_ai_settings.</translation> <translation id="957322141096206402">Resolusi DNS sistem dapat berjalan di dalam atau di luar proses jaringan, bergantung pada konfigurasi sistem dan tombol fitur.</translation> <translation id="957778406002650056">URL tempat gambar <ph name="PLUGIN_VM_NAME" /> dapat didownload.</translation> <translation id="957920984193041197">Izinkan halaman menampilkan pop-up selama penghapusan muatan</translation>
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb index 2bd31d28..0f46de6c 100644 --- a/components/policy/resources/policy_templates_it.xtb +++ b/components/policy/resources/policy_templates_it.xtb
@@ -6553,6 +6553,11 @@ La configurazione dei criteri "<ph name="CLEAR_BROWSING_HISTORY_ACTION" />", "<ph name="CLEAR_PASSWORD_SIGNIN_ACTION" />", "<ph name="CLEAR_AUTOFILL_ACTION" />" e "<ph name="CLEAR_SITE_SETTINGS_ACTION" />" comporta la disattivazione della sincronizzazione per i rispettivi tipi di dati se né il criterio "<ph name="CHROME_SYNC_NAME" />" viene disattivato impostando il criterio <ph name="SYNC_DISABLED_POLICY_NAME" /> né il criterio <ph name="BROWSER_SIGNIN_POLICY_NAME" /> viene disattivato.</translation> <translation id="6462604655173570082">Se il criterio non viene configurato o se viene impostato su Attivato, gli utenti possono visualizzare e usare il pulsante <ph name="GOOGLE_LENS_PRODUCT_NAME" /> nella casella di ricerca della pagina Nuova scheda. Se il criterio viene impostato su Disattivato, gli utenti non vedranno il pulsante <ph name="GOOGLE_LENS_PRODUCT_NAME" /> nella casella di ricerca della pagina Nuova scheda.</translation> <translation id="6464074037294098618">Attiva la Compilazione automatica per gli indirizzi</translation> +<translation id="6464564464230511695">Se questo criterio viene attivato o se non viene configurato, la funzionalità <ph name="SEARCH_SIDE_PANEL_FEATURE_NAME" /> è consentita in tutte le pagine web. + +Se viene disattivato, <ph name="SEARCH_SIDE_PANEL_FEATURE_NAME" /> non è disponibile in nessuna pagina web. + +Le funzionalità di IA generativa che fanno parte di questa funzionalità non sono disponibili per gli account aziendali o scolastici.</translation> <translation id="6467613372414922590">Consenti host di messaggistica nativi a livello di utente (installati senza privilegi di amministratore)</translation> <translation id="6467707081687600148">Programma un riavvio automatico dopo l'applicazione di un aggiornamento di <ph name="PRODUCT_OS_NAME" />.
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb index 98e1ed62..3690d3aa 100644 --- a/components/policy/resources/policy_templates_ja.xtb +++ b/components/policy/resources/policy_templates_ja.xtb
@@ -2834,6 +2834,17 @@ <translation id="3423703250826790403">Android アプリケーション</translation> <translation id="3426434797050451264">このポリシーを使用して、Android アプリをデフォルトのファイル ハンドラとして指定することもできます。</translation> <translation id="3428247105888806363">ネットワーク予測を有効にする</translation> +<translation id="3430198032663063246">文書作成サポートは、ウェブでの短文作成を支援する AI ベースのツールです。候補は、ユーザーが入力したプロンプトとウェブページのコンテンツに基づいて表示されます。 + +0 = ユーザーに対してこの機能を有効にし、AI モデルのトレーニングまたは改善に役立つ関連データを Google に送信します。関連データには、機能に応じてプロンプト、入力内容、出力内容、ソース資料などが含まれます。関連データは、AI モデルの改善のみを目的として、人間がレビューすることがあります。 + +以下に記載している場合を除き、0 がデフォルト値です。 + +1 = ユーザーに対してこの機能を有効にしますが、AI モデルのトレーニングや改善に役立つデータを Google に送信しません。1 は、<ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" /> で管理されている企業ユーザーのデフォルト値です。 + +2 = この機能を無効にします。2 は、<ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> で管理されている教育機関向けアカウントのデフォルト値です。 + +生成 AI 機能のデータ処理について詳しくは、https://support.google.com/chrome/a?p=generative_ai_settings をご覧ください。</translation> <translation id="3432863169147125747">印刷の設定を制御します。</translation> <translation id="3434053014926283175">ログイン画面でマウスのメインボタンを右に切り替えます。 @@ -5068,6 +5079,7 @@ このポリシーを無効に設定した場合、この機能は強制的に無効になります。 </translation> +<translation id="5433865420958136693">グラフィック アクセラレーションが使用可能な場合は使用する</translation> <translation id="5435888298115339571">アドレスバーとその他メニューでデスクトップ共有を有効にする</translation> <translation id="5441508088704391614">特別な制限は行わない(デフォルトの設定)。</translation> <translation id="5442026853063570579">このポリシーでは、Android 開発者向けオプションへのアクセスも管理できます。このポリシーを「DeveloperToolsDisallowed」(値 2)に設定した場合、ユーザーは開発者向けオプションにアクセスできません。このポリシーを別の値に設定するか未設定のままにした場合、ユーザーは Android 設定アプリのビルド番号を 7 回タップすれば開発者向けオプションにアクセスできます。</translation> @@ -5131,6 +5143,9 @@ <translation id="5480380613778757009">このポリシーを無効にするか未設定のままにした場合、管理対象のゲスト セッションで設定されたディスプレイ設定はすべてセッションの終了時にリセットされます。このポリシーを True に設定した場合、管理対象のゲスト セッションが終了した後もディスプレイ プロパティが保持されます。</translation> <translation id="5483012943408894695">保護されていない発行元に関する制限の適用対象外となる発行元またはホスト名パターン</translation> <translation id="5483065054530244863">ローカルの信頼済みアンカーが発行した SHA-1 署名証明書を許可する</translation> +<translation id="5486917900445838803">このポリシーを有効に設定するか未設定のままにした場合、グラフィック アクセラレーションがオンになります(可能な場合)。 + + このポリシーを無効に設定した場合、グラフィック アクセラレーションはオフになります。</translation> <translation id="5487758664517243511">この設定を有効にした場合、スマートフォン ハブをすでにオプトインしているユーザーは、スマートフォンでのウェブページの閲覧などの作業を Chrome OS で継続できます。この設定を無効にした場合、ユーザーはこの機能を使用できません。PhoneHubAllowed ポリシーを無効にした場合も、ユーザーはこの機能を使用できません。このポリシーを未設定のままにした場合、デフォルトでは、企業の管理対象ユーザーと管理対象外ユーザーのいずれもこの機能を使用できます。</translation> <translation id="5494322570831642650"><ph name="PRODUCT_NAME" /> でユーザーがシークレット モードでページを開けるかどうかを指定します。「有効」を選択するかポリシーを未設定のままにした場合は、シークレット モードでページを開くことができます。「無効」を選択した場合、シークレット モードでページを開くことはできません。「強制」を選択した場合は、シークレット モードでのみページを開くことができます。「強制」は Android-on-Chrome では機能しません。注: iOS ではセッション中にポリシーが変更されると、変更後のポリシーは再起動するまで有効になりません。</translation> <translation id="549471902631700911">セーフ ブラウジングに関するアンケートの受け取りを無効にする</translation> @@ -6193,6 +6208,7 @@ このポリシーを無効に設定するか未設定のままにした場合、Kerberos SPN の生成時には、CNAME 検索によりサーバーの標準名が決まります。</translation> <translation id="6424485010103067949"><ph name="OMA_URI" />:</translation> <translation id="6424486395812679373">すべてのダウンロード ファイルに対してセーフ ブラウジング チェックを行う</translation> +<translation id="6426899507714989471">グラフィック アクセラレーションを無効にする</translation> <translation id="6433697627431665375"><ph name="PRODUCT_NAME" /> データをバックアップに含めることを許可しない</translation> <translation id="6436052172226685535">LBS のデフォルトの動作。</translation> <translation id="6438472072089952201"><ph name="PRODUCT_NAME" /> は可能な場合に HTTP から HTTPS への一部のナビゲーションのアップグレードを試みます。このポリシーを使用すると、この動作を無効にできます。「true」に設定するか未設定のままにした場合、この機能はデフォルトで有効になります。 @@ -6253,6 +6269,11 @@ 「<ph name="CLEAR_BROWSING_HISTORY_ACTION" />」、「<ph name="CLEAR_PASSWORD_SIGNIN_ACTION" />」、「<ph name="CLEAR_AUTOFILL_ACTION" />」、「<ph name="CLEAR_SITE_SETTINGS_ACTION" />」を設定すると、<ph name="SYNC_DISABLED_POLICY_NAME" /> ポリシーを使用して「<ph name="CHROME_SYNC_NAME" />」を無効にしておらず、<ph name="BROWSER_SIGNIN_POLICY_NAME" /> も無効にしていない場合は、それぞれのデータタイプの同期が無効になります。</translation> <translation id="6462604655173570082">このポリシーを未設定のままにするか有効に設定した場合、新しいタブページの検索ボックスに <ph name="GOOGLE_LENS_PRODUCT_NAME" /> のボタンが表示され、ユーザーが使用できるようになります。このポリシーを無効に設定した場合、新しいタブページの検索ボックスに <ph name="GOOGLE_LENS_PRODUCT_NAME" /> のボタンは表示されません。</translation> <translation id="6464074037294098618">住所の自動入力を有効にします</translation> +<translation id="6464564464230511695">有効に設定するか未設定のままにした場合、<ph name="SEARCH_SIDE_PANEL_FEATURE_NAME" /> はすべてのウェブページで許可されます。 + +無効に設定した場合、どのウェブページでも <ph name="SEARCH_SIDE_PANEL_FEATURE_NAME" /> を使用できません。 + +この機能に含まれる生成 AI 機能は、教育機関または企業のアカウントではご利用いただけません。</translation> <translation id="6467613372414922590">ユーザーレベルのネイティブ メッセージング ホスト(管理者権限なしでインストールされたホスト)を許可する</translation> <translation id="6467707081687600148"><ph name="PRODUCT_OS_NAME" /> のアップデートを適用した後に自動で再起動するよう設定します。 @@ -8264,6 +8285,17 @@ <translation id="822055204938220476">通知なしでの全画面モードの継続を許可する URL のリスト</translation> <translation id="8225579382697740712">WebHID API の使用を管理する</translation> <translation id="8229912067600517877">デベロッパー ツールを有効にする</translation> +<translation id="8234565689501421293">[AI でテーマを作成する] では、選択したオプションに基づいて、カスタムのテーマや壁紙を作成できます。 + +0 = ユーザーに対してこの機能を有効にし、AI モデルのトレーニングまたは改善に役立つ関連データを Google に送信します。関連データには、機能に応じてプロンプト、入力内容、出力内容、ソース資料などが含まれます。関連データは、AI モデルの改善のみを目的として、人間がレビューすることがあります。 + +以下に記載している場合を除き、0 がデフォルト値です。 + +1 = ユーザーに対してこの機能を有効にしますが、AI モデルのトレーニングや改善に役立つデータを Google に送信しません。1 は、<ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" /> で管理されている企業ユーザーのデフォルト値です。 + +2 = この機能を無効にします。2 は、<ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> で管理されている教育機関向けアカウントのデフォルト値です。 + +生成 AI 機能のデータ処理について詳しくは、https://support.google.com/chrome/a?p=generative_ai_settings をご覧ください。</translation> <translation id="8238421250255592181">画面キーボードでオートコンプリートを有効にするかどうかを示すブール値のフラグです。</translation> <translation id="8239109177194627162">クレジット カードの自動入力を無効にする</translation> <translation id="8239143983379015783">永続的な割り当てを強制的に有効にする</translation> @@ -9371,6 +9403,7 @@ このポリシーを無効に設定した場合、サービス内アンケートはユーザーに表示されません。 <ph name="METRICS_REPORTING_ENABLED_POLICY_NAME" /> が無効に設定されている場合、このポリシーは無視されます。また、サービス内アンケートも無効になります。</translation> +<translation id="9173633148008709976">グラフィック アクセラレーションを有効にする</translation> <translation id="9180108183162961002">ゲスト ブラウジングでのログインを許可する</translation> <translation id="9185963199234034321">ログイン画面でハイ コントラストを有効にし、ユーザーが一時的に無効にすることを許可する</translation> <translation id="9187743794267626640">外部ストレージのマウントを無効にする</translation> @@ -9415,6 +9448,17 @@ <translation id="943865157632139008"><ph name="PRODUCT_FRAME_NAME" /> がインストールされている場合、デフォルトの HTML レンダラを設定できます。 デフォルト設定では、ホスト ブラウザがレンダリングを実行しますが、必要に応じてこの設定をオーバーライドして <ph name="PRODUCT_FRAME_NAME" /> にデフォルトで HTML ページのレンダリングを実行させることもできます。</translation> <translation id="944817693306670849">ディスク キャッシュ サイズを設定します</translation> +<translation id="946458935955389273">タブの整理機能は、ユーザーが開いているタブに基づいて自動的にタブグループを作成する AI ベースのツールです。候補は(ページのコンテンツではなく)開いているタブに基づいて表示されます。 + +0 = ユーザーに対してこの機能を有効にし、AI モデルのトレーニングまたは改善に役立つ関連データを Google に送信します。関連データには、機能に応じてプロンプト、入力内容、出力内容、ソース資料などが含まれます。関連データは、AI モデルの改善のみを目的として、人間がレビューすることがあります。 + +以下に記載している場合を除き、0 がデフォルト値です。 + +1 = ユーザーに対してこの機能を有効にしますが、AI モデルのトレーニングや改善に役立つデータを Google に送信しません。1 は、<ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" /> で管理されている企業ユーザーのデフォルト値です。 + +2 = この機能を無効にします。2 は、<ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> で管理されている教育機関向けアカウントのデフォルト値です。 + +生成 AI 機能のデータ処理について詳しくは、https://support.google.com/chrome/a?p=generative_ai_settings をご覧ください。</translation> <translation id="957322141096206402">システムの DNS 解決を、システム設定と機能フラグに応じて、ネットワーク プロセス内またはネットワーク プロセス外で実行できるようにする。</translation> <translation id="957778406002650056"><ph name="PLUGIN_VM_NAME" /> 画像をダウンロードすることのできる URL です。</translation> <translation id="957920984193041197">アンロード中にページでポップアップを表示することを許可する</translation>
diff --git a/components/policy/resources/policy_templates_ko.xtb b/components/policy/resources/policy_templates_ko.xtb index e601dc1..bcdd7ba 100644 --- a/components/policy/resources/policy_templates_ko.xtb +++ b/components/policy/resources/policy_templates_ko.xtb
@@ -2959,6 +2959,17 @@ <translation id="3423703250826790403">Android 애플리케이션</translation> <translation id="3426434797050451264">이 정책은 Android 앱을 기본 파일 핸들러로 지정할 때도 사용할 수 있습니다.</translation> <translation id="3428247105888806363">네트워크 예측 사용</translation> +<translation id="3430198032663063246">작성 지원 기능은 짧은 형식의 웹 콘텐츠를 위한 AI 기반 글쓰기 어시스턴트입니다. 추천 콘텐츠는 사용자가 입력한 프롬프트와 웹페이지의 콘텐츠를 기반으로 합니다. + +0 = 사용자를 위해 이 기능을 사용 설정하고 AI 모델을 학습시키거나 개선하는 데 도움이 되도록 관련 데이터를 Google에 전송합니다. 관련 데이터에는 기능에 따라 프롬프트, 입력, 출력, 소스 자료가 포함될 수 있습니다. AI 모델 개선 목적으로만 사람이 데이터를 검토할 수 있습니다. + +아래에 명시된 경우를 제외하고 0이 기본값입니다. + +1 = 사용자를 위해 기능을 사용 설정하지만 AI 모델을 학습시키거나 개선하기 위한 데이터를 Google로 전송하지 않습니다. 1은 <ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" />에서 관리되는 기업 사용자의 기본값입니다. + +2 = 기능을 사용 중지합니다. 2는 <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />에서 관리되는 Education 계정의 기본값입니다. + +생성형 AI 기능의 데이터 처리에 관한 자세한 내용은 https://support.google.com/chrome/a?p=generative_ai_settings 페이지를 참고하세요.</translation> <translation id="3432863169147125747">인쇄 설정을 제어합니다.</translation> <translation id="3434053014926283175">로그인 화면의 기본 마우스 버튼을 오른쪽 버튼으로 변경합니다. @@ -5284,6 +5295,7 @@ 정책을 사용 안함으로 설정하면 기능이 강제로 사용 중지됩니다. </translation> +<translation id="5433865420958136693">가능한 경우 그래픽 가속 사용</translation> <translation id="5435888298115339571">검색주소창과 점 3개 메뉴에서 데스크톱 공유 사용 설정</translation> <translation id="5441508088704391614">특별한 제한이 없습니다. 기본값입니다.</translation> <translation id="5442026853063570579">이 정책은 Android 개발자 옵션 액세스 권한도 제어합니다. 이 정책을 'DeveloperToolsDisallowed'(값 2)로 설정하는 경우 사용자는 개발자 옵션에 액세스할 수 없습니다. 이 정책을 다른 값으로 설정하거나 설정하지 않은 채로 두는 경우 사용자는 Android 설정 앱에서 빌드 번호를 7번 탭하여 개발자 옵션에 액세스할 수 있습니다.</translation> @@ -5357,6 +5369,9 @@ <translation id="5480380613778757009">정책을 사용 안함으로 설정하거나 설정하지 않으면 관리 게스트 세션에서 설정된 모든 화면 설정이 세션이 끝나는 즉시 재설정됩니다. 정책을 True로 설정하면 관리 게스트 세션을 종료한 후에도 화면 속성이 유지됩니다.</translation> <translation id="5483012943408894695">안전하지 않은 출처에 대한 보안 제한을 적용하지 않을 출처 또는 호스트 이름 패턴</translation> <translation id="5483065054530244863">로컬 트러스트 앵커에서 발행된 SHA-1 서명 인증서를 허용합니다.</translation> +<translation id="5486917900445838803">정책을 사용 설정하거나 설정하지 않으면 가능한 경우 그래픽 가속이 사용 설정됩니다. + + 정책을 사용 중지하면 그래픽 가속이 사용 중지됩니다.</translation> <translation id="5487758664517243511">설정을 켜면 이미 휴대전화 허브 사용을 선택한 사용자가 작업을 이어서 할 수 있게 됩니다(예: 휴대전화에서 보던 웹페이지를 ChromeOS에서 이어서 보기). 설정을 끄면 사용자가 이 기능을 사용할 수 없습니다. PhoneHubAllowed 정책을 꺼도 사용자가 이 기능을 사용할 수 없습니다. @@ -6478,6 +6493,7 @@ 정책을 사용 안함으로 설정하거나 설정하지 않으면 Kerberos SPN 생성 시 CNAME 조회로 서버의 표준 이름이 결정됩니다.</translation> <translation id="6424485010103067949"><ph name="OMA_URI" />:</translation> <translation id="6424486395812679373">다운로드한 모든 파일에 대해 세이프 브라우징 확인 실행</translation> +<translation id="6426899507714989471">그래픽 가속 사용 중지</translation> <translation id="6433697627431665375"><ph name="PRODUCT_NAME" /> 데이터가 백업에 포함되지 않도록 차단</translation> <translation id="6436052172226685535">LBS 기본 동작</translation> <translation id="6438472072089952201"><ph name="PRODUCT_NAME" />에서는 가능한 경우 일부 탐색을 HTTP에서 HTTPS로 업그레이드하려고 시도합니다. 이 정책을 사용하여 이 동작을 사용 중지할 수 있습니다. 'true'로 설정하거나 설정하지 않으면 이 기능이 기본적으로 사용 설정됩니다. @@ -8659,6 +8675,17 @@ <translation id="822055204938220476">알림을 표시하지 않고 전체 화면 모드에 남아있을 수 있는 URL 목록</translation> <translation id="8225579382697740712">WebHID API 사용 제어</translation> <translation id="8229912067600517877">개발자 도구 사용</translation> +<translation id="8234565689501421293">AI로 테마 만들기를 사용하면 사용자가 옵션 목록에서 미리 선택하여 맞춤 테마/배경화면을 만들 수 있습니다. + +0 = 사용자를 위해 이 기능을 사용 설정하고 AI 모델을 학습시키거나 개선하는 데 도움이 되도록 관련 데이터를 Google에 전송합니다. 관련 데이터에는 기능에 따라 프롬프트, 입력, 출력, 소스 자료가 포함될 수 있습니다. AI 모델 개선 목적으로만 사람이 데이터를 검토할 수 있습니다. + +아래에 명시된 경우를 제외하고 0이 기본값입니다. + +1 = 사용자를 위해 기능을 사용 설정하지만 AI 모델을 학습시키거나 개선하기 위한 데이터를 Google로 전송하지 않습니다. 1은 <ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" />에서 관리되는 기업 사용자의 기본값입니다. + +2 = 기능을 사용 중지합니다. 2는 <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />에서 관리되는 Education 계정의 기본값입니다. + +생성형 AI 기능의 데이터 처리에 관한 자세한 내용은 https://support.google.com/chrome/a?p=generative_ai_settings 페이지를 참고하세요.</translation> <translation id="8238421250255592181">터치 키보드가 자동 완성을 지원할 수 있는지 나타내는 부울 플래그입니다.</translation> <translation id="8239109177194627162">신용카드 입력 시 자동 완성 사용 안함</translation> <translation id="8239143983379015783">영구 할당량을 강제 적용합니다.</translation> @@ -9829,6 +9856,7 @@ 정책을 사용 중지하면 제품 내 설문조사가 사용자에게 표시되지 않습니다. <ph name="METRICS_REPORTING_ENABLED_POLICY_NAME" />가 사용 중지되어 제품 내 설문조사도 사용 중지되는 경우에는 이 정책은 아무런 영향을 미치지 않습니다.</translation> +<translation id="9173633148008709976">그래픽 가속 사용 설정</translation> <translation id="9180108183162961002">게스트로 로그인 허용</translation> <translation id="9185963199234034321">로그인 화면에서 고대비를 사용 설정하고 사용자가 일시적으로 사용 중지할 수 있도록 허용</translation> <translation id="9187743794267626640">외부 저장소 마운트 사용 중지</translation> @@ -9873,6 +9901,17 @@ <translation id="943865157632139008"><ph name="PRODUCT_FRAME_NAME" />이(가) 설치될 때 기본 HTML 렌더러를 설정할 수 있습니다. 기본 설정은 호스트 브라우저가 렌더링을 실행하도록 허용하지만 원하는 경우 기본 설정을 무시하고 <ph name="PRODUCT_FRAME_NAME" />이(가) HTML 페이지를 기본적으로 렌더링하도록 할 수 있습니다.</translation> <translation id="944817693306670849">디스크 캐시 크기 설정</translation> +<translation id="946458935955389273">탭 정리 도구는 사용자의 열린 탭을 기반으로 탭 그룹을 자동으로 생성하는 AI 기반 도구입니다. 추천은 열린 탭을 기반으로 하며 페이지 콘텐츠를 기반으로 하지는 않습니다. + +0 = 사용자를 위해 이 기능을 사용 설정하고 AI 모델을 학습시키거나 개선하는 데 도움이 되도록 관련 데이터를 Google에 전송합니다. 관련 데이터에는 기능에 따라 프롬프트, 입력, 출력, 소스 자료가 포함될 수 있습니다. AI 모델 개선 목적으로만 사람이 데이터를 검토할 수 있습니다. + +아래에 명시된 경우를 제외하고 0이 기본값입니다. + +1 = 사용자를 위해 기능을 사용 설정하지만 AI 모델을 학습시키거나 개선하기 위한 데이터를 Google로 전송하지 않습니다. 1은 <ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" />에서 관리되는 기업 사용자의 기본값입니다. + +2 = 기능을 사용 중지합니다. 2는 <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />에서 관리되는 Education 계정의 기본값입니다. + +생성형 AI 기능의 데이터 처리에 관한 자세한 내용은 https://support.google.com/chrome/a?p=generative_ai_settings 페이지를 참고하세요.</translation> <translation id="957322141096206402">시스템 DNS 변환은 시스템 구성 및 기능 플래그에 따라 네트워크 프로세스 내부 또는 외부에서 실행될 수 있습니다.</translation> <translation id="957778406002650056"><ph name="PLUGIN_VM_NAME" /> 이미지를 다운로드할 수 있는 URL입니다.</translation> <translation id="957920984193041197">로드 취소 중 페이지에서 팝업을 표시하도록 허용</translation>
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb index c2681c6b..7789d18 100644 --- a/components/policy/resources/policy_templates_nl.xtb +++ b/components/policy/resources/policy_templates_nl.xtb
@@ -6483,6 +6483,11 @@ Als je <ph name="CLEAR_BROWSING_HISTORY_ACTION" />, <ph name="CLEAR_PASSWORD_SIGNIN_ACTION" />, <ph name="CLEAR_AUTOFILL_ACTION" /> en <ph name="CLEAR_SITE_SETTINGS_ACTION" /> instelt, wordt synchronisatie voor de betreffende gegevenstypen uitgezet als <ph name="CHROME_SYNC_NAME" /> niet is uitgezet door het beleid <ph name="SYNC_DISABLED_POLICY_NAME" /> in te stellen en <ph name="BROWSER_SIGNIN_POLICY_NAME" /> niet is uitgezet.</translation> <translation id="6462604655173570082">Als je dit beleid toepast of niet instelt, kunnen gebruikers de <ph name="GOOGLE_LENS_PRODUCT_NAME" />-knop zien en gebruiken in het zoekvak op de pagina Nieuw tabblad. Als je dit beleid niet toepast, zien gebruikers de <ph name="GOOGLE_LENS_PRODUCT_NAME" />-knop niet in het zoekvak op de pagina Nieuw tabblad.</translation> <translation id="6464074037294098618">Automatisch invullen voor adressen aanzetten</translation> +<translation id="6464564464230511695">Als je dit beleid toepast of niet instelt, is <ph name="SEARCH_SIDE_PANEL_FEATURE_NAME" /> toegestaan op alle webpagina's. + +Als je dit beleid niet toepast, is <ph name="SEARCH_SIDE_PANEL_FEATURE_NAME" /> op geen enkele webpagina beschikbaar. + +GenAI-mogelijkheden die deel uitmaken van deze functie, zijn niet beschikbaar voor Education- of Enterprise-accounts.</translation> <translation id="6467613372414922590">Hosts voor native berichten op gebruikersniveau toestaan (geïnstalleerd zonder beheerdersrechten)</translation> <translation id="6467707081687600148">Plan automatisch opnieuw opstarten in nadat een <ph name="PRODUCT_OS_NAME" />-update is toegepast.
diff --git a/components/policy/resources/policy_templates_ru.xtb b/components/policy/resources/policy_templates_ru.xtb index 6c9b62a..32fafaa 100644 --- a/components/policy/resources/policy_templates_ru.xtb +++ b/components/policy/resources/policy_templates_ru.xtb
@@ -2942,6 +2942,17 @@ <translation id="3423703250826790403">Приложения для Android</translation> <translation id="3426434797050451264">С помощью этого правила также можно указать приложения для Android, которые будут обрабатывать файлы по умолчанию.</translation> <translation id="3428247105888806363">Включить предварительное определение сети</translation> +<translation id="3430198032663063246">Генератор текстов на основе искусственного интеллекта помогает писать короткие сообщения онлайн. Они создаются с учетом пользовательских запросов и содержимого веб-страницы. + +Если установлено значение "0", функция включена и в Google отправляются данные для обучения или улучшения моделей искусственного интеллекта. Передаваемая информация зависит от функции и может содержать запросы, исходные материалы, входные и выходные данные. Эти сведения могут проверяться специалистами только с целью улучшения моделей искусственного интеллекта. + +Значение "0" используется по умолчанию, за исключением описанных ниже случаев. + +Если установлено значение "1", функция включена, но в Google не отправляются данные для обучения или улучшения моделей искусственного интеллекта. Значение "1" используется по умолчанию для корпоративных аккаунтов, управляемых через <ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" />. + +Если установлено значение "2", функция отключена. Оно используется по умолчанию для учебных аккаунтов, управляемых через <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />. + +Подробную информацию об обработке данных при использовании функций генеративного искусственного интеллекта вы найдете на странице https://support.google.com/chrome/a?p=generative_ai_settings.</translation> <translation id="3432863169147125747">Регулирует настройки печати.</translation> <translation id="3434053014926283175">Делает правую кнопку мыши основной на экране входа. @@ -8627,6 +8638,17 @@ <translation id="822055204938220476">Список URL, которым разрешено оставаться в полноэкранном режиме без показа уведомления об этом</translation> <translation id="8225579382697740712">Управлять использованием WebHID API</translation> <translation id="8229912067600517877">Включить инструменты разработчика</translation> +<translation id="8234565689501421293">Функция "Создание тем с помощью ИИ" позволяет пользователям генерировать собственные темы и обои по параметрам, выбранным из списка. + +Если установлено значение "0", функция включена и в Google отправляются данные для обучения или улучшения моделей искусственного интеллекта. Передаваемая информация зависит от функции и может содержать запросы, исходные материалы, входные и выходные данные. Эти сведения могут проверяться специалистами только с целью улучшения моделей искусственного интеллекта. + +Значение "0" используется по умолчанию, за исключением описанных ниже случаев. + +Если установлено значение "1", функция включена, но в Google не отправляются данные для обучения или улучшения моделей искусственного интеллекта. Значение "1" используется по умолчанию для корпоративных аккаунтов, управляемых через <ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" />. + +Если установлено значение "2", функция отключена. Оно используется по умолчанию для учебных аккаунтов, управляемых через <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />. + +Подробную информацию об обработке данных при использовании функций генеративного искусственного интеллекта вы найдете на странице https://support.google.com/chrome/a?p=generative_ai_settings.</translation> <translation id="8238421250255592181">Логический флаг, который указывает, доступно ли автозаполнение на экранной клавиатуре.</translation> <translation id="8239109177194627162">Запретить автозаполнение данных кредитных карт</translation> <translation id="8239143983379015783">Принудительно использовать постоянную квоту</translation> @@ -9836,6 +9858,17 @@ <translation id="943865157632139008">Правило позволяет выбрать средство обработки HTML, если установлено дополнение <ph name="PRODUCT_FRAME_NAME" />. По умолчанию обработку выполняет основной браузер. При необходимости можно сделать <ph name="PRODUCT_FRAME_NAME" /> средством обработки HTML-страниц по умолчанию.</translation> <translation id="944817693306670849">Задать объем кеша</translation> +<translation id="946458935955389273">Организатор вкладок – это инструмент на основе искусственного интеллекта, автоматически создающий группы из открытых пользователем вкладок. Содержимое страниц при объединении не учитывается. + +Если установлено значение "0", функция включена и в Google отправляются данные для обучения или улучшения моделей искусственного интеллекта. Передаваемая информация зависит от функции и может содержать запросы, исходные материалы, входные и выходные данные. Эти сведения могут проверяться специалистами только с целью улучшения моделей искусственного интеллекта. + +Значение "0" используется по умолчанию, за исключением описанных ниже случаев. + +Если установлено значение "1", функция включена, но в Google не отправляются данные для обучения или улучшения моделей искусственного интеллекта. Значение "1" используется по умолчанию для корпоративных аккаунтов, управляемых через <ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" />. + +Если установлено значение "2", функция отключена. Оно используется по умолчанию для учебных аккаунтов, управляемых через <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />. + +Подробную информацию об обработке данных при использовании функций генеративного искусственного интеллекта вы найдете на странице https://support.google.com/chrome/a?p=generative_ai_settings.</translation> <translation id="957322141096206402">DNS-преобразование может выполняться как в сетевом процессе, так и вне его в зависимости от конфигурации системы и флагов функций</translation> <translation id="957778406002650056">URL, с которого можно скачать изображение <ph name="PLUGIN_VM_NAME" />.</translation> <translation id="957920984193041197">Разрешить страницам показывать всплывающие окна во время выгрузки</translation>
diff --git a/components/policy/resources/policy_templates_th.xtb b/components/policy/resources/policy_templates_th.xtb index 7f330451..84b783c4 100644 --- a/components/policy/resources/policy_templates_th.xtb +++ b/components/policy/resources/policy_templates_th.xtb
@@ -6491,6 +6491,11 @@ การตั้งค่า "<ph name="CLEAR_BROWSING_HISTORY_ACTION" />", "<ph name="CLEAR_PASSWORD_SIGNIN_ACTION" />", "<ph name="CLEAR_AUTOFILL_ACTION" />" และ "<ph name="CLEAR_SITE_SETTINGS_ACTION" />" จะปิดใช้การซิงค์สำหรับประเภทข้อมูลที่เกี่ยวข้อง หากไม่ได้ปิดใช้ "<ph name="CHROME_SYNC_NAME" />" ไว้โดยการตั้งค่านโยบาย <ph name="SYNC_DISABLED_POLICY_NAME" /> และ <ph name="BROWSER_SIGNIN_POLICY_NAME" /> ปิดใช้อยู่</translation> <translation id="6462604655173570082">การไม่ตั้งค่านโยบายหรือตั้งค่าเป็น "เปิดใช้" จะอนุญาตให้ผู้ใช้ดูและใช้ปุ่ม <ph name="GOOGLE_LENS_PRODUCT_NAME" /> ในช่องค้นหาบนหน้าแท็บใหม่ การตั้งค่านโยบายเป็น "ปิดใช้" จะทำให้ผู้ใช้ไม่เห็นปุ่ม <ph name="GOOGLE_LENS_PRODUCT_NAME" /> ในช่องค้นหาบนหน้าแท็บใหม่</translation> <translation id="6464074037294098618">เปิดใช้ฟีเจอร์ป้อนข้อความอัตโนมัติสำหรับที่อยู่</translation> +<translation id="6464564464230511695">หากตั้งค่าเป็น "เปิดใช้" หรือไม่ได้ตั้งค่าไว้ <ph name="SEARCH_SIDE_PANEL_FEATURE_NAME" /> จะได้รับอนุญาตในหน้าเว็บทุกหน้า + +หากตั้งค่าเป็น "ปิดใช้" <ph name="SEARCH_SIDE_PANEL_FEATURE_NAME" /> จะใช้งานไม่ได้ในหน้าเว็บทุกหน้า + +ความสามารถของ GenAI ที่เป็นส่วนหนึ่งของฟีเจอร์นี้ไม่พร้อมใช้งานสำหรับบัญชี Education หรือ Enterprise</translation> <translation id="6467613372414922590">อนุญาตให้ใช้โฮสต์การรับส่งข้อความดั้งเดิมระดับผู้ใช้ (ติดตั้งโดยไม่มีสิทธิ์ของผู้ดูแลระบบ)</translation> <translation id="6467707081687600148">กำหนดเวลารีบูตอัตโนมัติหลังจากใช้การอัปเดต <ph name="PRODUCT_OS_NAME" /> แล้ว
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb index 7c78773..143c180 100644 --- a/components/policy/resources/policy_templates_uk.xtb +++ b/components/policy/resources/policy_templates_uk.xtb
@@ -2976,6 +2976,17 @@ <translation id="3423703250826790403">Додатки Android</translation> <translation id="3426434797050451264">За допомогою цього правила також можна вказати, що додатки для Android потрібно використовувати як обробники файлів за умовчанням.</translation> <translation id="3428247105888806363">Увімкнути прогнозування мережі</translation> +<translation id="3430198032663063246">"Допомога з текстом" – це функція на основі штучного інтелекту, яка дає змогу створювати короткі тексти в Інтернеті. Пропозиції надаються на основі запитів, які ввів користувач, і контенту веб-сторінки. + +0 – увімкнути функцію для користувачів і надсилати в Google дані для навчання або покращення моделей штучного інтелекту. Залежно від функції надсилатися можуть запити, вихідні матеріали, вхідні й вихідні дані. Спеціалісти можуть перевіряти інформацію лише з метою покращення моделей штучного інтелекту. + +Значення "0" використовується за умовчанням за винятком наведених нижче випадків. + +1 – увімкнути функцію для користувачів, але не надсилати в Google дані для навчання або покращення моделей штучного інтелекту. Значення "1" використовується за умовчанням для корпоративних користувачів, якими керують через <ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" />. + +2 – вимкнути функцію. Значення "2" використовується за умовчанням для облікових записів закладів освіти, якими керують через <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />. + +Щоб дізнатися більше про обробку даних для функцій на основі генеративного ШІ, перейдіть на сторінку https://support.google.com/chrome/a?p=generative_ai_settings.</translation> <translation id="3432863169147125747">Керує налаштуваннями друку.</translation> <translation id="3434053014926283175">Зробити основною праву кнопку миші на екрані входу. @@ -5287,6 +5298,7 @@ Якщо це правило деактивовано, функцію буде примусово вимкнено. </translation> +<translation id="5433865420958136693">Використовувати прискорення графічного процесора, якщо доступно</translation> <translation id="5435888298115339571">Увімкнути спільний доступ в Універсальному вікні пошуку та меню з трьома крапками</translation> <translation id="5441508088704391614">Особливих обмежень немає. За умовчанням.</translation> <translation id="5442026853063570579">Це правило також керує доступом до Параметрів розробника Android. Якщо для нього встановлено значення DeveloperToolsDisallowed (значення 2), користувачі не матимуть доступу до Параметрів розробника. Якщо це правило не налаштовано або для нього встановлено інше значення, користувачі можуть отримувати доступ до Параметрів розробника, сім разів торкнувшись номера складання в додатку Налаштування Android.</translation> @@ -5359,6 +5371,9 @@ <translation id="5480380613778757009">Якщо це правило вимкнено або не налаштовано, усі налаштування екрана, установлені під час керованого сеансу в режимі "Гість", буде скинуто, щойно сеанс завершиться. Якщо для нього вибрано значення True, властивості екрана залишаться після завершення сеансу.</translation> <translation id="5483012943408894695">Джерела або шаблони імені хосту, для яких не застосовуватимуться обмеження щодо незахищених джерел</translation> <translation id="5483065054530244863">Дозволяти підписані сертифікати SHA-1, видані локальними ключами довіри</translation> +<translation id="5486917900445838803">Якщо ввімкнути або не налаштувати це правило, активується прискорення графічного процесора (якщо можливо). + + Якщо його вимкнути, прискорення графічного процесора деактивується.</translation> <translation id="5487758664517243511">Якщо ввімкнути це налаштування, користувачі, які вже активували функцію "Керування телефоном", зможуть продовжувати виконувати на пристрої з ОС Chrome завдання, які почали на телефоні, наприклад переглядати веб-сторінки. Якщо вимкнути це налаштування або правило PhoneHubAllowed, така функція буде недоступна для користувачів. @@ -6506,6 +6521,7 @@ Якщо вимкнути це правило або не налаштувати його, пошук CNAME визначатиме канонічну назву сервера під час створення SPN для протоколу Kerberos.</translation> <translation id="6424485010103067949"><ph name="OMA_URI" />:</translation> <translation id="6424486395812679373">Перевіряти всі завантажені файли за допомогою функції "Безпечний перегляд"</translation> +<translation id="6426899507714989471">Вимкнути прискорення графічного процесора</translation> <translation id="6433697627431665375">Заборонити включати дані <ph name="PRODUCT_NAME" /> у резервну копію</translation> <translation id="6436052172226685535">Поведінка за умовчанням для підтримки застарілих веб-переглядачів.</translation> <translation id="6438472072089952201">Якщо це можливо, <ph name="PRODUCT_NAME" /> намагається перевести трафік з HTTP на HTTPS. За допомогою цього правила можна вимкнути таку поведінку. Якщо правило не налаштувати або вибрати для нього значення "правда", цю функцію буде ввімкнено за умовчанням. @@ -8683,6 +8699,17 @@ <translation id="822055204938220476">Список URL-адрес, які можуть залишатися в повноекранному режимі без сповіщень</translation> <translation id="8225579382697740712">Контролювати використання WebHID API</translation> <translation id="8229912067600517877">Увімкнути Інструменти розробника</translation> +<translation id="8234565689501421293">Функція "Створення тем за допомогою ШІ" дає користувачам змогу створювати спеціальні теми або фонові малюнки за допомогою параметрів, вибраних зі списку варіантів. + +0 – увімкнути функцію для користувачів і надсилати в Google дані для навчання або покращення моделей штучного інтелекту. Залежно від функції надсилатися можуть запити, вихідні матеріали, вхідні й вихідні дані. Спеціалісти можуть перевіряти інформацію лише з метою покращення моделей штучного інтелекту. + +Значення "0" використовується за умовчанням за винятком наведених нижче випадків. + +1 – увімкнути функцію для користувачів, але не надсилати в Google дані для навчання або покращення моделей штучного інтелекту. Значення "1" використовується за умовчанням для корпоративних користувачів, якими керують через <ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" />. + +2 – вимкнути функцію. Значення "2" використовується за умовчанням для облікових записів закладів освіти, якими керують через <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />. + +Щоб дізнатися більше про обробку даних для функцій на основі генеративного ШІ, перейдіть на сторінку https://support.google.com/chrome/a?p=generative_ai_settings.</translation> <translation id="8238421250255592181">Логічне значення експериментального параметра, яке вказує, чи може екранна клавіатура пропонувати автозаповнення.</translation> <translation id="8239109177194627162">Вимкнути функцію автозаповнення для кредитних карток</translation> <translation id="8239143983379015783">Примусово ввімкнути постійну квоту</translation> @@ -9856,6 +9883,7 @@ Якщо його вимкнути, користувачі не бачитимуть опитувань. Це правило не діятиме, якщо вимкнути правило<ph name="METRICS_REPORTING_ENABLED_POLICY_NAME" /> (опитування в продукті також буде вимкнено).</translation> +<translation id="9173633148008709976">Увімкнути прискорення графічного процесора</translation> <translation id="9180108183162961002">Дозволити вхід у гостьовому режимі</translation> <translation id="9185963199234034321">Увімкнути високу контрастність на екрані входу й дозволити користувачу тимчасово вимкнути цю функцію</translation> <translation id="9187743794267626640">Вимикати підключення зовнішньої пам’яті</translation> @@ -9900,6 +9928,17 @@ <translation id="943865157632139008">Дає змогу налаштовувати засіб обробки HTML за умовчанням, якщо встановлено <ph name="PRODUCT_FRAME_NAME" />. За умовчанням сторінки обробляє веб-переглядач хосту. Це можна замінити, щоб за умовчанням обробляти сторінки HTML у <ph name="PRODUCT_FRAME_NAME" />.</translation> <translation id="944817693306670849">Налаштування обсягу кешу диска</translation> +<translation id="946458935955389273">"Упорядкування вкладок" – це функція на основі штучного інтелекту, яка автоматично створює групи з відкритих користувачем вкладок. Пропозиції надаються на основі відкритих вкладок (а не контенту сторінки). + +0 – увімкнути функцію для користувачів і надсилати в Google дані для навчання або покращення моделей штучного інтелекту. Залежно від функції надсилатися можуть запити, вихідні матеріали, вхідні й вихідні дані. Спеціалісти можуть перевіряти інформацію лише з метою покращення моделей штучного інтелекту. + +Значення "0" використовується за умовчанням за винятком наведених нижче випадків. + +1 – увімкнути функцію для користувачів, але не надсилати в Google дані для навчання або покращення моделей штучного інтелекту. Значення "1" використовується за умовчанням для корпоративних користувачів, якими керують через <ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" />. + +2 – вимкнути функцію. Значення "2" використовується за умовчанням для облікових записів закладів освіти, якими керують через <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />. + +Щоб дізнатися більше про обробку даних для функцій на основі генеративного ШІ, перейдіть на сторінку https://support.google.com/chrome/a?p=generative_ai_settings.</translation> <translation id="957322141096206402">Перетворення системи доменних імен може відбуватися в мережевому процесі або поза ним – це залежить від конфігурації системи та експериментальних параметрів функцій.</translation> <translation id="957778406002650056">URL-адреса, з якої можна завантажити образ <ph name="PLUGIN_VM_NAME" />.</translation> <translation id="957920984193041197">Дозволити показ спливаючих вікон під час вивантаження сторінок</translation>
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb index dc750fd..cd844fc2 100644 --- a/components/policy/resources/policy_templates_vi.xtb +++ b/components/policy/resources/policy_templates_vi.xtb
@@ -547,7 +547,7 @@ Nếu bạn đặt chính sách này, thì người dùng sẽ không thể thay đổi được. Nếu bạn không đặt chính sách này, thì các tùy chọn hỗ trợ tiếp cận sẽ không xuất hiện trong trình đơn, nhưng người dùng có thể chọn hiển thị các tùy chọn này thông qua trang Cài đặt. Nếu bạn bật tính năng hỗ trợ tiếp cận bằng những phương thức khác (ví dụ: bằng tổ hợp phím), thì các tùy chọn hỗ trợ tiếp cận sẽ luôn xuất hiện trong trình đơn ở khay hệ thống.</translation> -<translation id="1449777485284610883">Cho phép cài đặt và cập nhật các tiện ích lưu trữ bên ngoài Cửa hàng Chrome trực tuyến</translation> +<translation id="1449777485284610883">Cho phép cài đặt và cập nhật các tiện ích lưu trữ bên ngoài Chrome Web Store</translation> <translation id="1451113827539677573">Kiểm soát cách <ph name="PRODUCT_NAME" /> in trên <ph name="MS_WIN_NAME" />. Khi in bằng một máy in không phải PostScript trên <ph name="MS_WIN_NAME" />, đôi khi, bạn cần tạo điểm ảnh cho các lệnh in để in một cách chính xác. @@ -1950,7 +1950,7 @@ Khi đặt cờ đề xuất thành True, người dùng có thể thay đổi độ phân giải và hệ số tỷ lệ của màn hình bất kỳ trên trang cài đặt. Tuy nhiên, tùy chọn cài đặt sẽ chuyển về như cũ vào lần khởi động lại tiếp theo. Khi bạn đặt cờ đề xuất thành False hoặc không đặt cờ này, người dùng không thể thay đổi các tùy chọn cài đặt màn hình. Lưu ý: Đặt <ph name="EXTERNAL_WIDTH" /> và <ph name="EXTERNAL_HEIGHT" /> bằng pixel và <ph name="EXTERNAL_SCALE_PERCENTAGE" /> và <ph name="INTERNAL_SCALE_PERCENTAGE" /> ở dạng tỷ lệ phần trăm.</translation> -<translation id="2548331788863219790">Ngăn việc cài đặt và cập nhật các tiện ích lưu trữ bên ngoài Cửa hàng Chrome trực tuyến</translation> +<translation id="2548331788863219790">Ngăn việc cài đặt và cập nhật các tiện ích lưu trữ bên ngoài Chrome Web Store</translation> <translation id="2548397295248733155">Lưu ý rằng chúng tôi không dùng chính sách này nữa và sẽ xóa khỏi <ph name="PRODUCT_OS_NAME" /> phiên bản 85. Thay vào đó, vui lòng sử dụng <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" />. Chỉ định khoảng thời gian kể từ lần cuối cùng người dùng nhập cho đến thời điểm màn hình bị tắt khi chạy bằng pin. @@ -2177,7 +2177,7 @@ <translation id="273678600057164019">Quá trình phân giải DNS của hệ thống sẽ chạy trong quy trình mạng.</translation> <translation id="2737917415184832294">Sử dụng HTTPS cho các lượt tải bản cập nhật xuống</translation> <translation id="2739213523971537320">Tắt bàn phím ảo cảm ứng trên màn hình đăng nhập</translation> -<translation id="2742843273354638707">Ẩn ứng dụng Cửa hàng Chrome trực tuyến và liên kết chân trang khỏi Trang thẻ mới và trình chạy ứng dụng <ph name="PRODUCT_OS_NAME" />. +<translation id="2742843273354638707">Ẩn ứng dụng Chrome Web Store và liên kết chân trang khỏi Trang thẻ mới và trình chạy ứng dụng <ph name="PRODUCT_OS_NAME" />. Khi chính sách này được đặt thành true, các biểu tượng sẽ bị ẩn. @@ -3241,7 +3241,7 @@ Xin lưu ý rằng chúng tôi đã thông báo việc loại bỏ chính sách này trong <ph name="PRODUCT_NAME" /> phiên bản 82. Tuy nhiên, chính sách này sẽ bị loại bỏ trong phiên bản 84.</translation> <translation id="3606571057705314194">Tắt bộ chọn hồ sơ khi khởi động</translation> <translation id="3608206578291537084">Bật quy trình báo cáo đã mã hoá</translation> -<translation id="3608281460204780443">Hiển thị biểu tượng Cửa hàng Chrome trực tuyến trong trình chạy <ph name="PRODUCT_OS_NAME" /> và trên trang thẻ mới</translation> +<translation id="3608281460204780443">Hiển thị biểu tượng Chrome Web Store trong trình chạy <ph name="PRODUCT_OS_NAME" /> và trên trang thẻ mới</translation> <translation id="3616490235694929053">Chính sách này kiểm soát việc người dùng có thấy màn hình cài đặt kích thước trên màn hình trong lần đăng nhập đầu tiên hay không. Nếu bạn đặt chính sách này thành false (sai), thì màn hình cài đặt kích thước trên màn hình sẽ không hiển thị. Nếu bạn đặt chính sách này thành true (đúng), thì màn hình cài đặt kích thước trên màn hình sẽ hiển thị.</translation> @@ -3285,7 +3285,7 @@ <translation id="3652670852519271837">Cho phép các trang web yêu cầu người dùng cấp quyền đọc các tệp và thư mục qua API Hệ thống tệp</translation> <translation id="3653237928288822292">Biểu tượng nhà cung cấp dịch vụ tìm kiếm mặc định</translation> <translation id="3654906736796256792">Cho phép chạy hộp cát âm thanh</translation> -<translation id="3655710915351748191">Không hiển thị biểu tượng Cửa hàng Chrome trực tuyến trong trình chạy <ph name="PRODUCT_OS_NAME" /> hoặc trên trang thẻ mới</translation> +<translation id="3655710915351748191">Không hiển thị biểu tượng Chrome Web Store trong trình chạy <ph name="PRODUCT_OS_NAME" /> hoặc trên trang thẻ mới</translation> <translation id="3655885297177292093">API Event.path sẽ ở trạng thái mặc định: có ở các phiên bản trước M109 và không có ở các phiên bản từ M109 đến 114.</translation> <translation id="3659542706175323490">Khi bạn đặt chính sách này thành Bật, tính năng khởi động khi cắm nguồn AC sẽ bật liên tục nếu được hỗ trợ trên thiết bị này. Tính năng khởi động khi cắm nguồn AC cho phép hệ thống khởi động lại từ trạng thái Tắt hoặc Ngủ đông sau khi người dùng cắm dây nguồn. @@ -3868,15 +3868,15 @@ <translation id="4164511138197196839">Nếu bạn bật chính sách này thì các tiện ích chưa phát hành trên Cửa hàng Chrome trực tuyến sẽ bị vô hiệu hoá trong <ph name="PRODUCT_NAME" />. Chính sách này chỉ áp dụng cho các tiện ích được cài đặt và cập nhật từ -Cửa hàng Chrome trực tuyến. +Chrome Web Store. Tiện ích từ bên ngoài cửa hàng, chẳng hạn như tiện ích đã giải nén được cài đặt bằng chế độ nhà phát triển và tiện ích được cài đặt bằng nút chuyển dòng lệnh sẽ bị bỏ qua. Các tiện ích buộc cài đặt và tự lưu trữ sẽ bị bỏ qua. Tất cả các tiện ích cố định ở một phiên bản cũng bị bỏ qua. -Nếu bạn đặt chính sách này thành <ph name="ALLOW_UNPUBLISHED" /> (0) hoặc không đặt, các tiện ích chưa phát hành trên Cửa hàng Chrome trực tuyến sẽ được cho phép. -Nếu bạn đặt chính sách này thành <ph name="DISABLE_UNPUBLISHED" /> (1) thì các tiện ích chưa phát hành trên Cửa hàng Chrome trực tuyến sẽ bị vô hiệu hoá.</translation> +Nếu bạn đặt chính sách này thành <ph name="ALLOW_UNPUBLISHED" /> (0) hoặc không đặt, các tiện ích chưa phát hành trên Chrome Web Store sẽ được cho phép. +Nếu bạn đặt chính sách này thành <ph name="DISABLE_UNPUBLISHED" /> (1) thì các tiện ích chưa phát hành trên Chrome Web Store sẽ bị vô hiệu hoá.</translation> <translation id="4164866067069311355">Kiểm soát phím tắt dùng để kích hoạt chế độ cài đặt F11/F12</translation> <translation id="4165986682804962316">Cài đặt trang web</translation> <translation id="4166174702671320480">Nếu bạn đặt chính sách này thành Bật, các chính sách không có chung nguồn với các chính sách có độ ưu tiên cao nhất trong một nhóm không thể phân chia sẽ bị bỏ qua. @@ -4580,7 +4580,7 @@ <translation id="4714143485020697862">Nếu bạn đặt chính sách này, thì hệ thống sẽ loại trừ tất cả các loại dữ liệu đã chỉ định khỏi quá trình đồng bộ hoá của <ph name="CHROME_SYNC_NAME" /> cũng như quá trình đồng bộ hoá cấu hình chuyển vùng. Cách 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 được tải lên Máy chủ <ph name="CHROME_SYNC_NAME" />. 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", "savedTabGroups". Tên của các loại dữ liệu đó phân biệt chữ hoa chữ thường!</translation> -<translation id="4715773950737036924">Kiểm soát việc cung cấp tiện ích chưa phát hành trên Cửa hàng Chrome trực tuyến.</translation> +<translation id="4715773950737036924">Kiểm soát việc cung cấp tiện ích chưa phát hành trên Chrome Web Store.</translation> <translation id="4722122254122249791">Bật chính sách Cô lập trang web cho các nguồn gốc đã xác định</translation> <translation id="4722761845551711583">Thiết lập khoảng thời gian hiển thị một hình ảnh (tính bằng giây) khi trình bảo vệ màn hình cho màn hình đăng nhập có nhiều hình ảnh cần hiển thị. @@ -4597,11 +4597,11 @@ <translation id="473613500147803115">Chặn quyền sử dụng MIDI trên các trang web này</translation> <translation id="473673197014866318">Nếu bạn đặt chính sách này, hệ thống sẽ kiểm soát các chế độ cài đặt quản lý tiện ích cho <ph name="PRODUCT_NAME" />, bao gồm cả những chế độ cài đặt chịu sự kiểm soát của các chính sách hiện có liên quan đến tiện ích. Chính sách này sẽ thay thế mọi chính sách cũ mà bạn có thể đã đặt. -Chính sách này chỉ liên kết một mã tiện ích hoặc một URL cập nhật với chế độ cài đặt cụ thể tương ứng. Bạn có thể đặt cấu hình mặc định cho mã đặc biệt <ph name="DEFAULT_SCOPE" />. Cấu hình này sẽ áp dụng cho tất cả tiện ích chưa đặt cấu hình tuỳ chỉnh trong chính sách này. Với URL cập nhật, cấu hình sẽ áp dụng cho những tiện ích có URL cập nhật chính xác được nêu trong tệp kê khai của tiện ích đó (http://support.google.com/chrome/a?p=Configure_ExtensionSettings_policy). Nếu bạn đặt cờ "override_update_url" thành true, thì tiện ích đó sẽ được cài đặt và cập nhật bằng URL "cập nhật" được chỉ định trong chính sách <ph name="EXTENSION_INSTALL_FORCELIST_POLICY_NAME" /> hoặc trong trường "update_url" của chính sách này. Cờ "override_update_url" sẽ bị bỏ qua nếu "update_url" là một URL của Cửa hàng Chrome trực tuyến. +Chính sách này chỉ liên kết một mã tiện ích hoặc một URL cập nhật với chế độ cài đặt cụ thể tương ứng. Bạn có thể đặt cấu hình mặc định cho mã đặc biệt <ph name="DEFAULT_SCOPE" />. Cấu hình này sẽ áp dụng cho tất cả tiện ích chưa đặt cấu hình tuỳ chỉnh trong chính sách này. Với URL cập nhật, cấu hình sẽ áp dụng cho những tiện ích có URL cập nhật chính xác được nêu trong tệp kê khai của tiện ích đó (http://support.google.com/chrome/a?p=Configure_ExtensionSettings_policy). Nếu bạn đặt cờ "override_update_url" thành true, thì tiện ích đó sẽ được cài đặt và cập nhật bằng URL "cập nhật" được chỉ định trong chính sách <ph name="EXTENSION_INSTALL_FORCELIST_POLICY_NAME" /> hoặc trong trường "update_url" của chính sách này. Cờ "override_update_url" sẽ bị bỏ qua nếu "update_url" là một URL của Chrome Web Store. -Trên các phiên bản <ph name="MS_WIN_NAME" />, bạn chỉ có thể buộc cài đặt các ứng dụng và tiện ích từ bên ngoài Cửa hàng Chrome trực tuyến nếu phiên bản đó đã liên kết với một miền <ph name="MS_AD_NAME" />, <ph name="MS_AAD_NAME" /> hoặc đã đăng ký <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. +Trên các phiên bản <ph name="MS_WIN_NAME" />, bạn chỉ có thể buộc cài đặt các ứng dụng và tiện ích từ bên ngoài Chrome Web Store nếu phiên bản đó đã liên kết với một miền <ph name="MS_AD_NAME" />, <ph name="MS_AAD_NAME" /> hoặc đã đăng ký <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. -Trên các phiên bản <ph name="MAC_OS_NAME" />, bạn chỉ có thể buộc cài đặt các ứng dụng và tiện ích từ bên ngoài Cửa hàng Chrome trực tuyến nếu phiên bản đó được quản lý qua MDM (Quản lý thiết bị di động), đã liên kết với một miền qua MCX hoặc đã đăng ký <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />.</translation> +Trên các phiên bản <ph name="MAC_OS_NAME" />, bạn chỉ có thể buộc cài đặt các ứng dụng và tiện ích từ bên ngoài Chrome Web Store nếu phiên bản đó được quản lý qua MDM (Quản lý thiết bị di động), đã liên kết với một miền qua MCX hoặc đã đăng ký <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />.</translation> <translation id="4742973303930120836">Hạn chế chế độ in đồ họa nền</translation> <translation id="4744467872051608680">Kể từ M119, nếu bạn không đặt hoặc đặt chính sách này thành false thì WebSQL sẽ tắt, nhưng bạn có thể bật thông qua cờ Chrome "web-sql-access". Nếu bạn đặt chính sách này thành true, thì quyền truy cập vào WebSQL sẽ bật.</translation> <translation id="4745232963710538589">Bật tiện ích thông tin chi tiết để báo cáo các chỉ số về việc sử dụng</translation> @@ -6363,9 +6363,9 @@ Nếu một ứng dụng hoặc tiện ích bị buộc cài đặt trước đây và hiện đã bị xóa khỏi danh sách này, thì <ph name="PRODUCT_NAME" /> sẽ tự động gỡ cài đặt ứng dụng/tiện ích đó. - Mỗi mục danh sách của chính sách là một chuỗi chứa một mã tiện ích và một URL "cập nhật" (không bắt buộc) phân tách bằng dấu chấm phẩy (<ph name="SEMICOLON" />). Mã tiện ích là một chuỗi gồm 32 chữ cái, chẳng hạn như trên <ph name="CHROME_EXTENSIONS_LINK" /> khi ở chế độ nhà phát triển. URL "cập nhật", nếu được chỉ định, phải trỏ tới tài liệu XML của tệp kê khai cập nhật như mô tả tại <ph name="LINK_TO_EXTENSION_DOC1" />. Theo mặc định, URL cập nhật của Cửa hàng Chrome trực tuyến sẽ được sử dụng (hiện là "https://clients2.google.com/service/update2/crx"). Xin lưu ý rằng URL "cập nhật" được đặt trong chính sách này chỉ dùng cho lần cài đặt ban đầu; các lần cập nhật tiện ích tiếp theo sẽ sử dụng URL cập nhật nêu trong tệp kê khai của tiện ích. + Mỗi mục danh sách của chính sách là một chuỗi chứa một mã tiện ích và một URL "cập nhật" (không bắt buộc) phân tách bằng dấu chấm phẩy (<ph name="SEMICOLON" />). Mã tiện ích là một chuỗi gồm 32 chữ cái, chẳng hạn như trên <ph name="CHROME_EXTENSIONS_LINK" /> khi ở chế độ nhà phát triển. URL "cập nhật", nếu được chỉ định, phải trỏ tới tài liệu XML của tệp kê khai cập nhật như mô tả tại <ph name="LINK_TO_EXTENSION_DOC1" />. Theo mặc định, URL cập nhật của Chrome Web Store sẽ được sử dụng (hiện là "https://clients2.google.com/service/update2/crx"). Xin lưu ý rằng URL "cập nhật" được đặt trong chính sách này chỉ dùng cho lần cài đặt ban đầu; các lần cập nhật tiện ích tiếp theo sẽ sử dụng URL cập nhật nêu trong tệp kê khai của tiện ích. - Ví dụ: <ph name="LOGIN_SCREEN_EXTENSION_POLICY_EXAMPLE" /> cài đặt ứng dụng <ph name="SMART_CARD_CONNECTOR_APP_NAME" /> từ URL "cập nhật" tiêu chuẩn của Cửa hàng Chrome trực tuyến. Để biết thêm thông tin về cách lưu trữ tiện ích, hãy xem: <ph name="LINK_TO_EXTENSION_DOC2" />.</translation> + Ví dụ: <ph name="LOGIN_SCREEN_EXTENSION_POLICY_EXAMPLE" /> cài đặt ứng dụng <ph name="SMART_CARD_CONNECTOR_APP_NAME" /> từ URL "cập nhật" tiêu chuẩn của Chrome Web Store. Để biết thêm thông tin về cách lưu trữ tiện ích, hãy xem: <ph name="LINK_TO_EXTENSION_DOC2" />.</translation> <translation id="6273107124506133797">Chính sách này không còn được dùng nữa và không được hỗ trợ, vui lòng dùng <ph name="USB_DETACHABLE_ALLOWLIST_POLICY_NAME" />.</translation> <translation id="6274202259872570803">Screencast</translation> <translation id="6275497712828649588">Ẩn cảnh báo bảo mật khi cờ hiệu dòng lệnh có thể nguy hiểm được sử dụng</translation> @@ -7801,9 +7801,9 @@ <translation id="7325801934761922681">Không cho phép Chrome chặn các thao tác di chuyển đến những giao thức bên ngoài nằm bên trong iframe hộp cát</translation> <translation id="7326394567531622570">Tương tự như Wipe (giá trị 2) nhưng cố gắng giữ lại mã đăng nhập để người dùng không phải đăng nhập lại.</translation> <translation id="7331387825106440104">Không thực thi các quy tắc ràng buộc trong các neo tin cậy được thêm cục bộ</translation> -<translation id="7331962793961469250">Khi được đặt thành True, kết quả thăng hạng của các ứng dụng trong Cửa hàng Chrome trực tuyến sẽ không xuất hiện trên trang thẻ mới. +<translation id="7331962793961469250">Khi được đặt thành True, kết quả thăng hạng của các ứng dụng trong Chrome Web Store sẽ không xuất hiện trên trang thẻ mới. - Nếu đặt tùy chọn này thành False hoặc không đặt, các kết quả thăng hạng của các ứng dụng trong Cửa hàng Chrome trực tuyến sẽ xuất hiện trên trang thẻ mới.</translation> + Nếu đặt tùy chọn này thành False hoặc không đặt, các kết quả thăng hạng của các ứng dụng trong Chrome Web Store sẽ xuất hiện trên trang thẻ mới.</translation> <translation id="7332963785317884918">Chính sách này không còn được sử dụng. <ph name="PRODUCT_OS_NAME" /> sẽ luôn sử dụng chiến lược dọn sạch 'RemoveLRU'. Kiểm soát hoạt động dọn sạch tự động trên các thiết bị <ph name="PRODUCT_OS_NAME" />. Tính năng dọn sạch tự động được kích hoạt khi dung lượng đĩa trống đạt tới mức tới hạn để khôi phục một số dung lượng đĩa. @@ -8529,11 +8529,11 @@ Người dùng có thể thay đổi mã nguồn của mọi tiện ích thông qua các công cụ cho nhà phát triển (điều này có thể khiến tiện ích hoạt động không chính xác). Nếu bạn lo ngại về điều này, hãy đặt chính sách <ph name="DEVELOPER_TOOLS_DISABLED_POLICY_NAME" />. -Mỗi mục trong danh sách của chính sách này là một chuỗi chứa một mã tiện ích và một URL cập nhật (không bắt buộc) được phân tách bằng dấu chấm phẩy (;). Mã tiện ích là một chuỗi gồm 32 chữ cái, chẳng hạn như mã tiện ích trên chrome://extensions khi ở Chế độ nhà phát triển. Nếu được chỉ định, URL cập nhật phải trỏ đến tài liệu XML (Ngôn ngữ đánh dấu mở rộng) của Tệp kê khai cập nhật (https://developer.chrome.com/extensions/autoupdate). URL cập nhật phải sử dụng một trong các giao thức sau: <ph name="HTTP_SCHEME" />, <ph name="HTTPS_SCHEME" /> hoặc <ph name="FILE_SCHEME" />. Theo mặc định, URL cập nhật của Cửa hàng Chrome trực tuyến sẽ được sử dụng. URL cập nhật được đặt trong chính sách này chỉ dùng cho lần cài đặt ban đầu. Các lần cập nhật tiện ích tiếp theo sẽ sử dụng URL cập nhật nêu trong tệp kê khai của tiện ích. Bạn có thể ghi đè url cập nhật cho những lần cập nhật tiếp theo bằng cách sử dụng chính sách <ph name="EXTENSION_SETTINGS_POLICY_NAME" />, hãy xem http://support.google.com/chrome/a?p=Configure_ExtensionSettings_policy. +Mỗi mục trong danh sách của chính sách này là một chuỗi chứa một mã tiện ích và một URL cập nhật (không bắt buộc) được phân tách bằng dấu chấm phẩy (;). Mã tiện ích là một chuỗi gồm 32 chữ cái, chẳng hạn như mã tiện ích trên chrome://extensions khi ở Chế độ nhà phát triển. Nếu được chỉ định, URL cập nhật phải trỏ đến tài liệu XML (Ngôn ngữ đánh dấu mở rộng) của Tệp kê khai cập nhật (https://developer.chrome.com/extensions/autoupdate). URL cập nhật phải sử dụng một trong các giao thức sau: <ph name="HTTP_SCHEME" />, <ph name="HTTPS_SCHEME" /> hoặc <ph name="FILE_SCHEME" />. Theo mặc định, URL cập nhật của Chrome Web Store sẽ được sử dụng. URL cập nhật được đặt trong chính sách này chỉ dùng cho lần cài đặt ban đầu. Các lần cập nhật tiện ích tiếp theo sẽ sử dụng URL cập nhật nêu trong tệp kê khai của tiện ích. Bạn có thể ghi đè url cập nhật cho những lần cập nhật tiếp theo bằng cách sử dụng chính sách <ph name="EXTENSION_SETTINGS_POLICY_NAME" />, hãy xem http://support.google.com/chrome/a?p=Configure_ExtensionSettings_policy. -Trên các phiên bản <ph name="MS_WIN_NAME" />, bạn chỉ có thể buộc cài đặt các ứng dụng và tiện ích từ bên ngoài Cửa hàng Chrome trực tuyến nếu phiên bản đó đã liên kết với một miền <ph name="MS_AD_NAME" />, <ph name="MS_AAD_NAME" /> hoặc đã đăng ký <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. +Trên các phiên bản <ph name="MS_WIN_NAME" />, bạn chỉ có thể buộc cài đặt các ứng dụng và tiện ích từ bên ngoài Chrome Web Store nếu phiên bản đó đã liên kết với một miền <ph name="MS_AD_NAME" />, <ph name="MS_AAD_NAME" /> hoặc đã đăng ký <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. -Trên các phiên bản <ph name="MAC_OS_NAME" />, bạn chỉ có thể buộc cài đặt các ứng dụng và tiện ích từ bên ngoài Cửa hàng Chrome trực tuyến nếu phiên bản đó được quản lý qua MDM, đã liên kết với một miền qua MCX hoặc đã đăng ký <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. +Trên các phiên bản <ph name="MAC_OS_NAME" />, bạn chỉ có thể buộc cài đặt các ứng dụng và tiện ích từ bên ngoài Chrome Web Store nếu phiên bản đó được quản lý qua MDM, đã liên kết với một miền qua MCX hoặc đã đăng ký <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. Lưu ý: Chính sách này không áp dụng cho Chế độ ẩn danh. Tìm hiểu về việc lưu trữ các tiện ích (https://developer.chrome.com/extensions/hosting).</translation> <translation id="798452960161141151">Nếu bạn đặt chính sách này thành <ph name="BLOCK_MIDI_POLICY_NAME" /> (giá trị 2), thì hệ thống sẽ tự động ngăn các trang web sử dụng thiết bị MIDI (chẳng hạn như bộ điều khiển nhạc và nhạc cụ). @@ -9997,7 +9997,7 @@ Nếu bạn đặt chính sách này thành false hoặc không đặt chính sách này, thì AppCache sẽ tuân theo các tùy chọn mặc định của Chrome.</translation> <translation id="930930237275114205">Thiết lập thư mục dữ liệu người dùng <ph name="PRODUCT_FRAME_NAME" /></translation> <translation id="935779984563655842">Báo cáo thông tin về Bluetooth</translation> -<translation id="936188865879911137">Nếu bạn đặt chính sách này thành Bật, thì <ph name="PRODUCT_NAME" /> sẽ cho phép cài đặt và cập nhật các tiện ích lưu trữ bên ngoài Cửa hàng Chrome trực tuyến. Bạn chỉ có thể bảo vệ nội dung của những tiện ích này ở mức tối thiểu. +<translation id="936188865879911137">Nếu bạn đặt chính sách này thành Bật, thì <ph name="PRODUCT_NAME" /> sẽ cho phép cài đặt và cập nhật các tiện ích lưu trữ bên ngoài Chrome Web Store. Bạn chỉ có thể bảo vệ nội dung của những tiện ích này ở mức tối thiểu. Nếu bạn đặt chính sách này thành Tắt, thì <ph name="PRODUCT_NAME" /> sẽ không cho phép cài đặt (và cập nhật) các tiện ích đó. Chính sách này không ảnh hưởng đến <ph name="PRODUCT_NAME" /> 78 trở lên.
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb index 8d16a01..52eb96c 100644 --- a/components/policy/resources/policy_templates_zh-CN.xtb +++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -5220,6 +5220,7 @@ 如果此政策已停用,系统会强制停用该功能。 </translation> +<translation id="5433865420958136693">使用图形加速功能(如果可用)</translation> <translation id="5435888298115339571">在多功能框和三点状菜单中启用桌面分享功能</translation> <translation id="5441508088704391614">无特殊限制。默认。</translation> <translation id="5442026853063570579">此政策亦用于控制对 Android 开发者选项的访问权限。如果此政策设为“DeveloperToolsDisallowed”(值为 2),用户将无法访问开发者选项。如果此政策设为其他值或未设置,用户只需在 Android 的“设置”应用中连续点按 7 次 Build 号即可访问开发者选项。</translation> @@ -5291,6 +5292,9 @@ <translation id="5480380613778757009">如果此政策已停用或未设置,系统将会在受管理访客会话完成后立即重置该会话中已设置的所有显示设置。如果此政策设为 True,系统将会在退出受管理访客会话后保留该会话的显示属性。</translation> <translation id="5483012943408894695">针对不安全来源的安全性限制不适用于哪些来源或主机名模式</translation> <translation id="5483065054530244863">允许使用由本地信任锚颁发的 SHA-1 签名证书</translation> +<translation id="5486917900445838803">如果此政策已启用或未设置,系统会开启图形加速功能(如果可用)。 + + 如果此政策已停用,系统会关闭图形加速功能。</translation> <translation id="5487758664517243511">如果启用此设置,已选择启用 Phone Hub 功能的用户将能够在 Chrome 操作系统中继续执行尚未在手机中完成的任务(例如查看手机中的网页)。 如果停用此设置,用户将无法使用该功能。如果停用 PhoneHubAllowed 政策,用户也将无法使用该功能。 @@ -6399,6 +6403,7 @@ 如果此政策已停用或未设置,当生成 Kerberos SPN 时,服务器的规范名称将由 CNAME 查找来决定。</translation> <translation id="6424485010103067949"><ph name="OMA_URI" />:</translation> <translation id="6424486395812679373">对所有下载的文件执行安全浏览检查</translation> +<translation id="6426899507714989471">停用图形加速功能</translation> <translation id="6433697627431665375">阻止 <ph name="PRODUCT_NAME" /> 数据包含在备份中</translation> <translation id="6436052172226685535">LBS 的默认行为。</translation> <translation id="6438472072089952201"><ph name="PRODUCT_NAME" /> 会尽可能尝试将某些导航从 HTTP 升级到 HTTPS。此政策可用于停止该行为。如果此政策设为“true”或未设置,系统会默认启用该功能。 @@ -9692,6 +9697,7 @@ 如果已停用此政策,系统将不会向用户显示产品内调查问卷。 如果已停用 <ph name="METRICS_REPORTING_ENABLED_POLICY_NAME" />(这也会停用产品内调查问卷),此政策不会产生任何效力。</translation> +<translation id="9173633148008709976">启用图形加速功能</translation> <translation id="9180108183162961002">允许通过浏览器访客模式登录</translation> <translation id="9185963199234034321">为登录屏幕启用高对比度模式,并允许用户暂时停用它</translation> <translation id="9187743794267626640">禁止装载外部存储设备</translation>
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb index ef047be..8442043ee 100644 --- a/components/policy/resources/policy_templates_zh-TW.xtb +++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -2893,6 +2893,15 @@ <translation id="3423703250826790403">Android 應用程式</translation> <translation id="3426434797050451264">這項政策也可用於將 Android 應用程式設為預設檔案處理常式。</translation> <translation id="3428247105888806363">啟用網路預測功能</translation> +<translation id="3430198032663063246">「幫我寫」是採用 AI 技術的撰寫助理,適用於簡短格式的網頁內容。系統會根據使用者輸入的提示和網頁內容提供建議。 + +0 = 為使用者啟用這項功能,並將相關資料傳送給 Google,協助訓練或改善 AI 模型。相關資料可能包括提示、輸入內容、輸出內容和來源材料 (視功能而定)。為改善 AI 模型,我們可能會將這些資料送交人工審查。 + +預設值為 0,但以下註明的情形除外。 + +1 = 為使用者啟用這項功能,但不傳送資料給 Google 做為訓練或改善 AI 模型之用。如果是 <ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" />管理的企業版使用者,則預設值為 1。 + +2 = 停用這項功能。如果是 <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> 管理的教育版帳戶,則預設值為 2。如要進一步瞭解生成式 AI 功能的資料處理方式,請前往 https://support.google.com/chrome/a?p=generative_ai_settings。</translation> <translation id="3432863169147125747">控管列印設定。</translation> <translation id="3434053014926283175">在登入畫面上將滑鼠的主要按鈕切換為右鍵。 @@ -5157,6 +5166,7 @@ 如果將這項政策設為停用,系統會強制停用這項功能。 </translation> +<translation id="5433865420958136693">使用圖形加速功能 (如果可用)</translation> <translation id="5435888298115339571">啟用網址列和三點選單中的桌面分享功能</translation> <translation id="5441508088704391614">無特殊限制。這是預設設定。</translation> <translation id="5442026853063570579">這項政策也可以控制 Android 開發人員選項的存取權。如果將這項政策設為「DeveloperToolsDisallowed」(值 2),使用者將無法存取開發人員選項。如果將這項政策設為其他值或不予設定,使用者只要在 Android 設定應用程式中輕觸版本號碼七次,即可存取開發人員選項。</translation> @@ -5228,6 +5238,9 @@ <translation id="5480380613778757009">如果停用或不設定這項政策,當受管理訪客工作階段結束後,系統就會立即重設在此期間配置的所有顯示設定。如果將這項政策設為 True,系統就會在受管理的訪客工作階段結束後保留顯示屬性。</translation> <translation id="5483012943408894695">不適用不安全來源相關限制的來源或主機名稱模式</translation> <translation id="5483065054530244863">允許本機信任錨點核發的 SHA-1 簽署憑證</translation> +<translation id="5486917900445838803">如果將這項政策設為啟用或不設定,系統會開啟圖形加速功能 (如果有的話)。 + + 如果將這項政策設為停用,圖形加速功能就會關閉。</translation> <translation id="5487758664517243511">如果啟用這項設定,已開啟 Phone Hub 功能的使用者將可在 Chrome OS 上繼續執行工作,例如瀏覽手機的網頁。 如果停用這項設定,使用者就無法使用這項功能。如果停用 PhoneHubAllowed 政策,使用者也會無法使用這項功能。 @@ -6319,6 +6332,7 @@ 如果將這項政策設為停用或不設定,系統產生 Kerberos SPN 時,CNAME 查詢會決定伺服器的標準名稱。</translation> <translation id="6424485010103067949"><ph name="OMA_URI" />:</translation> <translation id="6424486395812679373">對所有下載檔案執行安全瀏覽檢查</translation> +<translation id="6426899507714989471">停用圖形加速功能</translation> <translation id="6433697627431665375">不允許將 <ph name="PRODUCT_NAME" /> 資料納入備份內容</translation> <translation id="6436052172226685535">LBS 的預設行為。</translation> <translation id="6438472072089952201"><ph name="PRODUCT_NAME" /> 會盡可能將部分導覽作業從 HTTP 升級為 HTTPS。這項政策可用於停用這個行為。如果設為「true」或不設定,系統預設會啟用這項功能。獨立的 <ph name="HTTP_ALLOWLIST_POLICY_NAME" /> 政策可用於排除特定主機名稱或主機名稱模式,避免這項功能將其升級為 HTTPS。另請參閱 <ph name="HTTPS_ONLY_MODE_POLICY_NAME" /> 政策。</translation> @@ -8453,6 +8467,15 @@ <translation id="822055204938220476">允許保持全螢幕模式且不顯示通知的網址清單</translation> <translation id="8225579382697740712">控管 WebHID 使用權限</translation> <translation id="8229912067600517877">啟用開發人員工具</translation> +<translation id="8234565689501421293">使用者可透過「使用 AI 建立主題」功能,從選項清單中預先選取偏好設定,然後建立自訂主題/桌布。 + +0 = 為使用者啟用這項功能,並將相關資料傳送給 Google,協助訓練或改善 AI 模型。相關資料可能包括提示、輸入內容、輸出內容和來源材料 (視功能而定)。為改善 AI 模型,我們可能會將這些資料送交人工審查。 + +預設值為 0,但以下註明的情形除外。 + +1 = 為使用者啟用這項功能,但不傳送資料給 Google 做為訓練或改善 AI 模型之用。如果是 <ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" />管理的企業版使用者,則預設值為 1。 + +2 = 停用這項功能。如果是 <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> 管理的教育版帳戶,則預設值為 2。如要進一步瞭解生成式 AI 功能的資料處理方式,請前往 https://support.google.com/chrome/a?p=generative_ai_settings。</translation> <translation id="8238421250255592181">布林值標記,表示螢幕小鍵盤是否能提供自動完成功能。</translation> <translation id="8239109177194627162">停用信用卡的自動填入功能</translation> <translation id="8239143983379015783">強制啟用永久配額</translation> @@ -9570,6 +9593,7 @@ 如果停用這項政策,就不會向使用者顯示產品內問卷調查。 如果將 <ph name="METRICS_REPORTING_ENABLED_POLICY_NAME" /> 設為停用,這項政策就不會有任何作用,也會停用產品內問卷調查。</translation> +<translation id="9173633148008709976">啟用圖形加速功能</translation> <translation id="9180108183162961002">允許透過瀏覽器訪客模式登入</translation> <translation id="9185963199234034321">在登入畫面上啟用高對比模式,並允許使用者暫時停用</translation> <translation id="9187743794267626640">停用外部儲存裝置掛載功能</translation> @@ -9614,6 +9638,15 @@ <translation id="943865157632139008">這項政策可讓你在安裝 <ph name="PRODUCT_FRAME_NAME" />後,設定預設的 HTML 算繪器。 系統在預設設定下,會允許主機瀏覽器進行算繪,但是你可以覆寫預設設定,改由 <ph name="PRODUCT_FRAME_NAME" />算繪 HTML 網頁。</translation> <translation id="944817693306670849">設定磁碟快取大小</translation> +<translation id="946458935955389273">分頁整理工具採用 AI 技術,可依據使用者開啟的分頁自動建立分頁群組。系統會根據開啟的分頁 (而非網頁內容) 提供建議。 + +0 = 為使用者啟用這項功能,並將相關資料傳送給 Google,協助訓練或改善 AI 模型。相關資料可能包括提示、輸入內容、輸出內容和來源材料 (視功能而定)。為改善 AI 模型,我們可能會將這些資料送交人工審查。 + +預設值為 0,但以下註明的情形除外。 + +1 = 為使用者啟用這項功能,但不傳送資料給 Google 做為訓練或改善 AI 模型之用。如果是 <ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" />管理的企業版使用者,則預設值為 1。 + +2 = 停用這項功能。如果是 <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> 管理的教育版帳戶,則預設值為 2。如要進一步瞭解生成式 AI 功能的資料處理方式,請前往 https://support.google.com/chrome/a?p=generative_ai_settings。</translation> <translation id="957322141096206402">系統 DNS 解析可能會在網路程序內部或外部執行,實際情況取決於系統設定和功能旗標。</translation> <translation id="957778406002650056">可下載 <ph name="PLUGIN_VM_NAME" /> 圖片的網址。</translation> <translation id="957920984193041197">允許網頁在卸載時顯示彈出式視窗</translation>
diff --git a/components/policy/resources/templates/common_schemas.yaml b/components/policy/resources/templates/common_schemas.yaml index 8d97228a..7d0b9f1 100644 --- a/components/policy/resources/templates/common_schemas.yaml +++ b/components/policy/resources/templates/common_schemas.yaml
@@ -40,6 +40,45 @@ description: Secret shared between child and parent devices. type: string type: object +DataControlsCondition: + properties: + and: + items: + $ref: DataControlsCondition + type: array + destinations: + properties: + incognito: + type: boolean + os_clipboard: + type: boolean + other_profile: + type: boolean + urls: + items: + type: string + type: array + type: object + not: + $ref: DataControlsCondition + or: + items: + $ref: DataControlsCondition + type: array + sources: + properties: + incognito: + type: boolean + os_clipboard: + type: boolean + other_profile: + type: boolean + urls: + items: + type: string + type: array + type: object + type: object DayPercentagePair: description: Contains the number of days and the percentage of the fleet that should be updated after those days have passed.
diff --git a/components/policy/resources/templates/policies.yaml b/components/policy/resources/templates/policies.yaml index 8e886f1d..67077d0 100644 --- a/components/policy/resources/templates/policies.yaml +++ b/components/policy/resources/templates/policies.yaml
@@ -1195,6 +1195,9 @@ 1194: DeviceLoginScreenTouchVirtualKeyboardEnabled 1195: DeviceExtendedAutoUpdateEnabled 1196: CAPlatformIntegrationEnabled + 1197: FloatingSsoEnabled + 1198: FloatingSsoDomainBlocklist + 1199: FloatingSsoDomainBlocklistExceptions atomic_groups: 1: Homepage 2: RemoteAccess @@ -1245,3 +1248,4 @@ 47: ThirdPartyStoragePartitioningSettings 48: MidiSettings 49: ProfileSeparation + 50: FloatingSso
diff --git a/components/policy/resources/templates/policy_definitions/FloatingSso/.group.details.yaml b/components/policy/resources/templates/policy_definitions/FloatingSso/.group.details.yaml new file mode 100644 index 0000000..45c83c18 --- /dev/null +++ b/components/policy/resources/templates/policy_definitions/FloatingSso/.group.details.yaml
@@ -0,0 +1,2 @@ +caption: Floating SSO Settings +desc: Controls if Floating SSO is enabled and the cookie domain blocklist and its exceptions.
diff --git a/components/policy/resources/templates/policy_definitions/FloatingSso/FloatingSsoDomainBlocklist.yaml b/components/policy/resources/templates/policy_definitions/FloatingSso/FloatingSsoDomainBlocklist.yaml new file mode 100644 index 0000000..fa7b3637 --- /dev/null +++ b/components/policy/resources/templates/policy_definitions/FloatingSso/FloatingSsoDomainBlocklist.yaml
@@ -0,0 +1,26 @@ +caption: Floating SSO Service blocked domain list +desc: |- + Configures a list of blocked cookie domains that will not be moved when a user switches between <ph name="PRODUCT_OS_NAME">$2<ex>Google ChromeOS</ex></ph> devices, when the Floating SSO Service is enabled. + + If a cookie is set for a domain which matches one of the provided filters, the cookie is excluded from the move. Cookie domains are matched according to "host" field rules outlined in https://support.google.com/chrome/a?p=url_blocklist_filter_format, all other fields are ignored. Wildcards, <ph name="WILDCARD_VALUE">*</ph>, are allowed. + + The <ph name="FLOATING_SSO_DOMAIN_BLOCKLIST_EXCEPTIONS_POLICY_NAME">FloatingSsoDomainBlocklistExceptions</ph> policy takes precedence. +example_value: +- '*' +- 'example.com' +- '*.example.com' +features: + dynamic_refresh: true + per_profile: true +future_on: +- chrome_os +owners: +- andreydav@google.com +- mpetrisor@chromium.org +- imprivata-eng@google.com +schema: + items: + type: string + type: array +tags: [] +type: list
diff --git a/components/policy/resources/templates/policy_definitions/FloatingSso/FloatingSsoDomainBlocklistExceptions.yaml b/components/policy/resources/templates/policy_definitions/FloatingSso/FloatingSsoDomainBlocklistExceptions.yaml new file mode 100644 index 0000000..d2225ef --- /dev/null +++ b/components/policy/resources/templates/policy_definitions/FloatingSso/FloatingSsoDomainBlocklistExceptions.yaml
@@ -0,0 +1,25 @@ +caption: Floating SSO Service domain blocklist exception list +desc: |- + Configures the list of blocklist excepted cookie domains to be moved when a user switches between <ph name="PRODUCT_OS_NAME">$2<ex>Google ChromeOS</ex></ph> devices, when the Floating SSO Service is enabled. + + If a cookie is set for a domain which matches one of the provided filters, the cookie is included into the move. Cookie domains are matched according to "host" field rules outlined in https://support.google.com/chrome/a?p=url_blocklist_filter_format, all other fields are ignored. Wildcards, <ph name="WILDCARD_VALUE">*</ph>, are allowed. + + Leaving the policy empty allows no exceptions to <ph name="FLOATING_SSO_DOMAIN_BLOCKLIST_POLICY_NAME">FloatingSsoDomainBlocklist</ph>. To only allow a limited number of domains to be moved, block all domains by setting the <ph name="FLOATING_SSO_DOMAIN_BLOCKLIST_POLICY_NAME">FloatingSsoDomainBlocklist</ph> policy to <ph name="WILDCARD_VALUE">*</ph>, and configure the blocklist exceptions here. +example_value: +- 'example.com' +- '*.example.com' +features: + dynamic_refresh: true + per_profile: true +future_on: +- chrome_os +owners: +- andreydav@google.com +- mpetrisor@chromium.org +- imprivata-eng@google.com +schema: + items: + type: string + type: array +tags: [] +type: list
diff --git a/components/policy/resources/templates/policy_definitions/FloatingSso/FloatingSsoEnabled.yaml b/components/policy/resources/templates/policy_definitions/FloatingSso/FloatingSsoEnabled.yaml new file mode 100644 index 0000000..d9c0eeb --- /dev/null +++ b/components/policy/resources/templates/policy_definitions/FloatingSso/FloatingSsoEnabled.yaml
@@ -0,0 +1,29 @@ +caption: Enable Floating SSO Service +default: false +desc: |- + When a user switches between <ph name="PRODUCT_OS_NAME">$2<ex>Google ChromeOS</ex></ph> devices, the Floating SSO Service will restore the user's web service authentication state from the previous device onto the new device. This is achieved by moving user's cookies across devices. + + Setting the policy to Enabled will restore the user's web service authentication state from the user's last used <ph name="PRODUCT_OS_NAME">$2<ex>Google ChromeOS</ex></ph> device automatically upon login. + Setting the policy to Disabled or leaving it unset will not restore the user's web service authentication state upon login on a different device. + + The web service domains blocked from being restored can be configured using the <ph name="FLOATING_SSO_DOMAIN_BLOCKLIST_POLICY_NAME">FloatingSsoDomainBlocklist</ph> policy, while exceptions to that policy can be configured using the <ph name="FLOATING_SSO_DOMAIN_BLOCKLIST_EXCEPTIONS_POLICY_NAME">FloatingSsoDomainBlocklistExceptions</ph> policy. + If both of these policies are unset, all web service authentications, except Google authentications, will be moved. +example_value: true +features: + dynamic_refresh: true + per_profile: true +future_on: +- chrome_os +items: +- caption: Enable Floating SSO and move the user's web service authentications to new device + value: true +- caption: Disable Floating SSO and do not move the user's web service authentications to new device + value: false +owners: +- andreydav@google.com +- mpetrisor@chromium.org +- imprivata-eng@google.com +schema: + type: boolean +tags: [] +type: main
diff --git a/components/policy/resources/templates/policy_definitions/FloatingSso/policy_atomic_groups.yaml b/components/policy/resources/templates/policy_definitions/FloatingSso/policy_atomic_groups.yaml new file mode 100644 index 0000000..a8639f5b --- /dev/null +++ b/components/policy/resources/templates/policy_definitions/FloatingSso/policy_atomic_groups.yaml
@@ -0,0 +1,6 @@ +FloatingSso: + caption: Floating SSO Service settings + policies: + - FloatingSsoEnabled + - FloatingSsoDomainBlocklist + - FloatingSsoDomainBlocklistExceptions
diff --git a/components/policy/resources/templates/policy_definitions/Miscellaneous/DataControlsRules.yaml b/components/policy/resources/templates/policy_definitions/Miscellaneous/DataControlsRules.yaml index 9c4ab03..a445793 100644 --- a/components/policy/resources/templates/policy_definitions/Miscellaneous/DataControlsRules.yaml +++ b/components/policy/resources/templates/policy_definitions/Miscellaneous/DataControlsRules.yaml
@@ -88,6 +88,118 @@ restrictions: - class: CLIPBOARD level: BLOCK +- description: Block pasting in non corp sites using a not condition + not: + destinations: + urls: + - corp.com + restrictions: + - class: CLIPBOARD + level: BLOCK +- description: Block pasting in several cases using an if condition + or: + - destinations: + incognito: true + - destinations: + os_clipboard: true + - destinations: + other_profile: true + restrictions: + - class: CLIPBOARD + level: BLOCK +- description: Block pasting to incognito with an exception of corp sites + and: + - destinations: + incognito: true + - not: + destinations: + urls: + - corp.com + restrictions: + - class: CLIPBOARD + level: BLOCK +- description: Block copying from non corp sites using a not condition + not: + sources: + urls: + - corp.com + restrictions: + - class: CLIPBOARD + level: BLOCK +- description: Block copying in several cases using an if condition + or: + - sources: + incognito: true + - sources: + os_clipboard: true + - sources: + other_profile: true + restrictions: + - class: CLIPBOARD + level: BLOCK +- description: Block copying from incognito with an exception of corp sites + and: + - sources: + incognito: true + - not: + sources: + urls: + - corp.com + restrictions: + - class: CLIPBOARD + level: BLOCK +- description: Block clipboard interactions with several nested conditions + and: + - and: + - destinations: + incognito: true + sources: + incognito: true + - not: + destinations: + incognito: true + sources: + incognito: true + - or: + - destinations: + incognito: true + sources: + incognito: true + or: + - and: + - destinations: + incognito: true + sources: + incognito: true + - not: + destinations: + incognito: true + sources: + incognito: true + - or: + - destinations: + incognito: true + sources: + incognito: true + not: + and: + - destinations: + incognito: true + sources: + incognito: true + not: + destinations: + incognito: true + sources: + incognito: true + or: + - destinations: + incognito: true + sources: + incognito: true + restrictions: + - class: CLIPBOARD + level: BLOCK features: cloud_only: true dynamic_refresh: true @@ -99,6 +211,10 @@ schema: items: properties: + and: + items: + $ref: DataControlsCondition + type: array description: type: string destinations: @@ -116,6 +232,12 @@ type: object name: type: string + not: + $ref: DataControlsCondition + or: + items: + $ref: DataControlsCondition + type: array restrictions: items: properties:
diff --git a/components/policy/test/data/pref_mapping/FloatingSsoDomainBlocklist.json b/components/policy/test/data/pref_mapping/FloatingSsoDomainBlocklist.json new file mode 100644 index 0000000..f4049c0b --- /dev/null +++ b/components/policy/test/data/pref_mapping/FloatingSsoDomainBlocklist.json
@@ -0,0 +1,5 @@ +[ + { + "reason_for_missing_test": "TODO(b/319802849): Feature not yet implemented" + } +]
diff --git a/components/policy/test/data/pref_mapping/FloatingSsoDomainBlocklistExceptions.json b/components/policy/test/data/pref_mapping/FloatingSsoDomainBlocklistExceptions.json new file mode 100644 index 0000000..f4049c0b --- /dev/null +++ b/components/policy/test/data/pref_mapping/FloatingSsoDomainBlocklistExceptions.json
@@ -0,0 +1,5 @@ +[ + { + "reason_for_missing_test": "TODO(b/319802849): Feature not yet implemented" + } +]
diff --git a/components/policy/test/data/pref_mapping/FloatingSsoEnabled.json b/components/policy/test/data/pref_mapping/FloatingSsoEnabled.json new file mode 100644 index 0000000..f4049c0b --- /dev/null +++ b/components/policy/test/data/pref_mapping/FloatingSsoEnabled.json
@@ -0,0 +1,5 @@ +[ + { + "reason_for_missing_test": "TODO(b/319802849): Feature not yet implemented" + } +]
diff --git a/components/policy_strings.grdp b/components/policy_strings.grdp index a91bd28..23d3f3c 100644 --- a/components/policy_strings.grdp +++ b/components/policy_strings.grdp
@@ -406,6 +406,12 @@ <message name="IDS_POLICY_SITE_SEARCH_SETTINGS_URL_NOT_HTTPS" desc="The text displayed in the status column of the SiteSearchSettings policy when a URL scheme is not HTTPS."> HTTPS scheme recommended for search URL: <ph name="SEARCH_URL">$1<ex>https://www.example.com</ex></ph> </message> + <message name="IDS_POLICY_DATA_CONTROLS_MUTUALLY_EXCLUSIVE_KEYS" desc="The text displayed in the status column of the DataControlsRules policy when one of its rules contains incoherent values"> + Keys "<ph name="DATA_CONTROLS_KEYS">$1<ex>"and", "or"</ex></ph>" cannot be set in the same dictionary + </message> + <message name="IDS_POLICY_DATA_CONTROLS_MUTUALLY_EXCLUSIVE_KEY_SETS" desc="The text displayed in the status column of the DataControlsRules policy when one of its rules contains incoherent values"> + Keys "<ph name="DATA_CONTROLS_FIRST_KEY_SET">$1<ex>"destinations", "sources"</ex></ph>" cannot be set in the same dictionary as the "<ph name="DATA_CONTROLS_SECOND_KEY_SET">$2<ex>"and", "or"</ex></ph>" keys + </message> <!-- chrome://policy --> <message name="IDS_POLICY_TITLE" desc="Page title and the title of the section that lists policies.">
diff --git a/components/policy_strings_grdp/IDS_POLICY_DATA_CONTROLS_MUTUALLY_EXCLUSIVE_KEYS.png.sha1 b/components/policy_strings_grdp/IDS_POLICY_DATA_CONTROLS_MUTUALLY_EXCLUSIVE_KEYS.png.sha1 new file mode 100644 index 0000000..57afb4e --- /dev/null +++ b/components/policy_strings_grdp/IDS_POLICY_DATA_CONTROLS_MUTUALLY_EXCLUSIVE_KEYS.png.sha1
@@ -0,0 +1 @@ +4ed84931a54615ac660717190e2ec977cb16ae39
diff --git a/components/policy_strings_grdp/IDS_POLICY_DATA_CONTROLS_MUTUALLY_EXCLUSIVE_KEY_SETS.png.sha1 b/components/policy_strings_grdp/IDS_POLICY_DATA_CONTROLS_MUTUALLY_EXCLUSIVE_KEY_SETS.png.sha1 new file mode 100644 index 0000000..2215fb81 --- /dev/null +++ b/components/policy_strings_grdp/IDS_POLICY_DATA_CONTROLS_MUTUALLY_EXCLUSIVE_KEY_SETS.png.sha1
@@ -0,0 +1 @@ +4ed84931a54615ac660717190e2ec977cb16ae39 \ No newline at end of file
diff --git a/components/search_engines/BUILD.gn b/components/search_engines/BUILD.gn index 9bf2aac..7f6ff754 100644 --- a/components/search_engines/BUILD.gn +++ b/components/search_engines/BUILD.gn
@@ -235,10 +235,7 @@ if (is_android) { sources += [ "android/template_url_service_android_unittest.cc" ] - deps += [ - "//components/search_engines/android:jni_headers", - "//components/search_engines/android:test_utils_jni_headers", - ] + # deps += [ "//components/search_engines/android:jni_headers" ] } }
diff --git a/components/search_engines/android/BUILD.gn b/components/search_engines/android/BUILD.gn index 98f7fa50..1850cad 100644 --- a/components/search_engines/android/BUILD.gn +++ b/components/search_engines/android/BUILD.gn
@@ -47,7 +47,6 @@ "//components/search_engines:search_engine_enums_java", ] sources = [ - "java/src/org/chromium/components/search_engines/SearchEngineChoiceService.java", "java/src/org/chromium/components/search_engines/TemplateUrl.java", "java/src/org/chromium/components/search_engines/TemplateUrlService.java", ] @@ -55,30 +54,19 @@ generate_jni("jni_headers") { sources = [ - "java/src/org/chromium/components/search_engines/SearchEngineChoiceService.java", "java/src/org/chromium/components/search_engines/TemplateUrl.java", "java/src/org/chromium/components/search_engines/TemplateUrlService.java", ] } -generate_jni("test_utils_jni_headers") { - testonly = true - sources = [ "java/src/org/chromium/components/search_engines/test/util/SearchEngineChoiceServiceTestUtil.java" ] -} - android_library("test_utils_java") { testonly = true sources = [ "java/src/org/chromium/components/search_engines/FakeTemplateUrl.java", "java/src/org/chromium/components/search_engines/TemplateUrlTestHelpers.java", - "java/src/org/chromium/components/search_engines/test/util/SearchEngineChoiceServiceTestUtil.java", ] deps = [ - ":delegate_java", ":java", - "//base:base_java", - "//base:base_java_test_support", - "//third_party/jni_zero:jni_zero_java", "//third_party/mockito:mockito_java", ] }
diff --git a/components/search_engines/android/java/src/org/chromium/components/search_engines/SearchEngineChoiceService.java b/components/search_engines/android/java/src/org/chromium/components/search_engines/SearchEngineChoiceService.java deleted file mode 100644 index 63c55027..0000000 --- a/components/search_engines/android/java/src/org/chromium/components/search_engines/SearchEngineChoiceService.java +++ /dev/null
@@ -1,98 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -package org.chromium.components.search_engines; - -import androidx.annotation.Nullable; -import androidx.annotation.VisibleForTesting; - -import org.jni_zero.CalledByNative; -import org.jni_zero.NativeMethods; - -import org.chromium.base.ContextUtils; -import org.chromium.base.ThreadUtils; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; - -/** - * Java counterpart of the native `SearchEngineChoiceService`. This singleton is responsible for - * getting the device country string from {@link SearchEngineCountryDelegate} and propagating it to - * C++ instances of `SearchEngineChoiceService`. The object is a singleton rather than being - * profile-scoped as the device country obtained from `SearchEngineCountryDelegate` is global (it - * also allows `SearchEngineChoiceService` instance to be created before the native is initialized). - */ -public class SearchEngineChoiceService { - private static SearchEngineChoiceService sInstance; - - private final SearchEngineCountryDelegate mDelegate; - private final List<Long> mPtrToNativeCallbacks = new ArrayList<>(); - // To understand whether we already got a reply from `SearchEngineCountryDelegate`, we need to - // differentiate between "null result" and "no result yet", thus the optional. - private @Nullable Optional<String> mPlayCountryRequestResult; - - /** Returns the instance of the singleton. Creates the instance if needed. */ - public static SearchEngineChoiceService getInstance() { - ThreadUtils.checkUiThread(); - if (sInstance == null) { - sInstance = - new SearchEngineChoiceService( - new SearchEngineCountryDelegateImpl( - ContextUtils.getApplicationContext())); - } - return sInstance; - } - - /** Overrides the instance of the singleton for tests. */ - public static void setInstanceForTests(SearchEngineChoiceService instance) { - ThreadUtils.checkUiThread(); - sInstance = instance; - } - - @VisibleForTesting - public SearchEngineChoiceService(SearchEngineCountryDelegate delegate) { - ThreadUtils.checkUiThread(); - mDelegate = delegate; - - mDelegate - .getDeviceCountry() - .then( - (deviceCountry) -> { - ThreadUtils.checkUiThread(); - mPlayCountryRequestResult = Optional.ofNullable(deviceCountry); - for (long ptrToNativeCallback : mPtrToNativeCallbacks) { - // `mPtrToNativeCallbacks` can be non-empty only after the native is - // loaded, so it is safe to call JNI here. - SearchEngineChoiceServiceJni.get() - .processCountryFromPlayApi( - ptrToNativeCallback, deviceCountry); - } - mPtrToNativeCallbacks.clear(); - }); - } - - @CalledByNative - private static void requestCountryFromPlayApi(long ptrToNativeCallback) { - ThreadUtils.checkUiThread(); - getInstance().requestCountryFromPlayApiInternal(ptrToNativeCallback); - } - - private void requestCountryFromPlayApiInternal(long ptrToNativeCallback) { - if (mPlayCountryRequestResult != null) { - // The result is ready - call native so it can save the result in prefs. - SearchEngineChoiceServiceJni.get() - .processCountryFromPlayApi( - ptrToNativeCallback, mPlayCountryRequestResult.orElse(null)); - return; - } - // When `SearchEngineCountryDelegate` replies with the result - the result will be reported - // to native using the saved callback. - mPtrToNativeCallbacks.add(ptrToNativeCallback); - } - - @NativeMethods - public interface Natives { - void processCountryFromPlayApi(long ptrToNativeCallback, @Nullable String deviceCountry); - } -}
diff --git a/components/search_engines/android/java/src/org/chromium/components/search_engines/test/util/SearchEngineChoiceServiceTestUtil.java b/components/search_engines/android/java/src/org/chromium/components/search_engines/test/util/SearchEngineChoiceServiceTestUtil.java deleted file mode 100644 index 72493ef..0000000 --- a/components/search_engines/android/java/src/org/chromium/components/search_engines/test/util/SearchEngineChoiceServiceTestUtil.java +++ /dev/null
@@ -1,79 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package org.chromium.components.search_engines.test.util; - -import static org.mockito.Mockito.doReturn; - -import android.os.Handler; -import android.os.Looper; - -import org.jni_zero.CalledByNative; -import org.mockito.Mockito; - -import org.chromium.base.Promise; -import org.chromium.base.test.util.LooperUtils; -import org.chromium.components.search_engines.SearchEngineChoiceService; -import org.chromium.components.search_engines.SearchEngineCountryDelegate; - -import java.lang.reflect.InvocationTargetException; -import java.util.concurrent.atomic.AtomicBoolean; - -final class SearchEngineChoiceServiceTestUtil { - private final SearchEngineCountryDelegate mMockDelegate; - private final Promise<String> mDeviceCountry = new Promise<>(); - - /** Stubs {@link SearchEngineChoiceService} for native tests. */ - @CalledByNative - public SearchEngineChoiceServiceTestUtil() { - mMockDelegate = Mockito.mock(SearchEngineCountryDelegate.class); - doReturn(mDeviceCountry).when(mMockDelegate).getDeviceCountry(); - SearchEngineChoiceService.setInstanceForTests(new SearchEngineChoiceService(mMockDelegate)); - } - - /** Restores the global state after the test completes. */ - @CalledByNative - public void destroy() { - SearchEngineChoiceService.setInstanceForTests(null); - } - - /** - * Fulfills the promise returned by `SearchEngineCountryDelegate` to simulate a response from - * the Play API. - * - * @param deviceCountry the result of the device country request. - */ - @CalledByNative - public void returnDeviceCountry(String deviceCountry) { - mDeviceCountry.fulfill(deviceCountry); - // `Promise` posts callback tasks on Android Looper which is not integrated with native - // RunLoop in NativeTest. Run these tasks synchronously now. - // TODO(crbug.com/1135593): remove this hack once Promise uses PostTask. - runLooperTasks(); - } - - /** - * Runs all tasks that are currently posted on the {@link Looper}'s message queue on the current - * thread. - */ - private static void runLooperTasks() { - AtomicBoolean called = new AtomicBoolean(false); - new Handler(Looper.myLooper()) - .post( - () -> { - called.set(true); - }); - - do { - try { - LooperUtils.runSingleNestedLooperTask(); - } catch (IllegalArgumentException - | IllegalAccessException - | SecurityException - | InvocationTargetException e) { - throw new RuntimeException(e); - } - } while (!called.get()); - } -}
diff --git a/components/search_engines/default_search_manager_unittest.cc b/components/search_engines/default_search_manager_unittest.cc index 43cea00b54..eeb4fdd 100644 --- a/components/search_engines/default_search_manager_unittest.cc +++ b/components/search_engines/default_search_manager_unittest.cc
@@ -18,7 +18,6 @@ #include "components/pref_registry/pref_registry_syncable.h" #include "components/search_engines/search_engine_choice/search_engine_choice_service.h" #include "components/search_engines/search_engines_pref_names.h" -#include "components/search_engines/search_engines_switches.h" #include "components/search_engines/search_engines_test_util.h" #include "components/search_engines/template_url_data.h" #include "components/search_engines/template_url_data_util.h" @@ -103,10 +102,6 @@ *pref_service_); DefaultSearchManager::RegisterProfilePrefs(pref_service_->registry()); TemplateURLPrepopulateData::RegisterProfilePrefs(pref_service_->registry()); - - // Override the country checks to simulate being in the US. - base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( - switches::kSearchEngineChoiceCountry, "US"); } sync_preferences::TestingPrefServiceSyncable* pref_service() {
diff --git a/components/search_engines/search_engine_choice/search_engine_choice_service.cc b/components/search_engines/search_engine_choice/search_engine_choice_service.cc index dd1e845..7d96a16 100644 --- a/components/search_engines/search_engine_choice/search_engine_choice_service.cc +++ b/components/search_engines/search_engine_choice/search_engine_choice_service.cc
@@ -4,36 +4,22 @@ #include "components/search_engines/search_engine_choice/search_engine_choice_service.h" -#include <memory> - -#include "base/callback_list.h" #include "base/check_deref.h" #include "base/command_line.h" #include "base/json/json_reader.h" -#include "base/memory/ptr_util.h" #include "base/metrics/histogram_functions.h" -#include "base/no_destructor.h" -#include "base/threading/thread_restrictions.h" #include "base/version.h" #include "components/country_codes/country_codes.h" #include "components/policy/core/common/policy_service.h" #include "components/policy/policy_constants.h" -#include "components/pref_registry/pref_registry_syncable.h" #include "components/prefs/pref_service.h" #include "components/search_engines/eea_countries_ids.h" #include "components/search_engines/search_engine_choice_utils.h" #include "components/search_engines/search_engines_pref_names.h" #include "components/search_engines/search_engines_switches.h" #include "components/search_engines/template_url_service.h" -#include "components/signin/public/base/signin_switches.h" #include "components/version_info/version_info.h" -#if BUILDFLAG(IS_ANDROID) -#include "base/android/jni_android.h" -#include "base/android/jni_string.h" -#include "components/search_engines/android/jni_headers/SearchEngineChoiceService_jni.h" -#endif - namespace search_engines { namespace { @@ -116,8 +102,6 @@ } } -using NativeCallbackType = base::OnceCallback<void(int)>; - } // namespace SearchEngineChoiceService::SearchEngineChoiceService(PrefService& profile_prefs) @@ -259,11 +243,11 @@ } int SearchEngineChoiceService::GetCountryId() { - if (base::CommandLine::ForCurrentProcess()->HasSwitch( - switches::kSearchEngineChoiceCountry)) { - return country_codes::CountryStringToCountryID( - base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( - switches::kSearchEngineChoiceCountry)); + int command_line_country = country_codes::CountryStringToCountryID( + base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( + switches::kSearchEngineChoiceCountry)); + if (command_line_country != country_codes::kCountryIDUnknown) { + return command_line_country; } bool force_eea_country = @@ -274,20 +258,13 @@ return country_codes::CountryStringToCountryID("BE"); } - if (!country_id_cache_.has_value()) { - country_id_cache_ = GetCountryIdInternal(); - } - return *country_id_cache_; + return country_codes::GetCountryIDFromPrefs(&profile_prefs_.get()); } void SearchEngineChoiceService::RecordChoiceMade( ChoiceMadeLocation choice_location, TemplateURLService* template_url_service) { - if (choice_location == ChoiceMadeLocation::kOther) { - // This is called from a path not resulting from a fully featured search - // engine choice screen, so skip recoding associated choice data. - return; - } + CHECK_NE(choice_location, ChoiceMadeLocation::kOther); if (!IsChoiceScreenFlagEnabled(ChoicePromo::kAny)) { return; @@ -399,67 +376,4 @@ } } -int SearchEngineChoiceService::GetCountryIdInternal() { -#if BUILDFLAG(IS_ANDROID) - if (!IsChoiceScreenFlagEnabled(ChoicePromo::kAny)) { - return country_codes::GetCountryIDFromPrefs(&profile_prefs_.get()); - } - - if (profile_prefs_->HasPrefPath(country_codes::kCountryIDAtInstall)) { - return profile_prefs_->GetInteger(country_codes::kCountryIDAtInstall); - } - - // Usage of `WeakPtr` is crucial here, as `SearchEngineChoiceService` is not - // guaranteed to be alive when the response from Java arrives. - auto heap_callback = std::make_unique<NativeCallbackType>(base::BindOnce( - &SearchEngineChoiceService::ProcessGetCountryResponseFromPlayApi, - weak_ptr_factory_.GetWeakPtr())); - // The ownership of the callback on the heap is passed to Java. It will be - // deleted by JNI_SearchEngineChoiceService_ProcessCountryFromPlayApi. - Java_SearchEngineChoiceService_requestCountryFromPlayApi( - base::android::AttachCurrentThread(), - reinterpret_cast<intptr_t>(heap_callback.release())); - // Java call above might save the preference, so we need to re-check. - if (!profile_prefs_->HasPrefPath(country_codes::kCountryIDAtInstall)) { - // Couldn't get the value from the Play API, fallback to locale. - return country_codes::GetCurrentCountryID(); - } - return profile_prefs_->GetInteger(country_codes::kCountryIDAtInstall); -#else - return country_codes::GetCountryIDFromPrefs(&profile_prefs_.get()); -#endif -} - -#if BUILDFLAG(IS_ANDROID) -void SearchEngineChoiceService::ProcessGetCountryResponseFromPlayApi( - int country_id) { - profile_prefs_->SetInteger(country_codes::kCountryIDAtInstall, country_id); -} -#endif - } // namespace search_engines - -#if BUILDFLAG(IS_ANDROID) -void JNI_SearchEngineChoiceService_ProcessCountryFromPlayApi( - JNIEnv* env, - jlong ptr_to_native_callback, - const base::android::JavaParamRef<jstring>& j_device_country) { - // Using base::WrapUnique ensures that the callback is deleted when this goes - // out of scope. - std::unique_ptr<search_engines::NativeCallbackType> heap_callback = - base::WrapUnique(reinterpret_cast<search_engines::NativeCallbackType*>( - ptr_to_native_callback)); - CHECK(heap_callback); - if (!j_device_country) { - return; - } - std::string device_country = - base::android::ConvertJavaStringToUTF8(env, j_device_country); - int device_country_id = - country_codes::CountryStringToCountryID(device_country); - if (device_country_id == country_codes::kCountryIDUnknown) { - return; - } - std::move(*heap_callback).Run(device_country_id); -} -#endif
diff --git a/components/search_engines/search_engine_choice/search_engine_choice_service.h b/components/search_engines/search_engine_choice/search_engine_choice_service.h index 792077d..d8a4e64 100644 --- a/components/search_engines/search_engine_choice/search_engine_choice_service.h +++ b/components/search_engines/search_engine_choice/search_engine_choice_service.h
@@ -6,7 +6,6 @@ #define COMPONENTS_SEARCH_ENGINES_SEARCH_ENGINE_CHOICE_SEARCH_ENGINE_CHOICE_SERVICE_H_ #include "base/memory/raw_ref.h" -#include "base/memory/weak_ptr.h" #include "components/keyed_service/core/keyed_service.h" #include "components/search_engines/search_engine_choice_utils.h" @@ -78,19 +77,7 @@ void PreprocessPrefsForReprompt(); private: - int GetCountryIdInternal(); - -#if BUILDFLAG(IS_ANDROID) - void ProcessGetCountryResponseFromPlayApi(int country_id); -#endif - const raw_ref<PrefService> profile_prefs_; - - // Used to ensure that the value returned from `GetCountryId` never changes - // in runtime (different runs can still return different values, though). - std::optional<int> country_id_cache_; - - base::WeakPtrFactory<SearchEngineChoiceService> weak_ptr_factory_{this}; }; } // namespace search_engines
diff --git a/components/search_engines/search_engine_choice/search_engine_choice_service_unittest.cc b/components/search_engines/search_engine_choice/search_engine_choice_service_unittest.cc index efb883f..27556a0f 100644 --- a/components/search_engines/search_engine_choice/search_engine_choice_service_unittest.cc +++ b/components/search_engines/search_engine_choice/search_engine_choice_service_unittest.cc
@@ -35,48 +35,11 @@ #include "components/version_info/version_info.h" #include "testing/gtest/include/gtest/gtest.h" -#if BUILDFLAG(IS_ANDROID) -#include "base/android/jni_android.h" -#include "base/android/jni_string.h" -#include "components/search_engines/android/test_utils_jni_headers/SearchEngineChoiceServiceTestUtil_jni.h" -#endif - using search_engines::RepromptResult; using search_engines::WipeSearchEngineChoiceReason; using ::testing::NiceMock; namespace search_engines { -namespace { -#if BUILDFLAG(IS_ANDROID) -class TestSupportAndroid { - public: - TestSupportAndroid() { - JNIEnv* env = base::android::AttachCurrentThread(); - base::android::ScopedJavaLocalRef<jobject> java_ref = - Java_SearchEngineChoiceServiceTestUtil_Constructor(env); - java_test_util_ref_.Reset(env, java_ref.obj()); - } - - ~TestSupportAndroid() { - JNIEnv* env = base::android::AttachCurrentThread(); - Java_SearchEngineChoiceServiceTestUtil_destroy(env, java_test_util_ref_); - } - - void ReturnDeviceCountry(const std::string& device_country) { - JNIEnv* env = base::android::AttachCurrentThread(); - Java_SearchEngineChoiceServiceTestUtil_returnDeviceCountry( - env, java_test_util_ref_, - base::android::ConvertUTF8ToJavaString(env, device_country)); - } - - private: - base::android::ScopedJavaGlobalRef<jobject> java_test_util_ref_; -}; -#endif - -const int kBelgiumCountryId = country_codes::CountryCharsToCountryID('B', 'E'); - -} // namespace class SearchEngineChoiceServiceTest : public ::testing::Test { public: @@ -485,7 +448,10 @@ ); } -TEST_F(SearchEngineChoiceServiceTest, GetCountryIdCommandLineOverride) { +TEST_F(SearchEngineChoiceServiceTest, GetSearchEngineChoiceCountryId) { + const int kBelgiumCountryId = + country_codes::CountryCharsToCountryID('B', 'E'); + // The test is set up to use the command line to simulate the country as being // Belgium. EXPECT_EQ(search_engine_choice_service().GetCountryId(), kBelgiumCountryId); @@ -494,6 +460,14 @@ // device locale. base::CommandLine::ForCurrentProcess()->RemoveSwitch( switches::kSearchEngineChoiceCountry); + EXPECT_EQ(search_engine_choice_service().GetCountryId(), + country_codes::GetCurrentCountryID()); + + // When the command line value is invalid, it is ignored. + base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( + switches::kSearchEngineChoiceCountry, "USA"); + EXPECT_EQ(search_engine_choice_service().GetCountryId(), + country_codes::GetCurrentCountryID()); // Note that if the format matches (2-character strings), we might get a // country ID that is not valid/supported. @@ -501,121 +475,12 @@ switches::kSearchEngineChoiceCountry, "??"); EXPECT_EQ(search_engine_choice_service().GetCountryId(), country_codes::CountryCharsToCountryID('?', '?')); -} -TEST_F(SearchEngineChoiceServiceTest, - GetCountryIdCommandLineOverrideSetsToUnknownOnFormatMismatch) { - base::CommandLine::ForCurrentProcess()->RemoveSwitch( - switches::kSearchEngineChoiceCountry); - - // When the command line value is invalid, the country code should be unknown. - base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( - switches::kSearchEngineChoiceCountry, "USA"); - EXPECT_EQ(search_engine_choice_service().GetCountryId(), - country_codes::kCountryIDUnknown); -} - -#if BUILDFLAG(IS_ANDROID) -TEST_F(SearchEngineChoiceServiceTest, PlayResponseBeforeGetCountryId) { - base::CommandLine::ForCurrentProcess()->RemoveSwitch( - switches::kSearchEngineChoiceCountry); - TestSupportAndroid test_support; - test_support.ReturnDeviceCountry( - country_codes::CountryIDToCountryString(kBelgiumCountryId)); - - // We got response from Play API before `GetCountryId` was invoked for the - // first time this run, so the new value should be used right away. - EXPECT_EQ(search_engine_choice_service().GetCountryId(), kBelgiumCountryId); - // The pref should be updated as well. - EXPECT_EQ(pref_service()->GetInteger(country_codes::kCountryIDAtInstall), - kBelgiumCountryId); -} - -TEST_F(SearchEngineChoiceServiceTest, GetCountryIdBeforePlayResponse) { - base::CommandLine::ForCurrentProcess()->RemoveSwitch( - switches::kSearchEngineChoiceCountry); - - TestSupportAndroid test_support; - // We didn't get a response from Play API before `GetCountryId` was invoked, - // so the last known country from prefs should be used. - EXPECT_EQ(search_engine_choice_service().GetCountryId(), - country_codes::GetCurrentCountryID()); - - // Simulate a response arriving after the first `GetCountryId` call. - test_support.ReturnDeviceCountry( - country_codes::CountryIDToCountryString(kBelgiumCountryId)); - - // The pref should be updated so the new country can be used the next run. - EXPECT_EQ(pref_service()->GetInteger(country_codes::kCountryIDAtInstall), - kBelgiumCountryId); - // However, `GetCountryId` result shouldn't change until the next run. - EXPECT_EQ(search_engine_choice_service().GetCountryId(), - country_codes::GetCurrentCountryID()); -} - -TEST_F(SearchEngineChoiceServiceTest, GetCountryIdPrefAlreadyWritten) { - // The value set from the pref should be used. + // The value set from the pref is reflected otherwise. pref_service()->SetInteger(country_codes::kCountryIDAtInstall, kBelgiumCountryId); - // Don't create `TestSupportAndroid` - since the pref isn't set we should not - // reach out to Java. - EXPECT_EQ(search_engine_choice_service().GetCountryId(), kBelgiumCountryId); -} -#endif // BUILDFLAG(IS_ANDROID) - -TEST_F(SearchEngineChoiceServiceTest, GetCountryIdDefault) { -#if BUILDFLAG(IS_ANDROID) - // On Android, Play API is used when kSearchEngineChoice is enabled. - feature_list()->Reset(); - feature_list()->InitAndDisableFeature(switches::kSearchEngineChoiceTrigger); -#endif // BUILDFLAG(IS_ANDROID) - - // Remove the command line flag set by the test. base::CommandLine::ForCurrentProcess()->RemoveSwitch( switches::kSearchEngineChoiceCountry); - - // The default value should be based on the device locale. - EXPECT_EQ(search_engine_choice_service().GetCountryId(), - country_codes::GetCurrentCountryID()); -} - -TEST_F(SearchEngineChoiceServiceTest, GetCountryIdFromPrefs) { -#if BUILDFLAG(IS_ANDROID) - // On Android, Play API is used when kSearchEngineChoice is enabled. - feature_list()->Reset(); - feature_list()->InitAndDisableFeature(switches::kSearchEngineChoiceTrigger); -#endif // BUILDFLAG(IS_ANDROID) - - // Remove the command line flag set by the test. - base::CommandLine::ForCurrentProcess()->RemoveSwitch( - switches::kSearchEngineChoiceCountry); - - // The value set from the pref should be used. - pref_service()->SetInteger(country_codes::kCountryIDAtInstall, - kBelgiumCountryId); - EXPECT_EQ(search_engine_choice_service().GetCountryId(), kBelgiumCountryId); -} - -TEST_F(SearchEngineChoiceServiceTest, GetCountryIdChangesAfterReading) { -#if BUILDFLAG(IS_ANDROID) - // On Android, Play API is used when kSearchEngineChoice is enabled. - feature_list()->Reset(); - feature_list()->InitAndDisableFeature(switches::kSearchEngineChoiceTrigger); -#endif // BUILDFLAG(IS_ANDROID) - - // Remove the command line flag set by the test. - base::CommandLine::ForCurrentProcess()->RemoveSwitch( - switches::kSearchEngineChoiceCountry); - - // The value set from the pref should be used. - pref_service()->SetInteger(country_codes::kCountryIDAtInstall, - kBelgiumCountryId); - EXPECT_EQ(search_engine_choice_service().GetCountryId(), kBelgiumCountryId); - - // Change the value in pref. - pref_service()->SetInteger(country_codes::kCountryIDAtInstall, - country_codes::CountryCharsToCountryID('U', 'S')); - // The value returned by `GetCountryId` shouldn't change. EXPECT_EQ(search_engine_choice_service().GetCountryId(), kBelgiumCountryId); } @@ -659,9 +524,12 @@ TEST_F(SearchEngineChoiceServiceTest, RecordChoiceMade) { base::CommandLine::ForCurrentProcess()->RemoveSwitch( switches::kSearchEngineChoiceCountry); + // Test that the choice is not recorded for countries outside the EEA region. - base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( - switches::kSearchEngineChoiceCountry, "US"); + const int kUnitedStatesCountryId = + country_codes::CountryCharsToCountryID('U', 'S'); + pref_service()->SetInteger(country_codes::kCountryIDAtInstall, + kUnitedStatesCountryId); const TemplateURL* default_search_engine = template_url_service().GetDefaultSearchProvider(); @@ -681,11 +549,10 @@ prefs::kDefaultSearchProviderChoiceScreenCompletionVersion)); // Revert to an EEA region country. - base::CommandLine::ForCurrentProcess()->RemoveSwitch( - switches::kSearchEngineChoiceCountry); - base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( - switches::kSearchEngineChoiceCountry, - country_codes::CountryIDToCountryString(kBelgiumCountryId)); + const int kBelgiumCountryId = + country_codes::CountryCharsToCountryID('B', 'E'); + pref_service()->SetInteger(country_codes::kCountryIDAtInstall, + kBelgiumCountryId); // Test that the choice is recorded if it wasn't previously done. search_engine_choice_service().RecordChoiceMade(
diff --git a/components/search_engines/search_engines_switches.cc b/components/search_engines/search_engines_switches.cc index 499cbc7..ee63dbf 100644 --- a/components/search_engines/search_engines_switches.cc +++ b/components/search_engines/search_engines_switches.cc
@@ -37,13 +37,13 @@ #elif BUILDFLAG(IS_WIN) base::FEATURE_DISABLED_BY_DEFAULT #else - base::FEATURE_DISABLED_BY_DEFAULT + base::FEATURE_ENABLED_BY_DEFAULT #endif ); const base::FeatureParam<bool> kSearchEngineChoiceTriggerForTaggedProfilesOnly{ - &kSearchEngineChoiceTrigger, /*name=*/"for_tagged_profiles_only", false}; + &kSearchEngineChoiceTrigger, /*name=*/"for_tagged_profiles_only", true}; const base::FeatureParam<bool> kSearchEngineChoiceTriggerWithForceEeaCountry{ &kSearchEngineChoiceTrigger, /*name=*/"with_force_eea_country", false};
diff --git a/components/search_engines/template_url_prepopulate_data_unittest.cc b/components/search_engines/template_url_prepopulate_data_unittest.cc index f9655ac..5334f05 100644 --- a/components/search_engines/template_url_prepopulate_data_unittest.cc +++ b/components/search_engines/template_url_prepopulate_data_unittest.cc
@@ -165,19 +165,7 @@ // Pick any EEA country const int kFranceCountryId = country_codes::CountryCharsToCountryID('F', 'R'); - OverrideCountryId(kFranceCountryId); - } - - void OverrideCountryId(int country_id) { - if (base::CommandLine::ForCurrentProcess()->HasSwitch( - switches::kSearchEngineChoiceCountry)) { - base::CommandLine::ForCurrentProcess()->RemoveSwitch( - switches::kSearchEngineChoiceCountry); - } - - base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( - switches::kSearchEngineChoiceCountry, - country_codes::CountryIDToCountryString(country_id)); + prefs_.SetInteger(country_codes::kCountryIDAtInstall, kFranceCountryId); } protected: @@ -190,7 +178,7 @@ // ids. TEST_F(TemplateURLPrepopulateDataTest, UniqueIDs) { for (int country_id : kAllCountryIds) { - OverrideCountryId(country_id); + prefs_.SetInteger(country_codes::kCountryIDAtInstall, country_id); std::vector<std::unique_ptr<TemplateURLData>> urls = TemplateURLPrepopulateData::GetPrepopulatedEngines( &prefs_, &search_engine_choice_service_, nullptr); @@ -214,7 +202,7 @@ const size_t kMaxRow = 5; for (int country_id : kAllCountryIds) { - OverrideCountryId(country_id); + prefs_.SetInteger(country_codes::kCountryIDAtInstall, country_id); const size_t kNumberOfSearchEngines = TemplateURLPrepopulateData::GetPrepopulatedEngines( @@ -382,7 +370,6 @@ } TEST_F(TemplateURLPrepopulateDataTest, ClearProvidersFromPrefs) { - OverrideCountryId(country_codes::kCountryIDUnknown); prefs_.SetUserPref(prefs::kSearchProviderOverridesVersion, std::make_unique<base::Value>(1)); @@ -433,7 +420,7 @@ // Verifies that built-in search providers are processed correctly. TEST_F(TemplateURLPrepopulateDataTest, ProvidersFromPrepopulated) { // Use United States. - OverrideCountryId(country_codes::CountryCharsToCountryID('U', 'S')); + prefs_.SetInteger(country_codes::kCountryIDAtInstall, 'U' << 8 | 'S'); size_t default_index; std::vector<std::unique_ptr<TemplateURLData>> t_urls = TemplateURLPrepopulateData::GetPrepopulatedEngines( @@ -473,7 +460,7 @@ // use https urls. TEST_F(TemplateURLPrepopulateDataTest, PrepopulatedAreHttps) { for (int country_id : kAllCountryIds) { - OverrideCountryId(country_id); + prefs_.SetInteger(country_codes::kCountryIDAtInstall, country_id); std::vector<std::unique_ptr<TemplateURLData>> t_urls = TemplateURLPrepopulateData::GetPrepopulatedEngines( @@ -629,7 +616,7 @@ std::vector<std::unique_ptr<TemplateURLData>> urls; // Google is first in US, so confirm index 0. - OverrideCountryId(country_codes::CountryCharsToCountryID('U', 'S')); + prefs_.SetInteger(country_codes::kCountryIDAtInstall, 'U' << 8 | 'S'); urls = TemplateURLPrepopulateData::GetPrepopulatedEngines( &prefs_, &search_engine_choice_service_, &index); EXPECT_EQ(index, size_t{0}); @@ -639,7 +626,7 @@ // If Google ever does reach top in China, this test will need to be adjusted: // check template_url_prepopulate_data.cc reference orders (engines_CN, etc.) // to find a suitable country and index. - OverrideCountryId(country_codes::CountryCharsToCountryID('C', 'N')); + prefs_.SetInteger(country_codes::kCountryIDAtInstall, 'C' << 8 | 'N'); urls = TemplateURLPrepopulateData::GetPrepopulatedEngines( &prefs_, &search_engine_choice_service_, &index); EXPECT_GT(index, size_t{0}); @@ -651,7 +638,8 @@ TEST_F(TemplateURLPrepopulateDataTest, GetPrepopulatedEngineFromFullList) { // Ensure that we use the default set of search engines, which is google, // bing, yahoo. - OverrideCountryId(country_codes::kCountryIDUnknown); + prefs_.SetInteger(country_codes::kCountryIDAtInstall, + country_codes::kCountryIDUnknown); ASSERT_EQ(TemplateURLPrepopulateData::GetPrepopulatedEngines( &prefs_, &search_engine_choice_service_, nullptr) .size(), @@ -677,8 +665,8 @@ #if BUILDFLAG(IS_ANDROID) TEST_F(TemplateURLPrepopulateDataTest, GetLocalPrepopulatedEngines) { constexpr char sample_country[] = "US"; - OverrideCountryId(country_codes::CountryCharsToCountryID(sample_country[0], - sample_country[1])); + prefs_.SetInteger(country_codes::kCountryIDAtInstall, + sample_country[0] << 8 | sample_country[1]); // For a given country, the output from `GetLocalPrepopulatedEngines` // should match the template URLs obtained from `GetPrepopulatedEngines`.
diff --git a/components/search_engines/template_url_service.cc b/components/search_engines/template_url_service.cc index 473095ed..8537a10 100644 --- a/components/search_engines/template_url_service.cc +++ b/components/search_engines/template_url_service.cc
@@ -1000,7 +1000,11 @@ } } - if (selection_added) { + if (selection_added && + // The choice record below should only be done when called from a path + // associated with a fully featured search engine choice screen. + choice_made_location != search_engines::ChoiceMadeLocation::kOther) { + CHECK(search_engine_choice_service_); // See b/321280848. search_engine_choice_service_->RecordChoiceMade(choice_made_location, this); }
diff --git a/components/search_engines/template_url_service_unittest.cc b/components/search_engines/template_url_service_unittest.cc index f6bd598c..9f82cc2 100644 --- a/components/search_engines/template_url_service_unittest.cc +++ b/components/search_engines/template_url_service_unittest.cc
@@ -8,11 +8,8 @@ #include <memory> -#include "base/command_line.h" #include "base/threading/platform_thread.h" -#include "components/country_codes/country_codes.h" #include "components/search_engines/search_engine_choice/search_engine_choice_service.h" -#include "components/search_engines/search_engines_switches.h" #include "components/search_engines/template_url_prepopulate_data.h" #include "components/search_engines/template_url_service_client.h" #include "components/sync_preferences/testing_pref_service_syncable.h" @@ -28,10 +25,6 @@ search_engine_choice_service_ = std::make_unique<search_engines::SearchEngineChoiceService>( pref_service_); - // Bypass the country checks. - base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( - switches::kSearchEngineChoiceCountry, - country_codes::kCountryCodeUnknown); template_url_service_ = std::make_unique<TemplateURLService>( &pref_service_, search_engine_choice_service_.get(),
diff --git a/components/strings/components_strings_af.xtb b/components/strings/components_strings_af.xtb index ed85f8c..fbb966e 100644 --- a/components/strings/components_strings_af.xtb +++ b/components/strings/components_strings_af.xtb
@@ -42,6 +42,7 @@ <translation id="1062407476771304334">Vervang</translation> <translation id="1064054731605354900">A3x5</translation> <translation id="106701514854093668">Werkskermboekmerke</translation> +<translation id="1067029985695494416">Soekenjinbesonderhede</translation> <translation id="1068672505746868501">Moet nooit bladsye in <ph name="SOURCE_LANGUAGE" /> vertaal nie</translation> <translation id="1070333806075222467">Metaal (glans)</translation> <translation id="1070853536588271387">Hibried- en alternatiewe voertuie</translation> @@ -1812,7 +1813,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Jy gebruik tans jou skermslot vir die invul van wagwoorde</translation> <translation id="4558551763791394412">Probeer om jou uitbreidings te deaktiveer.</translation> -<translation id="456043042661026303">Gaan tans jou betalingbesonderhede veilig na</translation> <translation id="4566017918361049074">Buitelug</translation> <translation id="4567686777917670400">Jou administrateur kan jou blaaieropstelling oor 'n afstand verander. Aktiwiteit op hierdie toestel kan ook buite Chromium bestuur word. <ph name="BEGIN_LINK" />Kom meer te wete<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Geverifieer</translation> @@ -2659,7 +2659,6 @@ <translation id="6272088941196661550">Hervat jou reis om relevante aktiwiteit in jou Chrome-geskiedenis te sien</translation> <translation id="6272383483618007430">Google-opdatering</translation> <translation id="6279183038361895380">Druk |<ph name="ACCELERATOR" />| om jou merker te wys</translation> -<translation id="628016388715774955">Die opsie om die volle adres in te vul, is gekies</translation> <translation id="6280223929691119688">Kan nie by hierdie adres aflewer nie. Kies 'n ander adres.</translation> <translation id="6284292079994426700">26x38 dm.</translation> <translation id="6284517535531159884">Variasiesaadtipe</translation> @@ -2931,7 +2930,6 @@ <translation id="6807791860691150411">Opvoeding</translation> <translation id="681021252041861472">Vereiste veld</translation> <translation id="6810899417690483278">Pasmaking-ID</translation> -<translation id="681459028290894216">Vul volle adres in</translation> <translation id="6816109178681043245">Sportgoedere</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">reekspoorte</translation>
diff --git a/components/strings/components_strings_am.xtb b/components/strings/components_strings_am.xtb index ce7e961..048600b 100644 --- a/components/strings/components_strings_am.xtb +++ b/components/strings/components_strings_am.xtb
@@ -465,6 +465,7 @@ <translation id="1828959155404624835">የመኪና ኪራይ</translation> <translation id="1834321415901700177">ይህ ጣቢያ ጎጂ ፕሮግራሞችን ይዟል</translation> <translation id="1838374766361614909">ፍለጋን ያፅዱ</translation> +<translation id="1839331950812095887">ሀሳብዎን የሚያጠቃልሉ ጥቂት ቃላት</translation> <translation id="1839551713262164453">የመመሪያ እሴቶችን ማረጋገጥ ከስህተቶች ጋር አልተሳካም</translation> <translation id="1842969606798536927">ይክፈሉ</translation> <translation id="1846432862466000825">ፕላስቲክ (በማህደር የሚቀመጥ)</translation> @@ -698,6 +699,7 @@ <translation id="2293443924986248631">ሲበራ ጣቢያዎች እርስዎን በመላው ድር ላይ የሚከታተሉ ኩኪዎችን መጠቀም አይችሉም። በአንዳንድ ጣቢያዎች ላይ ያሉ ባህሪያት ሊሰበሩ ይችላሉ።</translation> <translation id="2295831393422400053">እንድጽፍ አግዘኝን ለመጠቀም ፍለጋዎችን እና የተሻለ አሰሳን ቅንብርን ያብሩ</translation> <translation id="2300306941146563769">አልተሰቀለም</translation> +<translation id="2301098101308036335">የትኞቹ ድር ጣቢያዎች እንደሚጎበኙ እና መቼ እንደሚሆን።</translation> <translation id="230286397113210245">ማንነትን የማያሳውቅ መስኮት አዝራርን ይክፈቱ፣ በግል እንዲያስሱ አዲስ ማንነትን የማያሳውቅ መስኮት ለመክፈት ያግብሩ</translation> <translation id="2312234273148520048">ማጣፈጫዎች እና ቅመሞች</translation> <translation id="2316087952091171402">ከ<ph name="UPPER_ESTIMATE" /> ያነሰ። አንዳንድ ጣቢያዎች በሚቀጥለው ጉብኝትዎ ላይ ይበልጥ ቀስ ብለው ሊጭኑ ይችላሉ።</translation> @@ -1364,6 +1366,7 @@ <translation id="3655670868607891010">ይህንን በተደጋጋሚነት የሚያዩ ከሆኑ <ph name="HELP_LINK" />ን ይሞክሩ።</translation> <translation id="365641980390710834">የአዘቦት ቀን አልባሳት</translation> <translation id="3658742229777143148">ክለሳ</translation> +<translation id="3659521826520353662">የትኞቹ በአስተዳዳሪ-የተገለጹ ድር ጣቢያዎች እንደሚጎበኙ እና መቼ እንደሚሆን፦ <ph name="ALLOWLISTED_WEBSITES" /></translation> <translation id="3664782872746246217">ቁልፍ ቃላት፦</translation> <translation id="3665100783276035932">አብዛኞቹ ጣቢያዎች እንደተጠበቀው መሥራት አለባቸው</translation> <translation id="3667704023705708645">ቬንቸር ካፒታል</translation> @@ -1454,6 +1457,7 @@ <translation id="3812398568375898177">ይህ በChromeOS ላይ የAndroid መተግበሪያዎችን አፈጻጸም የሚያሻሽል ወሳኝ ዝማኔ ነው።</translation> <translation id="3815434930383843058">8 x 12 ኢንች</translation> <translation id="3816482573645936981">እሴት (የተተካ)</translation> +<translation id="382115839591654906">ለ<ph name="CARD_NAME" /> ካርድ ማረጋገጫ ኮድ</translation> <translation id="3823019343150397277">አይ ቢ ኤ ኤን</translation> <translation id="3823402221513322552">የእርስዎ አሳሽ የሚተዳደረው በ<ph name="BROWSER_DOMAIN" /> ነው እና የእርስዎ መገለጫ የሚተዳደረው በ<ph name="PROFILE_DOMAIN" /> ነው</translation> <translation id="382518646247711829">ተኪ አገልጋይ የሚጠቀሙ ከሆኑ...</translation> @@ -1815,7 +1819,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">የይለፍ ቃላትን ለመሙላት ማያ ገፅ መቆለፊያዎን እየተጠቀሙ ነው</translation> <translation id="4558551763791394412">ቅጥያዎችዎን አሰናክለው ይሞክሩ።</translation> -<translation id="456043042661026303">የእርስዎን የክፍያ ዝርዝሮች በአስተማማኝ ሁኔታ በመፈተሽ ላይ</translation> <translation id="4566017918361049074">ከቤት ውጭ</translation> <translation id="4567686777917670400">የእርስዎ አስተዳዳሪ በርቀት የአሳሽዎን ውቅረት መቀየር ይችላል። በዚህ መሣሪያ ላይ ያለ እንቅስቃሴ እንዲሁም ከChromium ውጭ ሊተዳደር ይችላል። <ph name="BEGIN_LINK" />የበለጠ ለመረዳት<ph name="END_LINK" /></translation> <translation id="4569155249847375786">የተረጋገጠ</translation> @@ -2662,7 +2665,6 @@ <translation id="6272088941196661550">በእርስዎ የChrome ታሪክ ውስጥ አግባብነት ያለው እንቅስቃሴን ለማየት ጉዞዎን ከቆመበት ይቀጥሉ</translation> <translation id="6272383483618007430">የGoogle ዝማኔ</translation> <translation id="6279183038361895380">የእርስዎን ጠቋሚ ለማሳየት |<ph name="ACCELERATOR" />| ይጫኑ</translation> -<translation id="628016388715774955">ሙሉውን አድራሻ ይሙሉ አማራጭ ተመርጧል</translation> <translation id="6280223929691119688">ወደዚህ አድራሻ ማድረስ አይቻልም። የተለየ አድራሻ ይምረጡ።</translation> <translation id="6284292079994426700">26 x 38 ኢንች</translation> <translation id="6284517535531159884">የአማራጭ ቅርጾች ዘር ዓይነት</translation> @@ -2934,7 +2936,6 @@ <translation id="6807791860691150411">ትምህርት</translation> <translation id="681021252041861472">የሚያስፈልግ መስክ</translation> <translation id="6810899417690483278">የብጁነት መታወቂያ</translation> -<translation id="681459028290894216">ሙሉ አድራሻ ይሙሉ</translation> <translation id="6816109178681043245">የስፖርት ምርቶች</translation> <translation id="6817217109584391709">ጃቫስክሪፕት</translation> <translation id="6820143000046097424">ተከታታይ ወደቦች</translation> @@ -3205,6 +3206,7 @@ <translation id="7341357280245177602">ያገለገሉ ተሽከርካሪዎች</translation> <translation id="7346048084945669753">ከዚህ ጋር ግንኙነት አለው፦</translation> <translation id="7346062987309535530">መመገቢያ እቃዎች</translation> +<translation id="7346081071264046066">«ይህን የሰርግ ግብዣ በደስታ አዎ ብለው መልስ ይስጡ»</translation> <translation id="7352651011704765696">የሆነ ችግር ተፈጥሯል</translation> <translation id="7353601530677266744">የትእዛዝ መስመር</translation> <translation id="7354880545102894991">ዝቅተኛ ወጪ ያለው እና የመጨረሻ ደቂቃ ጉዞ</translation>
diff --git a/components/strings/components_strings_ar.xtb b/components/strings/components_strings_ar.xtb index 70529c4f..18f03bf1 100644 --- a/components/strings/components_strings_ar.xtb +++ b/components/strings/components_strings_ar.xtb
@@ -517,6 +517,8 @@ <translation id="1956486093533522234">العثور على جهازك أو قفله أو محو بياناته</translation> <translation id="1958218078413065209">أعلى نتيجة حققتها هي <ph name="SCORE" />.</translation> <translation id="1959001866257244765">المساعدة في تحسين مستوى الأمان على الإنترنت لجميع المستخدمين من خلال إرسال <ph name="BEGIN_WHITEPAPER_LINK" />عناوين URL لبعض الصفحات التي تزورها وعدد محدود من معلومات النظام وبعض أنواع محتوى الصفحات<ph name="END_WHITEPAPER_LINK" /> إلى Google. <ph name="BEGIN_PRIVACY_PAGE_LINK" />سياسة الخصوصية<ph name="END_PRIVACY_PAGE_LINK" /></translation> +<translation id="1959445535228047762">يتم إرسال محتوى الصفحة والنص إلى Google وقد يتم استخدامهما لتحسين هذه الميزة. + <ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" /></translation> <translation id="1962204205936693436">إشارات <ph name="DOMAIN" /></translation> <translation id="196752089528718902">يمكنك عادةً الاتصال بالمواقع الإلكترونية بشكل آمن، ولكن تعذّر على Chrome استخدام اتصال آمن في الوقت الحالي. قد يحاول أحد المهاجمين التجسس على اتصالك بالشبكة أو تعديله. <ph name="BEGIN_LEARN_MORE_LINK" />مزيد من المعلومات<ph name="END_LEARN_MORE_LINK" /></translation> <translation id="1973335181906896915">خطأ أثناء التسلسل</translation> @@ -720,6 +722,7 @@ <translation id="2354430244986887761">عثر التصفح الآمن من Google مؤخرًا <ph name="BEGIN_LINK" />على تطبيقات ضارة<ph name="END_LINK" /> في <ph name="SITE" />.</translation> <translation id="2355395290879513365">قد يتمكن المهاجمون من رؤية الصور التي تتطلع عليها على هذا الموقع وخداعك من خلال تعديلها.</translation> <translation id="2356070529366658676">طلب</translation> +<translation id="2356926036049612643">مُحسِّن V8</translation> <translation id="2357481397660644965">يدير <ph name="DEVICE_MANAGER" /> جهازك، ويدير <ph name="ACCOUNT_MANAGER" /> حسابك.</translation> <translation id="2359629602545592467">متعددة</translation> <translation id="2359808026110333948">متابعة</translation> @@ -1818,7 +1821,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">أنت تستخدم حاليًا ميزة "قفل الشاشة" لملء كلمات المرور</translation> <translation id="4558551763791394412">جرّب إيقاف الإضافات.</translation> -<translation id="456043042661026303">جارٍ التحقّق بأمان من تفاصيل الدفع</translation> <translation id="4566017918361049074">أنشطة في أماكن مفتوحة</translation> <translation id="4567686777917670400">يمكن لمشرفك تغيير إعدادات المتصفِّح عن بُعد. وقد تتم أيضًا إدارة النشاط على هذا الجهاز خارج Chromium. <ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" /></translation> <translation id="4569155249847375786">تم التحقق</translation> @@ -2665,7 +2667,6 @@ <translation id="6272088941196661550">يمكنك استئناف سجلّ أنشطة البحث والتصفُّح للاطّلاع على النشاط ذي الصلة في سجلّ Chrome.</translation> <translation id="6272383483618007430">تحديث Google</translation> <translation id="6279183038361895380">اضغط على |<ph name="ACCELERATOR" />| لعرض المؤشر</translation> -<translation id="628016388715774955">تم تحديد خيار ملء حقل العنوان بالكامل.</translation> <translation id="6280223929691119688">لا يمكن التسليم على هذا العنوان. اختَر عنوانًا آخر.</translation> <translation id="6284292079994426700">26 × 38 بوصة</translation> <translation id="6284517535531159884">نوع المحتوى الأساسي للإصدارات المُعدَّلة</translation> @@ -2937,7 +2938,6 @@ <translation id="6807791860691150411">تعليم</translation> <translation id="681021252041861472">الحقل مطلوب</translation> <translation id="6810899417690483278">رقم تعريف التخصيص</translation> -<translation id="681459028290894216">ملء العنوان بالكامل</translation> <translation id="6816109178681043245">منتجات رياضية</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">المنافذ التسلسلية</translation>
diff --git a/components/strings/components_strings_as.xtb b/components/strings/components_strings_as.xtb index 889fa10..5ceda76 100644 --- a/components/strings/components_strings_as.xtb +++ b/components/strings/components_strings_as.xtb
@@ -465,6 +465,7 @@ <translation id="1828959155404624835">গাড়ী ভাড়ালৈ দিয়া সেৱা</translation> <translation id="1834321415901700177">এই ছাইটটোত বিপজ্জনক প্ৰ’গ্ৰেম আছে</translation> <translation id="1838374766361614909">সন্ধান কৰা বস্তুবোৰ মচক</translation> +<translation id="1839331950812095887">আপোনাৰ মনৰ ভাৱৰ চমু আভাস দিব পৰা কেইটামান শব্দ</translation> <translation id="1839551713262164453">নীতিৰ মান মান্যতাকৰণ কৰোঁতে আসোঁৱাহ হৈছে</translation> <translation id="1842969606798536927">পৰিশোধ কৰক</translation> <translation id="1846432862466000825">প্লাষ্টিক (আৰ্কাইভেল)</translation> @@ -698,6 +699,7 @@ <translation id="2293443924986248631">অন কৰা থাকিলে ছাইটসমূহে সমগ্ৰ ৱেবত আপোনাক ট্ৰেক কৰা কুকিসমূহ ব্যৱহাৰ কৰিব নোৱাৰে। কিছুমান ছাইটত সুবিধাসমূহ ব্যাহত হ’ব পাৰে।</translation> <translation id="2295831393422400053">হেল্প মী ৰাইট ব্যৱহাৰ কৰিবলৈ সন্ধান আৰু ব্ৰাউজিং উন্নত কৰাৰ ছেটিংটো অন কৰক</translation> <translation id="2300306941146563769">আপল'ড কৰা হোৱা নাই</translation> +<translation id="2301098101308036335">কোনবোৰ ৱেবছাইটলৈ গৈছে আৰু কেতিয়া গৈছে।</translation> <translation id="230286397113210245">ইনক’গনিট’ ৱিণ্ড’ খোলাৰ বুটাম, ব্যক্তিগতভাৱে ব্ৰাউজ কৰিবৰ বাবে এখন নতুন ইনক’গনিট’ ৱিণ্ড’ খুলিবলৈ সক্ৰিয় কৰক</translation> <translation id="2312234273148520048">মছলা আৰু ড্ৰেছিং</translation> <translation id="2316087952091171402"><ph name="UPPER_ESTIMATE" />তকৈ কম। আপুনি পৰৱৰ্তী সময়ত কিছুমান ছাইট চাওতে লেহেমীয়াকৈ ল’ড হ’ব পাৰে।</translation> @@ -1362,6 +1364,7 @@ <translation id="3655670868607891010">আপুনি যদি এইটো সঘনাই দেখি আছে, <ph name="HELP_LINK" />লৈ যাওক।</translation> <translation id="365641980390710834">অনানুষ্ঠানিক পোছাক</translation> <translation id="3658742229777143148">পুনৰীক্ষণ</translation> +<translation id="3659521826520353662">প্ৰশাসক-নিৰ্ধাৰিত কোনবোৰ ৱেবছাইটলৈ কেতিয়া যোৱা হয়: <ph name="ALLOWLISTED_WEBSITES" /></translation> <translation id="3664782872746246217">মূল শব্দ:</translation> <translation id="3665100783276035932">অধিকাংশ ছাইটে আশা কৰা ধৰণে কাম কৰিব লাগে</translation> <translation id="3667704023705708645">ভেনচাৰ কেপিটেল</translation> @@ -1452,6 +1455,7 @@ <translation id="3812398568375898177">এয়া এক গুৰুত্বপূৰ্ণ আপডে’ট যিয়ে ChromeOSত Android এপৰ কাৰ্যক্ষমতা উন্নত কৰে।</translation> <translation id="3815434930383843058">৮ x ১২ ইঞ্চি</translation> <translation id="3816482573645936981">মান (অপসাৰণ কৰা হৈছে)</translation> +<translation id="382115839591654906"><ph name="CARD_NAME" />ৰ CVC</translation> <translation id="3823019343150397277">IBAN</translation> <translation id="3823402221513322552">আপোনাৰ ব্ৰাউজাৰ <ph name="BROWSER_DOMAIN" />এ আৰু আপোনাৰ প্ৰ’ফাইল <ph name="PROFILE_DOMAIN" />এ পৰিচালনা কৰে</translation> <translation id="382518646247711829">যদি আপুনি কোনো প্ৰ’ক্সী ছাৰ্ভাৰ ব্যৱহাৰ কৰে...</translation> @@ -1812,7 +1816,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">পাছৱৰ্ড পূৰ কৰাৰ বাবে আপুনি আপোনাৰ স্ক্ৰীন লক ব্যৱহাৰ কৰি আছে</translation> <translation id="4558551763791394412">আপোনাৰ এক্সটেনশ্বনসমূহ অক্ষম কৰিবলৈ চেষ্টা কৰক।</translation> -<translation id="456043042661026303">আপোনাৰ পৰিশোধৰ সবিশেষ সুৰক্ষিতভাৱে পৰীক্ষা কৰি থকা হৈছে</translation> <translation id="4566017918361049074">মুকলি ঠাইত হোৱা কাৰ্যকলাপ</translation> <translation id="4567686777917670400">আপোনাৰ প্ৰশাসকে দূৰৰ পৰাই আপোনাৰ ব্ৰাউজাৰৰ ছেটআপ সলনি কৰিব পাৰে। এই ডিভাইচটোত কৰা কাৰ্যকলাপ Chromiumৰ বাহিৰৰ পৰাও পৰিচালনা কৰা হ’ব পাৰে। <ph name="BEGIN_LINK" />অধিক জানক<ph name="END_LINK" /></translation> <translation id="4569155249847375786">সত্যাপন কৰা হৈছে</translation> @@ -2658,7 +2661,6 @@ <translation id="6272088941196661550">আপোনাৰ Chromeৰ ইতিহাসত প্ৰাসংগিক কাৰ্যকলাপ চাবলৈ আপোনাৰ যাত্ৰা পুনৰ আৰম্ভ কৰক</translation> <translation id="6272383483618007430">Google আপডে’ট</translation> <translation id="6279183038361895380">আপোনাৰ কাৰ্ছৰটো দেখুৱাবলৈ |<ph name="ACCELERATOR" />| টিপক</translation> -<translation id="628016388715774955">সম্পূৰ্ণ ঠিকনা পূৰ কৰাৰ বিকল্প বাছনি কৰা হৈছে</translation> <translation id="6280223929691119688">এই ঠিকনাটোত পঠিয়াব নোৱাৰি৷ অন্য এটা ঠিকনা বাছনি কৰক।</translation> <translation id="6284292079994426700">২৬ x ৩৮ ইঞ্চি</translation> <translation id="6284517535531159884">ৰূপভেদ ছীডৰ প্ৰকাৰ</translation> @@ -2930,7 +2932,6 @@ <translation id="6807791860691150411">শিক্ষা</translation> <translation id="681021252041861472">বাধ্যতামূলক ক্ষেত্ৰ</translation> <translation id="6810899417690483278">কাষ্টমাইজেশ্বন আইডি</translation> -<translation id="681459028290894216">সম্পূৰ্ণ ঠিকনা পূৰ কৰক</translation> <translation id="6816109178681043245">ক্ৰীড়া সামগ্ৰী</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">ক্ৰমিক প’ৰ্ট</translation> @@ -3201,6 +3202,7 @@ <translation id="7341357280245177602">ব্যৱহাৰ কৰা বাহন</translation> <translation id="7346048084945669753">অনুমোদিত:</translation> <translation id="7346062987309535530">ডাইনিংৱেৰ</translation> +<translation id="7346081071264046066">"উৎসাহেৰে সৈতে এই বিবাহৰ নিমন্ত্ৰণটোত হয় বুলি প্ৰত্যুত্তৰ দিয়ক"</translation> <translation id="7352651011704765696">কিবা সমস্যা হৈছে</translation> <translation id="7353601530677266744">কামাণ্ড লাইন</translation> <translation id="7354880545102894991">কম খৰচী আৰু শেষ সময়ত কটা টিকেট</translation>
diff --git a/components/strings/components_strings_az.xtb b/components/strings/components_strings_az.xtb index cc2ab3e..b23ac71 100644 --- a/components/strings/components_strings_az.xtb +++ b/components/strings/components_strings_az.xtb
@@ -1812,7 +1812,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Parolları daxil etmək üçün ekran kilidindən istifadə edirsiniz</translation> <translation id="4558551763791394412">Artırmalarınız deaktiv edilir</translation> -<translation id="456043042661026303">Ödəniş detalları təhlükəsiz şəkildə yoxlanır</translation> <translation id="4566017918361049074">Açıq hava</translation> <translation id="4567686777917670400">Administrator brauzer quraşdırmasını uzaqdan dəyişə bilər. Bu cihazdakı fəaliyyət Chromium'dan kənarda da idarə edilə bilər. <ph name="BEGIN_LINK" />Ətraflı məlumat<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Doğrulanmış</translation> @@ -2659,7 +2658,6 @@ <translation id="6272088941196661550">Chrome tarixçəsində əlaqəli fəaliyyəti görmək üçün baxışa davam edin</translation> <translation id="6272383483618007430">Google Güncəlləməsi</translation> <translation id="6279183038361895380">Kursorunuzu göstərmək üçün |<ph name="ACCELERATOR" />| basın</translation> -<translation id="628016388715774955">Tam ünvanın doldurulması seçilib</translation> <translation id="6280223929691119688">Bu ünvana çatdırmaq mümkün deyil. Başqa ünvan seçin.</translation> <translation id="6284292079994426700">26 x 38 düym</translation> <translation id="6284517535531159884">Çeşidlərin başlanğıc dəyər növü</translation> @@ -2931,7 +2929,6 @@ <translation id="6807791860691150411">Təhsil</translation> <translation id="681021252041861472">Tələb onunan Sahə</translation> <translation id="6810899417690483278">Özəlləşdirmə ID-si</translation> -<translation id="681459028290894216">Tam ünvanın doldurulması</translation> <translation id="6816109178681043245">İdman malları</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">ardıcıl portlar</translation>
diff --git a/components/strings/components_strings_be.xtb b/components/strings/components_strings_be.xtb index 8a89cad..5d30728 100644 --- a/components/strings/components_strings_be.xtb +++ b/components/strings/components_strings_be.xtb
@@ -1813,7 +1813,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Блакіроўка экрана выкарыстоўваецца для ўводу пароляў</translation> <translation id="4558551763791394412">Паспрабуйце выключыць пашырэнні.</translation> -<translation id="456043042661026303">Ідзе бяспечная праверка вашых звестак пра спосаб аплаты</translation> <translation id="4566017918361049074">На вольным паветры</translation> <translation id="4567686777917670400">Адміністратар можа аддалена змяняць налады браўзера. Сама прылада таксама можа знаходзіцца пад знешнім кіраваннем. <ph name="BEGIN_LINK" />Даведацца больш<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Спраўджана</translation> @@ -2658,7 +2657,6 @@ <translation id="6272088941196661550">Пашукаць звязаныя дзеянні ў гісторыі праглядаў Chrome</translation> <translation id="6272383483618007430">Абнаўленне Google</translation> <translation id="6279183038361895380">Націсніце "<ph name="ACCELERATOR" />", каб убачыць курсор</translation> -<translation id="628016388715774955">Выбраны варыянт "Запоўніць усе палі адраса"</translation> <translation id="6280223929691119688">Немагчыма адправіць на гэты адрас. Выберыце іншы адрас.</translation> <translation id="6284292079994426700">26 x 38 цаляў</translation> <translation id="6284517535531159884">Тып зыходнага матэрыялу для мадыфікацый</translation> @@ -2930,7 +2928,6 @@ <translation id="6807791860691150411">Адукацыя</translation> <translation id="681021252041861472">Абавязковае поле</translation> <translation id="6810899417690483278">Ідэнтыфікатар наладжвання</translation> -<translation id="681459028290894216">Запоўніць усе палі адраса</translation> <translation id="6816109178681043245">Спартыўныя тавары</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">паслядоўныя парты</translation>
diff --git a/components/strings/components_strings_bg.xtb b/components/strings/components_strings_bg.xtb index 17c57413..99ecc6c3 100644 --- a/components/strings/components_strings_bg.xtb +++ b/components/strings/components_strings_bg.xtb
@@ -1813,7 +1813,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Използвате опцията си за заключване на екрана при попълване на пароли</translation> <translation id="4558551763791394412">Опитайте да деактивирате разширенията.</translation> -<translation id="456043042661026303">Подробностите за начина ви на плащане се проверяват по сигурен начин</translation> <translation id="4566017918361049074">Занимания на открито</translation> <translation id="4567686777917670400">Администраторът ви може отдалечено да променя настройките на браузъра. Възможно е активността на това устройство да се управлява и извън Chromium. <ph name="BEGIN_LINK" />Научете повече<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Потвърдено</translation> @@ -2660,7 +2659,6 @@ <translation id="6272088941196661550">Възобновете пътешествието си, за да прегледате съответната активност в историята си в Chrome</translation> <translation id="6272383483618007430">Google Актуализиране</translation> <translation id="6279183038361895380">Натиснете |<ph name="ACCELERATOR" />|, за да се покаже курсорът</translation> -<translation id="628016388715774955">Избрана бе опцията за попълване на пълния адрес</translation> <translation id="6280223929691119688">Този адрес за бърза доставка не се поддържа. Изберете друг.</translation> <translation id="6284292079994426700">26 x 38 инча</translation> <translation id="6284517535531159884">Тип на началното число за вариантите</translation> @@ -2932,7 +2930,6 @@ <translation id="6807791860691150411">Образование</translation> <translation id="681021252041861472">Задължително поле</translation> <translation id="6810899417690483278">Идент. № на персонализирането</translation> -<translation id="681459028290894216">Попълване на пълния адрес</translation> <translation id="6816109178681043245">Спортни стоки</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">серийни портове</translation>
diff --git a/components/strings/components_strings_bn.xtb b/components/strings/components_strings_bn.xtb index 1136ab0..15f8f7f 100644 --- a/components/strings/components_strings_bn.xtb +++ b/components/strings/components_strings_bn.xtb
@@ -1814,7 +1814,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">পাসওয়ার্ড পূরণ করার জন্য আপনি স্ক্রিন লক ব্যবহার করছেন</translation> <translation id="4558551763791394412">আপনার এক্সটেনশানগুলি অক্ষম করে দেখুন।</translation> -<translation id="456043042661026303">নিরাপদে আপনার পেমেন্টের বিবরণ পরীক্ষা করা হচ্ছে</translation> <translation id="4566017918361049074">আউটডোর</translation> <translation id="4567686777917670400">আপনার অ্যাডমিনিস্ট্রেটর দূরবর্তী স্থান থেকে আপনার ব্রাউজারের সেটআপ পরিবর্তন করতে পারেন। এই ডিভাইসের অ্যাক্টিভিটি Chromium-এর বাইরে থেকেও ম্যানেজ করা যেতে পারে। <ph name="BEGIN_LINK" />আরও জানুন<ph name="END_LINK" /></translation> <translation id="4569155249847375786">যাচাইকৃত</translation> @@ -2660,7 +2659,6 @@ <translation id="6272088941196661550">Chrome ইতিহাসে প্রাসঙ্গিক অ্যাক্টিভিটি দেখতে সার্চ করা আবার চালু করুন</translation> <translation id="6272383483618007430">Google আপডেট</translation> <translation id="6279183038361895380">আপনার কার্সার দেখাতে |<ph name="ACCELERATOR" />| চাপুন</translation> -<translation id="628016388715774955">সম্পূর্ণ ঠিকানা লেখার বিকল্প বেছে নেওয়া হয়েছে</translation> <translation id="6280223929691119688">এই ঠিকানায় ডেলিভারি করা যাবে না। অন্য ঠিকানা বেছে নিন।</translation> <translation id="6284292079994426700">২৬ x ৩৮ ইঞ্চি</translation> <translation id="6284517535531159884">ভ্যারিয়েশন সিডের ধরন</translation> @@ -2932,7 +2930,6 @@ <translation id="6807791860691150411">শিক্ষা</translation> <translation id="681021252041861472">এই ফিল্ডটি ফাঁকা রাখা যাবে না</translation> <translation id="6810899417690483278">কাস্টমাইজেশন আইডি</translation> -<translation id="681459028290894216">সম্পূর্ণ ঠিকানা লিখুন</translation> <translation id="6816109178681043245">খেলাধুলার সরঞ্জাম</translation> <translation id="6817217109584391709">জাভাস্ক্রিপ্ট</translation> <translation id="6820143000046097424">সিরিয়াল পোর্ট</translation>
diff --git a/components/strings/components_strings_bs.xtb b/components/strings/components_strings_bs.xtb index f3d2914..5a95ea7 100644 --- a/components/strings/components_strings_bs.xtb +++ b/components/strings/components_strings_bs.xtb
@@ -1816,7 +1816,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Koristite zaključavanje ekrana za popunjavanje lozinki</translation> <translation id="4558551763791394412">Pokušajte onemogućiti ekstenzije.</translation> -<translation id="456043042661026303">Sigurno provjeravanje podataka o plaćanju</translation> <translation id="4566017918361049074">Na otvorenom</translation> <translation id="4567686777917670400">Vaš administrator može promijeniti postavke preglednika daljinskim putem. Aktivnostima na ovom uređaju se može upravljati i van Chromiuma. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Potvrđeno</translation> @@ -2663,7 +2662,6 @@ <translation id="6272088941196661550">Nastavite iskustvo pregledanja da vidite relevantne aktivnosti u historiji Chromea</translation> <translation id="6272383483618007430">Google Ažuriranje</translation> <translation id="6279183038361895380">Pritisnite |<ph name="ACCELERATOR" />| da prikažete kursor</translation> -<translation id="628016388715774955">Odabrana je opcija popunjavanja pune adrese</translation> <translation id="6280223929691119688">Isporuka na ovu adresu nije moguća. Odaberite drugu adresu.</translation> <translation id="6284292079994426700">26 x 38 in</translation> <translation id="6284517535531159884">Vrsta početne vrijednosti varijacija</translation> @@ -2935,7 +2933,6 @@ <translation id="6807791860691150411">Obrazovanje</translation> <translation id="681021252041861472">Obavezno polje</translation> <translation id="6810899417690483278">ID za prilagođavanje</translation> -<translation id="681459028290894216">Popunite punu adresu</translation> <translation id="6816109178681043245">Sportska oprema</translation> <translation id="6817217109584391709">javaScript</translation> <translation id="6820143000046097424">serijski priključci</translation>
diff --git a/components/strings/components_strings_ca.xtb b/components/strings/components_strings_ca.xtb index 0aeee09..c39b462b 100644 --- a/components/strings/components_strings_ca.xtb +++ b/components/strings/components_strings_ca.xtb
@@ -465,6 +465,7 @@ <translation id="1828959155404624835">Lloguers de cotxes</translation> <translation id="1834321415901700177">Aquest lloc conté programes perjudicials</translation> <translation id="1838374766361614909">Esborra la cerca</translation> +<translation id="1839331950812095887">els teus pensaments resumits en unes quantes paraules</translation> <translation id="1839551713262164453">S'han produït errors a la validació dels valors de la política</translation> <translation id="1842969606798536927">Paga</translation> <translation id="1846432862466000825">Plàstic (arxiu)</translation> @@ -698,6 +699,7 @@ <translation id="2293443924986248631">Quan està activada, els llocs web no poden utilitzar galetes que facin un seguiment de la teva activitat al web. Pot ser que les funcions d'alguns llocs web no funcionin.</translation> <translation id="2295831393422400053">Per utilitzar la funció Ajuda'm a escriure, activa l'opció Millora les cerques i la navegació</translation> <translation id="2300306941146563769">No penjat</translation> +<translation id="2301098101308036335">Quins llocs web es visiten i quan.</translation> <translation id="230286397113210245">Botó Obre una finestra d'incògnit: activa'l per obrir una finestra d'incògnit nova i navegar en privat</translation> <translation id="2312234273148520048">Condiments i salses</translation> <translation id="2316087952091171402">Inferior a <ph name="UPPER_ESTIMATE" />. És possible que alguns llocs web es carreguin més a poc a poc la propera vegada que els visitis.</translation> @@ -1365,6 +1367,7 @@ <translation id="3655670868607891010">Si aquest missatge apareix sovint, proveu aquests <ph name="HELP_LINK" />.</translation> <translation id="365641980390710834">Moda informal</translation> <translation id="3658742229777143148">Revisió</translation> +<translation id="3659521826520353662">Quins llocs web definits per l'administrador es visiten i quan: <ph name="ALLOWLISTED_WEBSITES" /></translation> <translation id="3664782872746246217">Paraules clau:</translation> <translation id="3665100783276035932">La majoria de llocs web haurien de funcionar de la manera prevista</translation> <translation id="3667704023705708645">Capital de risc</translation> @@ -1455,6 +1458,7 @@ <translation id="3812398568375898177">Aquesta és una actualització crítica que millora el rendiment de les aplicacions d'Android a ChromeOS.</translation> <translation id="3815434930383843058">8 x 12 polzades</translation> <translation id="3816482573645936981">Valor (substituït)</translation> +<translation id="382115839591654906">CVC per a <ph name="CARD_NAME" /></translation> <translation id="3823019343150397277">IBAN</translation> <translation id="3823402221513322552">El teu navegador està gestionat per <ph name="BROWSER_DOMAIN" /> i el teu perfil està gestionat per <ph name="PROFILE_DOMAIN" /></translation> <translation id="382518646247711829">Si feu servir un servidor intermediari...</translation> @@ -1816,7 +1820,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Estàs utilitzant el bloqueig de pantalla per emplenar contrasenyes</translation> <translation id="4558551763791394412">Desactiva les extensions</translation> -<translation id="456043042661026303">S'estan comprovant de manera segura les teves dades de pagament</translation> <translation id="4566017918361049074">Activitats a l'aire lliure</translation> <translation id="4567686777917670400">L'administrador pot modificar la configuració del navegador de manera remota. És possible que l'activitat d'aquest dispositiu també es gestioni fora de Chromium. <ph name="BEGIN_LINK" />Més informació<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Verificat</translation> @@ -2663,7 +2666,6 @@ <translation id="6272088941196661550">Reprèn el recorregut per veure activitat rellevant a l'historial de Chrome</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">Premeu |<ph name="ACCELERATOR" />| per veure el cursor</translation> -<translation id="628016388715774955">S'ha seleccionat l'opció d'emplenar l'adreça completa</translation> <translation id="6280223929691119688">No es pot entregar a aquesta adreça. Selecciona'n una altra.</translation> <translation id="6284292079994426700">26 x 38 polzades</translation> <translation id="6284517535531159884">Tipus d'origen de les variacions</translation> @@ -2935,7 +2937,6 @@ <translation id="6807791860691150411">Estudis</translation> <translation id="681021252041861472">Camp obligatori</translation> <translation id="6810899417690483278">Identificador de personalització</translation> -<translation id="681459028290894216">Emplena l'adreça completa</translation> <translation id="6816109178681043245">Productes esportius</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">ports en sèrie</translation> @@ -3206,6 +3207,7 @@ <translation id="7341357280245177602">Vehicles de segona mà</translation> <translation id="7346048084945669753">Està afiliat:</translation> <translation id="7346062987309535530">Estris per menjar</translation> +<translation id="7346081071264046066">"Respon afirmativament a aquesta invitació de casament amb entusiasme"</translation> <translation id="7352651011704765696">S'ha produït un error</translation> <translation id="7353601530677266744">Línia d'ordres</translation> <translation id="7354880545102894991">Viatges a preus baixos i d'última hora</translation>
diff --git a/components/strings/components_strings_cs.xtb b/components/strings/components_strings_cs.xtb index 293293c8..3f4b0f7 100644 --- a/components/strings/components_strings_cs.xtb +++ b/components/strings/components_strings_cs.xtb
@@ -465,6 +465,7 @@ <translation id="1828959155404624835">Půjčení auta</translation> <translation id="1834321415901700177">Tento web obsahuje škodlivé programy</translation> <translation id="1838374766361614909">Vymazat vyhledávání</translation> +<translation id="1839331950812095887">pár slov, která shrnují vaše myšlenky</translation> <translation id="1839551713262164453">Ověření hodnot zásad selhalo s chybami</translation> <translation id="1842969606798536927">Zaplatit</translation> <translation id="1846432862466000825">Plast (archivační)</translation> @@ -517,6 +518,8 @@ <translation id="1956486093533522234">Najít, zabezpečit nebo vymazat zařízení</translation> <translation id="1958218078413065209">Vaše nejvyšší skóre je <ph name="SCORE" />.</translation> <translation id="1959001866257244765">Pomozte se zlepšováním bezpečnosti na webu tím, že do Googlu budete odesílat <ph name="BEGIN_WHITEPAPER_LINK" />adresy URL některých navštívených stránek, omezené informace o systému a část obsahu stránek<ph name="END_WHITEPAPER_LINK" />. <ph name="BEGIN_PRIVACY_PAGE_LINK" />Zásady ochrany soukromí<ph name="END_PRIVACY_PAGE_LINK" /></translation> +<translation id="1959445535228047762">Váš text a obsah stránky se odesílají do Googlu a mohou být použity ke zlepšování této funkce. + <ph name="BEGIN_LINK" />Další informace<ph name="END_LINK" /></translation> <translation id="1962204205936693436">Záložky domény <ph name="DOMAIN" /></translation> <translation id="196752089528718902">K webům se obvykle připojujete zabezpečeně, ale tentokrát Chrome zabezpečené připojení použít nemohl. Je možné, že se nějaký útočník pokouší sledovat nebo upravovat vaše připojení k síti. <ph name="BEGIN_LEARN_MORE_LINK" />Další informace<ph name="END_LEARN_MORE_LINK" /></translation> <translation id="1973335181906896915">Chyba serializace</translation> @@ -696,6 +699,7 @@ <translation id="2293443924986248631">Když je tato možnost zapnutá, weby vás na internetu nemohou sledovat pomocí souborů cookie. Některé weby mohou přestat fungovat.</translation> <translation id="2295831393422400053">Pokud chcete používat funkci Pomozte mi s psaním, zapněte možnost Zlepšit vyhledávání a procházení</translation> <translation id="2300306941146563769">Nenahráno</translation> +<translation id="2301098101308036335">Které weby jsou navštěvovány a kdy.</translation> <translation id="230286397113210245">Tlačítko Otevřít anonymní okno, aktivací otevřete nové anonymní okno, abyste mohli prohlížet v soukromí</translation> <translation id="2312234273148520048">Dochucovadla a dresinky</translation> <translation id="2316087952091171402">Méně než <ph name="UPPER_ESTIMATE" />. Je možné, že se některé weby při příští návštěvě budou načítat pomaleji.</translation> @@ -720,6 +724,7 @@ <translation id="2354430244986887761">Bezpečné prohlížení Google na webu <ph name="SITE" /> nedávno <ph name="BEGIN_LINK" />nalezlo škodlivé aplikace<ph name="END_LINK" />.</translation> <translation id="2355395290879513365">Útočníci mohou vidět obrázky, které si na tomto webu prohlížíte, a oklamat vás tím, že tyto obrázky upraví.</translation> <translation id="2356070529366658676">Zeptat se</translation> +<translation id="2356926036049612643">Optimalizátor V8</translation> <translation id="2357481397660644965">Vaše zařízení spravuje doména <ph name="DEVICE_MANAGER" /> a váš účet spravuje doména <ph name="ACCOUNT_MANAGER" />.</translation> <translation id="2359629602545592467">Několik</translation> <translation id="2359808026110333948">Pokračovat</translation> @@ -1358,6 +1363,7 @@ <translation id="3655670868607891010">Pokud se vám tato stránka zobrazuje často, zkuste využít tyto <ph name="HELP_LINK" />.</translation> <translation id="365641980390710834">Oblečení pro volný čas</translation> <translation id="3658742229777143148">Verze</translation> +<translation id="3659521826520353662">Které weby definované administrátorem jsou navštěvovány a kdy: <ph name="ALLOWLISTED_WEBSITES" /></translation> <translation id="3664782872746246217">Klíčová slova:</translation> <translation id="3665100783276035932">Většina webů by měla fungovat podle očekávání</translation> <translation id="3667704023705708645">Rizikový kapitál</translation> @@ -1448,6 +1454,7 @@ <translation id="3812398568375898177">Toto je kritická aktualizace, která zlepšuje výkon aplikací pro Android v systému ChromeOS.</translation> <translation id="3815434930383843058">8 × 12″</translation> <translation id="3816482573645936981">Hodnota (nahrazena)</translation> +<translation id="382115839591654906">Kód CVC karty <ph name="CARD_NAME" /></translation> <translation id="3823019343150397277">IBAN</translation> <translation id="3823402221513322552">Váš prohlížeč spravuje doména <ph name="BROWSER_DOMAIN" /> a váš profil spravuje doména <ph name="PROFILE_DOMAIN" /></translation> <translation id="382518646247711829">Pokud používáte proxy server...</translation> @@ -1809,7 +1816,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">K vyplňování hesel používáte zámek obrazovky</translation> <translation id="4558551763791394412">Zkuste zakázat rozšíření.</translation> -<translation id="456043042661026303">Bezpečná kontrola vašich platebních údajů</translation> <translation id="4566017918361049074">Příroda</translation> <translation id="4567686777917670400">Administrátor může nastavení prohlížeče vzdáleně změnit. Aktivita na tomto zařízení může být spravována také mimo Chromium. <ph name="BEGIN_LINK" />Další informace<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Ověřeno</translation> @@ -2655,7 +2661,6 @@ <translation id="6272088941196661550">Obnovením cesty zobrazíte příslušnou aktivitu v historii Chromu</translation> <translation id="6272383483618007430">Aktualizace Google</translation> <translation id="6279183038361895380">Kurzor zobrazíte stisknutím klávesy |<ph name="ACCELERATOR" />|</translation> -<translation id="628016388715774955">Byla vybrána možnost Vyplnit celou adresu</translation> <translation id="6280223929691119688">Doručení na tuto adresu není možné. Vyberte jinou adresu.</translation> <translation id="6284292079994426700">26 × 38 palců</translation> <translation id="6284517535531159884">Typ zdroje variant</translation> @@ -2927,7 +2932,6 @@ <translation id="6807791860691150411">Vzdělání</translation> <translation id="681021252041861472">Povinné pole</translation> <translation id="6810899417690483278">ID přizpůsobení</translation> -<translation id="681459028290894216">Vyplnit celou adresu</translation> <translation id="6816109178681043245">Sportovní potřeby</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">sériové porty</translation> @@ -3197,6 +3201,7 @@ <translation id="7341357280245177602">Ojetá vozidla</translation> <translation id="7346048084945669753">Je přidružený:</translation> <translation id="7346062987309535530">Stolní nádobí</translation> +<translation id="7346081071264046066">„napiš nadšenou kladnou odpověď na tuto svatební pozvánku“</translation> <translation id="7352651011704765696">Něco se pokazilo</translation> <translation id="7353601530677266744">Příkazový řádek</translation> <translation id="7354880545102894991">Nízkonákladové cestování a cestování na poslední chvíli</translation>
diff --git a/components/strings/components_strings_cy.xtb b/components/strings/components_strings_cy.xtb index 7fd1cdf..29ddc8c 100644 --- a/components/strings/components_strings_cy.xtb +++ b/components/strings/components_strings_cy.xtb
@@ -1813,7 +1813,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Rydych chi'n defnyddio'ch clo sgrin ar gyfer llenwi cyfrineiriau</translation> <translation id="4558551763791394412">Rhowch gynnig ar analluogi'ch estyniadau.</translation> -<translation id="456043042661026303">Yn gwirio'ch manylion talu yn ddiogel</translation> <translation id="4566017918361049074">Awyr agored</translation> <translation id="4567686777917670400">Gall eich gweinyddwr newid gosodiadau eich porwr o bell. Gellir rheoli gweithgarwch ar y ddyfais hon y tu allan i Chromium hefyd. <ph name="BEGIN_LINK" />Dysgu rhagor<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Wedi'i ddilysu</translation> @@ -2660,7 +2659,6 @@ <translation id="6272088941196661550">Parhewch â'ch taith i weld gweithgarwch perthnasol yn eich hanes Chrome</translation> <translation id="6272383483618007430">Diweddariad Google</translation> <translation id="6279183038361895380">Pwyswch |<ph name="ACCELERATOR" />| i ddangos eich cyrchwr</translation> -<translation id="628016388715774955">Dewiswyd yr opsiwn llenwi cyfeiriad llawn</translation> <translation id="6280223929691119688">Methu ag anfon i'r cyfeiriad hwn. Dewiswch gyfeiriad gwahanol.</translation> <translation id="6284292079994426700">26 x 38 modfedd</translation> <translation id="6284517535531159884">Math o Hedyn Amrywiadau</translation> @@ -2932,7 +2930,6 @@ <translation id="6807791860691150411">Addysg</translation> <translation id="681021252041861472">Maes Gofynnol</translation> <translation id="6810899417690483278">Dull adnabod Personoleiddio</translation> -<translation id="681459028290894216">Llenwi cyfeiriad llawn</translation> <translation id="6816109178681043245">Nwyddau Chwaraeon</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">pyrth cyfresol</translation>
diff --git a/components/strings/components_strings_da.xtb b/components/strings/components_strings_da.xtb index eb3c1e9..22dd044 100644 --- a/components/strings/components_strings_da.xtb +++ b/components/strings/components_strings_da.xtb
@@ -1813,7 +1813,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Du bruger din skærmlås til at udfylde adgangskoder</translation> <translation id="4558551763791394412">Prøv at deaktivere dine udvidelser.</translation> -<translation id="456043042661026303">Dine betalingsoplysninger tjekkes på sikker vis</translation> <translation id="4566017918361049074">Udendørsaktiviteter</translation> <translation id="4567686777917670400">Din administrator kan ændre konfigurationen af din browser via fjernadgang. Aktivitet på denne enhed administreres muligvis også uden for Chromium. <ph name="BEGIN_LINK" />Få flere oplysninger<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Godkendt</translation> @@ -2660,7 +2659,6 @@ <translation id="6272088941196661550">Genoptag din søgning for at se relevant aktivitet i din Chrome-historik</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">Tryk på |<ph name="ACCELERATOR" />| at se markøren</translation> -<translation id="628016388715774955">Valgmuligheden for udfyldelse af hele adressen blev valgt</translation> <translation id="6280223929691119688">Der kan ikke leveres til denne adresse. Vælg en anden adresse.</translation> <translation id="6284292079994426700">26 x 38 tommer</translation> <translation id="6284517535531159884">Varianter af seedtype</translation> @@ -2932,7 +2930,6 @@ <translation id="6807791860691150411">Uddannelse</translation> <translation id="681021252041861472">Påkrævet</translation> <translation id="6810899417690483278">Tilpasnings-id</translation> -<translation id="681459028290894216">Udfyld hele adressen</translation> <translation id="6816109178681043245">Sportsudstyr</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">serieporte</translation>
diff --git a/components/strings/components_strings_de.xtb b/components/strings/components_strings_de.xtb index 56007fa2..3f8ebb8a 100644 --- a/components/strings/components_strings_de.xtb +++ b/components/strings/components_strings_de.xtb
@@ -1818,7 +1818,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Du verwendest die Displaysperre zum Ausfüllen von Passwörtern</translation> <translation id="4558551763791394412">Deaktiviere deine Erweiterungen.</translation> -<translation id="456043042661026303">Zahlungsdetails werden auf sichere Weise geprüft</translation> <translation id="4566017918361049074">Outdoor</translation> <translation id="4567686777917670400">Dein Administrator kann die Browsereinstellungen per Remotezugriff ändern. Aktivitäten auf diesem Gerät können auch außerhalb von Chromium verwaltet werden. <ph name="BEGIN_LINK" />Weitere Informationen<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Bestätigt</translation> @@ -2665,7 +2664,6 @@ <translation id="6272088941196661550">Du kannst weiter stöbern, um relevante Aktivitäten in deinem Chrome-Verlauf zu sehen</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">Zum Einblenden des Cursors |<ph name="ACCELERATOR" />| drücken</translation> -<translation id="628016388715774955">Die Option „Vollständige Adresse ausfüllen“ wurde ausgewählt</translation> <translation id="6280223929691119688">Die Lieferadresse wird nicht unterstützt. Bitte wähle eine andere Adresse aus.</translation> <translation id="6284292079994426700">26 x 38 Zoll</translation> <translation id="6284517535531159884">Quelltyp der Varianten</translation> @@ -2937,7 +2935,6 @@ <translation id="6807791860691150411">Bildung</translation> <translation id="681021252041861472">Pflichtfeld</translation> <translation id="6810899417690483278">Personalisierungs-ID</translation> -<translation id="681459028290894216">Vollständige Adresse ausfüllen</translation> <translation id="6816109178681043245">Sportartikel</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">Serielle Schnittstellen</translation>
diff --git a/components/strings/components_strings_el.xtb b/components/strings/components_strings_el.xtb index 2e45eaf..2c4258d 100644 --- a/components/strings/components_strings_el.xtb +++ b/components/strings/components_strings_el.xtb
@@ -1814,7 +1814,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Χρησιμοποιείτε το κλείδωμα οθόνης για τη συμπλήρωση κωδικών πρόσβασης</translation> <translation id="4558551763791394412">Δοκιμάστε να απενεργοποιήσετε τις επεκτάσεις σας.</translation> -<translation id="456043042661026303">Ασφαλής έλεγχος των στοιχείων πληρωμής σας</translation> <translation id="4566017918361049074">Δραστηριότητες σε εξωτερικούς χώρους</translation> <translation id="4567686777917670400">Ο διαχειριστής σας μπορεί να αλλάξει τη ρύθμιση του προγράμματος περιήγησής σας απομακρυσμένα. Η διαχείριση της δραστηριότητας σε αυτήν τη συσκευή μπορεί επίσης να πραγματοποιηθεί εκτός Chromium. <ph name="BEGIN_LINK" />Μάθετε περισσότερα<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Επαληθεύτηκε</translation> @@ -2661,7 +2660,6 @@ <translation id="6272088941196661550">Συνεχίστε τη διαδρομή σας για προβολή σχετικής δραστηριότητας στο Ιστορικό Chrome</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">Πιέστε |<ph name="ACCELERATOR" />| για να εμφανιστεί ο δρομέας</translation> -<translation id="628016388715774955">Ορίστηκε η επιλογή για τη συμπλήρωση της πλήρους διεύθυνσης</translation> <translation id="6280223929691119688">Δεν είναι δυνατή η παράδοση σε αυτήν τη διεύθυνση. Επιλέξτε μια άλλη διεύθυνση.</translation> <translation id="6284292079994426700">26 x 38 ίντσες</translation> <translation id="6284517535531159884">Τύπος αρχικών θέσεων παραλλαγών</translation> @@ -2933,7 +2931,6 @@ <translation id="6807791860691150411">Εκπαίδευση</translation> <translation id="681021252041861472">Υποχρεωτικό πεδίο</translation> <translation id="6810899417690483278">Αναγνωριστικό προσαρμογής</translation> -<translation id="681459028290894216">Συμπλήρωση πλήρους διεύθυνσης</translation> <translation id="6816109178681043245">Αθλητικά είδη</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">σειριακές θύρες</translation>
diff --git a/components/strings/components_strings_en-GB.xtb b/components/strings/components_strings_en-GB.xtb index 9ab1892..dacb840dd 100644 --- a/components/strings/components_strings_en-GB.xtb +++ b/components/strings/components_strings_en-GB.xtb
@@ -465,6 +465,7 @@ <translation id="1828959155404624835">Car rentals</translation> <translation id="1834321415901700177">This site contains harmful programs</translation> <translation id="1838374766361614909">Clear search</translation> +<translation id="1839331950812095887">a few words that sum up your thoughts</translation> <translation id="1839551713262164453">Validation of policy values has failed with errors</translation> <translation id="1842969606798536927">Pay</translation> <translation id="1846432862466000825">Plastic (archival)</translation> @@ -517,6 +518,8 @@ <translation id="1956486093533522234">Find, secure or erase your device</translation> <translation id="1958218078413065209">Your highest score is <ph name="SCORE" />.</translation> <translation id="1959001866257244765">Help improve security on the web for everyone by sending <ph name="BEGIN_WHITEPAPER_LINK" />URLs of some pages that you visit, limited system information, and some page content<ph name="END_WHITEPAPER_LINK" /> to Google. <ph name="BEGIN_PRIVACY_PAGE_LINK" />Privacy policy<ph name="END_PRIVACY_PAGE_LINK" /></translation> +<translation id="1959445535228047762">Your text and page content are sent to Google and may be used to improve this feature. + <ph name="BEGIN_LINK" />Learn more<ph name="END_LINK" /></translation> <translation id="1962204205936693436"><ph name="DOMAIN" /> Bookmarks</translation> <translation id="196752089528718902">You usually connect to sites securely, but Chrome couldn't use a secure connection this time. An attacker might be trying to eavesdrop or modify your network connection. <ph name="BEGIN_LEARN_MORE_LINK" />Learn more<ph name="END_LEARN_MORE_LINK" /></translation> <translation id="1973335181906896915">Serialisation error</translation> @@ -696,6 +699,7 @@ <translation id="2293443924986248631">When on, sites can't use cookies that track you across the web. Features on some sites may break.</translation> <translation id="2295831393422400053">Turn on the Make searches and browsing better setting to use Help me write</translation> <translation id="2300306941146563769">Not uploaded</translation> +<translation id="2301098101308036335">Which websites are visited and when.</translation> <translation id="230286397113210245">Open Incognito window button, activate to open a new Incognito window to browse privately</translation> <translation id="2312234273148520048">Condiments and Dressings</translation> <translation id="2316087952091171402">Less than <ph name="UPPER_ESTIMATE" />. Some sites may load more slowly on your next visit.</translation> @@ -720,6 +724,7 @@ <translation id="2354430244986887761">Google Safe Browsing recently <ph name="BEGIN_LINK" />found harmful apps<ph name="END_LINK" /> on <ph name="SITE" />.</translation> <translation id="2355395290879513365">Attackers might be able to see the images that you’re looking at on this site and trick you by modifying them.</translation> <translation id="2356070529366658676">Ask</translation> +<translation id="2356926036049612643">V8 optimiser</translation> <translation id="2357481397660644965">Your device is managed by <ph name="DEVICE_MANAGER" /> and your account is managed by <ph name="ACCOUNT_MANAGER" />.</translation> <translation id="2359629602545592467">Multiple</translation> <translation id="2359808026110333948">Continue</translation> @@ -1362,6 +1367,7 @@ <translation id="3655670868607891010">If you're seeing this frequently, try these <ph name="HELP_LINK" />.</translation> <translation id="365641980390710834">Casual Apparel</translation> <translation id="3658742229777143148">Revision</translation> +<translation id="3659521826520353662">Which administrator-defined websites are visited and when: <ph name="ALLOWLISTED_WEBSITES" /></translation> <translation id="3664782872746246217">Keywords:</translation> <translation id="3665100783276035932">Most sites should work as expected</translation> <translation id="3667704023705708645">Venture capital</translation> @@ -1452,6 +1458,7 @@ <translation id="3812398568375898177">This is a critical update that improves performance of Android apps on ChromeOS.</translation> <translation id="3815434930383843058">8 in x 12 in</translation> <translation id="3816482573645936981">Value (superseded)</translation> +<translation id="382115839591654906">CVC for <ph name="CARD_NAME" /></translation> <translation id="3823019343150397277">IBAN</translation> <translation id="3823402221513322552">Your browser is managed by <ph name="BROWSER_DOMAIN" /> and your profile is managed by <ph name="PROFILE_DOMAIN" /></translation> <translation id="382518646247711829">If you use a proxy server...</translation> @@ -1813,7 +1820,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">You're using your screen lock for filling in passwords</translation> <translation id="4558551763791394412">Try disabling your extensions.</translation> -<translation id="456043042661026303">Securely checking your payment details</translation> <translation id="4566017918361049074">Outdoors</translation> <translation id="4567686777917670400">Your administrator can change your browser setup remotely. Activity on this device may also be managed outside of Chromium. <ph name="BEGIN_LINK" />Learn more<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Verified</translation> @@ -2660,7 +2666,6 @@ <translation id="6272088941196661550">Resume your journey to see relevant activity in your Chrome history</translation> <translation id="6272383483618007430">Google update</translation> <translation id="6279183038361895380">Press |<ph name="ACCELERATOR" />| to show your cursor</translation> -<translation id="628016388715774955">The fill full address option was selected</translation> <translation id="6280223929691119688">Can’t deliver to this address. Select a different address.</translation> <translation id="6284292079994426700">26 in x 38 in</translation> <translation id="6284517535531159884">Variations Seed Type</translation> @@ -2932,7 +2937,6 @@ <translation id="6807791860691150411">Education</translation> <translation id="681021252041861472">Required Field</translation> <translation id="6810899417690483278">Customisation ID</translation> -<translation id="681459028290894216">Fill full address</translation> <translation id="6816109178681043245">Sporting Goods</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">serial ports</translation> @@ -3203,6 +3207,7 @@ <translation id="7341357280245177602">Used vehicles</translation> <translation id="7346048084945669753">Is affiliated:</translation> <translation id="7346062987309535530">Tableware</translation> +<translation id="7346081071264046066">'reply yes to this wedding invite with excitement'</translation> <translation id="7352651011704765696">Something went wrong</translation> <translation id="7353601530677266744">Command Line</translation> <translation id="7354880545102894991">Low cost and last minute travel</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb index 7543d20..7b09d26 100644 --- a/components/strings/components_strings_es-419.xtb +++ b/components/strings/components_strings_es-419.xtb
@@ -1814,7 +1814,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Estás usando tu bloqueo de pantalla para completar contraseñas</translation> <translation id="4558551763791394412">Intenta inhabilitar tus extensiones.</translation> -<translation id="456043042661026303">Cómo verificar tus detalles del pago de forma segura</translation> <translation id="4566017918361049074">Al aire libre</translation> <translation id="4567686777917670400">El administrador puede cambiar la configuración de tu navegador de forma remota. Es posible que la actividad correspondiente a este dispositivo también se administre fuera de Chromium. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Verificada</translation> @@ -2661,7 +2660,6 @@ <translation id="6272088941196661550">Reanuda la exploración para ver actividad pertinente en tu historial de Chrome.</translation> <translation id="6272383483618007430">Google Actualización</translation> <translation id="6279183038361895380">Presiona |<ph name="ACCELERATOR" />| para mostrar tu cursor</translation> -<translation id="628016388715774955">Se seleccionó la opción para completar toda la dirección</translation> <translation id="6280223929691119688">La dirección de envío no es válida. Selecciona una dirección diferente.</translation> <translation id="6284292079994426700">66.04 × 96.52 cm</translation> <translation id="6284517535531159884">Tipo de origen de las variaciones</translation> @@ -2933,7 +2931,6 @@ <translation id="6807791860691150411">Educación</translation> <translation id="681021252041861472">Campo obligatorio</translation> <translation id="6810899417690483278">ID de personalización</translation> -<translation id="681459028290894216">Completar toda la dirección</translation> <translation id="6816109178681043245">Productos deportivos</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">puertos en serie</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb index b11608fe9..cb972aa 100644 --- a/components/strings/components_strings_es.xtb +++ b/components/strings/components_strings_es.xtb
@@ -1813,7 +1813,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Estás usando el bloqueo de pantalla para rellenar contraseñas</translation> <translation id="4558551763791394412">Inhabilita las extensiones.</translation> -<translation id="456043042661026303">Comprobando los detalles del pago de forma segura</translation> <translation id="4566017918361049074">Exterior</translation> <translation id="4567686777917670400">El administrador puede cambiar la configuración del navegador de forma remota. Es posible que la actividad de este dispositivo también se gestione fuera de Chromium. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Verificada</translation> @@ -2660,7 +2659,6 @@ <translation id="6272088941196661550">Reanuda tu recorrido para ver la actividad relevante de tu historial de Chrome</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">Pulsa |<ph name="ACCELERATOR" />| para mostrar el cursor</translation> -<translation id="628016388715774955">Se ha seleccionado la opción para rellenar la dirección completa</translation> <translation id="6280223929691119688">Los pedidos no se pueden entregar en esta dirección. Selecciona otra.</translation> <translation id="6284292079994426700">26x38 pulgadas</translation> <translation id="6284517535531159884">Tipo de origen de las variaciones</translation> @@ -2932,7 +2930,6 @@ <translation id="6807791860691150411">Educación</translation> <translation id="681021252041861472">Campo obligatorio</translation> <translation id="6810899417690483278">ID de personalización</translation> -<translation id="681459028290894216">Rellenar dirección completa</translation> <translation id="6816109178681043245">Tiendas deportivas</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">puertos serie</translation>
diff --git a/components/strings/components_strings_et.xtb b/components/strings/components_strings_et.xtb index 3f2bbf79..fa645595 100644 --- a/components/strings/components_strings_et.xtb +++ b/components/strings/components_strings_et.xtb
@@ -1813,7 +1813,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Kasutate oma ekraanilukku paroolide sisestamiseks</translation> <translation id="4558551763791394412">Keelake laiendused.</translation> -<translation id="456043042661026303">Makseteabe turvaliselt kontrollimine</translation> <translation id="4566017918361049074">Vabaõhutegevused</translation> <translation id="4567686777917670400">Teie administraator saab brauseri seadistust kaugühenduse kaudu muuta. Selle seadme tegevusi võidakse hallata ka väljaspool Chromiumi. <ph name="BEGIN_LINK" />Lisateave<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Kinnitatud</translation> @@ -2660,7 +2659,6 @@ <translation id="6272088941196661550">Jätkake oma teekonda, et näha Chrome'i ajaloos asjakohaseid tegevusi</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">Kursori kuvamiseks vajutage klahvi |<ph name="ACCELERATOR" />|</translation> -<translation id="628016388715774955">Tehti valik Sisestage täielik aadress</translation> <translation id="6280223929691119688">Sellele aadressile ei saa kaupa kohale toimetada. Valige mõni teine aadress.</translation> <translation id="6284292079994426700">26 × 38 tolli</translation> <translation id="6284517535531159884">Variantide algandmete tüüp</translation> @@ -2932,7 +2930,6 @@ <translation id="6807791860691150411">Haridus</translation> <translation id="681021252041861472">Kohustuslik väli</translation> <translation id="6810899417690483278">Kohandamise ID</translation> -<translation id="681459028290894216">Sisestage täielik aadress</translation> <translation id="6816109178681043245">Spordikaubad</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">jadapordid</translation>
diff --git a/components/strings/components_strings_eu.xtb b/components/strings/components_strings_eu.xtb index 145a1b0..27672f0 100644 --- a/components/strings/components_strings_eu.xtb +++ b/components/strings/components_strings_eu.xtb
@@ -1809,7 +1809,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Pantailaren blokeoa darabilzu pasahitzen eremuak betetzeko</translation> <translation id="4558551763791394412">Saiatu luzapenak desgaituta.</translation> -<translation id="456043042661026303">Ordainketaren xehetasunak modu seguruan egiaztatzen</translation> <translation id="4566017918361049074">Aire zabaleko jarduerak</translation> <translation id="4567686777917670400">Administratzaileak urrunetik alda dezake arakatzailearen konfigurazioa. Baliteke gailu honetako jarduerak Chromium-etik kanpo ere kudeatzea. <ph name="BEGIN_LINK" />Lortu informazio gehiago<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Egiaztatuta</translation> @@ -2655,7 +2654,6 @@ <translation id="6272088941196661550">Berrekin bilaketa-ibilbideari Chrome-ko historian dauden erlazionatutako jarduerak ikusteko</translation> <translation id="6272383483618007430">Google-ren eguneratzea</translation> <translation id="6279183038361895380">Kurtsorea ikusteko, sakatu |<ph name="ACCELERATOR" />|</translation> -<translation id="628016388715774955">Helbide osoa betetzeko aukera hautatu da</translation> <translation id="6280223929691119688">Ezin da entregatu helbide horretan. Hautatu beste helbide bat.</translation> <translation id="6284292079994426700">66,04 × 96,52 cm (26 × 38 in)</translation> <translation id="6284517535531159884">Aldaeren iturburu mota</translation> @@ -2927,7 +2925,6 @@ <translation id="6807791860691150411">Hezkuntza</translation> <translation id="681021252041861472">Nahitaezko eremua</translation> <translation id="6810899417690483278">Pertsonalizazio IDa</translation> -<translation id="681459028290894216">Bete helbide osoa</translation> <translation id="6816109178681043245">Kirol-salgaiak</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">serie-atakak</translation>
diff --git a/components/strings/components_strings_fa.xtb b/components/strings/components_strings_fa.xtb index 7e853a12..d5f9b9c 100644 --- a/components/strings/components_strings_fa.xtb +++ b/components/strings/components_strings_fa.xtb
@@ -1816,7 +1816,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">از قفل صفحه برای تکمیل گذرواژهها استفاده میکنید</translation> <translation id="4558551763791394412">افزونهها را غیرفعال کنید.</translation> -<translation id="456043042661026303">درحال بررسی ایمن جزئیات پرداخت شما</translation> <translation id="4566017918361049074">فعالیتهای فضای باز</translation> <translation id="4567686777917670400">سرپرستتان میتواند تنظیمات مرورگرتان را ازراهدور تغییر دهد. ممکن است فعالیتهای انجامشده در این دستگاه خارج از Chromium هم مدیریت شود. <ph name="BEGIN_LINK" />بیشتر بدانید<ph name="END_LINK" /></translation> <translation id="4569155249847375786">تأیید شده</translation> @@ -2663,7 +2662,6 @@ <translation id="6272088941196661550">سفر جستجو را ازسر بگیرید تا فعالیتهای مرتبط را در سابقه Chrome ببینید</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">برای نمایش نشانگر |<ph name="ACCELERATOR" />| را فشار دهید</translation> -<translation id="628016388715774955">گزینه تکمیل نشانی کامل انتخاب شد</translation> <translation id="6280223929691119688">تحویل به این نشانی ممکن نیست. نشانی دیگری را انتخاب کنید.</translation> <translation id="6284292079994426700">۳۸ × ۲۶ اینچ</translation> <translation id="6284517535531159884">نوع پیگردی گونهها</translation> @@ -2935,7 +2933,6 @@ <translation id="6807791860691150411">آموزش</translation> <translation id="681021252041861472">فیلد ضروری</translation> <translation id="6810899417690483278">شناسه سفارشیسازی</translation> -<translation id="681459028290894216">تکمیل نشانی کامل</translation> <translation id="6816109178681043245">لوازم ورزشی</translation> <translation id="6817217109584391709">جاوا اسکریپت</translation> <translation id="6820143000046097424">درگاههای سریال</translation>
diff --git a/components/strings/components_strings_fi.xtb b/components/strings/components_strings_fi.xtb index ab55ab66..c493d1d 100644 --- a/components/strings/components_strings_fi.xtb +++ b/components/strings/components_strings_fi.xtb
@@ -518,6 +518,8 @@ <translation id="1956486093533522234">Etsi, suojaa tai tyhjennä laitteesi</translation> <translation id="1958218078413065209">Parhaat pisteesi ovat <ph name="SCORE" />.</translation> <translation id="1959001866257244765">Auta parantamaan kaikkien verkkoturvallisuutta lähettämällä Googlelle <ph name="BEGIN_WHITEPAPER_LINK" />joidenkin avaamiesi sivujen URL-osoitteita, rajallisia järjestelmätietoja ja osia sivujen sisällöstä<ph name="END_WHITEPAPER_LINK" />. <ph name="BEGIN_PRIVACY_PAGE_LINK" />Tietosuojakäytäntö<ph name="END_PRIVACY_PAGE_LINK" /></translation> +<translation id="1959445535228047762">Tekstisi ja sivun sisältö lähetetään Googlelle, ja niitä voidaan käyttää tämän ominaisuuden kehittämiseen. + <ph name="BEGIN_LINK" />Lue lisää<ph name="END_LINK" /></translation> <translation id="1962204205936693436">Verkkotunnuksen <ph name="DOMAIN" /> kirjanmerkit</translation> <translation id="196752089528718902">Muodostat yleensä yhteyden sivustoihin suojatusti, mutta Chrome ei voinut tällä kertaa käyttää suojattua yhteyttä. Hyökkääjä saattaa yrittää salakuunnella tai muokata verkkoyhteyttäsi. <ph name="BEGIN_LEARN_MORE_LINK" />Lue lisää<ph name="END_LEARN_MORE_LINK" /></translation> <translation id="1973335181906896915">Sarjaesittämisen virhe</translation> @@ -722,6 +724,7 @@ <translation id="2354430244986887761">Google-selaussuoja <ph name="BEGIN_LINK" />löysi äskettäin haitallisia sovelluksia<ph name="END_LINK" /> sivustolta <ph name="SITE" />.</translation> <translation id="2355395290879513365">Hyökkääjät voivat mahdollisesti nähdä kuvat, joita katselet tällä sivustolla, ja huijata sinua muokkaamalla niitä.</translation> <translation id="2356070529366658676">Kysy</translation> +<translation id="2356926036049612643">V8-optimoija</translation> <translation id="2357481397660644965"><ph name="DEVICE_MANAGER" /> ylläpitää laitettasi ja <ph name="ACCOUNT_MANAGER" /> tiliäsi.</translation> <translation id="2359629602545592467">Useita</translation> <translation id="2359808026110333948">Jatka</translation> @@ -1818,7 +1821,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Käytät näytön lukituksen avaustapaa salasanojen täyttämiseen</translation> <translation id="4558551763791394412">Poista laajennukset käytöstä.</translation> -<translation id="456043042661026303">Maksutietoja tarkistetaan suojatusti</translation> <translation id="4566017918361049074">Ulkoilu</translation> <translation id="4567686777917670400">Järjestelmänvalvoja voi muuttaa selaimen määrityksiä etäyhteydellä. Toimintaa tällä laitteella saatetaan ylläpitää myös Chromiumin ulkopuolelta. <ph name="BEGIN_LINK" />Lue lisää<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Vahvistettu</translation> @@ -2665,7 +2667,6 @@ <translation id="6272088941196661550">Jatka toimintoa, niin näet oleelliset tapahtumat Chrome-historiassasi</translation> <translation id="6272383483618007430">Google-päivitys</translation> <translation id="6279183038361895380">Näytä kursori painamalla |<ph name="ACCELERATOR" />|.</translation> -<translation id="628016388715774955">Täytä koko osoite ‐vaihtoehto on valittu</translation> <translation id="6280223929691119688">Toimitus ei onnistu tähän osoitteeseen. Valitse eri osoite.</translation> <translation id="6284292079994426700">26 x 38 tuumaa</translation> <translation id="6284517535531159884">Muunnelmien lähdetyyppi</translation> @@ -2937,7 +2938,6 @@ <translation id="6807791860691150411">Koulutus</translation> <translation id="681021252041861472">Pakollinen kenttä</translation> <translation id="6810899417690483278">Muokkaustunnus</translation> -<translation id="681459028290894216">Täytä koko osoite</translation> <translation id="6816109178681043245">Urheiluvälineet</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">sarjaportit</translation>
diff --git a/components/strings/components_strings_fil.xtb b/components/strings/components_strings_fil.xtb index 769ff859..927b630 100644 --- a/components/strings/components_strings_fil.xtb +++ b/components/strings/components_strings_fil.xtb
@@ -1816,7 +1816,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Ginagamit mo ang iyong lock ng screen para sa paglalagay ng mga password</translation> <translation id="4558551763791394412">Subukang i-disable ang iyong mga extension.</translation> -<translation id="456043042661026303">Secure na sinusuri ang iyong mga detalye ng pagbabayad</translation> <translation id="4566017918361049074">Sa labas</translation> <translation id="4567686777917670400">Puwedeng baguhin ng iyong administrator ang setup ng browser mo sa remote na paraan. Puwede ring pamahalaan sa labas ng Chromium ang aktibidad sa device na ito. <ph name="BEGIN_LINK" />Matuto pa<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Na-verify</translation> @@ -2663,7 +2662,6 @@ <translation id="6272088941196661550">Ipagpatuloy ang iyong journey para makakita ng nauugnay na aktibidad sa history mo sa Chrome</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">Pindutin ang |<ph name="ACCELERATOR" />| upang ipakita ang iyong cursor</translation> -<translation id="628016388715774955">Napili ang opsyong punan ang buong address</translation> <translation id="6280223929691119688">Hindi maaaring maghatid sa address na ito. Pumili ng ibang address.</translation> <translation id="6284292079994426700">26 x 38 in</translation> <translation id="6284517535531159884">Uri ng Seed ng Mga Variation</translation> @@ -2935,7 +2933,6 @@ <translation id="6807791860691150411">Edukasyon</translation> <translation id="681021252041861472">Kinakailangang Field</translation> <translation id="6810899417690483278">Customization ID</translation> -<translation id="681459028290894216">Punan ang buong address</translation> <translation id="6816109178681043245">Mga Produktong Pang-sports</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">mga serial port</translation>
diff --git a/components/strings/components_strings_fr-CA.xtb b/components/strings/components_strings_fr-CA.xtb index b72d747..f06678cc 100644 --- a/components/strings/components_strings_fr-CA.xtb +++ b/components/strings/components_strings_fr-CA.xtb
@@ -1813,7 +1813,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Vous utilisez votre verrouillage d'écran pour remplir les mots de passe</translation> <translation id="4558551763791394412">Essayez de désactiver vos extensions.</translation> -<translation id="456043042661026303">Vérification sécurisée de vos détails du mode de paiement en cours…</translation> <translation id="4566017918361049074">Activités en plein air</translation> <translation id="4567686777917670400">Votre administrateur peut modifier la configuration de votre navigateur à distance. L'activité sur cet appareil peut aussi être gérée à l'extérieur de Chromium. <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Vérifié</translation> @@ -2660,7 +2659,6 @@ <translation id="6272088941196661550">Reprenez votre exploration pour consulter l'activité pertinente dans votre historique de Chrome</translation> <translation id="6272383483618007430">Mise à jour Google</translation> <translation id="6279183038361895380">Appuyez sur |<ph name="ACCELERATOR" />| pour afficher votre curseur</translation> -<translation id="628016388715774955">L'option Remplir l'adresse complète a été sélectionnée</translation> <translation id="6280223929691119688">Impossible d'effectuer une livraison à cette adresse. Sélectionnez une autre adresse.</translation> <translation id="6284292079994426700">26 po x 38 po</translation> <translation id="6284517535531159884">Type d'élément de référence des variantes</translation> @@ -2932,7 +2930,6 @@ <translation id="6807791860691150411">Éducation</translation> <translation id="681021252041861472">Champ obligatoire</translation> <translation id="6810899417690483278">Identifiant de personnalisation</translation> -<translation id="681459028290894216">Remplir l'adresse complète</translation> <translation id="6816109178681043245">Articles de sport</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">Ports série</translation>
diff --git a/components/strings/components_strings_fr.xtb b/components/strings/components_strings_fr.xtb index 6fdc3bf..4105266 100644 --- a/components/strings/components_strings_fr.xtb +++ b/components/strings/components_strings_fr.xtb
@@ -465,6 +465,7 @@ <translation id="1828959155404624835">Locations de voiture</translation> <translation id="1834321415901700177">Ce site contient des programmes dangereux</translation> <translation id="1838374766361614909">Effacer la recherche</translation> +<translation id="1839331950812095887">quelques mots ou plus qui résument votre pensée</translation> <translation id="1839551713262164453">Échec de la validation des valeurs de règle avec des erreurs</translation> <translation id="1842969606798536927">Paiement</translation> <translation id="1846432862466000825">Plastique (archive)</translation> @@ -696,6 +697,7 @@ <translation id="2293443924986248631">Lorsque cette option est activée, les sites ne peuvent pas utiliser de cookies pour suivre votre activité sur le Web. Les fonctionnalités de certains sites peuvent être bloquées.</translation> <translation id="2295831393422400053">Activez le paramètre "Améliorer les recherches et la navigation" pour utiliser M'aider à écrire</translation> <translation id="2300306941146563769">Non importé</translation> +<translation id="2301098101308036335">Quels sites Web sont consultés et à quel moment.</translation> <translation id="230286397113210245">Bouton "Ouvrir une fenêtre de navigation privée" à activer pour ouvrir une nouvelle fenêtre de navigation privée</translation> <translation id="2312234273148520048">Sauces et condiments</translation> <translation id="2316087952091171402">Moins de <ph name="UPPER_ESTIMATE" />. Le chargement de certains sites risque d'être plus lent lors de votre prochaine visite.</translation> @@ -1362,6 +1364,7 @@ <translation id="3655670868607891010">Si ce message s'affiche régulièrement, essayez ces <ph name="HELP_LINK" />.</translation> <translation id="365641980390710834">Vêtements confortables</translation> <translation id="3658742229777143148">Révision</translation> +<translation id="3659521826520353662">Historique de consultation des sites Web définis par l'administrateur : <ph name="ALLOWLISTED_WEBSITES" /></translation> <translation id="3664782872746246217">Mots-clés :</translation> <translation id="3665100783276035932">La plupart des sites devraient fonctionner comme prévu</translation> <translation id="3667704023705708645">Capital-risque</translation> @@ -1452,6 +1455,7 @@ <translation id="3812398568375898177">Il s'agit d'une mise à jour essentielle qui améliore les performances des applis Android sur Chrome OS.</translation> <translation id="3815434930383843058">8 x 12 pouces</translation> <translation id="3816482573645936981">Valeur (remplacée)</translation> +<translation id="382115839591654906">Code CVC de <ph name="CARD_NAME" /></translation> <translation id="3823019343150397277">IBAN</translation> <translation id="3823402221513322552">Votre navigateur est géré par <ph name="BROWSER_DOMAIN" />, et votre profil est géré par <ph name="PROFILE_DOMAIN" /></translation> <translation id="382518646247711829">Si vous utilisez un serveur proxy…</translation> @@ -1813,7 +1817,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Vous utilisez le verrouillage de l'écran pour la saisie des mots de passe</translation> <translation id="4558551763791394412">Essayez de désactiver les extensions.</translation> -<translation id="456043042661026303">Vérification sécurisée de vos détails de paiement…</translation> <translation id="4566017918361049074">Activités de plein air</translation> <translation id="4567686777917670400">Votre administrateur peut modifier à distance la configuration de votre navigateur. Il se peut que l'activité sur cet appareil soit gérée en dehors de Chromium. <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Validé</translation> @@ -2660,7 +2663,6 @@ <translation id="6272088941196661550">Reprenez votre parcours pour voir les activités pertinentes dans votre historique Chrome</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">Appuyez sur |<ph name="ACCELERATOR" />| pour afficher le curseur.</translation> -<translation id="628016388715774955">L'option "Indiquer l'adresse complète" a été sélectionnée</translation> <translation id="6280223929691119688">Impossible de livrer à cette adresse. Sélectionnez-en une autre.</translation> <translation id="6284292079994426700">26 x 38 pouces</translation> <translation id="6284517535531159884">Type de valeur source des variantes</translation> @@ -2932,7 +2934,6 @@ <translation id="6807791860691150411">Enseignement</translation> <translation id="681021252041861472">Champ obligatoire</translation> <translation id="6810899417690483278">ID de la personnalisation</translation> -<translation id="681459028290894216">Indiquer l'adresse complète</translation> <translation id="6816109178681043245">Articles de sport</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">ports série</translation> @@ -3204,6 +3205,7 @@ <translation id="7341357280245177602">Véhicules d'occasion</translation> <translation id="7346048084945669753">Affilié :</translation> <translation id="7346062987309535530">Vaisselle</translation> +<translation id="7346081071264046066">"accepte cette invitation à un mariage avec enthousiasme"</translation> <translation id="7352651011704765696">Un problème est survenu</translation> <translation id="7353601530677266744">Ligne de commande</translation> <translation id="7354880545102894991">Voyage économique et de dernière minute</translation>
diff --git a/components/strings/components_strings_gl.xtb b/components/strings/components_strings_gl.xtb index c60d89a..c1dd78d 100644 --- a/components/strings/components_strings_gl.xtb +++ b/components/strings/components_strings_gl.xtb
@@ -1813,7 +1813,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Estás usando o bloqueo de pantalla para completar contrasinais</translation> <translation id="4558551763791394412">Proba a desactivar as extensións.</translation> -<translation id="456043042661026303">Comprobando os detalles de pago de maneira segura</translation> <translation id="4566017918361049074">Aire libre</translation> <translation id="4567686777917670400">O teu administrador pode cambiar a configuración do navegador de forma remota. A actividade deste dispositivo tamén se pode xestionar fóra de Chromium. <ph name="BEGIN_LINK" />Máis información<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Verificada</translation> @@ -2660,7 +2659,6 @@ <translation id="6272088941196661550">Retomar o percorrido para ver a actividade relevante do teu historial de Chrome</translation> <translation id="6272383483618007430">Actualización de Google</translation> <translation id="6279183038361895380">Preme |<ph name="ACCELERATOR" />| para mostrar o cursor</translation> -<translation id="628016388715774955">Seleccionouse a opción de cubrir o enderezo completo</translation> <translation id="6280223929691119688">Non se pode realizar a entrega neste enderezo. Selecciona un diferente.</translation> <translation id="6284292079994426700">26 × 38 in</translation> <translation id="6284517535531159884">Tipo de orixe das variacións</translation> @@ -2932,7 +2930,6 @@ <translation id="6807791860691150411">Ensino</translation> <translation id="681021252041861472">Campo obrigatorio</translation> <translation id="6810899417690483278">ID de personalización</translation> -<translation id="681459028290894216">Cubrir enderezo completo</translation> <translation id="6816109178681043245">Material deportivo</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">portos de serie</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb index 98e8ab3..6b75b3dae 100644 --- a/components/strings/components_strings_gu.xtb +++ b/components/strings/components_strings_gu.xtb
@@ -1816,7 +1816,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">તમે પાસવર્ડ ભરવા માટે તમારા સ્ક્રીન લૉકનો ઉપયોગ કરી રહ્યાં છો</translation> <translation id="4558551763791394412">તમારા એક્સ્ટેન્શન્સને અક્ષમ કરવાનો પ્રયાસ કરો.</translation> -<translation id="456043042661026303">તમારી ચુકવણીની વિગતો સુરક્ષિત રીતે તપાસી રહ્યાં છીએ</translation> <translation id="4566017918361049074">આઉટડોર</translation> <translation id="4567686777917670400">તમારા વ્યવસ્થાપક તમારા બ્રાઉઝરનું સેટઅપ રિમોટલી બદલી શકે છે. આ ડિવાઇસ પરની પ્રવૃત્તિ Chromiumની બહારથી પણ મેનેજ કરી શકાય છે. <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" /></translation> <translation id="4569155249847375786">ચકાસેલ</translation> @@ -2663,7 +2662,6 @@ <translation id="6272088941196661550">તમારા Chrome ઇતિહાસમાં સંબંધિત પ્રવૃત્તિ જોવા માટે, તમારો પ્રવાસ ફરી શરૂ કરો</translation> <translation id="6272383483618007430">Google અપડેટ</translation> <translation id="6279183038361895380">તમારા કર્સરને બતાવવા માટે |<ph name="ACCELERATOR" />| દબાવો</translation> -<translation id="628016388715774955">'પૂરું સરનામું ભરો' વિકલ્પ પસંદ કરવામાં આવ્યો હતો</translation> <translation id="6280223929691119688">આ સરનામે વિતરણ કરી શકતા નથી. કોઈ ભિન્ન સરનામું પસંદ કરો.</translation> <translation id="6284292079994426700">26 x 38 ઇંચ</translation> <translation id="6284517535531159884">વૅરિએશન સીડનો પ્રકાર</translation> @@ -2935,7 +2933,6 @@ <translation id="6807791860691150411">શિક્ષણ</translation> <translation id="681021252041861472">ફરજિયાત</translation> <translation id="6810899417690483278">કસ્ટમાઇઝેશન ID</translation> -<translation id="681459028290894216">પૂરું સરનામું ભરો</translation> <translation id="6816109178681043245">રમતગમતના સાધનો</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">સીરિયલ પોર્ટ</translation>
diff --git a/components/strings/components_strings_hi.xtb b/components/strings/components_strings_hi.xtb index 51ee575..4ee5c61d 100644 --- a/components/strings/components_strings_hi.xtb +++ b/components/strings/components_strings_hi.xtb
@@ -42,6 +42,7 @@ <translation id="1062407476771304334">प्रतिस्थापित करें</translation> <translation id="1064054731605354900">A3x5</translation> <translation id="106701514854093668">डेस्कटॉप बुकमार्क</translation> +<translation id="1067029985695494416">सर्च इंजन के बारे में जानकारी</translation> <translation id="1068672505746868501"><ph name="SOURCE_LANGUAGE" /> भाषा के पेज का कभी भी अनुवाद न करें</translation> <translation id="1070333806075222467">मेटल (ग्लॉसी)</translation> <translation id="1070853536588271387">हाइब्रिड और मॉडिफ़ाई किए गए वाहन</translation> @@ -1812,7 +1813,6 @@ <translation id="455113658016510503">ए9</translation> <translation id="4556069465387849460">आपने पासवर्ड डालने के लिए, स्क्रीन लॉक का इस्तेमाल किया है</translation> <translation id="4558551763791394412">अपने एक्सटेंशन अक्षम करके देखें.</translation> -<translation id="456043042661026303">आपके पेमेंट के तरीके की जानकारी की जांच सुरक्षित तरीके से की जा रही है</translation> <translation id="4566017918361049074">आउटडोर गतिविधियां</translation> <translation id="4567686777917670400">आपका एडमिन किसी दूसरे डिवाइस से आपके ब्राउज़र का सेट अप बदल सकता है. इस डिवाइस की गतिविधि को Chromium के बाहर भी मैनेज किया जा सकता है. <ph name="BEGIN_LINK" />ज़्यादा जानें<ph name="END_LINK" /></translation> <translation id="4569155249847375786">सत्यापित</translation> @@ -2659,7 +2659,6 @@ <translation id="6272088941196661550">अपने 'Chrome इतिहास' में काम की गतिविधि देखने के लिए, फिर से शुरू करें</translation> <translation id="6272383483618007430">Google अपडेट</translation> <translation id="6279183038361895380">अपना कर्सर दिखाने के लिए |<ph name="ACCELERATOR" />| दबाएं</translation> -<translation id="628016388715774955">'पूरा पता भरें' विकल्प चुना गया</translation> <translation id="6280223929691119688">इस पते पर वितरित नहीं किया जा सकता. कोई दूसरा पता चुनें.</translation> <translation id="6284292079994426700">26 x 38 इंच</translation> <translation id="6284517535531159884">वैरिएशन सीड टाइप</translation> @@ -2931,7 +2930,6 @@ <translation id="6807791860691150411">शिक्षा</translation> <translation id="681021252041861472">ज़रूरी फ़ील्ड</translation> <translation id="6810899417690483278">कस्टमाइज़ेशन आईडी</translation> -<translation id="681459028290894216">पूरा पता भरें</translation> <translation id="6816109178681043245">खेल-कूद का सामान</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">सीरियल पोर्ट</translation>
diff --git a/components/strings/components_strings_hr.xtb b/components/strings/components_strings_hr.xtb index 2d6841f..1a7c44d 100644 --- a/components/strings/components_strings_hr.xtb +++ b/components/strings/components_strings_hr.xtb
@@ -1815,7 +1815,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Koristite zaključavanje zaslona za unos zaporki</translation> <translation id="4558551763791394412">Pokušajte onemogućiti proširenja.</translation> -<translation id="456043042661026303">Sigurna provjera podataka o plaćanju</translation> <translation id="4566017918361049074">Na otvorenom</translation> <translation id="4567686777917670400">Vaš administrator može daljinski promijeniti postavke preglednika. Aktivnostima na ovom uređaju može se upravljati i izvan Chromiuma. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Potvrđeno</translation> @@ -2662,7 +2661,6 @@ <translation id="6272088941196661550">Nastavite putovanje da biste vidjeli relevantne aktivnosti u svojoj povijesti na Chromeu</translation> <translation id="6272383483618007430">Google ažuriranje</translation> <translation id="6279183038361895380">Pritisnite |<ph name="ACCELERATOR" />| da bi se prikazao pokazivač</translation> -<translation id="628016388715774955">Odabrana je opcija unosa pune adrese</translation> <translation id="6280223929691119688">Dostava na tu adresu nije moguća. Odaberite drugu adresu.</translation> <translation id="6284292079994426700">26 x 38 inča</translation> <translation id="6284517535531159884">Vrsta izvora varijacije</translation> @@ -2934,7 +2932,6 @@ <translation id="6807791860691150411">Obrazovanje</translation> <translation id="681021252041861472">Obavezno polje</translation> <translation id="6810899417690483278">ID prilagođavanja</translation> -<translation id="681459028290894216">Unesite punu adresu</translation> <translation id="6816109178681043245">Sportska oprema</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">serijski priključci</translation>
diff --git a/components/strings/components_strings_hu.xtb b/components/strings/components_strings_hu.xtb index e0d36c77..a908a988 100644 --- a/components/strings/components_strings_hu.xtb +++ b/components/strings/components_strings_hu.xtb
@@ -1815,7 +1815,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Képernyőzárat használ jelszavak kitöltéséhez</translation> <translation id="4558551763791394412">Próbálkozzon a bővítmények letiltásával.</translation> -<translation id="456043042661026303">A fizetési részletek biztonságos ellenőrzése folyamatban van</translation> <translation id="4566017918361049074">Szabadtéri tevékenységek</translation> <translation id="4567686777917670400">A rendszergazda távolról módosítani tudja a böngészőbeállításokat. Az is lehetséges, hogy az eszközön végzett tevékenységeket a Chromiumon kívülről felügyelik. <ph name="BEGIN_LINK" />További információ<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Ellenőrizve</translation> @@ -2662,7 +2661,6 @@ <translation id="6272088941196661550">Utazás folytatása a Chrome-előzmények között található releváns tevékenységek megtekintéséhez</translation> <translation id="6272383483618007430">Google Frissítés</translation> <translation id="6279183038361895380">Az egérmutató megjelenítéséhez nyomja meg a következő billentyűt: |<ph name="ACCELERATOR" />|</translation> -<translation id="628016388715774955">A „Teljes cím kitöltése” lehetőség volt kiválasztva</translation> <translation id="6280223929691119688">Erre a címre nem lehetséges a kézbesítés. Válasszon másik címet.</translation> <translation id="6284292079994426700">26 × 38 hüvelyk</translation> <translation id="6284517535531159884">Változatok forrástípusa</translation> @@ -2934,7 +2932,6 @@ <translation id="6807791860691150411">Oktatás</translation> <translation id="681021252041861472">Kötelező mező</translation> <translation id="6810899417690483278">Testreszabás-azonosító</translation> -<translation id="681459028290894216">Teljes cím kitöltése</translation> <translation id="6816109178681043245">Sportszerek</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">soros portok</translation>
diff --git a/components/strings/components_strings_hy.xtb b/components/strings/components_strings_hy.xtb index 4af5d56..b0ef2b1 100644 --- a/components/strings/components_strings_hy.xtb +++ b/components/strings/components_strings_hy.xtb
@@ -1821,7 +1821,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Դուք օգտագործում եք էկրանի կողպումը գաղտնաբառերի լրացման համար</translation> <translation id="4558551763791394412">Փորձեք անջատել ձեր ընդլայնումները</translation> -<translation id="456043042661026303">Կատարվում է ձեր վճարման մանրամասների անվտանգ ստուգում</translation> <translation id="4566017918361049074">Բացօթյա ժամանց</translation> <translation id="4567686777917670400">Ձեր ադմինիստրատորը կարող է հեռակա փոխել ձեր դիտարկիչի կարգավորումները։ Սարքում արվող գործողությունները նույնպես կարող են կառավարվել Chromium-ից դուրս։ <ph name="BEGIN_LINK" />Իմանալ ավելին<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Հաստատված</translation> @@ -2671,7 +2670,6 @@ <translation id="6272088941196661550">Շարունակել որոնումը՝ Chrome-ի պատմության մեջ նման հարցումները դիտելու համար</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">Նշորդը ցուցադրելու համար սեղմեք |<ph name="ACCELERATOR" />|</translation> -<translation id="628016388715774955">Ընտրվել է ամբողջական հասցեի լրացման տարբերակը</translation> <translation id="6280223929691119688">Այս հասցեով հնարավոր չէ առաքել: Ընտրեք այլ հասցե:</translation> <translation id="6284292079994426700">26 x 38 դյույմ</translation> <translation id="6284517535531159884">Տարբերակների նախնական տեսակ</translation> @@ -2943,7 +2941,6 @@ <translation id="6807791860691150411">Կրթություն</translation> <translation id="681021252041861472">Պարտադիր դաշտ</translation> <translation id="6810899417690483278">Կարգավորման ID</translation> -<translation id="681459028290894216">Լրացնել ամբողջական հասցեն</translation> <translation id="6816109178681043245">Սպորտային ապրանքներ</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">հաջորդական միացքներ</translation>
diff --git a/components/strings/components_strings_id.xtb b/components/strings/components_strings_id.xtb index e39f7a2..4312c029 100644 --- a/components/strings/components_strings_id.xtb +++ b/components/strings/components_strings_id.xtb
@@ -1813,7 +1813,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Anda menggunakan kunci layar untuk mengisi sandi</translation> <translation id="4558551763791394412">Coba nonaktifkan ekstensi.</translation> -<translation id="456043042661026303">Memeriksa detail pembayaran dengan aman</translation> <translation id="4566017918361049074">Luar ruangan</translation> <translation id="4567686777917670400">Administrator dapat mengubah penyiapan browser Anda dari jarak jauh. Aktivitas di perangkat ini mungkin juga dikelola di luar Chromium. <ph name="BEGIN_LINK" />Pelajari lebih lanjut<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Terverifikasi</translation> @@ -2660,7 +2659,6 @@ <translation id="6272088941196661550">Lanjutkan perjalanan Anda untuk melihat aktivitas yang relevan di histori Chrome Anda</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">Tekan |<ph name="ACCELERATOR" />| untuk menampilkan kursor</translation> -<translation id="628016388715774955">Opsi isi alamat lengkap dipilih</translation> <translation id="6280223929691119688">Tidak dapat mengirim ke alamat ini. Pilih alamat lain.</translation> <translation id="6284292079994426700">26 x 38 inci (66 x 96 cm)</translation> <translation id="6284517535531159884">Jenis Seed Variasi</translation> @@ -2932,7 +2930,6 @@ <translation id="6807791860691150411">Pendidikan</translation> <translation id="681021252041861472">Kolom Wajib Diisi</translation> <translation id="6810899417690483278">ID Penyesuaian</translation> -<translation id="681459028290894216">Isi alamat lengkap</translation> <translation id="6816109178681043245">Perlengkapan Olahraga</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">port serial</translation>
diff --git a/components/strings/components_strings_is.xtb b/components/strings/components_strings_is.xtb index 9917570..ed10013 100644 --- a/components/strings/components_strings_is.xtb +++ b/components/strings/components_strings_is.xtb
@@ -1813,7 +1813,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Þú ert að nota skjálásinn til að fylla út aðgangsorð</translation> <translation id="4558551763791394412">Prófaðu að slökkva á viðbótunum þínum.</translation> -<translation id="456043042661026303">Athugar greiðsluupplýsingarnar þínar á öruggan hátt</translation> <translation id="4566017918361049074">Útivist</translation> <translation id="4567686777917670400">Kerfisstjórinn þinn getur breytt uppsetningu vafrans með fjartengingu. Einnig er hægt er að hafa umsjón með aðgerðum í þessu tæki utan Chromium. <ph name="BEGIN_LINK" />Nánar<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Staðfest</translation> @@ -2660,7 +2659,6 @@ <translation id="6272088941196661550">Haltu ferðinni áfram til að sjá viðkomandi virkni í Chrome ferlinum</translation> <translation id="6272383483618007430">Google uppfærslur</translation> <translation id="6279183038361895380">Ýttu á |<ph name="ACCELERATOR" />| til að sýna bendilinn</translation> -<translation id="628016388715774955">Valkosturinn útfylla fullt heimilisfang var valinn</translation> <translation id="6280223929691119688">Ekki er hægt að senda á þetta heimilisfang. Veldu annað heimilisfang.</translation> <translation id="6284292079994426700">26 x 38 to.</translation> <translation id="6284517535531159884">Dreifingargerð tilbrigðis (Variations Seed Type)</translation> @@ -2932,7 +2930,6 @@ <translation id="6807791860691150411">Menntun</translation> <translation id="681021252041861472">Áskilinn reitur</translation> <translation id="6810899417690483278">Auðkenni sérstillingar</translation> -<translation id="681459028290894216">Útfylla fullt heimilisfang</translation> <translation id="6816109178681043245">Íþróttavörur</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">raðtengi</translation>
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb index 76184d7..81c4ffbc 100644 --- a/components/strings/components_strings_it.xtb +++ b/components/strings/components_strings_it.xtb
@@ -465,6 +465,7 @@ <translation id="1828959155404624835">Autonoleggi</translation> <translation id="1834321415901700177">Il sito contiene programmi dannosi.</translation> <translation id="1838374766361614909">Cancella ricerca</translation> +<translation id="1839331950812095887">poche parole che riassumono i tuoi pensieri</translation> <translation id="1839551713262164453">Convalida dei valori della norma non riuscita con errori</translation> <translation id="1842969606798536927">Paga</translation> <translation id="1846432862466000825">Plastica (archivio)</translation> @@ -696,6 +697,7 @@ <translation id="2293443924986248631">Se questa opzione è attiva, i siti non possono utilizzare i cookie per monitorare la tua attività sul Web. Le funzionalità su alcuni siti potrebbero non essere disponibili.</translation> <translation id="2295831393422400053">Attiva l'impostazione Migliora le ricerche e le attività di navigazione per usare Aiutami a scrivere</translation> <translation id="2300306941146563769">Non caricato</translation> +<translation id="2301098101308036335">Quali siti web vengono visitati e quando.</translation> <translation id="230286397113210245">Pulsante Apri finestra di navigazione in incognito, attiva per aprire una nuova finestra di navigazione in incognito per navigare in privato</translation> <translation id="2312234273148520048">Salse e condimenti</translation> <translation id="2316087952091171402">Meno di <ph name="UPPER_ESTIMATE" />. Alcuni siti potrebbero caricarsi più lentamente alla prossima visita.</translation> @@ -1359,6 +1361,7 @@ <translation id="3655670868607891010">Se questo problema si verifica spesso, prova questi <ph name="HELP_LINK" />.</translation> <translation id="365641980390710834">Abbigliamento casual</translation> <translation id="3658742229777143148">Revisione</translation> +<translation id="3659521826520353662">Quali siti web definiti dall'amministratore vengono visitati e quando: <ph name="ALLOWLISTED_WEBSITES" /></translation> <translation id="3664782872746246217">Parole chiave:</translation> <translation id="3665100783276035932">La maggior parte dei siti dovrebbe funzionare come previsto</translation> <translation id="3667704023705708645">Venture capital</translation> @@ -1449,6 +1452,7 @@ <translation id="3812398568375898177">Si tratta di un aggiornamento critico che migliora le prestazioni delle app per Android su ChromeOS.</translation> <translation id="3815434930383843058">8 x 12 in</translation> <translation id="3816482573645936981">Valore (sostituito)</translation> +<translation id="382115839591654906">CVC di <ph name="CARD_NAME" /></translation> <translation id="3823019343150397277">IBAN</translation> <translation id="3823402221513322552">Il tuo browser è gestito da <ph name="BROWSER_DOMAIN" /> e il tuo profilo è gestito da <ph name="PROFILE_DOMAIN" /></translation> <translation id="382518646247711829">Se utilizzi un server proxy...</translation> @@ -1810,7 +1814,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Stai usando il blocco schermo per inserire le password</translation> <translation id="4558551763791394412">Prova a disattivare le estensioni.</translation> -<translation id="456043042661026303">Controllo sicuro dei dati di pagamento</translation> <translation id="4566017918361049074">Attività all'aria aperta</translation> <translation id="4567686777917670400">L'amministratore può modificare da remoto la configurazione del browser. L'attività svolta su questo dispositivo potrebbe essere gestita anche al di fuori di Chromium. <ph name="BEGIN_LINK" />Scopri di più<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Verificato</translation> @@ -2656,7 +2659,6 @@ <translation id="6272088941196661550">Riprendi il percorso per visualizzare le attività pertinenti nella tua cronologia di Chrome</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">Premi |<ph name="ACCELERATOR" />| per mostrare il puntatore</translation> -<translation id="628016388715774955">È stata selezionata l'opzione per inserire l'indirizzo completo</translation> <translation id="6280223929691119688">Impossibile consegnare all'indirizzo specificato. Seleziona un indirizzo diverso.</translation> <translation id="6284292079994426700">66,0 × 96,5 cm</translation> <translation id="6284517535531159884">Tipo di origine varianti</translation> @@ -2928,7 +2930,6 @@ <translation id="6807791860691150411">Istruzione</translation> <translation id="681021252041861472">Campo obbligatorio</translation> <translation id="6810899417690483278">ID personalizzazione</translation> -<translation id="681459028290894216">Inserisci l'indirizzo completo</translation> <translation id="6816109178681043245">Articoli sportivi</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">porte seriali</translation> @@ -3199,6 +3200,7 @@ <translation id="7341357280245177602">Veicoli usati</translation> <translation id="7346048084945669753">Con affiliazione:</translation> <translation id="7346062987309535530">Vasellame</translation> +<translation id="7346081071264046066">"rispondi sì a questo invito a nozze con entusiasmo"</translation> <translation id="7352651011704765696">Si è verificato un problema</translation> <translation id="7353601530677266744">Riga di comando</translation> <translation id="7354880545102894991">Viaggi low-cost e last-minute</translation>
diff --git a/components/strings/components_strings_iw.xtb b/components/strings/components_strings_iw.xtb index 1059aa91..6980c71 100644 --- a/components/strings/components_strings_iw.xtb +++ b/components/strings/components_strings_iw.xtb
@@ -42,6 +42,7 @@ <translation id="1062407476771304334">החלפה</translation> <translation id="1064054731605354900">A3x5</translation> <translation id="106701514854093668">סימניות שולחן עבודה</translation> +<translation id="1067029985695494416">הפרטים של מנוע החיפוש</translation> <translation id="1068672505746868501">אף פעם אין לתרגם דפים ב<ph name="SOURCE_LANGUAGE" /></translation> <translation id="1070333806075222467">Metal (Glossy)</translation> <translation id="1070853536588271387">כלי רכב היברידיים ואלטרנטיביים</translation> @@ -1812,7 +1813,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">בחרת להשתמש בנעילת המסך למילוי סיסמאות</translation> <translation id="4558551763791394412">יש לנסות להשבית את התוספים.</translation> -<translation id="456043042661026303">מתבצעת בדיקה מאובטחת של פרטי התשלום</translation> <translation id="4566017918361049074">פעילות בחוץ</translation> <translation id="4567686777917670400">מנהל המערכת יכול לשנות את הגדרת הדפדפן שלך מרחוק. ניהול הפעילות במכשיר הזה אפשרי גם מחוץ ל-Chromium. <ph name="BEGIN_LINK" />למידע נוסף<ph name="END_LINK" /></translation> <translation id="4569155249847375786">מאומת</translation> @@ -2664,7 +2664,6 @@ <translation id="6272088941196661550">חזרה לתהליך כדי להציג את הפעילות הרלוונטית בהיסטוריה ב-Chrome</translation> <translation id="6272383483618007430">עדכוני Google</translation> <translation id="6279183038361895380">יש להקיש על |<ph name="ACCELERATOR" />| כדי להציג את הסמן</translation> -<translation id="628016388715774955">נבחרה האפשרות 'מילוי הכתובת המלאה'</translation> <translation id="6280223929691119688">לא ניתן לבצע מסירה בכתובת זו. עליך לבחור כתובת אחרת.</translation> <translation id="6284292079994426700">26x38 אינץ'</translation> <translation id="6284517535531159884">וריאציות של סוג המקור</translation> @@ -2936,7 +2935,6 @@ <translation id="6807791860691150411">השכלה</translation> <translation id="681021252041861472">שדה חובה</translation> <translation id="6810899417690483278">מזהה של התאמה אישית</translation> -<translation id="681459028290894216">מילוי הכתובת המלאה</translation> <translation id="6816109178681043245">מוצרי ספורט</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">יציאות טוריות</translation>
diff --git a/components/strings/components_strings_ja.xtb b/components/strings/components_strings_ja.xtb index 2db8a82..b67bcff 100644 --- a/components/strings/components_strings_ja.xtb +++ b/components/strings/components_strings_ja.xtb
@@ -465,6 +465,7 @@ <translation id="1828959155404624835">レンタカー</translation> <translation id="1834321415901700177">このサイトには有害なプログラムが含まれています</translation> <translation id="1838374766361614909">検索をクリア</translation> +<translation id="1839331950812095887">考えをあらわすいくつかの単語</translation> <translation id="1839551713262164453">ポリシーの値を検証できませんでした(エラーが発生しました)</translation> <translation id="1842969606798536927">お支払い</translation> <translation id="1846432862466000825">プラスチック(アーカイバル)</translation> @@ -517,6 +518,8 @@ <translation id="1956486093533522234">デバイスの位置の特定、保護、またはデータの消去を行います</translation> <translation id="1958218078413065209">ハイスコアは <ph name="SCORE" /> です。</translation> <translation id="1959001866257244765"><ph name="BEGIN_WHITEPAPER_LINK" />アクセスしたページの URL、システム情報、およびページのコンテンツの一部<ph name="END_WHITEPAPER_LINK" />を Google に送信して、ウェブ全体のセキュリティ強化にご協力ください。<ph name="BEGIN_PRIVACY_PAGE_LINK" />プライバシー ポリシー<ph name="END_PRIVACY_PAGE_LINK" /></translation> +<translation id="1959445535228047762">テキストとページのコンテンツが Google に送信され、この機能の改善に使用されることがあります。 + <ph name="BEGIN_LINK" />詳細<ph name="END_LINK" /></translation> <translation id="1962204205936693436"><ph name="DOMAIN" /> のブックマーク</translation> <translation id="196752089528718902">通常はサイトに安全に接続できますが、今回は安全な接続を使用できませんでした。攻撃者がネットワーク接続を傍受するか変更しようとしている可能性があります。<ph name="BEGIN_LEARN_MORE_LINK" />詳細<ph name="END_LEARN_MORE_LINK" /></translation> <translation id="1973335181906896915">シリアル化エラーです</translation> @@ -696,6 +699,7 @@ <translation id="2293443924986248631">オンにすると、サイトは Cookie を使用してあなたをウェブ上でトラッキングできなくなります。一部サイトの機能が使用できなくなる可能性もあります。</translation> <translation id="2295831393422400053">文書作成サポートを使用するには、[検索とブラウジングを改善する] 設定をオンにしてください</translation> <translation id="2300306941146563769">アップロードされていません</translation> +<translation id="2301098101308036335">アクセスしたウェブサイトとその日時が表示されます。</translation> <translation id="230286397113210245">[シークレット ウィンドウを開く] ボタンです。実行すると、新しいシークレット ウィンドウを開いてシークレット モードでブラウジングできます</translation> <translation id="2312234273148520048">調味料、ドレッシング</translation> <translation id="2316087952091171402"><ph name="UPPER_ESTIMATE" /> 未満。サイトによっては、次回アクセスする際に読み込みに時間がかかる可能性があります。</translation> @@ -720,6 +724,7 @@ <translation id="2354430244986887761"><ph name="SITE" /> では最近、Google セーフ ブラウジングにより<ph name="BEGIN_LINK" />有害なアプリが検出<ph name="END_LINK" />されました。</translation> <translation id="2355395290879513365">このサイトで目にする画像は、悪意のあるユーザーによって差し替えられたものである可能性があります。</translation> <translation id="2356070529366658676">確認する</translation> +<translation id="2356926036049612643">V8 オプティマイザー</translation> <translation id="2357481397660644965">ご使用のデバイスは <ph name="DEVICE_MANAGER" /> で管理され、アカウントは <ph name="ACCOUNT_MANAGER" /> で管理されています。</translation> <translation id="2359629602545592467">複数</translation> <translation id="2359808026110333948">続行</translation> @@ -1362,6 +1367,7 @@ <translation id="3655670868607891010">このエラーが頻繁に表示される場合は、こちらの<ph name="HELP_LINK" />をお試しください。</translation> <translation id="365641980390710834">カジュアル衣料</translation> <translation id="3658742229777143148">変更履歴</translation> +<translation id="3659521826520353662">管理者が定義したウェブサイトとアクセスした日時: <ph name="ALLOWLISTED_WEBSITES" /></translation> <translation id="3664782872746246217">キーワード:</translation> <translation id="3665100783276035932">ほとんどのサイトは適切に機能します</translation> <translation id="3667704023705708645">ベンチャー キャピタル</translation> @@ -1452,6 +1458,7 @@ <translation id="3812398568375898177">ChromeOS での Android アプリのパフォーマンスを改善する重要な更新です。</translation> <translation id="3815434930383843058">8x12 インチ</translation> <translation id="3816482573645936981">値(優先)</translation> +<translation id="382115839591654906"><ph name="CARD_NAME" /> の CVC コード</translation> <translation id="3823019343150397277">IBAN</translation> <translation id="3823402221513322552">お使いのブラウザは <ph name="BROWSER_DOMAIN" /> によって、プロフィールは <ph name="PROFILE_DOMAIN" /> によって管理されています</translation> <translation id="382518646247711829">プロキシ サーバーを使用している場合...</translation> @@ -1813,7 +1820,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">パスワード入力で画面ロックを使用しています</translation> <translation id="4558551763791394412">拡張機能を無効にしてみてください。</translation> -<translation id="456043042661026303">お支払い情報を安全な方法で確認しています</translation> <translation id="4566017918361049074">アウトドア</translation> <translation id="4567686777917670400">管理者はブラウザの設定をリモートで変更できます。このデバイス上のアクティビティは、Chromium の外部でも管理されている可能性があります。<ph name="BEGIN_LINK" />詳細<ph name="END_LINK" /></translation> <translation id="4569155249847375786">確認済み</translation> @@ -2660,7 +2666,6 @@ <translation id="6272088941196661550">ジャーニーを再開して、Chrome 履歴で関連するアクティビティを確認します</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">カーソルを表示するには |<ph name="ACCELERATOR" />| を押します</translation> -<translation id="628016388715774955">住所全体を入力するオプションが選択されました</translation> <translation id="6280223929691119688">この住所には配達できません。別の住所を選択してください。</translation> <translation id="6284292079994426700">26x38 インチ</translation> <translation id="6284517535531159884">バリエーション シードタイプ</translation> @@ -2932,7 +2937,6 @@ <translation id="6807791860691150411">教育</translation> <translation id="681021252041861472">必須項目</translation> <translation id="6810899417690483278">カスタム ID</translation> -<translation id="681459028290894216">住所全体を入力</translation> <translation id="6816109178681043245">スポーツ用品</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">シリアルポート</translation> @@ -3203,6 +3207,7 @@ <translation id="7341357280245177602">中古車</translation> <translation id="7346048084945669753">組織内のユーザーか:</translation> <translation id="7346062987309535530">食器</translation> +<translation id="7346081071264046066">「この結婚式の招待状に、喜んで参加すると返事する」</translation> <translation id="7352651011704765696">問題が発生しました</translation> <translation id="7353601530677266744">コマンドライン</translation> <translation id="7354880545102894991">低価格、直前予約可能な旅行サービス</translation>
diff --git a/components/strings/components_strings_ka.xtb b/components/strings/components_strings_ka.xtb index 42e5fba3..c8b1edb 100644 --- a/components/strings/components_strings_ka.xtb +++ b/components/strings/components_strings_ka.xtb
@@ -465,6 +465,7 @@ <translation id="1828959155404624835">მანქანის დაქირავება</translation> <translation id="1834321415901700177">ეს საიტი საზიანო პროგრამებს შეიცავს</translation> <translation id="1838374766361614909">ძიების გასუფთავება</translation> +<translation id="1839331950812095887">რამდენიმე სიტყვა, რომლებითაც შეაჯამებთ თქვენს აზრებს</translation> <translation id="1839551713262164453">წესების მნიშვნელობების დადასტურება ვერ მოხერხდა შეცდომების გამო</translation> <translation id="1842969606798536927">გადახდა</translation> <translation id="1846432862466000825">პლასტმასა (საარქივო)</translation> @@ -698,6 +699,7 @@ <translation id="2293443924986248631">ჩართვის შემთხვევაში ვებსაიტებს აეკრძალება თქვენთვის თვალის მიდევნება ქუქი-ჩანაწერების მეშვეობით. ზოგიერთი საიტის ფუნქციებმა შეიძლება არასათანადოდ იმუშაოს.</translation> <translation id="2295831393422400053">ჩართეთ ძიებისა და ვებსაიტების დათვალიერების პროცესების გაუმჯობესების პარამეტრი, „დაწერაში დახმარება“ რომ გამოიყენოთ</translation> <translation id="2300306941146563769">აუტვირთავია</translation> +<translation id="2301098101308036335">რომელი ვებსაიტები არის მონახულებული და როდის.</translation> <translation id="230286397113210245">ახალი ინკოგნიტო ფანჯრის გახსნის ღილაკი, ვების კონფიდენციალურად დასათვალიერებლად ახალი ინკოგნიტო ფანჯრის გასახსნელად გაააქტიურეთ ის</translation> <translation id="2312234273148520048">სანელებლები და საკმაზი</translation> <translation id="2316087952091171402"><ph name="UPPER_ESTIMATE" />-ზე ნაკლები. შესაძლოა, ზოგიერთი საიტი შემდეგ ვიზიტზე უფრო ნელა ჩაიტვირთოს.</translation> @@ -1365,6 +1367,7 @@ <translation id="3655670868607891010">თუ ამას ხშირად ხედავთ, სცადეთ ეს <ph name="HELP_LINK" />.</translation> <translation id="365641980390710834">ყოველდღიური ტანსაცმელი</translation> <translation id="3658742229777143148">რედაქცია</translation> +<translation id="3659521826520353662">ადმინისტრატორის მიერ განსაზღვრული რომელი ვებსაიტები არის მონახულებული და როდის: <ph name="ALLOWLISTED_WEBSITES" /></translation> <translation id="3664782872746246217">საკვანძო სიტყვები:</translation> <translation id="3665100783276035932">საიტების უმეტესობამ მოლოდინისამებრ უნდა იმუშაოს</translation> <translation id="3667704023705708645">სარისკო კაპიტალდაბანდება</translation> @@ -1455,6 +1458,7 @@ <translation id="3812398568375898177">ეს არის კრიტიკულად მნიშვნელოვანი განახლება, რომელიც აუმჯობესებს Android აპების წარმადობას ChromeOS-ზე.</translation> <translation id="3815434930383843058">8 x 12 დუიმი</translation> <translation id="3816482573645936981">მნიშვნელობა (ჩანაცვლებული)</translation> +<translation id="382115839591654906"><ph name="CARD_NAME" />-ის CVC</translation> <translation id="3823019343150397277">IBAN</translation> <translation id="3823402221513322552">თქვენს ბრაუზერს მართავს <ph name="BROWSER_DOMAIN" />, ხოლო პროფილს — <ph name="PROFILE_DOMAIN" /></translation> <translation id="382518646247711829">თუ იყენებთ პროქსის სერვერს…</translation> @@ -1816,7 +1820,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">პაროლების შევსებისთვის თქვენი ეკრანის დაბლოკვის მეთოდს იყენებთ</translation> <translation id="4558551763791394412">ცადეთ გაფართოებების გათიშვა.</translation> -<translation id="456043042661026303">მიმდინარეობს თქვენი გადახდის დეტალების უსაფრთხოდ შემოწმება</translation> <translation id="4566017918361049074">ღია ცის ქვეშ</translation> <translation id="4567686777917670400">თქვენს ადმინისტრატორს დისტანციურად შეუძლია ბრაუზერში დაყენებული პარამეტრების შეცვლა. ამ მოწყობილობაზე აქტივობა შეიძლება იმართებოდეს Chromium-ს მიღმაც. <ph name="BEGIN_LINK" />შეიტყვეთ მეტი<ph name="END_LINK" /></translation> <translation id="4569155249847375786">გადამოწმებული</translation> @@ -2663,7 +2666,6 @@ <translation id="6272088941196661550">გააგრძელეთ თქვენი პროცესი, თქვენს Chrome-ის ისტორიაში შესაბამისი აქტივობა რომ იხილოთ</translation> <translation id="6272383483618007430">Google განახლება</translation> <translation id="6279183038361895380">კურსორის საჩვენებლად, დააჭირეთ კლავიშზე |<ph name="ACCELERATOR" />|</translation> -<translation id="628016388715774955">არჩეული იყო სრული მისამართის შევსების ვარიანტი</translation> <translation id="6280223929691119688">ამ მისამართზე მიწოდება ვერ მოხერხდება. აირჩიეთ სხვა მისამართი.</translation> <translation id="6284292079994426700">26 x 38 დუიმი</translation> <translation id="6284517535531159884">ნაირსახეობათა წყაროს ტიპი</translation> @@ -2935,7 +2937,6 @@ <translation id="6807791860691150411">განათლება</translation> <translation id="681021252041861472">აუცილებელი ველი</translation> <translation id="6810899417690483278">მორგების ID</translation> -<translation id="681459028290894216">სრული მისამართის შევსება</translation> <translation id="6816109178681043245">სპორტული ინვენტარი</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">თანმიმდევრული პორტები</translation> @@ -3206,6 +3207,7 @@ <translation id="7341357280245177602">მეორადი ავტომობილები</translation> <translation id="7346048084945669753">აფილირებულობა:</translation> <translation id="7346062987309535530">სასადილო ჭურჭელი</translation> +<translation id="7346081071264046066">„დადებითი პასუხის გაცემა ამ საქორწინო მოსაწვევზე სიხარულით“</translation> <translation id="7352651011704765696">რაღაც არასწორად წარიმართა</translation> <translation id="7353601530677266744">ბრძანების სტრიქონი</translation> <translation id="7354880545102894991">დაბალბიუჯეტიანი და ბოლო წუთის მოგზაურობა</translation>
diff --git a/components/strings/components_strings_kk.xtb b/components/strings/components_strings_kk.xtb index 6d5c42b..076250895 100644 --- a/components/strings/components_strings_kk.xtb +++ b/components/strings/components_strings_kk.xtb
@@ -1812,7 +1812,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Құпия сөздерді толтыру үшін экран құлпын пайдаланып жатырсыз</translation> <translation id="4558551763791394412">Кеңейтімдерді ажыратып көріңіз.</translation> -<translation id="456043042661026303">Төлем туралы мәліметіңіз қауіпсіз тексеріліп жатыр.</translation> <translation id="4566017918361049074">Ашық ауадағы демалыс</translation> <translation id="4567686777917670400">Браузер параметрін әкімші қашықтан өзгерте алады. Құрылғыдағы әрекеттерді Chromium браузерінен тыс та басқаруға болады. <ph name="BEGIN_LINK" />Толығырақ<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Расталған</translation> @@ -2659,7 +2658,6 @@ <translation id="6272088941196661550">Chrome тарихынан сәйкес сұрауларды көру үшін шарлауды жалғастыру</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">Курсорды көрсету үшін |<ph name="ACCELERATOR" />| басыңыз</translation> -<translation id="628016388715774955">Толық мекенжайды толтыру опциясы таңдалды</translation> <translation id="6280223929691119688">Бұл мекенжайға жеткізілмейді. Басқа мекенжайды таңдаңыз.</translation> <translation id="6284292079994426700">26 x 38 дюйм</translation> <translation id="6284517535531159884">Вариациялар дереккөзінің түрі</translation> @@ -2931,7 +2929,6 @@ <translation id="6807791860691150411">Білім беру</translation> <translation id="681021252041861472">Міндетті өріс</translation> <translation id="6810899417690483278">Реттеу идентификаторы</translation> -<translation id="681459028290894216">Толық мекенжайды толтыру</translation> <translation id="6816109178681043245">Спорт тауарлары</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">сериялық порттар</translation>
diff --git a/components/strings/components_strings_km.xtb b/components/strings/components_strings_km.xtb index e63c606..23e008c4 100644 --- a/components/strings/components_strings_km.xtb +++ b/components/strings/components_strings_km.xtb
@@ -1824,7 +1824,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">អ្នកកំពុងប្រើការចាក់សោអេក្រង់សម្រាប់ការបំពេញពាក្យសម្ងាត់</translation> <translation id="4558551763791394412">សាកល្បងបិទដំណើរការផ្នែកបន្ថែមរបស់អ្នក</translation> -<translation id="456043042661026303">កំពុងពិនិត្យមើលព័ត៌មានលម្អិតអំពីការទូទាត់ប្រាក់របស់អ្នកដោយសុវត្ថិភាព</translation> <translation id="4566017918361049074">ខាងក្រៅ</translation> <translation id="4567686777917670400">អ្នកគ្រប់គ្រងរបស់អ្នកអាចប្ដូរការរៀបចំកម្មវិធីរុករកតាមអ៊ីនធឺណិតរបស់អ្នកពីចម្ងាយបាន។ សកម្មភាពនៅលើឧបករណ៍នេះក៏អាចត្រូវបានគ្រប់គ្រងនៅក្រៅ Chromium ផងដែរ។ <ph name="BEGIN_LINK" />ស្វែងយល់បន្ថែម<ph name="END_LINK" /></translation> <translation id="4569155249847375786">បានផ្ទៀងផ្ទាត់</translation> @@ -2671,7 +2670,6 @@ <translation id="6272088941196661550">បន្តការស្វែងរករបស់អ្នក ដើម្បីមើលសកម្មភាពដែលពាក់ព័ន្ធនៅក្នុងប្រវត្តិ Chrome របស់អ្នក</translation> <translation id="6272383483618007430">Google បច្ចុប្បន្នភាព</translation> <translation id="6279183038361895380">ចុច |<ph name="ACCELERATOR" />| ដើម្បីបង្ហាញទស្សន៍ទ្រនិចរបស់អ្នក</translation> -<translation id="628016388715774955">ជម្រើសបំពេញអាសយដ្ឋានពេញលេញត្រូវបានជ្រើសរើស</translation> <translation id="6280223929691119688">មិនអាចដឹកជញ្ជូនផ្ទាល់ទៅអាសយដ្ឋាននេះបានទេ។ សូមជ្រើសរើសអាសយដ្ឋានផ្សេង។</translation> <translation id="6284292079994426700">26 x 38 in</translation> <translation id="6284517535531159884">ប្រភេទឯកសារកំណត់រចនាសម្ព័ន្ធកំណែប្រែ</translation> @@ -2943,7 +2941,6 @@ <translation id="6807791860691150411">ការអប់រំ</translation> <translation id="681021252041861472">កន្លែងត្រូវតែបំពេញ</translation> <translation id="6810899417690483278">លេខសម្គាល់ការកែសម្រួល</translation> -<translation id="681459028290894216">បំពេញអាសយដ្ឋានពេញលេញ</translation> <translation id="6816109178681043245">សម្ភារកីឡា</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">រន្ធស៊េរី</translation>
diff --git a/components/strings/components_strings_kn.xtb b/components/strings/components_strings_kn.xtb index 78e2164d..d9ad7d3 100644 --- a/components/strings/components_strings_kn.xtb +++ b/components/strings/components_strings_kn.xtb
@@ -516,6 +516,8 @@ <translation id="1956486093533522234">ನಿಮ್ಮ ಸಾಧನವನ್ನು ಹುಡುಕಿ, ಸುರಕ್ಷಿತವಾಗಿರಿಸಿ ಅಥವಾ ಅಳಿಸಿ</translation> <translation id="1958218078413065209">ನಿಮ್ಮ ಅತಿ ಹೆಚ್ಚು ಸ್ಕೋರ್ <ph name="SCORE" /> ಆಗಿದೆ.</translation> <translation id="1959001866257244765"><ph name="BEGIN_WHITEPAPER_LINK" />ನೀವು ಭೇಟಿ ನೀಡುವ ಕೆಲವೊಂದು ಪುಟಗಳ URL ಗಳು, ಸಿಸ್ಟಂಗೆ ಸಂಬಂಧಿಸಿದ ಸೀಮಿತ ಮಾಹಿತಿ ಹಾಗೂ ಪುಟದಲ್ಲಿನ ಕೆಲವು ಕಂಟೆಂಟ್<ph name="END_WHITEPAPER_LINK" /> ಮುಂತಾದವುಗಳನ್ನು Google ಗೆ ಕಳುಹಿಸುವ ಮೂಲಕ ಎಲ್ಲರಿಗಾಗಿ ವೆಬ್ನ ಸುರಕ್ಷತೆಯನ್ನು ಸುಧಾರಿಸಲು ಸಹಾಯ ಮಾಡಿ. <ph name="BEGIN_PRIVACY_PAGE_LINK" />ಗೌಪ್ಯತೆ ನೀತಿ<ph name="END_PRIVACY_PAGE_LINK" /></translation> +<translation id="1959445535228047762">ನಿಮ್ಮ ಪಠ್ಯ ಮತ್ತು ಪುಟದ ಕಂಟೆಂಟ್ ಅನ್ನು Google ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಈ ಫೀಚರ್ ಅನ್ನು ಸುಧಾರಿಸಲು ಅದನ್ನು ಬಳಸಬಹುದು. + <ph name="BEGIN_LINK" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK" /></translation> <translation id="1962204205936693436"><ph name="DOMAIN" /> ಬುಕ್ಮಾರ್ಕ್ಗಳು</translation> <translation id="196752089528718902">ನೀವು ಸಾಮಾನ್ಯವಾಗಿ ಸೈಟ್ಗಳಿಗೆ ಸುರಕ್ಷಿತವಾಗಿ ಕನೆಕ್ಟ್ ಆಗುತ್ತೀರಿ, ಆದರೆ Chrome ಗೆ ಈ ಸಮಯದಲ್ಲಿ ಸುರಕ್ಷಿತ ಸಂಪರ್ಕವನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಅಟ್ಯಾಕರ್ಗಳು ನಿಮ್ಮ ನೆಟ್ವರ್ಕ್ ಕನೆಕ್ಷನ್ ಅನ್ನು ಕದ್ದಾಲಿಕೆ ಮಾಡಲು ಅಥವಾ ಮಾರ್ಪಡಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರಬಹುದು. <ph name="BEGIN_LEARN_MORE_LINK" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LEARN_MORE_LINK" /></translation> <translation id="1973335181906896915">ಅನುಕ್ರಮಗೊಳಿಸುವಿಕೆಯ ದೋಷ</translation> @@ -719,6 +721,7 @@ <translation id="2354430244986887761">Google ಸುರಕ್ಷಿತ ಬ್ರೌಸಿಂಗ್ ಇತ್ತೀಚಿಗೆ <ph name="SITE" /> ನಲ್ಲಿ <ph name="BEGIN_LINK" />ಹಾನಿಕಾರಕ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಕಂಡುಹಿಡಿದಿದೆ<ph name="END_LINK" />.</translation> <translation id="2355395290879513365">ಈ ಸೈಟ್ನಲ್ಲಿ ನೀವು ನೋಡುತ್ತಿರುವ ಚಿತ್ರಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಮತ್ತು ಅವುಗಳನ್ನು ಮಾರ್ಪಡಿಸುವ ಮೂಲಕ ನಿಮ್ಮನ್ನು ವಂಚಿಸಲು ದಾಳಿಕೋರರಿಗೆ ಸಾಧ್ಯವಾಗುತ್ತಿರಬಹುದು.</translation> <translation id="2356070529366658676">ಕೇಳಿ</translation> +<translation id="2356926036049612643">V8 ಆಪ್ಟಿಮೈಸರ್</translation> <translation id="2357481397660644965">ನಿಮ್ಮ ಸಾಧನವನ್ನು <ph name="DEVICE_MANAGER" /> ಮೂಲಕ ನಿರ್ವಹಿಸಲಾಗುತ್ತಿದೆ ಮತ್ತು ನಿಮ್ಮ ಖಾತೆಯನ್ನು <ph name="ACCOUNT_MANAGER" /> ಮೂಲಕ ನಿರ್ವಹಿಸಲಾಗುತ್ತಿದೆ.</translation> <translation id="2359629602545592467">ಬಹು</translation> <translation id="2359808026110333948">ಮುಂದುವರೆಸಿ</translation> @@ -1810,7 +1813,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಭರ್ತಿ ಮಾಡಲು ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಲಾಕ್ ಬಳಸುತ್ತಿದ್ದೀರಿ</translation> <translation id="4558551763791394412">ನಿಮ್ಮ ವಿಸ್ತರಣೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಪ್ರಯತ್ನಿಸಿ.</translation> -<translation id="456043042661026303">ನಿಮ್ಮ ಪಾವತಿ ವಿವರಗಳನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ</translation> <translation id="4566017918361049074">ಹೊರಾಂಗಣ</translation> <translation id="4567686777917670400">ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ನಿಮ್ಮ ಬ್ರೌಸರ್ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ದೂರದಿಂದಲೇ ಬದಲಾಯಿಸಬಹುದು. ಈ ಸಾಧನದಲ್ಲಿನ ಚಟುವಟಿಕೆಯನ್ನು Chromium ನ ಹೊರಗೆ ಸಹ ನಿರ್ವಹಿಸಬಹುದು. <ph name="BEGIN_LINK" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK" /></translation> <translation id="4569155249847375786">ಪರಿಶೀಲಿಸಲಾಗಿದೆ</translation> @@ -2656,7 +2658,6 @@ <translation id="6272088941196661550">ನಿಮ್ಮ Chrome ಇತಿಹಾಸದಲ್ಲಿ ಸಂಬಂಧಿತ ಚಟುವಟಿಕೆಯನ್ನು ನೋಡಲು ನಿಮ್ಮ ಪ್ರಯಾಣವನ್ನು ಪುನರಾರಂಭಿಸಿ</translation> <translation id="6272383483618007430">Google ಅಪ್ಡೇಟ್</translation> <translation id="6279183038361895380">ನಿಮ್ಮ ಕರ್ಸರ್ ತೋರಿಸಲು |<ph name="ACCELERATOR" />| ಒತ್ತಿ</translation> -<translation id="628016388715774955">ಪೂರ್ಣ ವಿಳಾಸವನ್ನು ಭರ್ತಿ ಮಾಡುವ ಆಯ್ಕೆಯನ್ನು ಆರಿಸಲಾಗಿದೆ</translation> <translation id="6280223929691119688">ಈ ವಿಳಾಸಕ್ಕೆ ತಲುಪಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಬೇರೊಂದು ವಿಳಾಸವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ.</translation> <translation id="6284292079994426700">26 x 38 ಇಂಚು</translation> <translation id="6284517535531159884">ವೇರಿಯೇಶನ್ಸ್ ಸೀಡ್ ಪ್ರಕಾರ</translation> @@ -2929,7 +2930,6 @@ <translation id="6807791860691150411">ಶಿಕ್ಷಣ</translation> <translation id="681021252041861472">ಅಗತ್ಯವಿರುವ ಕ್ಷೇತ್ರ</translation> <translation id="6810899417690483278">ಕಸ್ಟಮೈಸೇಶನ್ ಐಡಿ</translation> -<translation id="681459028290894216">ಪೂರ್ಣ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ</translation> <translation id="6816109178681043245">ಕ್ರೀಡಾ ಸಾಮಾಗ್ರಿಗಳು</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">ಸೀರಿಯಲ್ ಪೋರ್ಟ್ಗಳು</translation>
diff --git a/components/strings/components_strings_ko.xtb b/components/strings/components_strings_ko.xtb index adb5a308..531939b 100644 --- a/components/strings/components_strings_ko.xtb +++ b/components/strings/components_strings_ko.xtb
@@ -517,6 +517,8 @@ <translation id="1956486093533522234">기기 찾기, 잠그기 또는 삭제</translation> <translation id="1958218078413065209">최고 점수는 <ph name="SCORE" />점입니다.</translation> <translation id="1959001866257244765"><ph name="BEGIN_WHITEPAPER_LINK" />방문한 일부 페이지의 URL, 제한된 시스템 정보, 일부 페이지 콘텐츠<ph name="END_WHITEPAPER_LINK" />를 Google에 전송하여 모든 웹 사용자를 위해 보안을 강화하는 데 참여해 주세요. <ph name="BEGIN_PRIVACY_PAGE_LINK" />개인정보처리방침<ph name="END_PRIVACY_PAGE_LINK" /></translation> +<translation id="1959445535228047762">텍스트 및 페이지 콘텐츠가 Google로 전송되며, 이 기능을 개선하는 데 사용될 수 있습니다. + <ph name="BEGIN_LINK" />자세히 알아보기<ph name="END_LINK" /></translation> <translation id="1962204205936693436"><ph name="DOMAIN" /> 북마크</translation> <translation id="196752089528718902">일반적으로 사이트에 안전하게 연결되지만, 이번에는 Chrome에서 보안 연결을 사용할 수 없습니다. 공격자가 네트워크 연결을 도청하거나 수정하려고 시도하는 것일 수 있습니다. <ph name="BEGIN_LEARN_MORE_LINK" />자세히 알아보기<ph name="END_LEARN_MORE_LINK" /></translation> <translation id="1973335181906896915">일련화 오류</translation> @@ -720,6 +722,7 @@ <translation id="2354430244986887761">Google 세이프 브라우징이 최근 <ph name="SITE" />에서 <ph name="BEGIN_LINK" />유해한 앱을 발견<ph name="END_LINK" />했습니다.</translation> <translation id="2355395290879513365">공격자는 사용자가 이 사이트에서 보고 있는 이미지를 볼 수 있으며 이미지를 수정하여 사용자를 속일 수 있습니다.</translation> <translation id="2356070529366658676">확인</translation> +<translation id="2356926036049612643">V8 옵티마이저</translation> <translation id="2357481397660644965">내 기기는 <ph name="DEVICE_MANAGER" />에서 관리하며 내 계정은 <ph name="ACCOUNT_MANAGER" />에서 관리합니다.</translation> <translation id="2359629602545592467">복수</translation> <translation id="2359808026110333948">계속</translation> @@ -1813,7 +1816,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">비밀번호 입력 시 화면 잠금 사용 중</translation> <translation id="4558551763791394412">확장 프로그램 사용 중지해 보기</translation> -<translation id="456043042661026303">안전하게 결제 세부정보 확인 중</translation> <translation id="4566017918361049074">야외 활동</translation> <translation id="4567686777917670400">관리자가 원격으로 브라우저 설정을 변경할 수 있습니다. 이 기기의 활동은 Chromium 외부에서도 관리할 수 있습니다. <ph name="BEGIN_LINK" />자세히 알아보기<ph name="END_LINK" /></translation> <translation id="4569155249847375786">확인됨</translation> @@ -2660,7 +2662,6 @@ <translation id="6272088941196661550">Chrome 방문 기록에서 관련 활동을 보려면 탐색 여정을 재개하세요.</translation> <translation id="6272383483618007430">Google 업데이트</translation> <translation id="6279183038361895380">|<ph name="ACCELERATOR" />|을(를) 눌러 커서 표시</translation> -<translation id="628016388715774955">전체 주소 입력 옵션이 선택됨</translation> <translation id="6280223929691119688">이 주소로 배달할 수 없습니다. 다른 주소를 선택하세요.</translation> <translation id="6284292079994426700">26x38인치</translation> <translation id="6284517535531159884">버전 시드 유형</translation> @@ -2932,7 +2933,6 @@ <translation id="6807791860691150411">교육</translation> <translation id="681021252041861472">필수 입력란</translation> <translation id="6810899417690483278">맞춤설정 ID</translation> -<translation id="681459028290894216">전체 주소 입력</translation> <translation id="6816109178681043245">스포츠용품</translation> <translation id="6817217109584391709">자바스크립트</translation> <translation id="6820143000046097424">직렬 포트</translation>
diff --git a/components/strings/components_strings_ky.xtb b/components/strings/components_strings_ky.xtb index a0dd0b90..bb6ceb43 100644 --- a/components/strings/components_strings_ky.xtb +++ b/components/strings/components_strings_ky.xtb
@@ -1812,7 +1812,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Сырсөздөрдү толтуруу үчүн экрандын кулпусун колдонуп жатасыз</translation> <translation id="4558551763791394412">Кеңейтүүлөрүңүздү өчүрүп көрүңүз.</translation> -<translation id="456043042661026303">Төлөмүңүздүн чоо-жайы коопсуз жол менен текшерилүүдө</translation> <translation id="4566017918361049074">Ачык абада</translation> <translation id="4567686777917670400">Администраторуңуз серепчини алыстан жөндөй алат. Бул түзмөктө аткарылган аракеттер Chromium'дан тышкары да башкарылышы мүмкүн. <ph name="BEGIN_LINK" />Кеңири маалымат<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Текшерилди</translation> @@ -2659,7 +2658,6 @@ <translation id="6272088941196661550">Chrome´до көрүлгөн вебсайттарыңыздын арасынан ылайыктууларын көрүү үчүн саякатты улантыңыз</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">Курсоруңузду көрсөтүү үчүн |<ph name="ACCELERATOR" />| дегенди басыңыз</translation> -<translation id="628016388715774955">Толук даректи толтуруу параметри тандалды</translation> <translation id="6280223929691119688">Бул дарекке жеткирүү мүмкүн эмес. Башка дарек тандаңыз.</translation> <translation id="6284292079994426700">26 x 38 дюйм</translation> <translation id="6284517535531159884">Модификациялар булагынын түрү</translation> @@ -2931,7 +2929,6 @@ <translation id="6807791860691150411">Билим</translation> <translation id="681021252041861472">Милдеттүү түрдө толтуруулучу талаа</translation> <translation id="6810899417690483278">Ыңгайлаштыруучу ID</translation> -<translation id="681459028290894216">Толук даректи толтуруу</translation> <translation id="6816109178681043245">Спорт буюмдары</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">ырааттуу порттор</translation>
diff --git a/components/strings/components_strings_lo.xtb b/components/strings/components_strings_lo.xtb index 4add51c..25dc3124 100644 --- a/components/strings/components_strings_lo.xtb +++ b/components/strings/components_strings_lo.xtb
@@ -1820,7 +1820,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">ທ່ານກຳລັງໃຊ້ການລັອກໜ້າຈໍຂອງທ່ານເພື່ອໃສ່ລະຫັດຜ່ານ</translation> <translation id="4558551763791394412">ລອງປິດໃຊ້ສ່ວນຂະຫຍາຍຂອງທ່ານ.</translation> -<translation id="456043042661026303">ກຳລັງກວດສອບລາຍລະອຽດການຈ່າຍເງິນຂອງທ່ານຢ່າງປອດໄພ</translation> <translation id="4566017918361049074">ກາງແຈ້ງ</translation> <translation id="4567686777917670400">ຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານສາມາດປ່ຽນການຕັ້ງຄ່າໂປຣແກຣມທ່ອງເວັບຂອງທ່ານຈາກທາງໄກໄດ້. ການເຄື່ອນໄຫວຢູ່ອຸປະກອນນີ້ອາດຖືກຈັດການຢູ່ນອກ Chromium ໄດ້ເຊັ່ນກັນ. <ph name="BEGIN_LINK" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK" /></translation> <translation id="4569155249847375786">ກວດສອບແລ້ວ</translation> @@ -2667,7 +2666,6 @@ <translation id="6272088941196661550">ສືບຕໍ່ບັນທຶກຂອງທ່ານເພື່ອເບິ່ງການເຄື່ອນໄຫວທີ່ກ່ຽວຂ້ອງໃນປະຫວັດ Chrome ຂອງທ່ານ</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">ກົດ |<ph name="ACCELERATOR" />| ເພື່ອສະແດງເຄີເຊີຂອງທ່ານ</translation> -<translation id="628016388715774955">ເລືອກຕົວເລືອກການຕື່ມທີ່ຢູ່ເຕັມແລ້ວ</translation> <translation id="6280223929691119688">ບໍ່ສາມາດສົ່ງຫາທີ່ຢູ່ນີ້ໄດ້. ກະລຸນາເລືອກທີ່ຢູ່ອື່ນ.</translation> <translation id="6284292079994426700">26 x 38 ນິ້ວ</translation> <translation id="6284517535531159884">ປະເພດຂອງເມັດຮູບແບບ</translation> @@ -2939,7 +2937,6 @@ <translation id="6807791860691150411">ການສຶກສາ</translation> <translation id="681021252041861472">ຊ່ອງຂໍ້ມູນທີ່ຕ້ອງລະບຸ</translation> <translation id="6810899417690483278">ID ການປັບແຕ່ງເອົາເອງ</translation> -<translation id="681459028290894216">ຕື່ມທີ່ຢູ່ເຕັມ</translation> <translation id="6816109178681043245">ເຄື່ອງກິລາ</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">ຜອດຊີຣຽວ</translation>
diff --git a/components/strings/components_strings_lt.xtb b/components/strings/components_strings_lt.xtb index 9198ddc1..4f2d3d2 100644 --- a/components/strings/components_strings_lt.xtb +++ b/components/strings/components_strings_lt.xtb
@@ -1821,7 +1821,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Naudojate ekrano užraktą slaptažodžiams užpildyti</translation> <translation id="4558551763791394412">Pabandykite išjungti plėtinius.</translation> -<translation id="456043042661026303">Saugus išsamios mokėjimo metodo informacijos tikrinimas</translation> <translation id="4566017918361049074">Renginiai lauke</translation> <translation id="4567686777917670400">Administratorius gali nuotoliniu būdu keisti naršyklės sąranką. Veiklą šiame įrenginyje taip pat galima tvarkyti ne naršyklėje „Chromium“. <ph name="BEGIN_LINK" />Sužinokite daugiau<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Patvirtinta</translation> @@ -2668,7 +2667,6 @@ <translation id="6272088941196661550">Tęsti veiksmus, norint matyti atitinkamą veiklą „Chrome“ istorijoje</translation> <translation id="6272383483618007430">„Google“ naujinys</translation> <translation id="6279183038361895380">Paspauskite |<ph name="ACCELERATOR" />|, kad būtų rodomas žymeklis</translation> -<translation id="628016388715774955">Pasirinkta visų adreso laukų užpildymo parinktis</translation> <translation id="6280223929691119688">Negalima pristatyti šiuo adresu. Pasirinkite kitą adresą.</translation> <translation id="6284292079994426700">26 x 38 col.</translation> <translation id="6284517535531159884">Variantų šaltinio tipas</translation> @@ -2940,7 +2938,6 @@ <translation id="6807791860691150411">Švietimas</translation> <translation id="681021252041861472">Būtinas laukas</translation> <translation id="6810899417690483278">Tinkinimo ID</translation> -<translation id="681459028290894216">Užpildyti visus adreso laukus</translation> <translation id="6816109178681043245">Sporto prekės</translation> <translation id="6817217109584391709">„JavaScript“</translation> <translation id="6820143000046097424">nuoseklieji prievadai</translation>
diff --git a/components/strings/components_strings_lv.xtb b/components/strings/components_strings_lv.xtb index 2e546ed..fdb26c5 100644 --- a/components/strings/components_strings_lv.xtb +++ b/components/strings/components_strings_lv.xtb
@@ -1812,7 +1812,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Jūs izmantojat ekrāna bloķēšanu paroļu aizpildei</translation> <translation id="4558551763791394412">Atspējojiet paplašinājumus.</translation> -<translation id="456043042661026303">Tiek droši pārbaudīta jūsu maksājumu informācija…</translation> <translation id="4566017918361049074">Aktivitātes brīvā dabā</translation> <translation id="4567686777917670400">Jūsu administrators var attālināti mainīt jūsu pārlūka iestatījumus. Darbības šajā ierīcē var pārvaldīt arī ārpus pārlūka Chromium. <ph name="BEGIN_LINK" />Uzziniet vairāk<ph name="END_LINK" />.</translation> <translation id="4569155249847375786">Verificēts</translation> @@ -2659,7 +2658,6 @@ <translation id="6272088941196661550">Atsāciet meklēšanas ceļu, lai skatītu atbilstošās darbības savā Chrome vēsturē</translation> <translation id="6272383483618007430">Google atjauninājums</translation> <translation id="6279183038361895380">Lai tiktu parādīts kursors, nospiediet |<ph name="ACCELERATOR" />|</translation> -<translation id="628016388715774955">Tika atlasīta opcija Aizpildīt visu adresi</translation> <translation id="6280223929691119688">Nevar piegādāt uz šo adresi. Atlasiet citu adresi.</translation> <translation id="6284292079994426700">26 x 38 collas</translation> <translation id="6284517535531159884">Variantu izplatīšanas veids</translation> @@ -2931,7 +2929,6 @@ <translation id="6807791860691150411">Izglītība</translation> <translation id="681021252041861472">Obligātais lauks</translation> <translation id="6810899417690483278">Pielāgošanas ID</translation> -<translation id="681459028290894216">Aizpildīt visu adresi</translation> <translation id="6816109178681043245">Sporta preces</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">seriālie porti</translation>
diff --git a/components/strings/components_strings_mk.xtb b/components/strings/components_strings_mk.xtb index 5052dc51..72d851b 100644 --- a/components/strings/components_strings_mk.xtb +++ b/components/strings/components_strings_mk.xtb
@@ -1813,7 +1813,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Го користите заклучувањето екран за пополнување лозинки</translation> <translation id="4558551763791394412">Обидете се со оневозможување на екстензиите.</translation> -<translation id="456043042661026303">Безбедно се проверуваат вашите детали за плаќање</translation> <translation id="4566017918361049074">На отворено</translation> <translation id="4567686777917670400">Администраторот може далечински да го менува поставувањето на прелистувачот. Со активноста на уредов може да се управува и надвор од Chromium. <ph name="BEGIN_LINK" />Дознајте повеќе<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Потврден</translation> @@ -2660,7 +2659,6 @@ <translation id="6272088941196661550">Продолжете со патувањето за да ја прегледате релевантната активност во вашата „Историја на Chrome“</translation> <translation id="6272383483618007430">Ажурирање од Google</translation> <translation id="6279183038361895380">Притиснете |<ph name="ACCELERATOR" />| за да се покаже покажувачот</translation> -<translation id="628016388715774955">Избрана е опцијата за пополнување адреса</translation> <translation id="6280223929691119688">Не може да се достави на оваа адреса. Изберете друга.</translation> <translation id="6284292079994426700">26 x 38 инчи</translation> <translation id="6284517535531159884">Тип извори на варијации</translation> @@ -2932,7 +2930,6 @@ <translation id="6807791860691150411">Образование</translation> <translation id="681021252041861472">Задолжително поле</translation> <translation id="6810899417690483278">Приспособен ID</translation> -<translation id="681459028290894216">Пополнување адреса</translation> <translation id="6816109178681043245">Спортска опрема</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">сериски порти</translation>
diff --git a/components/strings/components_strings_ml.xtb b/components/strings/components_strings_ml.xtb index 3d43aca..2cc57a1 100644 --- a/components/strings/components_strings_ml.xtb +++ b/components/strings/components_strings_ml.xtb
@@ -1815,7 +1815,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">പാസ്വേഡുകൾ പൂരിപ്പിക്കാൻ നിങ്ങൾ സ്ക്രീൻ ലോക്ക് ഉപയോഗിക്കുന്നു</translation> <translation id="4558551763791394412">നിങ്ങളുടെ വിപുലീകരണങ്ങൾ പ്രവർത്തനരഹിതമാക്കുന്നത് പരീക്ഷിക്കുക.</translation> -<translation id="456043042661026303">നിങ്ങളുടെ പേയ്മെന്റ് വിശദാംശങ്ങൾ സുരക്ഷിതമായി പരിശോധിക്കുന്നു</translation> <translation id="4566017918361049074">ഔട്ട്ഡോർ</translation> <translation id="4567686777917670400">നിങ്ങളുടെ അഡ്മിന് വിദൂരമായി ബ്രൗസർ സജ്ജീകരണം മാറ്റാനാകും. ഈ ഉപകരണത്തിലെ ആക്റ്റിവിറ്റി Chromium-ന് പുറത്തും മാനേജ് ചെയ്തേക്കാം. <ph name="BEGIN_LINK" />കൂടുതലറിയുക<ph name="END_LINK" /></translation> <translation id="4569155249847375786">പരിശോധിച്ചുറപ്പിച്ചു</translation> @@ -2662,7 +2661,6 @@ <translation id="6272088941196661550">നിങ്ങളുടെ Chrome ചരിത്രത്തിൽ പ്രസക്തമായ ആക്റ്റിവിറ്റി കാണാൻ ജേർണി പുനരാരംഭിക്കുക</translation> <translation id="6272383483618007430">Google അപ്ഡേറ്റ്</translation> <translation id="6279183038361895380">നിങ്ങളുടെ കഴ്സർ കാണിക്കാൻ |<ph name="ACCELERATOR" />| അമർത്തുക</translation> -<translation id="628016388715774955">പൂർണ്ണ വിലാസം നൽകുക ഓപ്ഷൻ തിരഞ്ഞെടുത്തു</translation> <translation id="6280223929691119688">ഈ വിലാസത്തിലേക്ക് ഡെലിവറി ചെയ്യാൻ കഴിയില്ല. മറ്റൊരു വിലാസം തിരഞ്ഞെടുക്കുക.</translation> <translation id="6284292079994426700">26 x 38 ഇഞ്ച്</translation> <translation id="6284517535531159884">വകഭേദങ്ങളുടെ സീഡ് തരം</translation> @@ -2934,7 +2932,6 @@ <translation id="6807791860691150411">വിദ്യാഭ്യാസം</translation> <translation id="681021252041861472">ഇത് പൂരിപ്പിക്കേണ്ടതുണ്ട്</translation> <translation id="6810899417690483278">ഇഷ്ടാനുസൃതമാക്കൽ ഐഡി</translation> -<translation id="681459028290894216">പൂർണ്ണ വിലാസം നൽകുക</translation> <translation id="6816109178681043245">സ്പോർട്സ് സാമഗ്രികൾ</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">സീരിയൽ പോർട്ടുകൾ</translation>
diff --git a/components/strings/components_strings_mn.xtb b/components/strings/components_strings_mn.xtb index 08254ee..215c472 100644 --- a/components/strings/components_strings_mn.xtb +++ b/components/strings/components_strings_mn.xtb
@@ -1817,7 +1817,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Та нууц үг бөглөхөд дэлгэцийн түгжээгээ ашиглаж байна</translation> <translation id="4558551763791394412">Өргөтгөлүүдээ идэвхгүй болгоно уу.</translation> -<translation id="456043042661026303">Таны төлбөрийн дэлгэрэнгүйг аюулгүйгээр шалгаж байна</translation> <translation id="4566017918361049074">Гадаа</translation> <translation id="4567686777917670400">Таны администратор хөтчийн тань тохируулгыг алсаас өөрчилж болно. Энэ төхөөрөмж дээрх үйл ажиллагааг мөн Chromium-с гадуур удирддаг байж болно. <ph name="BEGIN_LINK" />Нэмэлт мэдээлэл авах<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Баталгаажсан</translation> @@ -2663,7 +2662,6 @@ <translation id="6272088941196661550">Chrome-н түүхдээ хамааралтай үйл ажиллагааг харахын тулд аяллаа үргэлжлүүлнэ үү</translation> <translation id="6272383483618007430">Google Шинэчлэл</translation> <translation id="6279183038361895380">Курсороо харуулахын тулд |<ph name="ACCELERATOR" />|-г дарна уу</translation> -<translation id="628016388715774955">Бүтэн хаягийг бөглөх сонголтыг сонгосон</translation> <translation id="6280223929691119688">Энэ хаяг руу хүргэх боломжгүй тул өөр хаяг сонгоно уу.</translation> <translation id="6284292079994426700">26 x 38 инч</translation> <translation id="6284517535531159884">Хувилбарын үрийн төрөл</translation> @@ -2935,7 +2933,6 @@ <translation id="6807791860691150411">Боловсрол</translation> <translation id="681021252041861472">Шаардлагатай талбар</translation> <translation id="6810899417690483278">Тохируулах ID</translation> -<translation id="681459028290894216">Бүтэн хаягийг бөглөх</translation> <translation id="6816109178681043245">Спортын бараанууд</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">цуваа порт</translation>
diff --git a/components/strings/components_strings_mr.xtb b/components/strings/components_strings_mr.xtb index a9d18b5..9f1e0f90 100644 --- a/components/strings/components_strings_mr.xtb +++ b/components/strings/components_strings_mr.xtb
@@ -517,6 +517,8 @@ <translation id="1956486093533522234">तुमचे डिव्हाइस शोधा, सुरक्षित करा किंवा मिटवा</translation> <translation id="1958218078413065209">तुमचा सर्वोच्च स्कोअर <ph name="SCORE" /> आहे.</translation> <translation id="1959001866257244765">Google ला <ph name="BEGIN_WHITEPAPER_LINK" />तुम्ही भेट देत असलेल्या काही पेजच्या URL, मर्यादित सिस्टम माहिती आणि पेजवरील काही आशय<ph name="END_WHITEPAPER_LINK" /> पाठवून वेबवरील प्रत्येकासाठी सुरक्षिततेत सुधारणा करण्यात मदत करा. <ph name="BEGIN_PRIVACY_PAGE_LINK" />गोपनीयता धोरण<ph name="END_PRIVACY_PAGE_LINK" /></translation> +<translation id="1959445535228047762">तुमचा मजकूर आणि पेजवरील आशय हे Google कडे पाठवले जातात आणि ते या वैशिष्ट्यामध्ये सुधारणा करण्यासाठी वापरले जाऊ शकतात. + <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" /></translation> <translation id="1962204205936693436"><ph name="DOMAIN" /> बुकमार्क</translation> <translation id="196752089528718902">तुम्ही सामान्यपणे साइटशी सुरक्षितरीत्या कनेक्ट करता, पण Chrome ला यावेळी सुरक्षित कनेक्शन वापरता आले नाही. हल्लेखोर हा तुमच्या नेटवर्क कनेक्शनवरील माहिती चोरण्याचा किंवा त्यामध्ये सुधारणा करण्याचा प्रयत्न करत असू शकतो. <ph name="BEGIN_LEARN_MORE_LINK" />अधिक जाणून घ्या<ph name="END_LEARN_MORE_LINK" /></translation> <translation id="1973335181906896915">क्रमीकरण एरर</translation> @@ -720,6 +722,7 @@ <translation id="2354430244986887761">Google सुरक्षित ब्राउझिंगला अलीकडे <ph name="SITE" />मध्ये <ph name="BEGIN_LINK" />हानिकारक ॲप्स सापडले<ph name="END_LINK" />.</translation> <translation id="2355395290879513365">तुम्ही या साइटवर पाहत असलेल्या इमेज पाहण्यास आक्रमणकर्ते सक्षम असू शकतात आणि त्यात सुधारणा करून तुमची फसवणूक करू शकतात.</translation> <translation id="2356070529366658676">विचारा</translation> +<translation id="2356926036049612643">V8 ऑप्टिमायझर</translation> <translation id="2357481397660644965">तुमचे डिव्हाइस <ph name="DEVICE_MANAGER" /> द्वारे आणि खाते <ph name="ACCOUNT_MANAGER" /> द्वारे व्यवस्थापित केले आहे.</translation> <translation id="2359629602545592467">अनेक</translation> <translation id="2359808026110333948">सुरू ठेवा</translation> @@ -1812,7 +1815,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">पासवर्ड भरण्यासाठी तुम्ही तुमचे स्क्रीन लॉक वापरत आहात</translation> <translation id="4558551763791394412">तुमचे विस्तार अक्षम करून पहा.</translation> -<translation id="456043042661026303">तुमचे पेमेंट तपशील सुरक्षितरीत्या तपासत आहे</translation> <translation id="4566017918361049074">आउटडोअर फिटनेस ॲक्टिव्हिटी</translation> <translation id="4567686777917670400">तुमचा अॅडमिनिस्ट्रेटर तुमच्या ब्राउझरचा सेटअप रिमोट पद्धतीने बदलू शकतो. या डिव्हाइसवरील अॅक्टिव्हिटी Chromium च्या बाहेरदेखील व्यवस्थापित केली जाऊ शकते. <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" /></translation> <translation id="4569155249847375786">सत्यापित</translation> @@ -2660,7 +2662,6 @@ <translation id="6272088941196661550">तुमच्या Chrome इतिहासामध्ये संबंधित अॅक्टिव्हिटी पाहण्यासाठी तुमचा प्रवास पुन्हा सुरू करा</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">तुमचा कर्सर दर्शविण्यासाठी |<ph name="ACCELERATOR" />| प्रेस करा</translation> -<translation id="628016388715774955">संपूर्ण पत्ता भरा हा पर्याय निवडला होता</translation> <translation id="6280223929691119688">या पत्त्यावर देऊ शकत नाही. वेगळा पत्ता निवडा.</translation> <translation id="6284292079994426700">26 x 38 in</translation> <translation id="6284517535531159884">व्हेरिएशन सीड प्रकार</translation> @@ -2932,7 +2933,6 @@ <translation id="6807791860691150411">शिक्षण</translation> <translation id="681021252041861472">या जागा भरणे आवश्यक</translation> <translation id="6810899417690483278">सानुकूलीकरण आयडी</translation> -<translation id="681459028290894216">संपूर्ण पत्ता भरा</translation> <translation id="6816109178681043245">क्रिडोपयोगी साहित्य</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">सिरीअल पोर्ट</translation>
diff --git a/components/strings/components_strings_ms.xtb b/components/strings/components_strings_ms.xtb index 8b44f01..e1cf1c2 100644 --- a/components/strings/components_strings_ms.xtb +++ b/components/strings/components_strings_ms.xtb
@@ -465,6 +465,7 @@ <translation id="1828959155404624835">Sewaan kereta</translation> <translation id="1834321415901700177">Tapak ini mengandungi atur cara berbahaya</translation> <translation id="1838374766361614909">Kosongkan carian</translation> +<translation id="1839331950812095887">beberapa perkataan yang menyimpulkan pendapat anda</translation> <translation id="1839551713262164453">Pengesahan nilai dasar gagal dengan ralat</translation> <translation id="1842969606798536927">Bayar</translation> <translation id="1846432862466000825">Plastik (Arkib)</translation> @@ -698,6 +699,7 @@ <translation id="2293443924986248631">Apabila pilihan ini dihidupkan, tapak tidak dapat menggunakan kuki yang menjejaki anda merentas web. Ciri pada sesetengah tapak mungkin rosak.</translation> <translation id="2295831393422400053">Hidupkan tetapan Jadikan Carian dan Penyemakan Imbas Lebih Baik untuk menggunakan Bantu saya tulis</translation> <translation id="2300306941146563769">Tidak dimuat naik</translation> +<translation id="2301098101308036335">Jenis dan masa laman web dilawati.</translation> <translation id="230286397113210245">Butang buka Tetingkap Inkognito, aktifkan untuk membuka tetingkap Inkognito untuk menyemak imbas secara peribadi</translation> <translation id="2312234273148520048">Perencah & Sos</translation> <translation id="2316087952091171402">Kurang daripada <ph name="UPPER_ESTIMATE" />. Sesetengah laman mungkin dimuatkan dengan lebih perlahan pada lawatan anda yang seterusnya.</translation> @@ -1366,6 +1368,7 @@ <translation id="3655670868607891010">Jika anda kerap melihatnya, cuba <ph name="HELP_LINK" /> ini.</translation> <translation id="365641980390710834">Pakaian Kasual</translation> <translation id="3658742229777143148">Semakan</translation> +<translation id="3659521826520353662">Jenis dan masa laman web ditakrifkan pentadbir dilawati: <ph name="ALLOWLISTED_WEBSITES" /></translation> <translation id="3664782872746246217">Kata kunci:</translation> <translation id="3665100783276035932">Kebanyakan laman harus berfungsi seperti yang dijangkakan</translation> <translation id="3667704023705708645">Modal usaha niaga</translation> @@ -1456,6 +1459,7 @@ <translation id="3812398568375898177">Kemaskinian ini penting kerana meningkatkan prestasi apl Android pada ChromeOS.</translation> <translation id="3815434930383843058">8 x 12 in</translation> <translation id="3816482573645936981">Nilai (digantikan)</translation> +<translation id="382115839591654906">CVC untuk <ph name="CARD_NAME" /></translation> <translation id="3823019343150397277">IBAN</translation> <translation id="3823402221513322552">Penyemak imbas anda diurus oleh <ph name="BROWSER_DOMAIN" /> dan profil anda diurus oleh <ph name="PROFILE_DOMAIN" /></translation> <translation id="382518646247711829">Jika anda menggunakan pelayan proksi...</translation> @@ -1817,7 +1821,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Anda menggunakan kunci skrin anda untuk mengisikan kata laluan</translation> <translation id="4558551763791394412">Cuba lumpuhkan sambungan anda.</translation> -<translation id="456043042661026303">Semak butiran pembayaran anda dengan selamat</translation> <translation id="4566017918361049074">Aktiviti luar</translation> <translation id="4567686777917670400">Pentadbir anda boleh menukar persediaan penyemak imbas anda dari jauh. Aktiviti pada peranti ini juga mungkin diurus di luar Chromium. <ph name="BEGIN_LINK" />Ketahui lebih lanjut<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Disahkan</translation> @@ -2664,7 +2667,6 @@ <translation id="6272088941196661550">Sambung semula perjalanan anda untuk melihat aktiviti yang berkaitan dalam sejarah Chrome anda</translation> <translation id="6272383483618007430">Kemas Kini Google</translation> <translation id="6279183038361895380">Tekan |<ph name="ACCELERATOR" />| untuk memaparkan kursor anda</translation> -<translation id="628016388715774955">Pilihan pengisian alamat penuh telah dipilih</translation> <translation id="6280223929691119688">Tidak dapat menghantar ke alamat ini. Pilih alamat lain.</translation> <translation id="6284292079994426700">26 x 38 in</translation> <translation id="6284517535531159884">Jenis Benih Variasi</translation> @@ -2936,7 +2938,6 @@ <translation id="6807791860691150411">Pendidikan</translation> <translation id="681021252041861472">Medan Diperlukan</translation> <translation id="6810899417690483278">ID Penyesuaian</translation> -<translation id="681459028290894216">Isi alamat penuh</translation> <translation id="6816109178681043245">Barangan Sukan</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">port bersiri</translation> @@ -3207,6 +3208,7 @@ <translation id="7341357280245177602">Kenderaan terpakai</translation> <translation id="7346048084945669753">Ialah ahli gabungan:</translation> <translation id="7346062987309535530">Peralatan hidangan makanan</translation> +<translation id="7346081071264046066">"balas ya kepada undangan majlis perkahwinan ini dengan keterujaan"</translation> <translation id="7352651011704765696">Kesilapan telah berlaku</translation> <translation id="7353601530677266744">Baris Perintah</translation> <translation id="7354880545102894991">Perjalanan kos rendah & saat akhir</translation>
diff --git a/components/strings/components_strings_my.xtb b/components/strings/components_strings_my.xtb index ff979e7..090e52f 100644 --- a/components/strings/components_strings_my.xtb +++ b/components/strings/components_strings_my.xtb
@@ -1814,7 +1814,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">သင်သည် စကားဝှက်ဖြည့်ရန်အတွက် ဖန်သားပြင်လော့ခ်ကို အသုံးပြုနေသည်</translation> <translation id="4558551763791394412">သင့် နောက်ဆက်တွဲများကို ဖြုတ်ကြည့်ပါ။</translation> -<translation id="456043042661026303">ငွေပေးချေမှု အချက်အလက်များကို လုံခြုံစွာ စစ်ဆေးနေသည်</translation> <translation id="4566017918361049074">ပြင်ပလှုပ်ရှားမှုများ</translation> <translation id="4567686777917670400">သင့်စီမံခန့်ခွဲသူက သင်၏ဘရောင်ဇာ စနစ်ထည့်သွင်းမှုကို အဝေးမှ ပြောင်းလဲနိုင်ပါသည်။ ဤစက်ပေါ်ရှိ လုပ်ဆောင်ချက်ကိုလည်း Chromium ပြင်ပမှ စီမံခန့်ခွဲထားနိုင်သည်။ <ph name="BEGIN_LINK" />ပိုမိုလေ့လာရန်<ph name="END_LINK" /></translation> <translation id="4569155249847375786">စိစစ်ပြီး</translation> @@ -2660,7 +2659,6 @@ <translation id="6272088941196661550">သင်၏ Chrome မှတ်တမ်းရှိ သက်ဆိုင်ရာလုပ်ဆောင်ချက်ကို ကြည့်ရန် သင့်ခရီးစဉ်ကို ဆက်လုပ်ပါ</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">သင်၏ ညွှန်းမြားကို ပြပေးရန် |<ph name="ACCELERATOR" />ကို နှိပ်ပါ</translation> -<translation id="628016388715774955">‘လိပ်စာအပြည့်အစုံ ဖြည့်ရန်’ ရွေးစရာကို ရွေးထားသည်</translation> <translation id="6280223929691119688">ဤလိပ်စာသို့ ပို့၍မရပါ။ အခြားလိပ်စာတစ်ခုကို ရွေးပါ။</translation> <translation id="6284292079994426700">၂၆ x ၃၈ လက်မ</translation> <translation id="6284517535531159884">မူကွဲရင်းမြစ်အမျိုးအစား</translation> @@ -2932,7 +2930,6 @@ <translation id="6807791860691150411">ပညာရေး</translation> <translation id="681021252041861472">လိုအပ်သည့် အကွက်</translation> <translation id="6810899417690483278">စိတ်ကြိုက်ပြုလုပ်မှု ID</translation> -<translation id="681459028290894216">လိပ်စာအပြည့်အစုံ ဖြည့်ရန်</translation> <translation id="6816109178681043245">အားကစားပစ္စည်း</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">အစဉ်လိုက်ပို့တ်များ</translation>
diff --git a/components/strings/components_strings_ne.xtb b/components/strings/components_strings_ne.xtb index 8778224..982ea3b 100644 --- a/components/strings/components_strings_ne.xtb +++ b/components/strings/components_strings_ne.xtb
@@ -1814,7 +1814,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">तपाईं पासवर्डहरू हाल्नका निम्ति स्क्रिन लक प्रयोग गर्दै हुनुहुन्छ</translation> <translation id="4558551763791394412">आफ्ना विस्तारहरूलाई असक्षम गर्ने प्रयास गर्नुहोस्।</translation> -<translation id="456043042661026303">तपाईंका भुक्तानी विवरणहरू सुरक्षित तरिकाले जाँच गरिँदै छ</translation> <translation id="4566017918361049074">घरबाहिर गरिने क्रियाकलाप</translation> <translation id="4567686777917670400">तपाईंका एड्मिन टाढैबाट तपाईंको ब्राउजरको सेटअप बदल्न सक्छन्। यो डिभाइसमा गरिएका क्रियाकलाप Chromium बाहिरबाट पनि व्यवस्थापन गरिन सक्छ। <ph name="BEGIN_LINK" />थप जान्नुहोस्<ph name="END_LINK" /></translation> <translation id="4569155249847375786">प्रमाणित</translation> @@ -2661,7 +2660,6 @@ <translation id="6272088941196661550">तपाईं Chrome को ब्राउजिङ इतिहासमा सान्दर्भिक गतिविधि हेर्न चाहनुहुन्छ भने खोज्ने क्रम सुचारु गर्नुहोस्</translation> <translation id="6272383483618007430">Google अपडेट</translation> <translation id="6279183038361895380">तपाईंको कर्सर देखाउन |<ph name="ACCELERATOR" />| लाई थिच्नुहोस्</translation> -<translation id="628016388715774955">पूरा ठेगाना भर्ने विकल्प चयन गरियो</translation> <translation id="6280223929691119688">यो ठेगानामा डेलिभर गर्न सकिँदैन। कुनै अर्को ठेगाना चयन गर्नुहोस्।</translation> <translation id="6284292079994426700">२६ x ३८ इन्च</translation> <translation id="6284517535531159884">भेरिएसन सिडको प्रकार</translation> @@ -2933,7 +2931,6 @@ <translation id="6807791860691150411">शिक्षा</translation> <translation id="681021252041861472">अनिवार्य क्षेत्र</translation> <translation id="6810899417690483278">अनुकूलनको ID</translation> -<translation id="681459028290894216">पूरा ठेगाना भर्नुहोस्</translation> <translation id="6816109178681043245">खेलकुदसम्बन्धी सामान</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">सिरियल पोर्टहरू</translation>
diff --git a/components/strings/components_strings_nl.xtb b/components/strings/components_strings_nl.xtb index 5eecc30..a623707 100644 --- a/components/strings/components_strings_nl.xtb +++ b/components/strings/components_strings_nl.xtb
@@ -465,6 +465,7 @@ <translation id="1828959155404624835">Autoverhuur</translation> <translation id="1834321415901700177">Deze site bevat schadelijke programma's</translation> <translation id="1838374766361614909">Zoekopdracht wissen</translation> +<translation id="1839331950812095887">een paar woorden die je gedachten samenvatten</translation> <translation id="1839551713262164453">De validatie van de beleidswaarden is mislukt doordat er fouten zijn opgetreden</translation> <translation id="1842969606798536927">Betalen</translation> <translation id="1846432862466000825">Plastic (archief)</translation> @@ -698,6 +699,7 @@ <translation id="2293443924986248631">Als deze optie aanstaat, kunnen sites geen cookies gebruiken die je volgen op internet. Functies op bepaalde sites werken mogelijk niet meer.</translation> <translation id="2295831393422400053">Zet de instelling Zoekopdrachten en browsefunctionaliteit verbeteren aan om Help me met schrijven te gebruiken</translation> <translation id="2300306941146563769">Niet geüpload</translation> +<translation id="2301098101308036335">Welke websites worden bezocht en wanneer.</translation> <translation id="230286397113210245">Knop Incognitovenster openen. Activeer deze om een nieuw incognitovenster te openen om privé te browsen.</translation> <translation id="2312234273148520048">Sauzen en dressings</translation> <translation id="2316087952091171402">Minder dan <ph name="UPPER_ESTIMATE" />. Sommige sites laden misschien langzamer bij je volgende bezoek.</translation> @@ -1360,6 +1362,7 @@ <translation id="3655670868607891010">Als je deze melding vaker ziet, probeer je deze <ph name="HELP_LINK" />.</translation> <translation id="365641980390710834">Vrijetijdskleding</translation> <translation id="3658742229777143148">Revisie</translation> +<translation id="3659521826520353662">Welke door de beheerder gedefinieerde websites worden bezocht en wanneer: <ph name="ALLOWLISTED_WEBSITES" /></translation> <translation id="3664782872746246217">Zoekwoorden:</translation> <translation id="3665100783276035932">De meeste sites werken zoals verwacht</translation> <translation id="3667704023705708645">Durfkapitaal</translation> @@ -1450,6 +1453,7 @@ <translation id="3812398568375898177">Dit is een essentiële update die de prestaties van Android-apps op ChromeOS verbetert.</translation> <translation id="3815434930383843058">8 x 12 inch</translation> <translation id="3816482573645936981">Waarde (vervangen)</translation> +<translation id="382115839591654906">CVC voor <ph name="CARD_NAME" /></translation> <translation id="3823019343150397277">IBAN</translation> <translation id="3823402221513322552">Je browser wordt beheerd door <ph name="BROWSER_DOMAIN" /> en je profiel wordt beheerd door <ph name="PROFILE_DOMAIN" /></translation> <translation id="382518646247711829">Als je een proxyserver gebruikt...</translation> @@ -1811,7 +1815,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Je gebruikt je schermvergrendeling om wachtwoorden in te vullen</translation> <translation id="4558551763791394412">Probeer je extensies uit te zetten.</translation> -<translation id="456043042661026303">Je betalingsgegevens beveiligd checken</translation> <translation id="4566017918361049074">Buitenactiviteiten</translation> <translation id="4567686777917670400">Je beheerder kan je browserinstellingen op afstand wijzigen. Activiteit op dit apparaat kan ook buiten Chromium worden beheerd. <ph name="BEGIN_LINK" />Meer informatie<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Geverifieerd</translation> @@ -2657,7 +2660,6 @@ <translation id="6272088941196661550">Hervat je traject om relevante activiteit in je Chrome-geschiedenis te bekijken</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">Druk op |<ph name="ACCELERATOR" />| om je cursor te bekijken</translation> -<translation id="628016388715774955">De optie Volledig adres invullen is geselecteerd</translation> <translation id="6280223929691119688">Kan niet bezorgen op dit adres. Selecteer een ander adres.</translation> <translation id="6284292079994426700">26 x 38 inch</translation> <translation id="6284517535531159884">Type variantseed</translation> @@ -2929,7 +2931,6 @@ <translation id="6807791860691150411">Onderwijs</translation> <translation id="681021252041861472">Verplicht veld</translation> <translation id="6810899417690483278">Aanpassings-ID</translation> -<translation id="681459028290894216">Volledig adres invullen</translation> <translation id="6816109178681043245">Sportartikelen</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">seriële poorten</translation> @@ -3200,6 +3201,7 @@ <translation id="7341357280245177602">Tweedehands voertuigen</translation> <translation id="7346048084945669753">Is gelieerd:</translation> <translation id="7346062987309535530">Servies</translation> +<translation id="7346081071264046066">'antwoord vol enthousiasme ja op deze huwelijksuitnodiging'</translation> <translation id="7352651011704765696">Er is iets misgegaan</translation> <translation id="7353601530677266744">Opdrachtregel</translation> <translation id="7354880545102894991">Goedkope en lastminutereizen</translation>
diff --git a/components/strings/components_strings_no.xtb b/components/strings/components_strings_no.xtb index 10ae80de..29518de 100644 --- a/components/strings/components_strings_no.xtb +++ b/components/strings/components_strings_no.xtb
@@ -1820,7 +1820,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Du bruker skjermlåsen til å fylle ut passord</translation> <translation id="4558551763791394412">Prøv å slå av utvidelsene dine.</translation> -<translation id="456043042661026303">Utfører en sikker sjekk av betalingsopplysningene dine</translation> <translation id="4566017918361049074">Utendørs</translation> <translation id="4567686777917670400">Administratoren kan endre nettleseroppsettet eksternt. Aktiviteten på denne enheten kan også administreres utenfor Chromium. <ph name="BEGIN_LINK" />Finn ut mer<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Bekreftet</translation> @@ -2667,7 +2666,6 @@ <translation id="6272088941196661550">Fortsett reisen for å se relevant aktivitet i Chrome-loggen</translation> <translation id="6272383483618007430">Google Oppdatering</translation> <translation id="6279183038361895380">Trykk på |<ph name="ACCELERATOR" />| for å se markøren</translation> -<translation id="628016388715774955">Alternativet for å fylle ut hele adressen er valgt</translation> <translation id="6280223929691119688">Kan ikke levere til denne adressen. Velg en annen adresse.</translation> <translation id="6284292079994426700">26 x 38 tommer</translation> <translation id="6284517535531159884">Typer frøvarianter</translation> @@ -2939,7 +2937,6 @@ <translation id="6807791860691150411">Utdanning</translation> <translation id="681021252041861472">Obligatorisk felt</translation> <translation id="6810899417690483278">Tilpasnings-ID</translation> -<translation id="681459028290894216">Fyll ut hele adressen</translation> <translation id="6816109178681043245">Sportsartikler</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">serielle porter</translation>
diff --git a/components/strings/components_strings_or.xtb b/components/strings/components_strings_or.xtb index 8658b3e..3718969 100644 --- a/components/strings/components_strings_or.xtb +++ b/components/strings/components_strings_or.xtb
@@ -1810,7 +1810,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">ଆପଣ ପାସୱାର୍ଡଗୁଡ଼ିକ ପୂରଣ କରିବା ପାଇଁ ଆପଣଙ୍କ ସ୍କ୍ରିନ ଲକ ବ୍ୟବହାର କରୁଛନ୍ତି</translation> <translation id="4558551763791394412">ଆପଣଙ୍କର ଏକ୍ସଟେନ୍ସନ୍ଗୁଡ଼ିକୁ ଅକ୍ଷମ କରିବାକୁ ଚେଷ୍ଟା କରନ୍ତୁ।</translation> -<translation id="456043042661026303">ଆପଣଙ୍କ ପେମେଣ୍ଟ ବିବରଣୀକୁ ସୁରକ୍ଷିତ ଭାବେ ଯାଞ୍ଚ କରାଯାଉଛି</translation> <translation id="4566017918361049074">ଆଉଟଡୋର</translation> <translation id="4567686777917670400">ଆପଣଙ୍କର ଆଡମିନିଷ୍ଟ୍ରେଟର୍ ଆପଣଙ୍କ ବ୍ରାଉଜର୍ ସେଟଅପକୁ ରିମୋଟ୍ ଭାବରେ ବଦଳାଇପାରିବେ। ଏହି ଡିଭାଇସରେ କରାଯାଉଥିବା କାର୍ଯ୍ୟକଳାପ Chromium ବାହାରେ ମଧ୍ୟ ପରିଚାଳନା କରାଯାଇପାରେ। <ph name="BEGIN_LINK" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK" /></translation> <translation id="4569155249847375786">ଯାଞ୍ଚ କରାଯାଇଛି</translation> @@ -2329,7 +2328,7 @@ <translation id="5580958916614886209">ଆପଣଙ୍କର ମିଆଦ ଶେଷ ହେଉଥିବା ମାସ ଯାଞ୍ଚ କରନ୍ତୁ ଏବଂ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ</translation> <translation id="558420943003240152">ପାସୱାର୍ଡ ଏବଂ ପାସକୀଗୁଡ଼ିକୁ ପରିଚାଳନା କରନ୍ତୁ…</translation> <translation id="5586446728396275693">କୌଣସି ସେଭ୍ ହୋଇଥିବା ଠିକଣାଗୁଡ଼ିକ ନାହିଁ</translation> -<translation id="5586831831248371458"><ph name="KEYWORD_SUFFIX" /> ସନ୍ଧାନ କରନ୍ତୁ</translation> +<translation id="5586831831248371458"><ph name="KEYWORD_SUFFIX" /> ସର୍ଚ୍ଚ କରନ୍ତୁ</translation> <translation id="5587987780934666589">ପ୍ଲାଟଫର୍ମ ୟୁଜର</translation> <translation id="5593349413089863479">ସଂଯୋଗଟି ସମ୍ପୂର୍ଣ୍ଣ ଭାବେ ସୁରକ୍ଷିତ ନୁହେଁ</translation> <translation id="5595485650161345191">ଠିକଣା ଏଡିଟ୍ କରନ୍ତୁ</translation> @@ -2657,7 +2656,6 @@ <translation id="6272088941196661550">ଆପଣଙ୍କ Chrome ଇତିହାସରେ ପ୍ରାସଙ୍ଗିକ କାର୍ଯ୍ୟକଳାପ ଦେଖିବାକୁ ଆପଣଙ୍କ ସନ୍ଧାନ ପୁଣି ଆରମ୍ଭ କରନ୍ତୁ</translation> <translation id="6272383483618007430">Google ଅପଡେଟ୍</translation> <translation id="6279183038361895380">ଆପଣଙ୍କର କର୍ସର୍ ଦେଖାଇବାକୁ |<ph name="ACCELERATOR" />| ଦବାନ୍ତୁ</translation> -<translation id="628016388715774955">'ସମ୍ପୂର୍ଣ୍ଣ ଠିକଣା ପୂରଣ କରନ୍ତୁ' ବିକଳ୍ପ ଚୟନ କରାଯାଇଛି</translation> <translation id="6280223929691119688">ଏହି ଠିକଣାକୁ ପହଞ୍ଚାଇପାରିବ ନାହିଁ। ଏକ ଭିନ୍ନ ଠିକଣା ଚୟନ କରନ୍ତୁ।</translation> <translation id="6284292079994426700">26 x 38 ଇଞ୍ଚ</translation> <translation id="6284517535531159884">ଭେରିଏସନ ସିଡ ପ୍ରକାର</translation> @@ -2929,7 +2927,6 @@ <translation id="6807791860691150411">ଶିକ୍ଷା</translation> <translation id="681021252041861472">ଆବଶ୍ୟକୀୟ କ୍ଷେତ୍ର</translation> <translation id="6810899417690483278">କଷ୍ଟମାଇଜେସନ୍ ID</translation> -<translation id="681459028290894216">ସମ୍ପୂର୍ଣ୍ଣ ଠିକଣା ପୂରଣ କରନ୍ତୁ</translation> <translation id="6816109178681043245">ସ୍ପୋର୍ଟିଂ ଗୁଡ୍ସ</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">ସିରିଅଲ୍ ପୋର୍ଟଗୁଡ଼ିକ</translation>
diff --git a/components/strings/components_strings_pa.xtb b/components/strings/components_strings_pa.xtb index 86686a5..78edc1f9 100644 --- a/components/strings/components_strings_pa.xtb +++ b/components/strings/components_strings_pa.xtb
@@ -465,6 +465,7 @@ <translation id="1828959155404624835">ਕਿਰਾਏ 'ਤੇ ਕਾਰ</translation> <translation id="1834321415901700177">ਇਸ ਸਾਈਟ ਵਿੱਚ ਹਾਨੀਕਾਰਕ ਪ੍ਰੋਗਰਾਮ ਹਨ</translation> <translation id="1838374766361614909">ਖੋਜ ਹਟਾਓ</translation> +<translation id="1839331950812095887">ਤੁਹਾਡੇ ਵਿਚਾਰਾਂ ਨੂੰ ਦਰਸਾਉਣ ਲਈ ਕੁਝ ਸ਼ਬਦ</translation> <translation id="1839551713262164453">ਨੀਤੀ ਮੁੱਲਾਂ ਦਾ ਪ੍ਰਮਾਣੀਕਰਨ ਗੜਬੜਾਂ ਦੇ ਕਾਰਨ ਅਸਫਲ ਰਿਹਾ</translation> <translation id="1842969606798536927">ਭੁਗਤਾਨ ਕਰੋ</translation> <translation id="1846432862466000825">ਪਲਾਸਟਿਕ (ਆਰਕਾਈਵਲ)</translation> @@ -696,6 +697,7 @@ <translation id="2293443924986248631">ਚਾਲੂ ਹੋਣ 'ਤੇ, ਸਾਈਟਾਂ ਉਹਨਾਂ ਕੁਕੀਜ਼ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰ ਸਕਦੀਆਂ ਜੋ ਵੈੱਬ 'ਤੇ ਤੁਹਾਨੂੰ ਟਰੈਕ ਕਰਦੀਆਂ ਹਨ। ਸ਼ਾਇਦ ਕੁਝ ਸਾਈਟਾਂ 'ਤੇ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਠੀਕ ਤਰੀਕੇ ਨਾਲ ਕੰਮ ਨਾ ਕਰਨ।</translation> <translation id="2295831393422400053">'ਲਿਖਣ ਵਿੱਚ ਮੇਰੀ ਮਦਦ ਕਰੋ' ਨੂੰ ਵਰਤਣ ਲਈ 'ਖੋਜਾਂ ਅਤੇ ਬ੍ਰਾਊਜ਼ਿੰਗ ਨੂੰ ਬਿਹਤਰ ਬਣਾਓ' ਸੈਟਿੰਗ ਨੂੰ ਚਾਲੂ ਕਰੋ</translation> <translation id="2300306941146563769">ਅੱਪਲੋਡ ਨਹੀਂ ਕੀਤੀ ਗਈ</translation> +<translation id="2301098101308036335">ਕਿਹੜੀਆਂ ਵੈੱਬਸਾਈਟਾਂ ਨੂੰ ਦੇਖਿਆ ਗਿਆ ਹੈ ਅਤੇ ਕਦੋਂ।</translation> <translation id="230286397113210245">'ਇਨਕੋਗਨਿਟੋ ਵਿੰਡੋ ਖੋਲ੍ਹੋ' ਬਟਨ, ਨਿੱਜੀ ਤੌਰ 'ਤੇ ਬ੍ਰਾਊਜ਼ ਕਰਨ ਵਾਸਤੇ ਨਵੀਂ ਇਨਕੋਗਨਿਟੋ ਵਿੰਡੋ ਖੋਲ੍ਹਣ ਲਈ ਇਸਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਕਰੋ</translation> <translation id="2312234273148520048">ਮਸਾਲੇ ਅਤੇ ਖਾਣ-ਪੀਣ ਸੰਬੰਧੀ ਸਜਾਵਟਾਂ</translation> <translation id="2316087952091171402"><ph name="UPPER_ESTIMATE" /> ਤੋਂ ਘੱਟ। ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਤੁਹਾਡੀ ਅਗਲੀ ਫੇਰੀ 'ਤੇ ਕੁਝ ਸਾਈਟਾਂ ਵਧੇਰੇ ਹੌਲੀ ਲੋਡ ਹੋਣ।</translation> @@ -1359,6 +1361,7 @@ <translation id="3655670868607891010">ਜੇਕਰ ਤੁਸੀਂ ਇਸਨੂੰ ਵਾਰ-ਵਾਰ ਦੇਖ ਰਹੇ ਹੋ, ਇਹਨਾਂ <ph name="HELP_LINK" /> ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> <translation id="365641980390710834">ਆਮ ਲਿਬਾਸ</translation> <translation id="3658742229777143148">ਸੁਧਾਈ</translation> +<translation id="3659521826520353662">ਕਿਹੜੀਆਂ ਪ੍ਰਸ਼ਾਸਕ-ਪਰਿਭਾਸ਼ਿਤ ਵੈੱਬਸਾਈਟਾਂ ਨੂੰ ਦੇਖਿਆ ਗਿਆ ਹੈ ਅਤੇ ਕਦੋਂ: <ph name="ALLOWLISTED_WEBSITES" /></translation> <translation id="3664782872746246217">ਪ੍ਰਮੁੱਖ-ਸ਼ਬਦ:</translation> <translation id="3665100783276035932">ਜ਼ਿਆਦਾਤਰ ਸਾਈਟਾਂ ਉਮੀਦ ਮੁਤਾਬਕ ਕੰਮ ਕਰਨਗੀਆਂ</translation> <translation id="3667704023705708645">ਵੈਂਚਰ ਕੈਪੀਟਲ</translation> @@ -1449,6 +1452,7 @@ <translation id="3812398568375898177">ਇਹ ਅਤਿ-ਜ਼ਰੂਰੀ ਅੱਪਡੇਟ ਹੈ ਜੋ ChromeOS 'ਤੇ Android ਐਪਾਂ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਂਦਾ ਹੈ।</translation> <translation id="3815434930383843058">8 x 12 ਇੰਚ</translation> <translation id="3816482573645936981">ਮੁੱਲ (ਪ੍ਰਤਿਸਥਾਪਨ ਕੀਤਾ)</translation> +<translation id="382115839591654906"><ph name="CARD_NAME" /> ਲਈ CVC</translation> <translation id="3823019343150397277">IBAN</translation> <translation id="3823402221513322552">ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ਰ ਦਾ ਪ੍ਰਬੰਧਨ <ph name="BROWSER_DOMAIN" /> ਵੱਲੋਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਤੁਹਾਡੇ ਪ੍ਰੋਫਾਈਲ ਦਾ ਪ੍ਰਬੰਧਨ <ph name="PROFILE_DOMAIN" /> ਵੱਲੋਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ</translation> <translation id="382518646247711829">ਜੇਕਰ ਤੁਸੀਂ ਇੱਕ ਪ੍ਰੌਕਸੀ ਸਰਵਰ ਵਰਤਦੇ ਹੋ...</translation> @@ -1810,7 +1814,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">ਪਾਸਵਰਡ ਭਰਨ ਲਈ ਤੁਸੀਂ ਆਪਣੇ ਸਕ੍ਰੀਨ ਲਾਕ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ</translation> <translation id="4558551763791394412">ਆਪਣੀਆਂ ਐਕਸਟੈਂਸ਼ਨਾਂ ਨੂੰ ਅਯੋਗ ਬਣਾਉਣਾ ਅਜ਼ਮਾਓ।</translation> -<translation id="456043042661026303">ਤੁਹਾਡੇ ਭੁਗਤਾਨ ਵੇਰਵਿਆਂ ਦੀ ਸੁਰੱਖਿਅਤ ਤਰੀਕੇ ਨਾਲ ਜਾਂਚ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ</translation> <translation id="4566017918361049074">ਬਾਹਰੀ ਮਨੋਰੰਜਨ</translation> <translation id="4567686777917670400">ਤੁਹਾਡਾ ਪ੍ਰਸ਼ਾਸਕ ਦੂਰ-ਦੁਰਾਡੇ ਤੋਂ ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ਰ ਸੈੱਟਅੱਪ ਨੂੰ ਬਦਲ ਸਕਦਾ ਹੈ। ਇਸ ਡੀਵਾਈਸ ਦੀ ਸਰਗਰਮੀ ਦਾ ਪ੍ਰਬੰਧਨ Chromium ਤੋਂ ਬਾਹਰ ਵੀ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। <ph name="BEGIN_LINK" />ਹੋਰ ਜਾਣੋ<ph name="END_LINK" /></translation> <translation id="4569155249847375786">ਪ੍ਰਮਾਣਿਤ</translation> @@ -2656,7 +2659,6 @@ <translation id="6272088941196661550">ਆਪਣੇ Chrome ਇਤਿਹਾਸ ਵਿੱਚ ਢੁਕਵੀਂ ਸਰਗਰਮੀ ਦੇਖਣ ਲਈ ਆਪਣੇ ਖੋਜ ਸਫ਼ਰ ਨੂੰ ਮੁੜ-ਚਾਲੂ ਕਰੋ</translation> <translation id="6272383483618007430">Google ਅੱਪਡੇਟ</translation> <translation id="6279183038361895380">ਆਪਣਾ ਕਰਸਰ ਵਿਖਾਉਣ ਲਈ |<ph name="ACCELERATOR" />| ਦਬਾਓ</translation> -<translation id="628016388715774955">'ਪੂਰਾ ਪਤਾ ਭਰੋ' ਵਿਕਲਪ ਚੁਣਿਆ ਗਿਆ</translation> <translation id="6280223929691119688">ਇਸ ਪਤੇ 'ਤੇ ਅਦਾਇਗੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ। ਕੋਈ ਵੱਖਰਾ ਪਤਾ ਚੁਣੋ।</translation> <translation id="6284292079994426700">26 x 38 ਇੰਚ</translation> <translation id="6284517535531159884">ਵਖਰੇਂਵੇ ਸੀਡ ਦੀ ਕਿਸਮ</translation> @@ -2928,7 +2930,6 @@ <translation id="6807791860691150411">ਸਿੱਖਿਆ</translation> <translation id="681021252041861472">ਲੋੜੀਂਦਾ ਖੇਤਰ</translation> <translation id="6810899417690483278">ਵਿਉਂਤੀ ਆਈ.ਡੀ.</translation> -<translation id="681459028290894216">ਪੂਰਾ ਪਤਾ ਭਰੋ</translation> <translation id="6816109178681043245">ਖੇਡਾਂ ਦਾ ਸਮਾਨ</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">ਸੀਰੀਅਲ ਪੋਰਟ</translation> @@ -3199,6 +3200,7 @@ <translation id="7341357280245177602">ਵਰਤੇ ਹੋਏ ਵਾਹਨ</translation> <translation id="7346048084945669753">ਸੰਬੰਧਿਤ ਹੈ:</translation> <translation id="7346062987309535530">ਭੋਜਨ ਖਾਣ ਵਾਲੇ ਭਾਂਡੇ</translation> +<translation id="7346081071264046066">"ਉਤਸ਼ਾਹ ਨਾਲ ਵਿਆਹ ਦੇ ਇਸ ਸੱਦੇ ਦਾ 'ਹਾਂ' ਵਿੱਚ ਜਵਾਬ ਦਿਓ"</translation> <translation id="7352651011704765696">ਕੋਈ ਗੜਬੜ ਹੋ ਗਈ</translation> <translation id="7353601530677266744">ਕਮਾਂਡ ਲਾਈਨ</translation> <translation id="7354880545102894991">ਘੱਟ ਲਾਗਤ ਵਾਲੀਆਂ ਅਤੇ ਆਖਰੀ ਮਿੰਟ ਦੀਆਂ ਯਾਤਰਾ ਸੰਬੰਧੀ ਡੀਲਾਂ</translation>
diff --git a/components/strings/components_strings_pl.xtb b/components/strings/components_strings_pl.xtb index 69809b4..75fe94d 100644 --- a/components/strings/components_strings_pl.xtb +++ b/components/strings/components_strings_pl.xtb
@@ -465,6 +465,7 @@ <translation id="1828959155404624835">Wypożyczalnie samochodów</translation> <translation id="1834321415901700177">Ta strona zawiera szkodliwe programy</translation> <translation id="1838374766361614909">Wyczyść wyszukiwanie</translation> +<translation id="1839331950812095887">kilka słów podsumowujących Twoją opinię</translation> <translation id="1839551713262164453">Weryfikacja wartości zasad nie udała się z powodu błędów</translation> <translation id="1842969606798536927">Zapłać</translation> <translation id="1846432862466000825">Plastik (materiały archiwalne)</translation> @@ -698,6 +699,7 @@ <translation id="2293443924986248631">Gdy to ustawienie jest włączone, strony internetowe nie mogą używać plików cookie śledzących, co robisz w sieci. Funkcje niektórych witryn mogą nie działać prawidłowo.</translation> <translation id="2295831393422400053">Aby korzystać z funkcji Pomóż mi napisać, włącz ustawienie Ulepsz wyszukiwanie i przeglądanie</translation> <translation id="2300306941146563769">Nieprzesłany</translation> +<translation id="2301098101308036335">Jakie witryny są odwiedzane i kiedy.</translation> <translation id="230286397113210245">Przycisk Otwórz okno incognito; aktywuj, aby otworzyć nowe okno incognito i przeglądać prywatnie</translation> <translation id="2312234273148520048">Przyprawy i sosy</translation> <translation id="2316087952091171402">Mniej niż <ph name="UPPER_ESTIMATE" />. Podczas następnej wizyty niektóre strony mogą ładować się wolniej.</translation> @@ -1365,6 +1367,7 @@ <translation id="3655670868607891010">Jeśli często widzisz ten komunikat, przeczytaj <ph name="HELP_LINK" />.</translation> <translation id="365641980390710834">Odzież codzienna</translation> <translation id="3658742229777143148">Wersja</translation> +<translation id="3659521826520353662">Które witryny zdefiniowane przez administratora są odwiedzane i kiedy: <ph name="ALLOWLISTED_WEBSITES" /></translation> <translation id="3664782872746246217">Słowa kluczowe:</translation> <translation id="3665100783276035932">Większość stron powinna działać zgodnie z oczekiwaniami</translation> <translation id="3667704023705708645">Kapitał podwyższonego ryzyka</translation> @@ -1455,6 +1458,7 @@ <translation id="3812398568375898177">To kluczowa aktualizacja, która poprawia wydajność aplikacji na Androida w ChromeOS.</translation> <translation id="3815434930383843058">8 x 12 cali</translation> <translation id="3816482573645936981">Wartość (zastąpiona)</translation> +<translation id="382115839591654906">Kod CVC karty <ph name="CARD_NAME" /></translation> <translation id="3823019343150397277">Numer IBAN</translation> <translation id="3823402221513322552">Przeglądarką zarządza <ph name="BROWSER_DOMAIN" />, a Twoim profilem – <ph name="PROFILE_DOMAIN" /></translation> <translation id="382518646247711829">Jeśli używasz serwera proxy...</translation> @@ -1816,7 +1820,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Używasz blokady ekranu do wypełniania haseł</translation> <translation id="4558551763791394412">Spróbuj wyłączyć rozszerzenia.</translation> -<translation id="456043042661026303">Bezpiecznie sprawdzam dane do płatności</translation> <translation id="4566017918361049074">Rekreacja w plenerze</translation> <translation id="4567686777917670400">Administrator może zdalnie zmienić konfigurację przeglądarki. Aktywność na tym urządzeniu może być zarządzana również poza Chromium. <ph name="BEGIN_LINK" />Więcej informacji<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Zweryfikowane</translation> @@ -2663,7 +2666,6 @@ <translation id="6272088941196661550">Wznów swoją serię czynności, aby zobaczyć odpowiednią aktywność w historii Chrome</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">Naciśnij |<ph name="ACCELERATOR" />|, by wyświetlić kursor</translation> -<translation id="628016388715774955">Wybrano opcję wypełnienia całego adresu</translation> <translation id="6280223929691119688">Nie można dostarczyć pod ten adres. Wybierz inny.</translation> <translation id="6284292079994426700">26 x 38 cali</translation> <translation id="6284517535531159884">Typ materiału wyjściowego dla odmian</translation> @@ -2935,7 +2937,6 @@ <translation id="6807791860691150411">Edukacja</translation> <translation id="681021252041861472">Pole wymagane</translation> <translation id="6810899417690483278">Identyfikator dostosowania</translation> -<translation id="681459028290894216">Wypełnij cały adres</translation> <translation id="6816109178681043245">Produkty sportowe</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">porty szeregowe</translation> @@ -3206,6 +3207,7 @@ <translation id="7341357280245177602">Pojazdy używane</translation> <translation id="7346048084945669753">Jest w tej samej domenie:</translation> <translation id="7346062987309535530">Zastawa stołowa</translation> +<translation id="7346081071264046066">„zaakceptuj z entuzjazmem to zaproszenie na wesele"</translation> <translation id="7352651011704765696">Coś poszło nie tak</translation> <translation id="7353601530677266744">Wiersz poleceń</translation> <translation id="7354880545102894991">Tanie podróże i wycieczki last minute</translation>
diff --git a/components/strings/components_strings_pt-BR.xtb b/components/strings/components_strings_pt-BR.xtb index 9ed08ad..01f68f5 100644 --- a/components/strings/components_strings_pt-BR.xtb +++ b/components/strings/components_strings_pt-BR.xtb
@@ -1816,7 +1816,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Você está usando o bloqueio de tela para preencher senhas</translation> <translation id="4558551763791394412">Tente desativar suas extensões.</translation> -<translation id="456043042661026303">Conferindo os detalhes da forma de pagamento com segurança</translation> <translation id="4566017918361049074">Ao ar livre</translation> <translation id="4567686777917670400">O administrador pode mudar as configurações do navegador remotamente. A atividade deste dispositivo também pode ser gerenciada fora do Chromium. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Confirmado</translation> @@ -2663,7 +2662,6 @@ <translation id="6272088941196661550">Retomar a jornada para ver as atividades relevantes no seu histórico do Chrome</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">Pressione |<ph name="ACCELERATOR" />| para exibir seu cursor</translation> -<translation id="628016388715774955">A opção de preencher um endereço completo foi selecionada</translation> <translation id="6280223929691119688">Não é possível entregar nesse endereço. Selecione um endereço diferente.</translation> <translation id="6284292079994426700">26 x 38 pol.</translation> <translation id="6284517535531159884">Tipo de semente de variações</translation> @@ -2935,7 +2933,6 @@ <translation id="6807791860691150411">Educação</translation> <translation id="681021252041861472">Campo obrigatório</translation> <translation id="6810899417690483278">Código de personalização</translation> -<translation id="681459028290894216">Preencher endereço completo</translation> <translation id="6816109178681043245">Artigos esportivos</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">portas seriais</translation>
diff --git a/components/strings/components_strings_pt-PT.xtb b/components/strings/components_strings_pt-PT.xtb index 852cc338..a8bd476 100644 --- a/components/strings/components_strings_pt-PT.xtb +++ b/components/strings/components_strings_pt-PT.xtb
@@ -1820,7 +1820,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Está a usar o bloqueio de ecrã para preencher palavras-passe</translation> <translation id="4558551763791394412">Experimente desativar as extensões.</translation> -<translation id="456043042661026303">A verificar os seus detalhes de pagamento em segurança</translation> <translation id="4566017918361049074">Ar livre</translation> <translation id="4567686777917670400">O administrador pode alterar a configuração do navegador remotamente. A atividade neste dispositivo também pode ser gerida fora do Chromium. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Confirmado</translation> @@ -2667,7 +2666,6 @@ <translation id="6272088941196661550">Retome o percurso para ver atividade relevante no seu Histórico do Chrome</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">Premir |<ph name="ACCELERATOR" />| para mostrar o cursor</translation> -<translation id="628016388715774955">A opção de preenchimento da morada completa foi selecionada</translation> <translation id="6280223929691119688">Não é possível entregar neste endereço. Selecione um diferente.</translation> <translation id="6284292079994426700">26 x 38 pol.</translation> <translation id="6284517535531159884">Tipo de semente das variações</translation> @@ -2939,7 +2937,6 @@ <translation id="6807791860691150411">Educação</translation> <translation id="681021252041861472">Campo obrigatório</translation> <translation id="6810899417690483278">ID de personalização</translation> -<translation id="681459028290894216">Preencher morada completa</translation> <translation id="6816109178681043245">Artigos de desporto</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">portas de série</translation>
diff --git a/components/strings/components_strings_ro.xtb b/components/strings/components_strings_ro.xtb index 8be68016..241f16d 100644 --- a/components/strings/components_strings_ro.xtb +++ b/components/strings/components_strings_ro.xtb
@@ -517,6 +517,8 @@ <translation id="1956486093533522234">Găsește, protejează sau șterge dispozitivul</translation> <translation id="1958218078413065209">Cel mai mare scor al tău este de <ph name="SCORE" />.</translation> <translation id="1959001866257244765">Contribuie la îmbunătățirea securității pe web pentru toată lumea trimițând la Google <ph name="BEGIN_WHITEPAPER_LINK" />adresele URL ale unor pagini pe care le accesezi, informații de sistem limitate și părți din conținutul paginilor<ph name="END_WHITEPAPER_LINK" />. <ph name="BEGIN_PRIVACY_PAGE_LINK" />Politică de confidențialitate<ph name="END_PRIVACY_PAGE_LINK" /></translation> +<translation id="1959445535228047762">Textul și conținutul paginii se trimit la Google și se pot folosi pentru a îmbunătăți această funcție. + <ph name="BEGIN_LINK" />Află mai multe<ph name="END_LINK" /></translation> <translation id="1962204205936693436">Marcaje <ph name="DOMAIN" /></translation> <translation id="196752089528718902">De obicei, te conectezi în siguranță la site-uri, dar Chrome nu a putut folosi o conexiune sigură de data aceasta. Un atacator ar putea încerca să intercepteze sau să modifice conexiunea la rețea. <ph name="BEGIN_LEARN_MORE_LINK" />Află mai multe<ph name="END_LEARN_MORE_LINK" /></translation> <translation id="1973335181906896915">Eroare de serializare</translation> @@ -720,6 +722,7 @@ <translation id="2354430244986887761">Navigarea sigură Google <ph name="BEGIN_LINK" />a descoperit recent aplicații dăunătoare<ph name="END_LINK" /> pe <ph name="SITE" />.</translation> <translation id="2355395290879513365">Este posibil ca atacatorii să poată vedea imaginile la care te uiți pe acest site și să te păcălească prin modificarea lor.</translation> <translation id="2356070529366658676">Întreabă-mă</translation> +<translation id="2356926036049612643">Instrumentul de optimizare pentru V8</translation> <translation id="2357481397660644965">Dispozitivul este gestionat de <ph name="DEVICE_MANAGER" />, iar contul tău este gestionat de <ph name="ACCOUNT_MANAGER" />.</translation> <translation id="2359629602545592467">Mai multe</translation> <translation id="2359808026110333948">Continuă</translation> @@ -1813,7 +1816,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Folosești blocarea ecranului pentru a completa parolele</translation> <translation id="4558551763791394412">Dezactivează extensiile.</translation> -<translation id="456043042661026303">Verificarea în siguranță a detaliilor de plată</translation> <translation id="4566017918361049074">În aer liber</translation> <translation id="4567686777917670400">Administratorul poate schimba configurația browserului de la distanță. Este posibil ca activitatea de pe acest dispozitiv să fie gestionată și din afara Chromium. <ph name="BEGIN_LINK" />Află mai multe<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Verificate</translation> @@ -2660,7 +2662,6 @@ <translation id="6272088941196661550">Continuă-ți parcursul pentru a vedea activitatea relevantă din istoricul Chrome</translation> <translation id="6272383483618007430">Actualizare Google</translation> <translation id="6279183038361895380">Apasă pe |<ph name="ACCELERATOR" />| pentru a fi afișat cursorul</translation> -<translation id="628016388715774955">A fost selectată opțiunea de introducere a adresei complete</translation> <translation id="6280223929691119688">Nu se poate livra la această adresă. Selectează altă adresă.</translation> <translation id="6284292079994426700">26 x 38 in</translation> <translation id="6284517535531159884">Tipul valorii de bază pentru variante</translation> @@ -2932,7 +2933,6 @@ <translation id="6807791860691150411">Educație</translation> <translation id="681021252041861472">Câmp obligatoriu</translation> <translation id="6810899417690483278">ID-ul de personalizare</translation> -<translation id="681459028290894216">Introdu adresa completă</translation> <translation id="6816109178681043245">Echipament sportiv</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">Porturi seriale</translation>
diff --git a/components/strings/components_strings_ru.xtb b/components/strings/components_strings_ru.xtb index 461111f..3d059bdd 100644 --- a/components/strings/components_strings_ru.xtb +++ b/components/strings/components_strings_ru.xtb
@@ -1815,7 +1815,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Вы используете блокировку экрана для ввода паролей</translation> <translation id="4558551763791394412">Отключите расширения.</translation> -<translation id="456043042661026303">Выполняется безопасная проверка ваших сведений о способе оплаты…</translation> <translation id="4566017918361049074">Мероприятия на открытом воздухе</translation> <translation id="4567686777917670400">Администратор может удаленно менять настройки браузера и управлять действиями вне браузера Chromium на этом устройстве. <ph name="BEGIN_LINK" />Подробнее…<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Подтверждена</translation> @@ -2662,7 +2661,6 @@ <translation id="6272088941196661550">Посмотреть похожие действия в истории Chrome</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">Чтобы показать курсор, нажмите |<ph name="ACCELERATOR" />|</translation> -<translation id="628016388715774955">Выбран вариант "Заполнить все поля для адреса"</translation> <translation id="6280223929691119688">Невозможно доставить заказ по этому адресу. Выберите другой вариант.</translation> <translation id="6284292079994426700">26 x 38 дюймов</translation> <translation id="6284517535531159884">Тип файла конфигурации для модификации</translation> @@ -2934,7 +2932,6 @@ <translation id="6807791860691150411">Образование</translation> <translation id="681021252041861472">Обязательное поле</translation> <translation id="6810899417690483278">Идентификатор персонализации</translation> -<translation id="681459028290894216">Заполнить все поля для адреса</translation> <translation id="6816109178681043245">Спортивные товары</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">последовательные порты</translation>
diff --git a/components/strings/components_strings_si.xtb b/components/strings/components_strings_si.xtb index b68a6c59..77d2875 100644 --- a/components/strings/components_strings_si.xtb +++ b/components/strings/components_strings_si.xtb
@@ -1816,7 +1816,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">ඔබ මුරපද පිරවීම සඳහා ඔබේ තිර අගුල භාවිතා කරයි</translation> <translation id="4558551763791394412">ඔබගේ දිගු අබල කිරීම උත්සාහ කරන්න.</translation> -<translation id="456043042661026303">ඔබේ ගෙවීම් විස්තර සුරක්ෂිතව පරීක්ෂා කිරීම</translation> <translation id="4566017918361049074">එළිමහන්</translation> <translation id="4567686777917670400">ඔබගේ පරිපාලකට දුරස්ථව ඔබගේ බ්රවුසර සැකසීම වෙනස් කළ හැකිය. මෙම උපාංගයේ ක්රියාකාරකම් Chromium වෙතින් බැහැරවද කළමනාකරණය කිරීමට හැකිය. <ph name="BEGIN_LINK" />තව දැන ගන්න<ph name="END_LINK" /></translation> <translation id="4569155249847375786">තහවුරු කරයි</translation> @@ -2663,7 +2662,6 @@ <translation id="6272088941196661550">ඔබගේ Chrome ඉතිහාසය තුළ අදාළ ක්රියාකාරකම් බැලීමට ඔබගේ සංචාරය නැවත පටන් ගන්න</translation> <translation id="6272383483618007430">Google යාවත්කාලීන</translation> <translation id="6279183038361895380">ඔබේ කර්සරය පෙන්වීමට |<ph name="ACCELERATOR" />| ඔබන්න</translation> -<translation id="628016388715774955">පූර්ණ ලිපින පිරවීමේ විකල්පය තෝරා ගන්නා ලදි</translation> <translation id="6280223929691119688">මෙම ලිපිනයට බෙදා හැරීමට නොහැකිය. වෙනත් ලිපිනයක් තෝරන්න.</translation> <translation id="6284292079994426700">අඟ 26 x 38</translation> <translation id="6284517535531159884">ප්රභේදන බිජ වර්ගය</translation> @@ -2935,7 +2933,6 @@ <translation id="6807791860691150411">අධ්යාපනය</translation> <translation id="681021252041861472">අත්යාවශ්ය ක්ෂේත්රයකි</translation> <translation id="6810899417690483278">අභිරුචිකරණ ID</translation> -<translation id="681459028290894216">සම්පූර්ණ ලිපිනය පුරවන්න</translation> <translation id="6816109178681043245">ක්රීඩා භාණ්ඩ</translation> <translation id="6817217109584391709">ජාවාස්ක්රිප්ට්</translation> <translation id="6820143000046097424">අනුක්රමික තොට</translation>
diff --git a/components/strings/components_strings_sk.xtb b/components/strings/components_strings_sk.xtb index a0ba79d5..4aa1a0b 100644 --- a/components/strings/components_strings_sk.xtb +++ b/components/strings/components_strings_sk.xtb
@@ -465,6 +465,7 @@ <translation id="1828959155404624835">Autopožičovne</translation> <translation id="1834321415901700177">Tento web obsahuje škodlivé programy</translation> <translation id="1838374766361614909">Vymazať vyhľadávanie</translation> +<translation id="1839331950812095887">pár slov, ktoré zhrnujú vaše myšlienky</translation> <translation id="1839551713262164453">Overenie hodnôt pravidiel zlyhalo a obsahuje chyby</translation> <translation id="1842969606798536927">Zaplatiť</translation> <translation id="1846432862466000825">Plast (archivačný)</translation> @@ -696,6 +697,7 @@ <translation id="2293443924986248631">Keď je táto možnosť zapnutá, weby nemôžu používať súbory cookie, ktoré vás sledujú na internete. Funkcie na niektorých weboch môžu zlyhávať.</translation> <translation id="2295831393422400053">Ak chcete používať funkciu Asistent písania, zapnite nastavenie Zlepšovať vyhľadávanie a prehliadanie</translation> <translation id="2300306941146563769">Nenahrané</translation> +<translation id="2301098101308036335">Ktoré weby sú navštívené a kedy.</translation> <translation id="230286397113210245">Tlačidlo Otvoriť okno inkognito, ktorého aktivovaním otvoríte okno inkognito na anonymné prehliadanie</translation> <translation id="2312234273148520048">Prísady do jedál a dresingy</translation> <translation id="2316087952091171402">Menej ako <ph name="UPPER_ESTIMATE" />. Pri vašej ďalšej návšteve sa môžu niektoré weby načítať pomalšie.</translation> @@ -1358,6 +1360,7 @@ <translation id="3655670868607891010">Ak sa vám táto stránka zobrazuje často, skúste použiť tieto stránky <ph name="HELP_LINK" />.</translation> <translation id="365641980390710834">Odevy na voľný čas</translation> <translation id="3658742229777143148">Verzia</translation> +<translation id="3659521826520353662">Ktoré weby definované správcom budú navštívené a kedy: <ph name="ALLOWLISTED_WEBSITES" /></translation> <translation id="3664782872746246217">Kľúčové slová:</translation> <translation id="3665100783276035932">Väčšina webov by mala fungovať podľa očakávaní.</translation> <translation id="3667704023705708645">Rizikový kapitál</translation> @@ -1448,6 +1451,7 @@ <translation id="3812398568375898177">Ide o kľúčovú aktualizáciu, ktorá zlepší výkon aplikácií pre Android v systéme ChromeOS.</translation> <translation id="3815434930383843058">8 × 12 palcov</translation> <translation id="3816482573645936981">Hodnota (nahradená)</translation> +<translation id="382115839591654906">Overovací kód karty <ph name="CARD_NAME" /></translation> <translation id="3823019343150397277">IBAN</translation> <translation id="3823402221513322552">Váš prehliadač spravuje <ph name="BROWSER_DOMAIN" />. Váš profil spravuje <ph name="PROFILE_DOMAIN" />.</translation> <translation id="382518646247711829">Ak používate server proxy...</translation> @@ -1809,7 +1813,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Pri vypĺňaní hesiel používate zámku obrazovky</translation> <translation id="4558551763791394412">Skúste deaktivovať rozšírenia.</translation> -<translation id="456043042661026303">Zabezpečeným spôsobom sa kontrolujú vaše platobné údaje</translation> <translation id="4566017918361049074">Outdoorové aktivity</translation> <translation id="4567686777917670400">Nastavenia prehliadača môže na diaľku zmeniť správca. Aktivita v tomto zariadení môže byť spravovaná aj mimo prehliadača Chromium. <ph name="BEGIN_LINK" />Ďalšie informácie<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Overené</translation> @@ -2655,7 +2658,6 @@ <translation id="6272088941196661550">Pokračujte v ceste a zobrazte si relevantnú aktivitu v histórii Chromu</translation> <translation id="6272383483618007430">Aktualizácie Google</translation> <translation id="6279183038361895380">Stlačením klávesa |<ph name="ACCELERATOR" />| zobrazíte kurzor</translation> -<translation id="628016388715774955">Bola vybraná možnosť Vyplniť celú adresu</translation> <translation id="6280223929691119688">Doručenie na túto adresu nie je možné. Vyberte inú adresu.</translation> <translation id="6284292079994426700">26 × 38 palcov</translation> <translation id="6284517535531159884">Typ zdroja variácií</translation> @@ -2927,7 +2929,6 @@ <translation id="6807791860691150411">Vzdelávanie</translation> <translation id="681021252041861472">Povinné pole</translation> <translation id="6810899417690483278">Identifikátor prispôsobenia</translation> -<translation id="681459028290894216">Vyplniť celú adresu</translation> <translation id="6816109178681043245">Športový tovar</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">sériové porty</translation> @@ -3198,6 +3199,7 @@ <translation id="7341357280245177602">Jazdené vozidlá</translation> <translation id="7346048084945669753">Je pridružený/-á</translation> <translation id="7346062987309535530">Jedálenský riad</translation> +<translation id="7346081071264046066">„odpovedzte áno na túto pozvánku na svadbu s nadšením“</translation> <translation id="7352651011704765696">Vyskytla sa chyba</translation> <translation id="7353601530677266744">Príkazový riadok</translation> <translation id="7354880545102894991">Nízkorozpočtové cestovanie a cestovanie na poslednú chvíľu</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb index 1060c88..646ad8985 100644 --- a/components/strings/components_strings_sl.xtb +++ b/components/strings/components_strings_sl.xtb
@@ -517,6 +517,8 @@ <translation id="1956486093533522234">Iskanje naprave, zavarovanje naprave ali brisanje podatkov v napravi</translation> <translation id="1958218078413065209">Vaš najboljši rezultat je <ph name="SCORE" />.</translation> <translation id="1959001866257244765">S pošiljanjem <ph name="BEGIN_WHITEPAPER_LINK" />URL-jev nekaterih strani, ki jih obiščete, omejenih podatkov o sistemu in nekatere vsebine strani<ph name="END_WHITEPAPER_LINK" /> Googlu lahko pomagate izboljšati varnost v spletu za vse. <ph name="BEGIN_PRIVACY_PAGE_LINK" />Pravilnik o zasebnosti<ph name="END_PRIVACY_PAGE_LINK" /></translation> +<translation id="1959445535228047762">Vaše besedilo in vsebina strani sta poslana Googlu in se morda uporabita za izboljšanje te funkcije. + <ph name="BEGIN_LINK" />Več o tem<ph name="END_LINK" /></translation> <translation id="1962204205936693436">Zaznamki domene <ph name="DOMAIN" /></translation> <translation id="196752089528718902">S temi spletnimi mesti se običajno varno povežete, vendar Chrome varne povezave tokrat ni mogel uporabiti. Napadalec morda poskuša prisluškovati ali spremeniti vašo omrežno povezavo. <ph name="BEGIN_LEARN_MORE_LINK" />Več o tem<ph name="END_LEARN_MORE_LINK" /></translation> <translation id="1973335181906896915">Napaka pri serializaciji</translation> @@ -720,6 +722,7 @@ <translation id="2354430244986887761">Google Varno brskanje je nedavno <ph name="BEGIN_LINK" />našlo škodljive aplikacije<ph name="END_LINK" /> na spletnem mestu <ph name="SITE" />.</translation> <translation id="2355395290879513365">Napadalci morda vidijo slike, ki si jih ogledujete na tem spletnem mestu, in vas ukanijo, tako da jih spremenijo.</translation> <translation id="2356070529366658676">Vprašaj</translation> +<translation id="2356926036049612643">Orodje za optimiziranje V8</translation> <translation id="2357481397660644965">Vašo napravo upravlja domena <ph name="DEVICE_MANAGER" /> in vaš račun upravlja domena <ph name="ACCOUNT_MANAGER" />.</translation> <translation id="2359629602545592467">Več valut</translation> <translation id="2359808026110333948">Naprej</translation> @@ -1813,7 +1816,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Zaklepanje zaslona uporabljate za izpolnjevanje gesel</translation> <translation id="4558551763791394412">Poskusite onemogočiti razširitve.</translation> -<translation id="456043042661026303">Varno preverjanje podatkov za plačilo</translation> <translation id="4566017918361049074">Na prostem</translation> <translation id="4567686777917670400">Skrbnik lahko spremeni nastavitev brskalnika na daljavo. Dejavnost v tej napravi morda tudi upravljajo zunaj Chromiuma. <ph name="BEGIN_LINK" />Več o tem<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Preverjeno</translation> @@ -2660,7 +2662,6 @@ <translation id="6272088941196661550">Nadaljujte pot, če si želite ogledati pomembno dejavnost v zgodovini uporabe Chroma.</translation> <translation id="6272383483618007430">Google Posodobitve</translation> <translation id="6279183038361895380">Pritisnite |<ph name="ACCELERATOR" />| za prikaz kazalca</translation> -<translation id="628016388715774955">Izbrana je bila možnost za izpolnitev celotnega naslova</translation> <translation id="6280223929691119688">Dostava na ta naslov ni mogoča. Izberite drugega.</translation> <translation id="6284292079994426700">26 x 38 palcev</translation> <translation id="6284517535531159884">Vrsta semen podrazličic</translation> @@ -2932,7 +2933,6 @@ <translation id="6807791860691150411">Izobraževanje</translation> <translation id="681021252041861472">Obvezno polje</translation> <translation id="6810899417690483278">ID za prilagajanje</translation> -<translation id="681459028290894216">Izpolnitev celotnega naslova</translation> <translation id="6816109178681043245">Športna oprema</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">serijska vrata</translation>
diff --git a/components/strings/components_strings_sq.xtb b/components/strings/components_strings_sq.xtb index 5d0413f2..cc80c4a 100644 --- a/components/strings/components_strings_sq.xtb +++ b/components/strings/components_strings_sq.xtb
@@ -1813,7 +1813,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Po përdor kyçjen e ekranit për plotësimin e fjalëkalimeve</translation> <translation id="4558551763791394412">Provo të çaktivizosh shtesat.</translation> -<translation id="456043042661026303">Po kontrollon në mënyrë të sigurt detajet e pagesës sate</translation> <translation id="4566017918361049074">Ambientet e hapura</translation> <translation id="4567686777917670400">Administratori yt mund të ndryshojë konfigurimin e shfletuesit në distancë. Aktiviteti në këtë pajisje mund të menaxhohet edhe jashtë Chromium. <ph name="BEGIN_LINK" />Mëso më shumë<ph name="END_LINK" /></translation> <translation id="4569155249847375786">I verifikuar</translation> @@ -2659,7 +2658,6 @@ <translation id="6272088941196661550">Vazhdo udhëtimin për të parë aktivitetin përkatës në historikun tënd të Chrome</translation> <translation id="6272383483618007430">Përditësimi i Google</translation> <translation id="6279183038361895380">Shtyp |<ph name="ACCELERATOR" />| për të shfaqur kursorin</translation> -<translation id="628016388715774955">Është zgjedhur opsioni i plotësimit të adresës së plotë</translation> <translation id="6280223929691119688">Nuk mund të dorëzohet në këtë adresë. Zgjidh një adresë tjetër.</translation> <translation id="6284292079994426700">26 x 38 inç</translation> <translation id="6284517535531159884">Lloji i burimit të varianteve</translation> @@ -2931,7 +2929,6 @@ <translation id="6807791860691150411">Arsimi</translation> <translation id="681021252041861472">Fushë e detyrueshme</translation> <translation id="6810899417690483278">ID-ja e personalizimit</translation> -<translation id="681459028290894216">Plotëso adresën e plotë</translation> <translation id="6816109178681043245">Mallra sportive</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">portat seriale</translation>
diff --git a/components/strings/components_strings_sr-Latn.xtb b/components/strings/components_strings_sr-Latn.xtb index 057a2cd..7e49abe 100644 --- a/components/strings/components_strings_sr-Latn.xtb +++ b/components/strings/components_strings_sr-Latn.xtb
@@ -1816,7 +1816,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Koristite zaključavanje ekrana za popunjavanje lozinki</translation> <translation id="4558551763791394412">Pokušajte da onemogućite dodatke.</translation> -<translation id="456043042661026303">Bezbedno se proveravaju informacije o plaćanju</translation> <translation id="4566017918361049074">Rekreacija na otvorenom</translation> <translation id="4567686777917670400">Administrator može daljinski da promeni podešavanje pregledača. Aktivnostima na ovom uređaju može da se upravlja i van Chromium-a. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Verifikovano</translation> @@ -2662,7 +2661,6 @@ <translation id="6272088941196661550">Nastavite put da biste videli relevantne aktivnosti u istoriji Chrome-a</translation> <translation id="6272383483618007430">Google ažuriranje</translation> <translation id="6279183038361895380">Pritisnite |<ph name="ACCELERATOR" />| da biste prikazali pokazivač</translation> -<translation id="628016388715774955">Izabrana je opcija za popunjavanje cele adrese</translation> <translation id="6280223929691119688">Isporuka na ovu adresu nije moguća. Izaberite drugu adresu.</translation> <translation id="6284292079994426700">26×38 in</translation> <translation id="6284517535531159884">Tip početne vrednosti varijacija</translation> @@ -2934,7 +2932,6 @@ <translation id="6807791860691150411">Obrazovanje</translation> <translation id="681021252041861472">Obavezno polje</translation> <translation id="6810899417690483278">ID za prilagođavanje</translation> -<translation id="681459028290894216">Unesi celu adresu</translation> <translation id="6816109178681043245">Sportska oprema</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">serijski portovi</translation>
diff --git a/components/strings/components_strings_sr.xtb b/components/strings/components_strings_sr.xtb index 6303566..0f7422717 100644 --- a/components/strings/components_strings_sr.xtb +++ b/components/strings/components_strings_sr.xtb
@@ -1816,7 +1816,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Користите закључавање екрана за попуњавање лозинки</translation> <translation id="4558551763791394412">Покушајте да онемогућите додатке.</translation> -<translation id="456043042661026303">Безбедно се проверавају информације о плаћању</translation> <translation id="4566017918361049074">Рекреација на отвореном</translation> <translation id="4567686777917670400">Администратор може даљински да промени подешавање прегледача. Активностима на овом уређају може да се управља и ван Chromium-а. <ph name="BEGIN_LINK" />Сазнајте више<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Верификовано</translation> @@ -2662,7 +2661,6 @@ <translation id="6272088941196661550">Наставите пут да бисте видели релевантне активности у историји Chrome-а</translation> <translation id="6272383483618007430">Google ажурирање</translation> <translation id="6279183038361895380">Притисните |<ph name="ACCELERATOR" />| да бисте приказали показивач</translation> -<translation id="628016388715774955">Изабрана је опција за попуњавање целе адресе</translation> <translation id="6280223929691119688">Испорука на ову адресу није могућа. Изаберите другу адресу.</translation> <translation id="6284292079994426700">26×38 in</translation> <translation id="6284517535531159884">Тип почетне вредности варијација</translation> @@ -2934,7 +2932,6 @@ <translation id="6807791860691150411">Образовање</translation> <translation id="681021252041861472">Обавезно поље</translation> <translation id="6810899417690483278">ИД за прилагођавање</translation> -<translation id="681459028290894216">Унеси целу адресу</translation> <translation id="6816109178681043245">Спортска опрема</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">серијски портови</translation>
diff --git a/components/strings/components_strings_sv.xtb b/components/strings/components_strings_sv.xtb index 02bcbde..c69c7a1 100644 --- a/components/strings/components_strings_sv.xtb +++ b/components/strings/components_strings_sv.xtb
@@ -1813,7 +1813,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Du använder skärmlåset för att fylla i lösenord</translation> <translation id="4558551763791394412">Testa att inaktivera tilläggen.</translation> -<translation id="456043042661026303">Kontrollera dina betalningsuppgifter på ett säkert sätt</translation> <translation id="4566017918361049074">Utomhusaktiviteter</translation> <translation id="4567686777917670400">Administratören kan ändra webbläsarinställningarna på distans. Aktivitet på den här enheten kan hanteras även utanför Chromium. <ph name="BEGIN_LINK" />Läs mer<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Verifierat</translation> @@ -2660,7 +2659,6 @@ <translation id="6272088941196661550">Återuppta sökningen för att se relevant aktivitet i Chrome-historiken</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">Tryck på |<ph name="ACCELERATOR" />| om du vill visa markören</translation> -<translation id="628016388715774955">Alternativet för att fylla i fullständig adress har valts</translation> <translation id="6280223929691119688">Det går inte att leverera till den här adressen. Välj en annan adress.</translation> <translation id="6284292079994426700">26 x 38 tum</translation> <translation id="6284517535531159884">Typ av variantkälla</translation> @@ -2932,7 +2930,6 @@ <translation id="6807791860691150411">Utbildning</translation> <translation id="681021252041861472">Obligatoriskt fält</translation> <translation id="6810899417690483278">Anpassnings-id</translation> -<translation id="681459028290894216">Fyll i fullständig adress</translation> <translation id="6816109178681043245">Sportartiklar</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">serieportar</translation>
diff --git a/components/strings/components_strings_sw.xtb b/components/strings/components_strings_sw.xtb index 0e372e2..1430097 100644 --- a/components/strings/components_strings_sw.xtb +++ b/components/strings/components_strings_sw.xtb
@@ -1813,7 +1813,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Unatumia mbinu ya kufunga skrini ili kujaza manenosiri</translation> <translation id="4558551763791394412">Jaribu kuzima viendelezi vyako.</translation> -<translation id="456043042661026303">Inakagua kwa usalama maelezo yako ya malipo</translation> <translation id="4566017918361049074">Nje</translation> <translation id="4567686777917670400">Msimamizi wako anaweza kubadilisha mipangilio ya kivinjari chako akiwa mbali. Huenda pia shughuli kwenye kifaa hiki zikadhibitiwa nje ya Chromium. <ph name="BEGIN_LINK" />Pata maelezo zaidi<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Imethibitishwa</translation> @@ -2660,7 +2659,6 @@ <translation id="6272088941196661550">Endelea na ziara yako ili uone shughuli muhimu katika historia yako kwenye Chrome</translation> <translation id="6272383483618007430">Sasisho kwa Google</translation> <translation id="6279183038361895380">Bonyeza |<ph name="ACCELERATOR" />| ili kiteuzi kionekane</translation> -<translation id="628016388715774955">Chaguo la jaza anwani kamili limeteuliwa</translation> <translation id="6280223929691119688">Haiwezi kuwasilisha kwenye anwani hii. Chagua anwani tofauti.</translation> <translation id="6284292079994426700">Inchi 26 x 38</translation> <translation id="6284517535531159884">Variations Seed Type</translation> @@ -2932,7 +2930,6 @@ <translation id="6807791860691150411">Elimu</translation> <translation id="681021252041861472">Sehemu Hii Sharti Ijazwe</translation> <translation id="6810899417690483278">Kitambulisho cha kubadilisha ili kukufaa</translation> -<translation id="681459028290894216">Jaza anwani kamili</translation> <translation id="6816109178681043245">Bidhaa za Michezo</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">milango inayosambaza biti moja moja ya data</translation>
diff --git a/components/strings/components_strings_ta.xtb b/components/strings/components_strings_ta.xtb index 8754ed3..0e1e2a00 100644 --- a/components/strings/components_strings_ta.xtb +++ b/components/strings/components_strings_ta.xtb
@@ -1812,7 +1812,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">கடவுச்சொற்களை நிரப்புவதற்காக உங்கள் திரைப்பூட்டைப் பயன்படுத்துகிறீர்கள்</translation> <translation id="4558551763791394412">நீட்டிப்புகளை முடக்கவும்.</translation> -<translation id="456043042661026303">உங்கள் பேமெண்ட் விவரங்களைப் பாதுகாப்பாகச் சரிபார்க்கிறது</translation> <translation id="4566017918361049074">வெளியிடங்கள்</translation> <translation id="4567686777917670400">உலாவியின் அமைவை உங்கள் நிர்வாகியால் ரிமோட் சாதனத்தில் இருந்தே மாற்ற முடியும். இந்தச் சாதனத்தின் செயல்பாடுகளை Chromium அல்லாமல் வேறு இடத்தில் இருந்தும் நிர்வகிக்கலாம். <ph name="BEGIN_LINK" />மேலும் அறிக<ph name="END_LINK" /></translation> <translation id="4569155249847375786">சரிபார்க்கப்பட்டது</translation> @@ -2658,7 +2657,6 @@ <translation id="6272088941196661550">Chrome செயல்பாடுகளில் இருக்கும் தொடர்புடைய செயல்பாடுகளைப் பார்க்க, உலாவலைத் தொடரலாம்</translation> <translation id="6272383483618007430">Google புதுப்பிப்பு</translation> <translation id="6279183038361895380">உங்கள் சுட்டியைக் காட்ட |<ph name="ACCELERATOR" />| என்பதை அழுத்தவும்</translation> -<translation id="628016388715774955">முழு முகவரியை நிரப்பும் விருப்பம் தேர்ந்தெடுக்கப்பட்டது</translation> <translation id="6280223929691119688">இந்த முகவரிக்கு டெலிவரி செய்ய முடியாது. வேறு முகவரியைத் தேர்ந்தெடுக்கவும்.</translation> <translation id="6284292079994426700">26 x 38 இன்ச்</translation> <translation id="6284517535531159884">வேரியேஷன் சீடு வகை</translation> @@ -2930,7 +2928,6 @@ <translation id="6807791860691150411">கல்வி</translation> <translation id="681021252041861472">அவசியமானவை</translation> <translation id="6810899417690483278">தனிப்பயனாக்கல் ஐடி</translation> -<translation id="681459028290894216">முழு முகவரியை நிரப்பு</translation> <translation id="6816109178681043245">விளையாட்டுப் பொருட்கள்</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">தொடர் போர்ட்டுகள்</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb index 4a46b9c..b33b9ee 100644 --- a/components/strings/components_strings_te.xtb +++ b/components/strings/components_strings_te.xtb
@@ -1815,7 +1815,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">పాస్వర్డ్లను పూరించడానికి మీరు స్క్రీన్ లాక్ను ఉపయోగిస్తున్నారు</translation> <translation id="4558551763791394412">మీ ఎక్స్టెన్షన్లను నిలిపివేయడం ప్రయత్నించండి.</translation> -<translation id="456043042661026303">మీ పేమెంట్ వివరాలను సురక్షితంగా చెక్ చేస్తోంది</translation> <translation id="4566017918361049074">అవుట్డోర్లు</translation> <translation id="4567686777917670400">మీ అడ్మినిస్ట్రేటర్ మీ బ్రౌజర్ సెటప్ను రిమోట్ విధానంలో మార్చవచ్చు. ఈ పరికరంలోని యాక్టివిటీని Chromium వెలుపల కూడా మేనేజ్ చేయవచ్చు. <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /></translation> <translation id="4569155249847375786">ధృవీకరించబడింది</translation> @@ -2662,7 +2661,6 @@ <translation id="6272088941196661550">మీ Chrome హిస్టరీలో మీ సందర్భోచితమైన యాక్టివిటీని చూడటానికి మీ సెర్చ్ను కొనసాగించండి</translation> <translation id="6272383483618007430">Google అప్డేట్</translation> <translation id="6279183038361895380">మీ కర్సర్ను చూపడానికి |<ph name="ACCELERATOR" />| నొక్కండి</translation> -<translation id="628016388715774955">పూర్తి అడ్రస్ను పూరించే ఆప్షన్ను ఎంచుకున్నారు</translation> <translation id="6280223929691119688">ఈ అడ్రస్కు డెలివరీ చేయడం సాధ్యం కాదు. వేరే అడ్రస్ను ఎంచుకోండి.</translation> <translation id="6284292079994426700">26 x 38 అంగుళాలు</translation> <translation id="6284517535531159884">వేరియేషన్ల సీడ్ రకం</translation> @@ -2934,7 +2932,6 @@ <translation id="6807791860691150411">విద్య</translation> <translation id="681021252041861472">అవసరమైన ఫీల్డ్</translation> <translation id="6810899417690483278">అనుకూలీకరణ ID</translation> -<translation id="681459028290894216">పూర్తి అడ్రస్ను పూరించండి</translation> <translation id="6816109178681043245">క్రీడా సామగ్రి</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">సీరియల్ పోర్ట్లు</translation>
diff --git a/components/strings/components_strings_th.xtb b/components/strings/components_strings_th.xtb index 2fb29f9..e2ffe7d 100644 --- a/components/strings/components_strings_th.xtb +++ b/components/strings/components_strings_th.xtb
@@ -465,6 +465,7 @@ <translation id="1828959155404624835">การเช่ารถ</translation> <translation id="1834321415901700177">เว็บไซต์นี้มีโปรแกรมอันตราย</translation> <translation id="1838374766361614909">ล้างการค้นหา</translation> +<translation id="1839331950812095887">สรุปความคิดของคุณในไม่กี่คำ</translation> <translation id="1839551713262164453">การตรวจสอบความถูกต้องของค่านโยบายมีข้อผิดพลาดและล้มเหลว</translation> <translation id="1842969606798536927">จ่าย</translation> <translation id="1846432862466000825">พลาสติก (Archival)</translation> @@ -698,6 +699,7 @@ <translation id="2293443924986248631">เมื่อเปิดใช้ เว็บไซต์ต่างๆ จะใช้คุกกี้ที่ติดตามคุณในอินเทอร์เน็ตไม่ได้ ฟีเจอร์ในเว็บไซต์บางแห่งอาจใช้งานไม่ได้</translation> <translation id="2295831393422400053">เปิดการตั้งค่า "ปรับปรุงการค้นหาและการท่องเว็บให้ดียิ่งขึ้น" เพื่อใช้ฟีเจอร์ช่วยฉันเขียน</translation> <translation id="2300306941146563769">ไม่ได้อัปโหลด</translation> +<translation id="2301098101308036335">เข้าชมเว็บไซต์ใดบ้างและเมื่อใด</translation> <translation id="230286397113210245">ปุ่มเปิดหน้าต่างที่ไม่ระบุตัวตน เปิดใช้งานเพื่อเปิดหน้าต่างใหม่ที่ไม่ระบุตัวตนสำหรับการท่องเว็บแบบส่วนตัว</translation> <translation id="2312234273148520048">เครื่องปรุงรสและน้ำสลัด</translation> <translation id="2316087952091171402">ไม่ถึง <ph name="UPPER_ESTIMATE" /> บางเว็บไซต์อาจโหลดช้ากว่าเดิมเมื่อคุณเข้าชมครั้งถัดไป</translation> @@ -1364,6 +1366,7 @@ <translation id="3655670868607891010">หากคุณเห็นข้อความนี้บ่อยๆ ให้ลองไปที่ <ph name="HELP_LINK" /></translation> <translation id="365641980390710834">เครื่องแต่งกายในวันหยุด</translation> <translation id="3658742229777143148">การแก้ไข</translation> +<translation id="3659521826520353662">เข้าชมเว็บไซต์ใดบ้างที่ผู้ดูแลระบบกำหนดไว้และเมื่อใด: <ph name="ALLOWLISTED_WEBSITES" /></translation> <translation id="3664782872746246217">คีย์เวิร์ด:</translation> <translation id="3665100783276035932">เว็บไซต์ส่วนใหญ่ควรทำงานตามที่คาดไว้</translation> <translation id="3667704023705708645">ธุรกิจเงินร่วมลงทุน</translation> @@ -1454,6 +1457,7 @@ <translation id="3812398568375898177">การอัปเดตนี้สำคัญต่อการปรับปรุงประสิทธิภาพของแอป Android ใน ChromeOS</translation> <translation id="3815434930383843058">8 x 12 นิ้ว</translation> <translation id="3816482573645936981">ค่า (ถูกแทนที่)</translation> +<translation id="382115839591654906">CVC สำหรับ <ph name="CARD_NAME" /></translation> <translation id="3823019343150397277">IBAN</translation> <translation id="3823402221513322552">เบราว์เซอร์ของคุณจัดการโดย <ph name="BROWSER_DOMAIN" /> และโปรไฟล์ของคุณจัดการโดย <ph name="PROFILE_DOMAIN" /></translation> <translation id="382518646247711829">หากคุณใช้พร็อกซีเซิร์ฟเวอร์...</translation> @@ -1815,7 +1819,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">คุณกําลังใช้การล็อกหน้าจอเพื่อป้อนรหัสผ่าน</translation> <translation id="4558551763791394412">ลองปิดใช้ส่วนขยาย</translation> -<translation id="456043042661026303">กำลังตรวจสอบรายละเอียดการชำระเงินอย่างปลอดภัย</translation> <translation id="4566017918361049074">กลางแจ้ง</translation> <translation id="4567686777917670400">ผู้ดูแลระบบจะเปลี่ยนการตั้งค่าเบราว์เซอร์จากระยะไกลได้ กิจกรรมในอุปกรณ์นี้อาจมีการจัดการภายนอก Chromium ได้ด้วย <ph name="BEGIN_LINK" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK" /></translation> <translation id="4569155249847375786">ยืนยันแล้ว</translation> @@ -2662,7 +2665,6 @@ <translation id="6272088941196661550">สำรวจต่อเพื่อดูกิจกรรมที่เกี่ยวข้องในประวัติการเข้าชมใน Chrome</translation> <translation id="6272383483618007430">Google อัปเดต</translation> <translation id="6279183038361895380">กด |<ph name="ACCELERATOR" />| เพื่อแสดงเคอร์เซอร์ของคุณ</translation> -<translation id="628016388715774955">เลือกตัวเลือกกรอกที่อยู่แบบเต็มแล้ว</translation> <translation id="6280223929691119688">ไม่สามารถนำส่งสินค้าไปยังที่อยู่นี้ โปรดเลือกที่อยู่อื่น</translation> <translation id="6284292079994426700">26 x 38 นิ้ว</translation> <translation id="6284517535531159884">ประเภท Seed ของรูปแบบ</translation> @@ -2934,7 +2936,6 @@ <translation id="6807791860691150411">การศึกษา</translation> <translation id="681021252041861472">ช่องที่ต้องกรอก</translation> <translation id="6810899417690483278">รหัสการปรับแต่ง</translation> -<translation id="681459028290894216">กรอกที่อยู่แบบเต็ม</translation> <translation id="6816109178681043245">สินค้ากีฬา</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">พอร์ตอนุกรม</translation> @@ -3205,6 +3206,7 @@ <translation id="7341357280245177602">ยานพาหนะมือสอง</translation> <translation id="7346048084945669753">เป็นพาร์ทเนอร์:</translation> <translation id="7346062987309535530">ชุดจานชาม</translation> +<translation id="7346081071264046066">"ตอบรับคำเชิญงานแต่งนี้อย่างตื่นเต้น"</translation> <translation id="7352651011704765696">มีข้อผิดพลาดเกิดขึ้น</translation> <translation id="7353601530677266744">บรรทัดคำสั่ง </translation> <translation id="7354880545102894991">การท่องเที่ยวต้นทุนต่ำที่จองในนาทีสุดท้าย</translation>
diff --git a/components/strings/components_strings_tr.xtb b/components/strings/components_strings_tr.xtb index 7cd35ef..aa1ee4f 100644 --- a/components/strings/components_strings_tr.xtb +++ b/components/strings/components_strings_tr.xtb
@@ -1813,7 +1813,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Şifreleri doldurmak için ekran kilidinizi kullanıyorsunuz</translation> <translation id="4558551763791394412">Uzantılarınızı devre dışı bırakmayı deneyin</translation> -<translation id="456043042661026303">Ödeme ayrıntılarınız güvenli bir şekilde kontrol ediliyor</translation> <translation id="4566017918361049074">Açık hava spor aktiviteleri</translation> <translation id="4567686777917670400">Yöneticiniz, tarayıcınızın kurulumunu uzaktan değiştirebilir. Bu cihazdaki etkinlikler Chromium dışında da yönetilebilir. <ph name="BEGIN_LINK" />Daha fazla bilgi<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Doğrulandı</translation> @@ -2660,7 +2659,6 @@ <translation id="6272088941196661550">Chrome geçmişinizde alakalı etkinlikleri görmek için arama yolculuğunuzu devam ettirin.</translation> <translation id="6272383483618007430">Google Güncelleme</translation> <translation id="6279183038361895380">İmlecinizi göstermek için |<ph name="ACCELERATOR" />| tuşuna basın</translation> -<translation id="628016388715774955">Tam adresi doldur seçeneği belirlendi</translation> <translation id="6280223929691119688">Bu adrese teslimat yapılamıyor. Farklı bir adres seçin.</translation> <translation id="6284292079994426700">26 x 38 inç</translation> <translation id="6284517535531159884">Varyasyon Çekirdek Türü</translation> @@ -2932,7 +2930,6 @@ <translation id="6807791860691150411">Eğitim</translation> <translation id="681021252041861472">Gerekli Alan</translation> <translation id="6810899417690483278">Özelleştirme Kimliği</translation> -<translation id="681459028290894216">Tam adresi doldur</translation> <translation id="6816109178681043245">Spor Malzemeleri</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">seri bağlantı noktaları</translation>
diff --git a/components/strings/components_strings_uk.xtb b/components/strings/components_strings_uk.xtb index fd6139d..2f88ed0 100644 --- a/components/strings/components_strings_uk.xtb +++ b/components/strings/components_strings_uk.xtb
@@ -517,6 +517,8 @@ <translation id="1956486093533522234">Дає змогу знайти, захистити пристрій або видалити з нього всі дані</translation> <translation id="1958218078413065209">Ваш найкращий результат – <ph name="SCORE" />.</translation> <translation id="1959001866257244765">Допоможіть посилити безпеку в Інтернеті для всіх користувачів, надсилаючи в Google <ph name="BEGIN_WHITEPAPER_LINK" />URL-адреси та вміст деяких відвіданих сторінок, а також обмежену системну інформацію<ph name="END_WHITEPAPER_LINK" />. <ph name="BEGIN_PRIVACY_PAGE_LINK" />Політика конфіденційності<ph name="END_PRIVACY_PAGE_LINK" /></translation> +<translation id="1959445535228047762">Текст і контент сторінки надсилаються в Google та можуть використовуватися для покращення цієї функції. + <ph name="BEGIN_LINK" />Докладніше<ph name="END_LINK" /></translation> <translation id="1962204205936693436">Закладки <ph name="DOMAIN" /></translation> <translation id="196752089528718902">Зазвичай ви безпечно підключаєтеся до сайтів, проте цього разу Chrome не може застосувати захищене з’єднання. Можливо, зловмисник намагається підслухати або змінити ваше з’єднання з мережею. <ph name="BEGIN_LEARN_MORE_LINK" />Докладніше<ph name="END_LEARN_MORE_LINK" /></translation> <translation id="1973335181906896915">Помилка серіалізації</translation> @@ -720,6 +722,7 @@ <translation id="2354430244986887761">Функція безпечного перегляду від Google нещодавно <ph name="BEGIN_LINK" />виявила шкідливі додатки<ph name="END_LINK" /> на сайті <ph name="SITE" />.</translation> <translation id="2355395290879513365">Зловмисники можуть бачити зображення, які ви переглядаєте на цьому сайті, і змінювати їх із метою ошукати вас.</translation> <translation id="2356070529366658676">Запитати</translation> +<translation id="2356926036049612643">Оптимізатор V8</translation> <translation id="2357481397660644965">Вашим пристроєм керує <ph name="DEVICE_MANAGER" />, а обліковим записом – <ph name="ACCOUNT_MANAGER" />.</translation> <translation id="2359629602545592467">Декілька</translation> <translation id="2359808026110333948">Продовжити</translation> @@ -1813,7 +1816,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Ви використовуєте функцію блокування екрана для заповнення паролів</translation> <translation id="4558551763791394412">Спробуйте вимкнути розширення.</translation> -<translation id="456043042661026303">Безпечна перевірка відомостей про спосіб оплати</translation> <translation id="4566017918361049074">Дозвілля на природі</translation> <translation id="4567686777917670400">Адміністратор може змінити налаштування веб-переглядача віддалено. Діями на цьому пристрої можна керувати за межами Chromium. <ph name="BEGIN_LINK" />Докладніше<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Перевірено</translation> @@ -2660,7 +2662,6 @@ <translation id="6272088941196661550">Щоб бачити релевантні дії в історії Chrome, відновіть сеанс</translation> <translation id="6272383483618007430">Оновлення Google</translation> <translation id="6279183038361895380">Натисніть |<ph name="ACCELERATOR" />|, щоб побачити курсор</translation> -<translation id="628016388715774955">Вибрано опцію "Указати повну адресу"</translation> <translation id="6280223929691119688">Неможливо доставити замовлення за цією адресою. Укажіть іншу адресу.</translation> <translation id="6284292079994426700">26 x 38 дюйм.</translation> <translation id="6284517535531159884">Тип вихідного варіанта</translation> @@ -2932,7 +2933,6 @@ <translation id="6807791860691150411">Освіта</translation> <translation id="681021252041861472">Обов’язкове поле</translation> <translation id="6810899417690483278">Ідентифікатор налаштування</translation> -<translation id="681459028290894216">Указати повну адресу</translation> <translation id="6816109178681043245">Спортивні товари</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">послідовні порти</translation>
diff --git a/components/strings/components_strings_ur.xtb b/components/strings/components_strings_ur.xtb index f06d86d..407d513 100644 --- a/components/strings/components_strings_ur.xtb +++ b/components/strings/components_strings_ur.xtb
@@ -1822,7 +1822,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">آپ پاس ورڈز درج کرنے کے لیے اپنا اسکرین لاک استعمال کر رہے ہیں</translation> <translation id="4558551763791394412">اپنے ایکسٹینشنز کو غیر فعال کرنے کی کوشش کریں۔</translation> -<translation id="456043042661026303">آپ کی ادائیگی کی تفصیلات کو محفوظ طریقے سے چیک کیا جا رہے ہے</translation> <translation id="4566017918361049074">آؤٹ ڈورز</translation> <translation id="4567686777917670400">آپ کا منتظم دور سے آپ کے براؤزر کا سیٹ اپ تبدیل کر سکتا ہے۔ اس آلے پر ہونے والی سرگرمی کا نظم Chromium سے باہر بھی کیا جا سکتا ہے۔ <ph name="BEGIN_LINK" />مزید جانیں<ph name="END_LINK" /></translation> <translation id="4569155249847375786">توثیق کردہ</translation> @@ -2670,7 +2669,6 @@ <translation id="6272088941196661550">اپنی Chrome کی سرگزشت میں متعلقہ سرگرمی دیکھنے کے لیے دوبارہ اپنا صارف کا تجربہ شروع کریں</translation> <translation id="6272383483618007430">Google اپ ڈیٹ</translation> <translation id="6279183038361895380">اپنا کرسر دکھانے کیلئے |<ph name="ACCELERATOR" />| کو دبائیں</translation> -<translation id="628016388715774955">مکمل پتہ پُر کریں کا اختیار منتخب کیا گیا</translation> <translation id="6280223929691119688">اس پتے پر ڈیلیوری نہیں ہو سکتی۔ کوئی مختلف پتہ منتخب کریں۔</translation> <translation id="6284292079994426700">26 x 38 انچ</translation> <translation id="6284517535531159884">تغیرات سیڈ کی قسم</translation> @@ -2942,7 +2940,6 @@ <translation id="6807791860691150411">تعلیم</translation> <translation id="681021252041861472">مطلوبہ فیلڈ</translation> <translation id="6810899417690483278">حسب ضرورت ID</translation> -<translation id="681459028290894216">مکمل پتہ پُر کریں</translation> <translation id="6816109178681043245">کھیل کود کا ساز و سامان</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">سیریل پورٹس</translation>
diff --git a/components/strings/components_strings_uz.xtb b/components/strings/components_strings_uz.xtb index 9693c977..a8699bd0 100644 --- a/components/strings/components_strings_uz.xtb +++ b/components/strings/components_strings_uz.xtb
@@ -1811,7 +1811,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Parollarni kiritish uchun ekran qulfidan foydalanmoqdasiz</translation> <translation id="4558551763791394412">Brauzer kengaytmalarini o‘chirib qo‘yib, keyin tekshirib ko‘ring.</translation> -<translation id="456043042661026303">Toʻlov tafsilotlari xavfsiz tekshirilmoqda</translation> <translation id="4566017918361049074">Ochiq havoda</translation> <translation id="4567686777917670400">Adminitratoringiz brauzerni masofadan sozlashi mumkin. Bu qurilmadagi amallar Chromium tashqarisidan boshqarilishi mumkin. <ph name="BEGIN_LINK" />Batafsil<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Tasdiqlangan</translation> @@ -2657,7 +2656,6 @@ <translation id="6272088941196661550">Chrome tarixidagi tegishli faollikni koʻrish uchun tarixni qaytaring</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">Kursorni ko‘rish uchun |<ph name="ACCELERATOR" />| tugmasini bosing</translation> -<translation id="628016388715774955">Toʻliq manzilini kiritish tanlandi</translation> <translation id="6280223929691119688">Bu manzilga yetkazib bera olmaymiz. Boshqa manzilni tanlang.</translation> <translation id="6284292079994426700">26 x 38 in</translation> <translation id="6284517535531159884">Talqin turlari</translation> @@ -2929,7 +2927,6 @@ <translation id="6807791860691150411">Taʼlim</translation> <translation id="681021252041861472">Majburiy maydoncha</translation> <translation id="6810899417690483278">Moslashtirish identifikatori</translation> -<translation id="681459028290894216">Toʻliq manzilini kiritish</translation> <translation id="6816109178681043245">Sport anjomlari</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">ketma-ket portlar</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb index 1a8096f..350a1626 100644 --- a/components/strings/components_strings_vi.xtb +++ b/components/strings/components_strings_vi.xtb
@@ -1724,7 +1724,7 @@ <translation id="4336913590841287350">Chính sách này chưa được hỗ trợ làm chính sách người dùng trên iOS.</translation> <translation id="4340575312453649552">Chrome đã xóa quảng cáo này vì quảng cáo sử dụng quá nhiều tài nguyên của thiết bị.</translation> <translation id="4340810192899866471">Nhập từ JSON</translation> -<translation id="4340982228985273705">Máy tính này không được coi là máy tính do doanh nghiệp quản lý, vì vậy, chính sách này chỉ có thể tự động cài đặt các tiện ích được lưu trữ trên Cửa hàng Chrome trực tuyến. URL cập nhật Cửa hàng Chrome trực tuyến là "<ph name="CWS_UPDATE_URL" />".</translation> +<translation id="4340982228985273705">Máy tính này không được coi là máy tính do doanh nghiệp quản lý, vì vậy, chính sách này chỉ có thể tự động cài đặt các tiện ích được lưu trữ trên Chrome Web Store. URL cập nhật Chrome Web Store là "<ph name="CWS_UPDATE_URL" />".</translation> <translation id="4348834659292907206">Kết nối đến <ph name="SITE" /> không an toàn</translation> <translation id="4349365535725594680">Không thể chia sẻ nội dung bảo mật</translation> <translation id="4349810866125026513">Vẫn tải lên</translation> @@ -1816,7 +1816,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Bạn đang sử dụng phương thức khoá màn hình để điền mật khẩu</translation> <translation id="4558551763791394412">Thử tắt tiện ích.</translation> -<translation id="456043042661026303">Đang kiểm tra thông tin thanh toán của bạn một cách an toàn</translation> <translation id="4566017918361049074">Ngoài trời</translation> <translation id="4567686777917670400">Quản trị viên có thể thay đổi quy trình thiết lập trình duyệt của bạn từ xa. Hoạt động trên thiết bị này cũng có thể được quản lý bên ngoài Chromium. <ph name="BEGIN_LINK" />Tìm hiểu thêm<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Đã được xác minh</translation> @@ -2663,7 +2662,6 @@ <translation id="6272088941196661550">Tiếp tục hành trình của bạn để xem hoạt động liên quan trong nhật ký duyệt web trên Chrome</translation> <translation id="6272383483618007430">Google Update</translation> <translation id="6279183038361895380">Nhấn |<ph name="ACCELERATOR" />| để hiển thị con trỏ của bạn</translation> -<translation id="628016388715774955">Đã chọn tuỳ chọn điền địa chỉ đầy đủ</translation> <translation id="6280223929691119688">Không thể phân phối đến địa chỉ này. Chọn một địa chỉ khác.</translation> <translation id="6284292079994426700">26 x 38 inch</translation> <translation id="6284517535531159884">Loại khởi đầu biến thể</translation> @@ -2935,7 +2933,6 @@ <translation id="6807791860691150411">Giáo dục</translation> <translation id="681021252041861472">Trường bắt buộc</translation> <translation id="6810899417690483278">ID tùy chỉnh</translation> -<translation id="681459028290894216">Điền địa chỉ đầy đủ</translation> <translation id="6816109178681043245">Đồ thể thao</translation> <translation id="6817217109584391709">javascript</translation> <translation id="6820143000046097424">cổng nối tiếp</translation>
diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb index 0774cec4..65e96c3 100644 --- a/components/strings/components_strings_zh-CN.xtb +++ b/components/strings/components_strings_zh-CN.xtb
@@ -517,6 +517,8 @@ <translation id="1956486093533522234">查找、保护或清空您的设备</translation> <translation id="1958218078413065209">您的最高得分是 <ph name="SCORE" />。</translation> <translation id="1959001866257244765">向 Google 发送<ph name="BEGIN_WHITEPAPER_LINK" />您访问的部分网页的网址、有限的系统信息以及部分网页内容<ph name="END_WHITEPAPER_LINK" />,帮助我们为所有人改善网络安全环境。<ph name="BEGIN_PRIVACY_PAGE_LINK" />隐私权政策<ph name="END_PRIVACY_PAGE_LINK" /></translation> +<translation id="1959445535228047762">您的文字和网页内容会发送给 Google,并可能会用于改进此功能。 + <ph name="BEGIN_LINK" />了解详情<ph name="END_LINK" /></translation> <translation id="1962204205936693436"><ph name="DOMAIN" />书签</translation> <translation id="196752089528718902">您通常可以安全地连接到网站,但目前 Chrome 无法使用安全连接。攻击者可能会试图对您的网络连接进行窃听或修改。<ph name="BEGIN_LEARN_MORE_LINK" />了解详情<ph name="END_LEARN_MORE_LINK" /></translation> <translation id="1973335181906896915">序列化错误</translation> @@ -720,6 +722,7 @@ <translation id="2354430244986887761">Google 安全浏览功能最近在 <ph name="SITE" /> 上<ph name="BEGIN_LINK" />发现了有害应用<ph name="END_LINK" />。</translation> <translation id="2355395290879513365">攻击者可能能够看到您正在此网站上浏览的图片,并通过编辑这些图片让您受骗。</translation> <translation id="2356070529366658676">询问</translation> +<translation id="2356926036049612643">V8 优化工具</translation> <translation id="2357481397660644965">您的设备由 <ph name="DEVICE_MANAGER" /> 管理,您的账号由 <ph name="ACCOUNT_MANAGER" /> 管理。</translation> <translation id="2359629602545592467">多种货币</translation> <translation id="2359808026110333948">继续</translation> @@ -1809,7 +1812,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">您正在使用屏幕锁定功能填充密码</translation> <translation id="4558551763791394412">尝试停用扩展程序。</translation> -<translation id="456043042661026303">正在安全地检查您的付款信息</translation> <translation id="4566017918361049074">户外活动</translation> <translation id="4567686777917670400">您的管理员可以远程更改您的浏览器设置。此设备上的活动可能也在接受 Chromium 外部的管理。<ph name="BEGIN_LINK" />了解详情<ph name="END_LINK" /></translation> <translation id="4569155249847375786">已验证</translation> @@ -2655,7 +2657,6 @@ <translation id="6272088941196661550">继续您的历程,以查看您的 Chrome 历史记录中的相关活动记录</translation> <translation id="6272383483618007430">Google 更新</translation> <translation id="6279183038361895380">按 |<ph name="ACCELERATOR" />| 可显示鼠标光标</translation> -<translation id="628016388715774955">已选择“填充完整地址”选项</translation> <translation id="6280223929691119688">无法递送到此地址。请另选一个地址。</translation> <translation id="6284292079994426700">26 x 38 英寸</translation> <translation id="6284517535531159884">变体版本种子类型</translation> @@ -2927,7 +2928,6 @@ <translation id="6807791860691150411">教育</translation> <translation id="681021252041861472">必填字段</translation> <translation id="6810899417690483278">自定义 ID</translation> -<translation id="681459028290894216">填充完整地址</translation> <translation id="6816109178681043245">体育用品</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">串行端口</translation>
diff --git a/components/strings/components_strings_zh-HK.xtb b/components/strings/components_strings_zh-HK.xtb index f0164de..b0634b6 100644 --- a/components/strings/components_strings_zh-HK.xtb +++ b/components/strings/components_strings_zh-HK.xtb
@@ -517,6 +517,8 @@ <translation id="1956486093533522234">尋找裝置、保護裝置安全或清除裝置資料</translation> <translation id="1958218078413065209">你嘅最高得分係 <ph name="SCORE" />。</translation> <translation id="1959001866257244765"><ph name="BEGIN_WHITEPAPER_LINK" />將您瀏覽的部分網頁網址、有限的系統資料以及部分網頁內容<ph name="END_WHITEPAPER_LINK" />傳送給 Google,以協助改善其他使用者的網絡安全性。<ph name="BEGIN_PRIVACY_PAGE_LINK" />私隱權政策<ph name="END_PRIVACY_PAGE_LINK" /></translation> +<translation id="1959445535228047762">你的文字和網頁內容會傳送給 Google,且可能會用於改善此功能。 + <ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation> <translation id="1962204205936693436"><ph name="DOMAIN" /> 書籤</translation> <translation id="196752089528718902">你通常可經由安全連線前往網站,但 Chrome 目前無法使用安全連線。攻擊者可能會試圖監視或修改你的網絡連線。<ph name="BEGIN_LEARN_MORE_LINK" />瞭解詳情<ph name="END_LEARN_MORE_LINK" /></translation> <translation id="1973335181906896915">序列化錯誤</translation> @@ -720,6 +722,7 @@ <translation id="2354430244986887761">Google 安全瀏覽功能最近在 <ph name="SITE" /> 上<ph name="BEGIN_LINK" />發現有害的應用程式<ph name="END_LINK" />。</translation> <translation id="2355395290879513365">攻擊者可能可以看到您正在此網站上看到的圖片,然後透過修改圖片來欺騙您。</translation> <translation id="2356070529366658676">詢問</translation> +<translation id="2356926036049612643">V8 優化工具</translation> <translation id="2357481397660644965">您的裝置由 <ph name="DEVICE_MANAGER" /> 管理,而您的帳戶由 <ph name="ACCOUNT_MANAGER" /> 管理。</translation> <translation id="2359629602545592467">多種貨幣</translation> <translation id="2359808026110333948">繼續</translation> @@ -1812,7 +1815,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">您正在使用螢幕鎖定功能填入密碼</translation> <translation id="4558551763791394412">嘗試停用擴充程式。</translation> -<translation id="456043042661026303">正在對付款資料進行安全檢查</translation> <translation id="4566017918361049074">戶外活動</translation> <translation id="4567686777917670400">您的管理員可遠端變更瀏覽器設定。此裝置上的活動也可透過 Chromium 以外的服務管理。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation> <translation id="4569155249847375786">已驗證</translation> @@ -2659,7 +2661,6 @@ <translation id="6272088941196661550">恢復瀏覽過程以查看 Chrome 記錄中的相關活動</translation> <translation id="6272383483618007430">Google 更新</translation> <translation id="6279183038361895380">按下 |<ph name="ACCELERATOR" />| 即可顯示游標</translation> -<translation id="628016388715774955">揀咗填寫完整地址選項</translation> <translation id="6280223929691119688">無法送貨至此地址,請選取其他地址。</translation> <translation id="6284292079994426700">26 x 38 吋</translation> <translation id="6284517535531159884">種子類型變化版本</translation> @@ -2931,7 +2932,6 @@ <translation id="6807791860691150411">教育</translation> <translation id="681021252041861472">必填欄位</translation> <translation id="6810899417690483278">自訂 ID</translation> -<translation id="681459028290894216">填寫完整地址</translation> <translation id="6816109178681043245">體育器材</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">序列連接埠</translation>
diff --git a/components/strings/components_strings_zh-TW.xtb b/components/strings/components_strings_zh-TW.xtb index 599adf8..c698c72fb 100644 --- a/components/strings/components_strings_zh-TW.xtb +++ b/components/strings/components_strings_zh-TW.xtb
@@ -516,6 +516,8 @@ <translation id="1956486093533522234">尋找、保護裝置或清除裝置資料</translation> <translation id="1958218078413065209">最高得分為 <ph name="SCORE" />。</translation> <translation id="1959001866257244765"><ph name="BEGIN_WHITEPAPER_LINK" />將你造訪的部分網頁網址、特定的系統資訊以及部分網頁內容傳送<ph name="END_WHITEPAPER_LINK" />給 Google,協助我們改善所有使用者的網路安全。<ph name="BEGIN_PRIVACY_PAGE_LINK" />隱私權政策<ph name="END_PRIVACY_PAGE_LINK" /></translation> +<translation id="1959445535228047762">你的文字和網頁內容會傳送給 Google,且可能會用於改善這項功能。 + <ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation> <translation id="1962204205936693436"><ph name="DOMAIN" /> 書籤</translation> <translation id="196752089528718902">你通常可以經由安全連線前往網站,但 Chrome 目前無法使用安全連線。攻擊者可能會試圖竊聽或修改你的網路連線。<ph name="BEGIN_LEARN_MORE_LINK" />瞭解詳情<ph name="END_LEARN_MORE_LINK" /></translation> <translation id="1973335181906896915">序列化錯誤</translation> @@ -719,6 +721,7 @@ <translation id="2354430244986887761">Google 安全瀏覽服務最近在 <ph name="SITE" /> <ph name="BEGIN_LINK" />發現有害的應用程式<ph name="END_LINK" />。</translation> <translation id="2355395290879513365">攻擊者可能會看到你正在這個網站上瀏覽的圖片,並以修改圖片內容的方式讓你受騙。</translation> <translation id="2356070529366658676">詢問</translation> +<translation id="2356926036049612643">V8 最佳化工具</translation> <translation id="2357481397660644965">你的裝置是由 <ph name="DEVICE_MANAGER" /> 管理,帳戶是由 <ph name="ACCOUNT_MANAGER" /> 管理。</translation> <translation id="2359629602545592467">多種</translation> <translation id="2359808026110333948">繼續</translation> @@ -1811,7 +1814,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">你正在使用螢幕鎖定功能填入密碼</translation> <translation id="4558551763791394412">試試看停用擴充功能。</translation> -<translation id="456043042661026303">正在對付款資料進行安全檢查</translation> <translation id="4566017918361049074">戶外活動</translation> <translation id="4567686777917670400">你的系統管理員可從遠端變更瀏覽器設定。這部裝置上的活動也可透過 Chromium 以外的服務管理。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation> <translation id="4569155249847375786">驗證完成</translation> @@ -2658,7 +2660,6 @@ <translation id="6272088941196661550">繼續瀏覽歷程即可查看 Chrome 歷史記錄中的相關活動</translation> <translation id="6272383483618007430">Google 更新</translation> <translation id="6279183038361895380">按下 |<ph name="ACCELERATOR" />| 即可顯示游標</translation> -<translation id="628016388715774955">已選取「填入完整地址」選項</translation> <translation id="6280223929691119688">快遞無法送貨到這個地址,請改用其他地址。</translation> <translation id="6284292079994426700">26 x 38 吋</translation> <translation id="6284517535531159884">種子類型變化版本</translation> @@ -2930,7 +2931,6 @@ <translation id="6807791860691150411">教育</translation> <translation id="681021252041861472">必填欄位</translation> <translation id="6810899417690483278">自訂 ID</translation> -<translation id="681459028290894216">填入完整地址</translation> <translation id="6816109178681043245">運動用品</translation> <translation id="6817217109584391709">JavaScript</translation> <translation id="6820143000046097424">序列埠</translation>
diff --git a/components/strings/components_strings_zu.xtb b/components/strings/components_strings_zu.xtb index 6233d9e..044275bc 100644 --- a/components/strings/components_strings_zu.xtb +++ b/components/strings/components_strings_zu.xtb
@@ -1813,7 +1813,6 @@ <translation id="455113658016510503">A9</translation> <translation id="4556069465387849460">Usebenzisa ukukhiya isikrini kwakho ukuze ugcwalise amaphasiwedi</translation> <translation id="4558551763791394412">Zama ukukhubaza izandiso zakho.</translation> -<translation id="456043042661026303">Ihlola ngokuphephile imininingwane yenkokhelo yakho</translation> <translation id="4566017918361049074">Ngaphandle</translation> <translation id="4567686777917670400">Umlawuli wakho angaguqula ukusethwa kwesiphequluli sakho akude. Umsebenzi okule divayisi ungaphinda aphathwe ngaphandle kwe-Chromium. <ph name="BEGIN_LINK" />Funda kabanzi<ph name="END_LINK" /></translation> <translation id="4569155249847375786">Iqinisekisiwe</translation> @@ -2660,7 +2659,6 @@ <translation id="6272088941196661550">Qhubeka nohambo ukuze ubone umsebenzi ohambisanayo kumlando wakho we-Chrome</translation> <translation id="6272383483618007430">Isibuyekezo se-Google</translation> <translation id="6279183038361895380">Cindezela u-|<ph name="ACCELERATOR" />| ukuze ubonise ikhesa lakho</translation> -<translation id="628016388715774955">Kukhethwe okukhethwayo kokugcwalisa ikheli eliphelele</translation> <translation id="6280223929691119688">Ayikwazi ukuletha kuleli kheli. Khetha ikheli elihlukile.</translation> <translation id="6284292079994426700">U-26 x 38 phakathi</translation> <translation id="6284517535531159884">Ukuhlukahluka Kohlobo Lwembewu</translation> @@ -2932,7 +2930,6 @@ <translation id="6807791860691150411">Imfundo</translation> <translation id="681021252041861472">Inkambu edingekile</translation> <translation id="6810899417690483278">Yenza ngezfiso i-ID</translation> -<translation id="681459028290894216">Gcwalisa ikheli eliphelele</translation> <translation id="6816109178681043245">Izimpahla Zemidlalo</translation> <translation id="6817217109584391709">i-javaScript</translation> <translation id="6820143000046097424">izimbobo ze-serial</translation>
diff --git a/components/sync/base/features.cc b/components/sync/base/features.cc index df5da96b..bf762569 100644 --- a/components/sync/base/features.cc +++ b/components/sync/base/features.cc
@@ -220,4 +220,10 @@ "SyncSchedulerUseWallClockTimer", base::FEATURE_DISABLED_BY_DEFAULT); +#if BUILDFLAG(IS_ANDROID) +BASE_FEATURE(kSyncShowIdentityErrorsForSignedInUsers, + "SyncShowIdentityErrorsForSignedInUsers", + base::FEATURE_DISABLED_BY_DEFAULT); +#endif // BUILDFLAG(IS_ANDROID) + } // namespace syncer
diff --git a/components/sync/base/features.h b/components/sync/base/features.h index 747c19a0..a0cc472c 100644 --- a/components/sync/base/features.h +++ b/components/sync/base/features.h
@@ -221,6 +221,11 @@ // to schedule poll requests. BASE_DECLARE_FEATURE(kSyncSchedulerUseWallClockTimer); +#if BUILDFLAG(IS_ANDROID) +// If enabled, shows identity errors for signed-in non-syncing users. +BASE_DECLARE_FEATURE(kSyncShowIdentityErrorsForSignedInUsers); +#endif // BUILDFLAG(IS_ANDROID) + } // namespace syncer #endif // COMPONENTS_SYNC_BASE_FEATURES_H_
diff --git a/components/sync/service/model_load_manager.cc b/components/sync/service/model_load_manager.cc index dfdf7d4..ca25039f 100644 --- a/components/sync/service/model_load_manager.cc +++ b/components/sync/service/model_load_manager.cc
@@ -287,8 +287,8 @@ } CHECK(!loaded_types_.Has(dtc->type())); - // TODO(crbug.com/1519487): Investigate the CHECK failure. - DUMP_WILL_BE_CHECK_EQ(dtc->state(), DataTypeController::NOT_RUNNING); + // TODO(crbug.com/1519487): Avoid calling LoadModelsForType() multiple times + // upon stop, and re-introduce a CHECK for state to be NOT_RUNNING only. if (dtc->state() == DataTypeController::NOT_RUNNING) { dtc->LoadModels(*configure_context_, base::BindRepeating(&ModelLoadManager::ModelLoadCallback,
diff --git a/components/sync/service/model_load_manager_unittest.cc b/components/sync/service/model_load_manager_unittest.cc index e60b9b776..10f2629 100644 --- a/components/sync/service/model_load_manager_unittest.cc +++ b/components/sync/service/model_load_manager_unittest.cc
@@ -731,4 +731,62 @@ // No crash from LoadModels. } +// Regression test for crbug.com/1519806. +// Tests that stop callbacks for a type which is not in NOT_RUNNING state +// anymore are ignored. +TEST_F(SyncModelLoadManagerTest, + ShouldHandleMultipleStopCallbacksForStoppingType) { + // Create a controller with manual loading. + controllers_[BOOKMARKS] = std::make_unique<FakeDataTypeController>(BOOKMARKS); + GetController(BOOKMARKS)->model()->EnableManualModelStart(); + + ModelLoadManager model_load_manager(&controllers_, &delegate_); + ModelTypeSet preferred_types = {BOOKMARKS}; + + model_load_manager.Configure( + /*preferred_types_without_errors=*/preferred_types, preferred_types, + BuildConfigureContext()); + + // Bring BOOKMARKS to a STOPPING state. + model_load_manager.Stop(SyncStopMetadataFate::KEEP_METADATA); + ASSERT_EQ(GetController(BOOKMARKS)->state(), DataTypeController::STOPPING); + + // It should wait for BOOKMARKS to finish loading before notifying the data + // type manager. + EXPECT_CALL(delegate_, OnAllDataTypesReadyForConfigure).Times(0); + + model_load_manager.Configure( + /*preferred_types_without_errors=*/preferred_types, preferred_types, + BuildConfigureContext()); + + // BOOKMARKS needs to finish stopping first before it can start again. + ASSERT_EQ(GetController(BOOKMARKS)->state(), DataTypeController::STOPPING); + + // Add the same stop callback again to be called after the type has finished + // stopping. + model_load_manager.Configure( + /*preferred_types_without_errors=*/preferred_types, preferred_types, + BuildConfigureContext()); + + // BOOKMARKS needs to finish stopping first before it can start again. + ASSERT_EQ(GetController(BOOKMARKS)->state(), DataTypeController::STOPPING); + + // Finish loading of BOOKMARKS for the first time. This should first move the + // state to NOT_RUNNING. But, as part of the load callback, + // ModelTypeController::LoadModels() will be called which will set its state + // to MODEL_STARTING. + GetController(BOOKMARKS)->model()->SimulateModelStartFinished(); + EXPECT_EQ(GetController(BOOKMARKS)->state(), + DataTypeController::MODEL_STARTING); + + // Finish loading of BOOKMARKS. This will lead to a call to notify the + // delegate that all the types are ready. + EXPECT_CALL(delegate_, OnAllDataTypesReadyForConfigure); + GetController(BOOKMARKS)->model()->SimulateModelStartFinished(); + ASSERT_EQ(GetController(BOOKMARKS)->state(), + DataTypeController::MODEL_LOADED); + + // Note: The second stop callback didn't do anything and was a no-op. +} + } // namespace syncer
diff --git a/components/test/data/history/history.68.sql b/components/test/data/history/history.68.sql index efcda65..91e1b65 100644 --- a/components/test/data/history/history.68.sql +++ b/components/test/data/history/history.68.sql
@@ -2,10 +2,10 @@ BEGIN TRANSACTION; CREATE TABLE meta(key LONGVARCHAR NOT NULL UNIQUE PRIMARY KEY, value LONGVARCHAR); INSERT INTO meta VALUES('mmap_status','-1'); -INSERT INTO meta VALUES('version','67'); +INSERT INTO meta VALUES('version','68'); INSERT INTO meta VALUES('last_compatible_version','16'); CREATE TABLE urls(id INTEGER PRIMARY KEY AUTOINCREMENT,url LONGVARCHAR,title LONGVARCHAR,visit_count INTEGER DEFAULT 0 NOT NULL,typed_count INTEGER DEFAULT 0 NOT NULL,last_visit_time INTEGER NOT NULL,hidden INTEGER DEFAULT 0 NOT NULL); -CREATE TABLE visits(id INTEGER PRIMARY KEY AUTOINCREMENT,url INTEGER NOT NULL,visit_time INTEGER NOT NULL,from_visit INTEGER,external_referrer_url TEXT,transition INTEGER DEFAULT 0 NOT NULL,segment_id INTEGER,visit_duration INTEGER DEFAULT 0 NOT NULL,incremented_omnibox_typed_score BOOLEAN DEFAULT FALSE NOT NULL,opener_visit INTEGER,originator_cache_guid TEXT,originator_visit_id INTEGER,originator_from_visit INTEGER,originator_opener_visit INTEGER,is_known_to_sync BOOLEAN DEFAULT FALSE NOT NULL,consider_for_ntp_most_visited BOOLEAN DEFAULT FALSE NOT NULL,visited_link_id INTEGER); +CREATE TABLE visits(id INTEGER PRIMARY KEY AUTOINCREMENT,url INTEGER NOT NULL,visit_time INTEGER NOT NULL,from_visit INTEGER,external_referrer_url TEXT,transition INTEGER DEFAULT 0 NOT NULL,segment_id INTEGER,visit_duration INTEGER DEFAULT 0 NOT NULL,incremented_omnibox_typed_score BOOLEAN DEFAULT FALSE NOT NULL,opener_visit INTEGER,originator_cache_guid TEXT,originator_visit_id INTEGER,originator_from_visit INTEGER,originator_opener_visit INTEGER,is_known_to_sync BOOLEAN DEFAULT FALSE NOT NULL,consider_for_ntp_most_visited BOOLEAN DEFAULT FALSE NOT NULL,visited_link_id INTEGER DEFAULT 0 NOT NULL); CREATE TABLE visit_source(id INTEGER PRIMARY KEY,source INTEGER NOT NULL); CREATE TABLE keyword_search_terms (keyword_id INTEGER NOT NULL,url_id INTEGER NOT NULL,term LONGVARCHAR NOT NULL,normalized_term LONGVARCHAR NOT NULL); CREATE TABLE downloads (id INTEGER PRIMARY KEY,guid VARCHAR NOT NULL,current_path LONGVARCHAR NOT NULL,target_path LONGVARCHAR NOT NULL,start_time INTEGER NOT NULL,received_bytes INTEGER NOT NULL,total_bytes INTEGER NOT NULL,state INTEGER NOT NULL,danger_type INTEGER NOT NULL,interrupt_reason INTEGER NOT NULL,hash BLOB NOT NULL,end_time INTEGER NOT NULL,opened INTEGER NOT NULL,last_access_time INTEGER NOT NULL,transient INTEGER NOT NULL,referrer VARCHAR NOT NULL,site_url VARCHAR NOT NULL,embedder_download_data VARCHAR NOT NULL,tab_url VARCHAR NOT NULL,tab_referrer_url VARCHAR NOT NULL,http_method VARCHAR NOT NULL,by_ext_id VARCHAR NOT NULL,by_ext_name VARCHAR NOT NULL,by_web_app_id VARCHAR NOT NULL,etag VARCHAR NOT NULL,last_modified VARCHAR NOT NULL,mime_type VARCHAR(255) NOT NULL,original_mime_type VARCHAR(255) NOT NULL);
diff --git a/components/test/data/history/history.69.sql b/components/test/data/history/history.69.sql new file mode 100644 index 0000000..04e15c18 --- /dev/null +++ b/components/test/data/history/history.69.sql
@@ -0,0 +1,40 @@ +PRAGMA foreign_keys=OFF; +BEGIN TRANSACTION; +CREATE TABLE meta(key LONGVARCHAR NOT NULL UNIQUE PRIMARY KEY, value LONGVARCHAR); +INSERT INTO meta VALUES('mmap_status','-1'); +INSERT INTO meta VALUES('version','69'); +INSERT INTO meta VALUES('last_compatible_version','16'); +CREATE TABLE urls(id INTEGER PRIMARY KEY AUTOINCREMENT,url LONGVARCHAR,title LONGVARCHAR,visit_count INTEGER DEFAULT 0 NOT NULL,typed_count INTEGER DEFAULT 0 NOT NULL,last_visit_time INTEGER NOT NULL,hidden INTEGER DEFAULT 0 NOT NULL); +CREATE TABLE visits(id INTEGER PRIMARY KEY AUTOINCREMENT,url INTEGER NOT NULL,visit_time INTEGER NOT NULL,from_visit INTEGER,external_referrer_url TEXT,transition INTEGER DEFAULT 0 NOT NULL,segment_id INTEGER,visit_duration INTEGER DEFAULT 0 NOT NULL,incremented_omnibox_typed_score BOOLEAN DEFAULT FALSE NOT NULL,opener_visit INTEGER,originator_cache_guid TEXT,originator_visit_id INTEGER,originator_from_visit INTEGER,originator_opener_visit INTEGER,is_known_to_sync BOOLEAN DEFAULT FALSE NOT NULL,consider_for_ntp_most_visited BOOLEAN DEFAULT FALSE NOT NULL,visited_link_id INTEGER DEFAULT 0 NOT NULL,app_id TEXT); +CREATE TABLE visit_source(id INTEGER PRIMARY KEY,source INTEGER NOT NULL); +CREATE TABLE keyword_search_terms (keyword_id INTEGER NOT NULL,url_id INTEGER NOT NULL,term LONGVARCHAR NOT NULL,normalized_term LONGVARCHAR NOT NULL); +CREATE TABLE downloads (id INTEGER PRIMARY KEY,guid VARCHAR NOT NULL,current_path LONGVARCHAR NOT NULL,target_path LONGVARCHAR NOT NULL,start_time INTEGER NOT NULL,received_bytes INTEGER NOT NULL,total_bytes INTEGER NOT NULL,state INTEGER NOT NULL,danger_type INTEGER NOT NULL,interrupt_reason INTEGER NOT NULL,hash BLOB NOT NULL,end_time INTEGER NOT NULL,opened INTEGER NOT NULL,last_access_time INTEGER NOT NULL,transient INTEGER NOT NULL,referrer VARCHAR NOT NULL,site_url VARCHAR NOT NULL,embedder_download_data VARCHAR NOT NULL,tab_url VARCHAR NOT NULL,tab_referrer_url VARCHAR NOT NULL,http_method VARCHAR NOT NULL,by_ext_id VARCHAR NOT NULL,by_ext_name VARCHAR NOT NULL,by_web_app_id VARCHAR NOT NULL,etag VARCHAR NOT NULL,last_modified VARCHAR NOT NULL,mime_type VARCHAR(255) NOT NULL,original_mime_type VARCHAR(255) NOT NULL); +CREATE TABLE downloads_url_chains (id INTEGER NOT NULL,chain_index INTEGER NOT NULL,url LONGVARCHAR NOT NULL, PRIMARY KEY (id, chain_index) ); +CREATE TABLE downloads_slices (download_id INTEGER NOT NULL,offset INTEGER NOT NULL,received_bytes INTEGER NOT NULL,finished INTEGER NOT NULL DEFAULT 0,PRIMARY KEY (download_id, offset) ); +CREATE TABLE segments (id INTEGER PRIMARY KEY,name VARCHAR,url_id INTEGER NON NULL); +CREATE TABLE segment_usage (id INTEGER PRIMARY KEY,segment_id INTEGER NOT NULL,time_slot INTEGER NOT NULL,visit_count INTEGER DEFAULT 0 NOT NULL); +CREATE TABLE content_annotations(visit_id INTEGER PRIMARY KEY,visibility_score NUMERIC,floc_protected_score NUMERIC,categories VARCHAR,page_topics_model_version INTEGER,annotation_flags INTEGER NOT NULL,entities VARCHAR,related_searches VARCHAR,search_normalized_url VARCHAR,search_terms LONGVARCHAR,alternative_title VARCHAR,page_language VARCHAR,password_state INTEGER DEFAULT 0 NOT NULL,has_url_keyed_image BOOLEAN NOT NULL); +CREATE TABLE context_annotations(visit_id INTEGER PRIMARY KEY,context_annotation_flags INTEGER NOT NULL,duration_since_last_visit INTEGER,page_end_reason INTEGER,total_foreground_duration INTEGER,browser_type INTEGER DEFAULT 0 NOT NULL,window_id INTEGER DEFAULT -1 NOT NULL,tab_id INTEGER DEFAULT -1 NOT NULL,task_id INTEGER DEFAULT -1 NOT NULL,root_task_id INTEGER DEFAULT -1 NOT NULL,parent_task_id INTEGER DEFAULT -1 NOT NULL,response_code INTEGER DEFAULT 0 NOT NULL); +CREATE TABLE clusters(cluster_id INTEGER PRIMARY KEY AUTOINCREMENT,should_show_on_prominent_ui_surfaces BOOLEAN NOT NULL,label VARCHAR NOT NULL,raw_label VARCHAR NOT NULL,triggerability_calculated BOOLEAN NOT NULL,originator_cache_guid TEXT NOT NULL,originator_cluster_id INTEGER NOT NULL); +CREATE TABLE clusters_and_visits(cluster_id INTEGER NOT NULL,visit_id INTEGER NOT NULL,score NUMERIC DEFAULT 0 NOT NULL,engagement_score NUMERIC DEFAULT 0 NOT NULL,url_for_deduping LONGVARCHAR NOT NULL,normalized_url LONGVARCHAR NOT NULL,url_for_display LONGVARCHAR NOT NULL,interaction_state INTEGER DEFAULT 0 NOT NULL,PRIMARY KEY(cluster_id,visit_id))WITHOUT ROWID; +CREATE TABLE cluster_keywords(cluster_id INTEGER NOT NULL,keyword VARCHAR NOT NULL,type INTEGER NOT NULL,score NUMERIC NOT NULL,collections VARCHAR NOT NULL); +CREATE TABLE cluster_visit_duplicates(visit_id INTEGER NOT NULL,duplicate_visit_id INTEGER NOT NULL,PRIMARY KEY(visit_id,duplicate_visit_id))WITHOUT ROWID; +CREATE TABLE visited_links(id INTEGER PRIMARY KEY AUTOINCREMENT,link_url_id INTEGER NOT NULL,top_level_url LONGVARCHAR NOT NULL,frame_url LONGVARCHAR NOT NULL,visit_count INTEGER DEFAULT 0 NOT NULL); +CREATE TABLE history_sync_metadata (storage_key INTEGER PRIMARY KEY NOT NULL, value BLOB); +DELETE FROM sqlite_sequence; +CREATE INDEX visits_url_index ON visits (url); +CREATE INDEX visits_from_index ON visits (from_visit); +CREATE INDEX visits_time_index ON visits (visit_time); +CREATE INDEX visits_originator_id_index ON visits (originator_visit_id); +CREATE INDEX keyword_search_terms_index1 ON keyword_search_terms (keyword_id, normalized_term); +CREATE INDEX keyword_search_terms_index2 ON keyword_search_terms (url_id); +CREATE INDEX keyword_search_terms_index3 ON keyword_search_terms (term); +CREATE INDEX segments_name ON segments(name); +CREATE INDEX segments_url_id ON segments(url_id); +CREATE INDEX segment_usage_time_slot_segment_id ON segment_usage(time_slot, segment_id); +CREATE INDEX segments_usage_seg_id ON segment_usage(segment_id); +CREATE INDEX clusters_for_visit ON clusters_and_visits(visit_id); +CREATE INDEX cluster_keywords_cluster_id_index ON cluster_keywords(cluster_id); +CREATE INDEX visited_links_index ON visited_links (link_url_id, top_level_url, frame_url); +CREATE INDEX urls_url_index ON urls (url); +COMMIT;
diff --git a/components/test/data/history/unit_tests_bundle_data.filelist b/components/test/data/history/unit_tests_bundle_data.filelist index 158b6224..9e78d2834f 100644 --- a/components/test/data/history/unit_tests_bundle_data.filelist +++ b/components/test/data/history/unit_tests_bundle_data.filelist
@@ -56,6 +56,7 @@ //components/test/data/history/history.66.sql //components/test/data/history/history.67.sql //components/test/data/history/history.68.sql +//components/test/data/history/history.69.sql //components/test/data/history/thumbnail_wild/Favicons.corrupt_meta.disable //components/test/data/history/thumbnail_wild/Favicons.v2.init.sql //components/test/data/history/thumbnail_wild/Favicons.v3.init.sql
diff --git a/components/test/data/omnibox/in_memory_url_index_test.sql b/components/test/data/omnibox/in_memory_url_index_test.sql index cfbd3fd..86131316 100644 --- a/components/test/data/omnibox/in_memory_url_index_test.sql +++ b/components/test/data/omnibox/in_memory_url_index_test.sql
@@ -48,7 +48,11 @@ -- originator_cache_guid TEXT, -- originator_visit_id INTEGER, -- originator_from_visit INTEGER, --- originator_opener_visit INTEGER) +-- originator_opener_visit INTEGER, +-- is_known_to_sync INTEGER, +-- consider_for_ntp_most_visited INTEGER, +-- visited_link_id INTEGER, +-- app_id TEXT) INSERT INTO "urls" VALUES(1,'http://www.reuters.com/article/idUSN0839880620100708','UPDATE 1-US 30-yr mortgage rate drops to new record low | Reuters',3,1,2,0); -- Qualifies INSERT INTO "urls" VALUES(2,'http://www.golfweek.com/news/2010/jul/08/goydos-opens-john-deere-classic-59/','Goydos opens John Deere Classic with 59',3,1,4,0); -- Qualifies INSERT INTO "urls" VALUES(3,'http://www.businessandmedia.org/articles/2010/20100708120415.aspx','LeBronomics: Could High Taxes Influence James'' Team Decision?',4,1,2,0); -- Qualifies @@ -89,25 +93,25 @@ -- This file creates some visits, enough to test (in InMemoryURLIndexTest) -- the visits functionality, certainly not as many visits as are implied -- by the visit counts associated with the URLs above. -INSERT INTO "visits" VALUES(1, 1, 2, 4, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0); -INSERT INTO "visits" VALUES(2, 1, 5, 0, '', 1, 0, 1, TRUE, 0, '', 0, 0, 0, FALSE, FALSE, 0); -INSERT INTO "visits" VALUES(3, 1, 12, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0); -INSERT INTO "visits" VALUES(4, 32, 1, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0); -INSERT INTO "visits" VALUES(5, 32, 2, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0); -INSERT INTO "visits" VALUES(6, 32, 3, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0); -INSERT INTO "visits" VALUES(7, 32, 4, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0); -INSERT INTO "visits" VALUES(8, 32, 5, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0); -INSERT INTO "visits" VALUES(9, 32, 6, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0); -INSERT INTO "visits" VALUES(10, 32, 7, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0); -INSERT INTO "visits" VALUES(11, 32, 8, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0); -INSERT INTO "visits" VALUES(12, 32, 9, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0); -INSERT INTO "visits" VALUES(14, 32, 11, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0); -INSERT INTO "visits" VALUES(13, 32, 10, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0); -INSERT INTO "visits" VALUES(15, 32, 12, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0); -INSERT INTO "visits" VALUES(16, 32, 13, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0); -INSERT INTO "visits" VALUES(17, 32, 14, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0); -INSERT INTO "visits" VALUES(18, 32, 15, 0, '', 1, 0, 1, TRUE, 0, '', 0, 0, 0, FALSE, FALSE, 0); -INSERT INTO "visits" VALUES(19, 35, 0, 0, '', 1, 0, 1, TRUE, 0, '', 0, 0, 0, FALSE, FALSE, 0); -INSERT INTO "visits" VALUES(20, 35, 7, 0, '', 1, 0, 1, TRUE, 0, '', 0, 0, 0, FALSE, FALSE, 0); -INSERT INTO "visits" VALUES(21, 36, 1, 0, '', 1, 0, 1, TRUE, 0, '', 0, 0, 0, FALSE, FALSE, 0); -INSERT INTO "visits" VALUES(22, 36, 2, 0, '', 1, 0, 1, TRUE, 0, '', 0, 0, 0, FALSE, FALSE, 0); +INSERT INTO "visits" VALUES(1, 1, 2, 4, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0, ''); +INSERT INTO "visits" VALUES(2, 1, 5, 0, '', 1, 0, 1, TRUE, 0, '', 0, 0, 0, FALSE, FALSE, 0, ''); +INSERT INTO "visits" VALUES(3, 1, 12, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0, ''); +INSERT INTO "visits" VALUES(4, 32, 1, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0, ''); +INSERT INTO "visits" VALUES(5, 32, 2, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0, ''); +INSERT INTO "visits" VALUES(6, 32, 3, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0, ''); +INSERT INTO "visits" VALUES(7, 32, 4, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0, ''); +INSERT INTO "visits" VALUES(8, 32, 5, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0, ''); +INSERT INTO "visits" VALUES(9, 32, 6, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0, ''); +INSERT INTO "visits" VALUES(10, 32, 7, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0, ''); +INSERT INTO "visits" VALUES(11, 32, 8, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0, ''); +INSERT INTO "visits" VALUES(12, 32, 9, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0, ''); +INSERT INTO "visits" VALUES(14, 32, 11, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0, ''); +INSERT INTO "visits" VALUES(13, 32, 10, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0, ''); +INSERT INTO "visits" VALUES(15, 32, 12, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0, ''); +INSERT INTO "visits" VALUES(16, 32, 13, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0, ''); +INSERT INTO "visits" VALUES(17, 32, 14, 0, '', 0, 0, 1, FALSE, 0, '', 0, 0, 0, FALSE, FALSE, 0, ''); +INSERT INTO "visits" VALUES(18, 32, 15, 0, '', 1, 0, 1, TRUE, 0, '', 0, 0, 0, FALSE, FALSE, 0, ''); +INSERT INTO "visits" VALUES(19, 35, 0, 0, '', 1, 0, 1, TRUE, 0, '', 0, 0, 0, FALSE, FALSE, 0, ''); +INSERT INTO "visits" VALUES(20, 35, 7, 0, '', 1, 0, 1, TRUE, 0, '', 0, 0, 0, FALSE, FALSE, 0, ''); +INSERT INTO "visits" VALUES(21, 36, 1, 0, '', 1, 0, 1, TRUE, 0, '', 0, 0, 0, FALSE, FALSE, 0, ''); +INSERT INTO "visits" VALUES(22, 36, 2, 0, '', 1, 0, 1, TRUE, 0, '', 0, 0, 0, FALSE, FALSE, 0, '');
diff --git a/components/vector_icons/BUILD.gn b/components/vector_icons/BUILD.gn index dc7e04d7..73f19452 100644 --- a/components/vector_icons/BUILD.gn +++ b/components/vector_icons/BUILD.gn
@@ -188,6 +188,7 @@ "reload.icon", "reload_chrome_refresh.icon", "replay.icon", + "save_cloud.icon", "screen_share.icon", "search.icon", "search_chrome_refresh.icon",
diff --git a/components/vector_icons/not_uploaded.icon b/components/vector_icons/not_uploaded.icon index 3e436fb..aabdefe 100644 --- a/components/vector_icons/not_uploaded.icon +++ b/components/vector_icons/not_uploaded.icon
@@ -3,7 +3,6 @@ // found in the LICENSE file. CANVAS_DIMENSIONS, 24, -PATH_COLOR_ARGB, 0xFF, 0x44, 0x47, 0x46, MOVE_TO, 16.5f, 18.83f, LINE_TO, 14.29f, 16.67f, H_LINE_TO, 5.42f,
diff --git a/components/vector_icons/save_cloud.icon b/components/vector_icons/save_cloud.icon new file mode 100644 index 0000000..4b0a93a2 --- /dev/null +++ b/components/vector_icons/save_cloud.icon
@@ -0,0 +1,50 @@ +// Copyright 2024 The Chromium Authors +// 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, 5.02f, 16.17f, +CUBIC_TO, 3.85f, 16.17f, 2.87f, 15.76f, 2.06f, 14.96f, +CUBIC_TO, 1.26f, 14.14f, 0.85f, 13.15f, 0.85f, 12, +CUBIC_TO, 0.85f, 10.9f, 1.21f, 9.96f, 1.92f, 9.17f, +CUBIC_TO, 2.64f, 8.36f, 3.54f, 7.92f, 4.63f, 7.85f, +CUBIC_TO, 4.97f, 6.66f, 5.64f, 5.69f, 6.63f, 4.96f, +CUBIC_TO, 7.63f, 4.21f, 8.75f, 3.83f, 10, 3.83f, +CUBIC_TO, 11.5f, 3.83f, 12.81f, 4.31f, 13.92f, 5.27f, +CUBIC_TO, 15.03f, 6.22f, 15.6f, 7.41f, 15.65f, 8.85f, +CUBIC_TO, 16.63f, 8.9f, 17.46f, 9.27f, 18.13f, 9.98f, +CUBIC_TO, 18.81f, 10.67f, 19.15f, 11.51f, 19.15f, 12.5f, +CUBIC_TO, 19.15f, 13.51f, 18.78f, 14.38f, 18.06f, 15.1f, +CUBIC_TO, 17.35f, 15.81f, 16.49f, 16.17f, 15.48f, 16.17f, +H_LINE_TO, 10.94f, +CUBIC_TO, 10.47f, 16.17f, 10.06f, 16, 9.71f, 15.67f, +CUBIC_TO, 9.38f, 15.32f, 9.21f, 14.91f, 9.21f, 14.44f, +V_LINE_TO, 11.13f, +LINE_TO, 7.98f, 12.35f, +LINE_TO, 6.88f, 11.23f, +LINE_TO, 10, 8.1f, +LINE_TO, 13.13f, 11.23f, +LINE_TO, 12.02f, 12.35f, +LINE_TO, 10.79f, 11.13f, +V_LINE_TO, 14.44f, +H_LINE_TO, 15.48f, +CUBIC_TO, 16.02f, 14.44f, 16.48f, 14.25f, 16.85f, 13.88f, +CUBIC_TO, 17.23f, 13.5f, 17.42f, 13.04f, 17.42f, 12.5f, +CUBIC_TO, 17.42f, 11.96f, 17.23f, 11.5f, 16.85f, 11.13f, +CUBIC_TO, 16.48f, 10.75f, 16.02f, 10.56f, 15.48f, 10.56f, +H_LINE_TO, 13.92f, +V_LINE_TO, 8.98f, +CUBIC_TO, 13.92f, 7.99f, 13.53f, 7.18f, 12.75f, 6.54f, +CUBIC_TO, 11.97f, 5.89f, 11.05f, 5.56f, 9.98f, 5.56f, +CUBIC_TO, 8.92f, 5.56f, 8.03f, 5.96f, 7.29f, 6.75f, +CUBIC_TO, 6.57f, 7.53f, 6.13f, 8.47f, 5.98f, 9.56f, +H_LINE_TO, 5.02f, +CUBIC_TO, 4.34f, 9.56f, 3.76f, 9.81f, 3.29f, 10.29f, +CUBIC_TO, 2.82f, 10.76f, 2.58f, 11.33f, 2.58f, 12, +CUBIC_TO, 2.58f, 12.68f, 2.82f, 13.26f, 3.29f, 13.73f, +CUBIC_TO, 3.76f, 14.2f, 4.34f, 14.44f, 5.02f, 14.44f, +H_LINE_TO, 7.71f, +V_LINE_TO, 16.17f, +H_LINE_TO, 5.02f, +CLOSE, +NEW_PATH \ No newline at end of file
diff --git a/content/browser/devtools/protocol/fedcm_handler.cc b/content/browser/devtools/protocol/fedcm_handler.cc index 40e616c8..e1a016f0 100644 --- a/content/browser/devtools/protocol/fedcm_handler.cc +++ b/content/browser/devtools/protocol/fedcm_handler.cc
@@ -13,6 +13,7 @@ #include "content/public/browser/federated_identity_api_permission_context_delegate.h" #include "content/public/browser/identity_request_dialog_controller.h" +namespace content { namespace { namespace FedCm = content::protocol::FedCm; @@ -32,9 +33,24 @@ return FedCm::DialogTypeEnum::Error; } } + +std::optional<std::pair<IdentityProviderData, IdentityRequestAccount>> +GetAccountAt(const std::vector<IdentityProviderData>& idp_data, int index) { + int current = 0; + for (const auto& data : idp_data) { + for (const IdentityRequestAccount& account : data.accounts) { + if (current == index) { + return std::make_pair(data, account); + } + ++current; + } + } + return std::nullopt; +} + } // namespace -namespace content::protocol { +namespace protocol { FedCmHandler::FedCmHandler() : DevToolsDomainHandler(FedCm::Metainfo::domainName) {} @@ -179,18 +195,55 @@ return DispatchResponse::ServerError( "selectAccount called while no FedCm dialog is shown"); } - int current = 0; - for (const auto& data : *idp_data) { - for (const IdentityRequestAccount& account : data.accounts) { - if (current == in_accountIndex) { - auth_request->AcceptAccountsDialogForDevtools( - data.idp_metadata.config_url, account); - return DispatchResponse::Success(); - } - ++current; - } + auto account = GetAccountAt(*idp_data, in_accountIndex); + if (!account) { + return DispatchResponse::InvalidParams("Invalid account index"); } - return DispatchResponse::InvalidParams("Invalid account index"); + + auth_request->AcceptAccountsDialogForDevtools( + account->first.idp_metadata.config_url, account->second); + return DispatchResponse::Success(); +} + +DispatchResponse FedCmHandler::OpenUrl( + const String& in_dialogId, + int in_accountIndex, + const FedCm::AccountUrlType& in_accountUrlType) { + if (in_dialogId != dialog_id_) { + return DispatchResponse::InvalidParams( + "Dialog ID does not match current dialog"); + } + + auto* auth_request = GetFederatedAuthRequest(); + const auto* idp_data = GetIdentityProviderData(auth_request); + if (!idp_data) { + return DispatchResponse::ServerError( + "openUrl called while no FedCm dialog is shown"); + } + + auto account = GetAccountAt(*idp_data, in_accountIndex); + if (!account) { + return DispatchResponse::InvalidParams("Invalid account index"); + } + + IdentityRequestDialogController::LinkType type; + GURL url; + if (in_accountUrlType == FedCm::AccountUrlTypeEnum::TermsOfService) { + type = IdentityRequestDialogController::LinkType::TERMS_OF_SERVICE; + url = account->first.client_metadata.terms_of_service_url; + } else if (in_accountUrlType == FedCm::AccountUrlTypeEnum::PrivacyPolicy) { + type = IdentityRequestDialogController::LinkType::PRIVACY_POLICY; + url = account->first.client_metadata.privacy_policy_url; + } else { + return DispatchResponse::InvalidParams("Invalid account URL type"); + } + if (!url.is_valid() || account->second.login_state != + IdentityRequestAccount::LoginState::kSignUp) { + return DispatchResponse::InvalidParams( + "Account does not have requested URL"); + } + auth_request->GetDialogController()->ShowUrl(type, url); + return DispatchResponse::Success(); } DispatchResponse FedCmHandler::ClickDialogButton( @@ -326,4 +379,5 @@ ->GetFederatedIdentityApiPermissionContext(); } -} // namespace content::protocol +} // namespace protocol +} // namespace content
diff --git a/content/browser/devtools/protocol/fedcm_handler.h b/content/browser/devtools/protocol/fedcm_handler.h index cb3bfe68..bc72736 100644 --- a/content/browser/devtools/protocol/fedcm_handler.h +++ b/content/browser/devtools/protocol/fedcm_handler.h
@@ -56,6 +56,10 @@ DispatchResponse Disable() override; DispatchResponse SelectAccount(const String& in_dialogId, int in_accountIndex) override; + DispatchResponse OpenUrl( + const String& in_dialogId, + int in_accountIndex, + const FedCm::AccountUrlType& in_accountUrlType) override; DispatchResponse ClickDialogButton( const String& in_dialogId, const FedCm::DialogButton& in_dialogButton) override;
diff --git a/content/browser/interest_group/interest_group_browsertest.cc b/content/browser/interest_group/interest_group_browsertest.cc index 4ccdc30..9404c74 100644 --- a/content/browser/interest_group/interest_group_browsertest.cc +++ b/content/browser/interest_group/interest_group_browsertest.cc
@@ -20432,6 +20432,44 @@ EXPECT_EQ(nullptr, EvalJs(shell(), kTopLevelScript)); } +IN_PROC_BROWSER_TEST_F(InterestGroupBrowserTest, NoFeatureDetection) { + // Tests behavior with all feature detection off; this is currently default, + // but should go away once anything enabling it goes to 100% + + GURL test_url = + embedded_https_test_server().GetURL("a.test", "/simple_page.html"); + + ASSERT_TRUE(NavigateToURL(shell(), test_url)); + EXPECT_EQ(false, EvalJs(shell(), "'protectedAudience' in navigator")); +} + +class InterestGroupAdComponentLimitBrowserTest + : public InterestGroupBrowserTest { + public: + InterestGroupAdComponentLimitBrowserTest() { + const std::map<std::string, std::string> params = { + {"FledgeAdComponentLimit", "45"}}; + feature_list_.InitAndEnableFeatureWithParameters( + blink::features::kFledgeCustomMaxAuctionAdComponents, params); + } + + ~InterestGroupAdComponentLimitBrowserTest() override = default; + + protected: + base::test::ScopedFeatureList feature_list_; +}; + +IN_PROC_BROWSER_TEST_F(InterestGroupAdComponentLimitBrowserTest, + FeatureDetection) { + GURL test_url = + embedded_https_test_server().GetURL("a.test", "/simple_page.html"); + + ASSERT_TRUE(NavigateToURL(shell(), test_url)); + EXPECT_EQ(45, EvalJs(shell(), + "navigator.protectedAudience.queryFeatureSupport('" + "adComponentsLimit')")); +} + } // namespace } // namespace content
diff --git a/content/browser/interest_group/interest_group_features.cc b/content/browser/interest_group/interest_group_features.cc index dc147a5..093391b 100644 --- a/content/browser/interest_group/interest_group_features.cc +++ b/content/browser/interest_group/interest_group_features.cc
@@ -34,7 +34,7 @@ BASE_FEATURE(kFledgeFacilitatedTestingSignalsHeaders, "FledgeFacilitatedTestingSignalsHeaders", - base::FEATURE_DISABLED_BY_DEFAULT); + base::FEATURE_ENABLED_BY_DEFAULT); // Enable prefetching B&A keys on the first joinAdInterestGroup call. BASE_FEATURE(kFledgePrefetchBandAKeys,
diff --git a/content/browser/media/captured_surface_controller.cc b/content/browser/media/captured_surface_controller.cc index bb7cd3565..9d700bc 100644 --- a/content/browser/media/captured_surface_controller.cc +++ b/content/browser/media/captured_surface_controller.cc
@@ -69,7 +69,7 @@ if (WebContentsImpl::FromRenderFrameHostID(capturer_rfh_id) == captured_wc.get()) { // TODO(crbug.com/1466247): Use a dedicated error for self-capture. - return CapturedSurfaceControlResult::kUnknownError; + return CapturedSurfaceControlResult::kDisallowedForSelfCaptureError; } RenderFrameHostImpl* const rfhi = @@ -133,7 +133,7 @@ if (WebContentsImpl::FromRenderFrameHostID(capturer_rfh_id) == captured_wc.get()) { // TODO(crbug.com/1466247): Use a dedicated error for self-capture. - return CapturedSurfaceControlResult::kUnknownError; + return CapturedSurfaceControlResult::kDisallowedForSelfCaptureError; } content::HostZoomMap::SetZoomLevel( @@ -159,8 +159,9 @@ if (WebContentsImpl::FromRenderFrameHostID(capturer_rfh_id) == captured_wc.get()) { // TODO(crbug.com/1466247): Use a dedicated error for self-capture. - return std::make_pair(std::nullopt, - CapturedSurfaceControlResult::kUnknownError); + return std::make_pair( + std::nullopt, + CapturedSurfaceControlResult::kDisallowedForSelfCaptureError); } double zoom_level = blink::PageZoomLevelToZoomFactor(
diff --git a/content/browser/media/captured_surface_controller_unittest.cc b/content/browser/media/captured_surface_controller_unittest.cc index 5051995..ba298dc 100644 --- a/content/browser/media/captured_surface_controller_unittest.cc +++ b/content/browser/media/captured_surface_controller_unittest.cc
@@ -721,7 +721,8 @@ permission_manager_->SetPermissionResult(CSCPermissionResult::kGranted); base::RunLoop run_loop; - RunTestedActionAndExpect(&run_loop, CSCResult::kUnknownError); + RunTestedActionAndExpect(&run_loop, + CSCResult::kDisallowedForSelfCaptureError); run_loop.Run(); } @@ -755,7 +756,8 @@ AwaitWebContentsResolution(); base::RunLoop run_loop; - RunTestedActionAndExpect(&run_loop, CSCResult::kUnknownError); + RunTestedActionAndExpect(&run_loop, + CSCResult::kDisallowedForSelfCaptureError); run_loop.Run(); }
diff --git a/content/browser/permissions/permission_service_impl.cc b/content/browser/permissions/permission_service_impl.cc index 8874400..a39953c 100644 --- a/content/browser/permissions/permission_service_impl.cc +++ b/content/browser/permissions/permission_service_impl.cc
@@ -10,6 +10,7 @@ #include <set> #include <utility> +#include "base/command_line.h" #include "base/functional/bind.h" #include "base/memory/ptr_util.h" #include "base/ranges/algorithm.h" @@ -23,6 +24,7 @@ #include "content/public/browser/render_frame_host.h" #include "content/public/browser/web_contents.h" #include "content/public/common/content_features.h" +#include "content/public/common/content_switches.h" #include "third_party/blink/public/common/features.h" #include "third_party/blink/public/common/permissions/permission_utils.h" #include "third_party/blink/public/mojom/permissions/permission.mojom-shared.h" @@ -133,7 +135,9 @@ void PermissionServiceImpl::RegisterPageEmbeddedPermissionControl( std::vector<PermissionDescriptorPtr> permissions, mojo::PendingRemote<EmbeddedPermissionControlClient> observer) { - if (!base::FeatureList::IsEnabled(features::kPermissionElement)) { + if (!base::FeatureList::IsEnabled(features::kPermissionElement) && + !base::CommandLine::ForCurrentProcess()->HasSwitch( + ::switches::kEnableExperimentalWebPlatformFeatures)) { bad_message::ReceivedBadMessage( context_->render_frame_host()->GetProcess(), bad_message::PSI_REGISTER_PERMISSION_ELEMENT_WITHOUT_FEATURE); @@ -187,7 +191,9 @@ void PermissionServiceImpl::RequestPageEmbeddedPermission( EmbeddedPermissionRequestDescriptorPtr descriptor, RequestPageEmbeddedPermissionCallback callback) { - if (!base::FeatureList::IsEnabled(features::kPermissionElement)) { + if (!base::FeatureList::IsEnabled(features::kPermissionElement) && + !base::CommandLine::ForCurrentProcess()->HasSwitch( + switches::kEnableExperimentalWebPlatformFeatures)) { bad_message::ReceivedBadMessage( context_->render_frame_host()->GetProcess(), bad_message::PSI_REQUEST_EMBEDDED_PERMISSION_WITHOUT_FEATURE);
diff --git a/content/browser/renderer_host/render_widget_host_input_event_router.cc b/content/browser/renderer_host/render_widget_host_input_event_router.cc index eb45961..6fa10c7 100644 --- a/content/browser/renderer_host/render_widget_host_input_event_router.cc +++ b/content/browser/renderer_host/render_widget_host_input_event_router.cc
@@ -937,6 +937,8 @@ const TouchEventWithLatencyInfo& event, blink::mojom::InputEventResultState ack_result, RenderWidgetHostViewBase* view) { + TRACE_EVENT("input", + "RenderWidgetHostInputEventRouter::ProcessAckedTouchEvent"); touch_event_ack_queue_->MarkAcked(event, ack_result, view); }
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc index dcf5c48..3a5e168 100644 --- a/content/browser/renderer_host/render_widget_host_view_android.cc +++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -2162,6 +2162,7 @@ void RenderWidgetHostViewAndroid::ProcessAckedTouchEvent( const TouchEventWithLatencyInfo& touch, blink::mojom::InputEventResultState ack_result) { + TRACE_EVENT0("input", "RenderWidgetHostViewAndroid::ProcessAckedTouchEvent"); const bool event_consumed = ack_result == blink::mojom::InputEventResultState::kConsumed; // |is_source_touch_event_set_non_blocking| defines a blocking behaviour of
diff --git a/content/browser/webid/fake_identity_request_dialog_controller.cc b/content/browser/webid/fake_identity_request_dialog_controller.cc index 2b3c883fa..805b06f 100644 --- a/content/browser/webid/fake_identity_request_dialog_controller.cc +++ b/content/browser/webid/fake_identity_request_dialog_controller.cc
@@ -101,6 +101,18 @@ return title_; } +void FakeIdentityRequestDialogController::ShowUrl(LinkType link_type, + const GURL& url) { + if (!web_contents_) { + return; + } + + content::OpenURLParams params( + url, content::Referrer(), WindowOpenDisposition::NEW_FOREGROUND_TAB, + ui::PAGE_TRANSITION_AUTO_TOPLEVEL, /*is_renderer_initiated=*/false); + web_contents_->GetDelegate()->OpenURLFromTab(web_contents_, params); +} + content::WebContents* FakeIdentityRequestDialogController::ShowModalDialog( const GURL& url, DismissCallback dismiss_callback) {
diff --git a/content/browser/webid/fake_identity_request_dialog_controller.h b/content/browser/webid/fake_identity_request_dialog_controller.h index 7a357e6..83ad8940 100644 --- a/content/browser/webid/fake_identity_request_dialog_controller.h +++ b/content/browser/webid/fake_identity_request_dialog_controller.h
@@ -60,6 +60,8 @@ std::string GetTitle() const override; + void ShowUrl(LinkType link_type, const GURL& url) override; + content::WebContents* ShowModalDialog( const GURL& url, DismissCallback dismiss_callback) override;
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc index a49c678..5a5b3c0 100644 --- a/content/child/runtime_features.cc +++ b/content/child/runtime_features.cc
@@ -258,6 +258,10 @@ {wf::EnableFencedFrames, raw_ref(features::kPrivacySandboxAdsAPIsM1Override), kSetOnlyIfOverridden}, + // FledgeFeatureDetection should be on if any of the features it aims + // to help detect is on. + {wf::EnableFledgeFeatureDetection, + raw_ref(blink::features::kFledgeCustomMaxAuctionAdComponents)}, {wf::EnableForcedColors, raw_ref(features::kForcedColors)}, {wf::EnableFractionalScrollOffsets, raw_ref(features::kFractionalScrollOffsets)},
diff --git a/content/common/gpu_pre_sandbox_hook_linux.cc b/content/common/gpu_pre_sandbox_hook_linux.cc index 4468ad1..28de3c7 100644 --- a/content/common/gpu_pre_sandbox_hook_linux.cc +++ b/content/common/gpu_pre_sandbox_hook_linux.cc
@@ -425,7 +425,8 @@ "/etc/vulkan/icd.d"}; static const char* const kReadOnlyICDList[] = { - "intel_icd.x86_64.json", "nvidia_icd.json", "radeon_icd.x86_64.json"}; + "intel_icd.x86_64.json", "nvidia_icd.json", "radeon_icd.x86_64.json", + "mali_icd.json"}; for (std::string prefix : kReadOnlyICDPrefixes) { permissions->push_back(BrokerFilePermission::ReadOnly(prefix));
diff --git a/content/common/input/passthrough_touch_event_queue.cc b/content/common/input/passthrough_touch_event_queue.cc index 2ad3d177..7974d5f 100644 --- a/content/common/input/passthrough_touch_event_queue.cc +++ b/content/common/input/passthrough_touch_event_queue.cc
@@ -11,6 +11,7 @@ #include "base/auto_reset.h" #include "base/metrics/field_trial_params.h" #include "base/trace_event/trace_event.h" +#include "base/trace_event/typed_macros.h" #include "content/common/input/touch_timeout_handler.h" #include "content/common/input/web_touch_event_traits.h" #include "ui/events/base_event_utils.h" @@ -132,8 +133,10 @@ return; auto touch_event_iter = outstanding_touches_.find(unique_touch_event_id); - if (touch_event_iter == outstanding_touches_.end()) + if (touch_event_iter == outstanding_touches_.end()) { + TRACE_EVENT_INSTANT("input", "unique_touch_event_id NotFound"); return; + } TouchEventWithLatencyInfoAndAckState& event = const_cast<TouchEventWithLatencyInfoAndAckState&>(*touch_event_iter); @@ -216,13 +219,17 @@ void PassthroughTouchEventQueue::AckCompletedEvents() { // Don't allow re-entrancy into this method otherwise // the ordering of acks won't be preserved. - if (processing_acks_) + if (processing_acks_) { + TRACE_EVENT_INSTANT("input", "ProcessingAcksAlready"); return; + } base::AutoReset<bool> process_acks(&processing_acks_, true); while (!outstanding_touches_.empty()) { auto iter = outstanding_touches_.begin(); - if (iter->ack_state() == blink::mojom::InputEventResultState::kUnknown) + if (iter->ack_state() == blink::mojom::InputEventResultState::kUnknown) { + TRACE_EVENT_INSTANT("input", "Unknown InputEventResultState"); break; + } TouchEventWithLatencyInfoAndAckState event = *iter; outstanding_touches_.erase(iter); AckTouchEventToClient(event, event.ack_source(), event.ack_state());
diff --git a/content/common/input/touch_timeout_handler.cc b/content/common/input/touch_timeout_handler.cc index f8b7e07..5abb03b 100644 --- a/content/common/input/touch_timeout_handler.cc +++ b/content/common/input/touch_timeout_handler.cc
@@ -10,6 +10,7 @@ #include "base/functional/bind.h" #include "base/metrics/histogram_macros.h" #include "base/trace_event/trace_event.h" +#include "base/trace_event/typed_macros.h" #include "content/common/input/passthrough_touch_event_queue.h" #include "ui/events/base_event_utils.h" #include "ui/gfx/geometry/point_f.h" @@ -97,15 +98,18 @@ return false; case PENDING_ACK_ORIGINAL_EVENT: if (AckedTimeoutEventRequiresCancel(ack_result)) { + TRACE_EVENT_INSTANT("input", "PendingAckOriginalEvent-RequiresCancel"); SetPendingAckState(PENDING_ACK_CANCEL_EVENT); touch_queue_->SendTouchCancelEventForTouchEvent(timeout_event_); } else { + TRACE_EVENT_INSTANT("input", "PendingAckOriginalEvent"); SetPendingAckState(PENDING_ACK_NONE); touch_queue_->UpdateTouchConsumerStates(timeout_event_.event, ack_result); } return true; case PENDING_ACK_CANCEL_EVENT: + TRACE_EVENT_INSTANT("input", "PendingAckCancelEvent"); SetPendingAckState(PENDING_ACK_NONE); return true; }
diff --git a/content/test/data/accessibility/aria/aria-code-expected-android-assist-data.txt b/content/test/data/accessibility/aria/aria-code-expected-android-assist-data.txt index 141efdb..7ee260b 100644 --- a/content/test/data/accessibility/aria/aria-code-expected-android-assist-data.txt +++ b/content/test/data/accessibility/aria/aria-code-expected-android-assist-data.txt
@@ -1,7 +1,8 @@ WebView textSize:16.0 style:0 htmlInfo:[{htmlTag="#document"}, {display=""}] ++View textSize:16.0 style:0 htmlInfo:[{htmlTag="div"}, {display="block"}, {role="code"}] ++++TextView text:"role" textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] -++TextView text:"element (no name)" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] +++View textSize:13.0 style:0 htmlInfo:[{htmlTag="code"}, {display="inline"}] +++++TextView text:"element (no name)" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] ++TextView text:" " textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] ++View text:"include me" textSize:13.0 style:0 htmlInfo:[{htmlTag="code"}, {display="inline"}, {aria-label="include me"}] ++++TextView text:"element (with name)" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-code-expected-android-external.txt b/content/test/data/accessibility/aria/aria-code-expected-android-external.txt index af6bbc3..fdc7a2b 100644 --- a/content/test/data/accessibility/aria/aria-code-expected-android-external.txt +++ b/content/test/data/accessibility/aria/aria-code-expected-android-external.txt
@@ -1,5 +1,5 @@ WebView focusable focused scrollable actions:[CLEAR_FOCUS, AX_FOCUS] bundle:[chromeRole="rootWebArea"] ++View text:"role" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="code"] -++TextView text:"element (no name)" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText"] +++View text:"element (no name)" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="code"] ++TextView text:" " actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText"] ++View text:"include me" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="code"] \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-code-expected-android.txt b/content/test/data/accessibility/aria/aria-code-expected-android.txt index 5539280c..1cda5f8 100644 --- a/content/test/data/accessibility/aria/aria-code-expected-android.txt +++ b/content/test/data/accessibility/aria/aria-code-expected-android.txt
@@ -1,5 +1,5 @@ android.webkit.WebView focusable focused scrollable ++android.view.View name='role' -++android.widget.TextView name='element (no name)' +++android.view.View name='element (no name)' ++android.widget.TextView name=' ' -++android.view.View name='include me' \ No newline at end of file +++android.view.View name='include me'
diff --git a/content/test/data/accessibility/aria/aria-code-expected-auralinux.txt b/content/test/data/accessibility/aria/aria-code-expected-auralinux.txt index 437fd9d..5eebeed2 100644 --- a/content/test/data/accessibility/aria/aria-code-expected-auralinux.txt +++ b/content/test/data/accessibility/aria/aria-code-expected-auralinux.txt
@@ -1,7 +1,8 @@ [document web] ++[static] xml-roles:code ++++[static] name='role' -++[static] name='element (no name)' +++[static] +++++[static] name='element (no name)' ++[static] name=' ' ++[static] name='include me' ++++[static] name='element (with name)'
diff --git a/content/test/data/accessibility/aria/aria-code-expected-blink.txt b/content/test/data/accessibility/aria/aria-code-expected-blink.txt index 749e06dc..b847ae2 100644 --- a/content/test/data/accessibility/aria/aria-code-expected-blink.txt +++ b/content/test/data/accessibility/aria/aria-code-expected-blink.txt
@@ -4,8 +4,9 @@ ++++++code ++++++++staticText name='role' ++++++++++inlineTextBox name='role' -++++++staticText name='element (no name)' -++++++++inlineTextBox name='element (no name)' +++++++code +++++++++staticText name='element (no name)' +++++++++++inlineTextBox name='element (no name)' ++++++staticText name=' ' ++++++++inlineTextBox name=' ' ++++++code name='include me'
diff --git a/content/test/data/accessibility/aria/aria-code-expected-mac.txt b/content/test/data/accessibility/aria/aria-code-expected-mac.txt index 9ddb7993..e386eec 100644 --- a/content/test/data/accessibility/aria/aria-code-expected-mac.txt +++ b/content/test/data/accessibility/aria/aria-code-expected-mac.txt
@@ -1,7 +1,8 @@ AXWebArea AXRoleDescription='HTML content' ++AXGroup AXSubrole=AXCodeStyleGroup AXRoleDescription='code' ++++AXStaticText AXRoleDescription='text' AXValue='role' -++AXStaticText AXRoleDescription='text' AXValue='element (no name)' +++AXGroup AXSubrole=AXCodeStyleGroup AXRoleDescription='code' +++++AXStaticText AXRoleDescription='text' AXValue='element (no name)' ++AXStaticText AXRoleDescription='text' AXValue=' ' ++AXGroup AXSubrole=AXCodeStyleGroup AXDescription='include me' AXRoleDescription='code' -++++AXStaticText AXRoleDescription='text' AXValue='element (with name)' +++++AXStaticText AXRoleDescription='text' AXValue='element (with name)' \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-code-expected-uia-win.txt b/content/test/data/accessibility/aria/aria-code-expected-uia-win.txt index b246de5d..dd681b8 100644 --- a/content/test/data/accessibility/aria/aria-code-expected-uia-win.txt +++ b/content/test/data/accessibility/aria/aria-code-expected-uia-win.txt
@@ -1,7 +1,8 @@ Document LocalizedControlType='document' ++Text LocalizedControlType='code' ++++Text LocalizedControlType='text' Name='role' -++Text LocalizedControlType='text' Name='element (no name)' +++Text LocalizedControlType='code' IsControlElement=false +++++Text LocalizedControlType='text' Name='element (no name)' ++Text LocalizedControlType='text' Name=' ' ++Text LocalizedControlType='code' Name='include me' -++++Text LocalizedControlType='text' Name='element (with name)' +++++Text LocalizedControlType='text' Name='element (with name)' \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-code-expected-win.txt b/content/test/data/accessibility/aria/aria-code-expected-win.txt index 9fcd6b3..fdb3f1e 100644 --- a/content/test/data/accessibility/aria/aria-code-expected-win.txt +++ b/content/test/data/accessibility/aria/aria-code-expected-win.txt
@@ -1,7 +1,8 @@ ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE ++IA2_ROLE_TEXT_FRAME xml-roles:code ++++ROLE_SYSTEM_STATICTEXT name='role' -++ROLE_SYSTEM_STATICTEXT name='element (no name)' +++IA2_ROLE_TEXT_FRAME +++++ROLE_SYSTEM_STATICTEXT name='element (no name)' ++ROLE_SYSTEM_STATICTEXT name=' ' ++IA2_ROLE_TEXT_FRAME name='include me' -++++ROLE_SYSTEM_STATICTEXT name='element (with name)' +++++ROLE_SYSTEM_STATICTEXT name='element (with name)' \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-emphasis-expected-android-assist-data.txt b/content/test/data/accessibility/aria/aria-emphasis-expected-android-assist-data.txt index c815501..be7ed6b 100644 --- a/content/test/data/accessibility/aria/aria-emphasis-expected-android-assist-data.txt +++ b/content/test/data/accessibility/aria/aria-emphasis-expected-android-assist-data.txt
@@ -1,7 +1,8 @@ WebView textSize:16.0 style:0 htmlInfo:[{htmlTag="#document"}, {display=""}] ++View textSize:16.0 style:0 htmlInfo:[{htmlTag="div"}, {display="block"}, {role="emphasis"}] ++++TextView text:"role" textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] -++TextView text:"element (no name)" textSize:16.0 style:2 htmlInfo:[{htmlTag=""}, {display=""}] +++View textSize:16.0 style:2 htmlInfo:[{htmlTag="em"}, {display="inline"}] +++++TextView text:"element (no name)" textSize:16.0 style:2 htmlInfo:[{htmlTag=""}, {display=""}] ++TextView text:" " textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] ++View text:"include me" textSize:16.0 style:2 htmlInfo:[{htmlTag="em"}, {display="inline"}, {aria-label="include me"}] ++++TextView text:"element (with name)" textSize:16.0 style:2 htmlInfo:[{htmlTag=""}, {display=""}] \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-emphasis-expected-android-external.txt b/content/test/data/accessibility/aria/aria-emphasis-expected-android-external.txt index 9333639..1fcf715e 100644 --- a/content/test/data/accessibility/aria/aria-emphasis-expected-android-external.txt +++ b/content/test/data/accessibility/aria/aria-emphasis-expected-android-external.txt
@@ -1,5 +1,5 @@ WebView focusable focused scrollable actions:[CLEAR_FOCUS, AX_FOCUS] bundle:[chromeRole="rootWebArea"] ++View text:"role" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="emphasis"] -++TextView text:"element (no name)" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText"] +++View text:"element (no name)" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="emphasis"] ++TextView text:" " actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText"] ++View text:"include me" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="emphasis"] \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-emphasis-expected-android.txt b/content/test/data/accessibility/aria/aria-emphasis-expected-android.txt index 5539280c..87dd3b8 100644 --- a/content/test/data/accessibility/aria/aria-emphasis-expected-android.txt +++ b/content/test/data/accessibility/aria/aria-emphasis-expected-android.txt
@@ -1,5 +1,5 @@ android.webkit.WebView focusable focused scrollable ++android.view.View name='role' -++android.widget.TextView name='element (no name)' +++android.view.View name='element (no name)' ++android.widget.TextView name=' ' ++android.view.View name='include me' \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-emphasis-expected-auralinux.txt b/content/test/data/accessibility/aria/aria-emphasis-expected-auralinux.txt index dd71d07..bbb81a8f 100644 --- a/content/test/data/accessibility/aria/aria-emphasis-expected-auralinux.txt +++ b/content/test/data/accessibility/aria/aria-emphasis-expected-auralinux.txt
@@ -1,7 +1,8 @@ [document web] ++[static] xml-roles:emphasis ++++[static] name='role' -++[static] name='element (no name)' +++[static] +++++[static] name='element (no name)' ++[static] name=' ' ++[static] name='include me' -++++[static] name='element (with name)' +++++[static] name='element (with name)' \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-emphasis-expected-blink.txt b/content/test/data/accessibility/aria/aria-emphasis-expected-blink.txt index d9f410c..bd9322f 100644 --- a/content/test/data/accessibility/aria/aria-emphasis-expected-blink.txt +++ b/content/test/data/accessibility/aria/aria-emphasis-expected-blink.txt
@@ -4,8 +4,9 @@ ++++++emphasis ++++++++staticText name='role' ++++++++++inlineTextBox name='role' -++++++staticText name='element (no name)' -++++++++inlineTextBox name='element (no name)' +++++++emphasis +++++++++staticText name='element (no name)' +++++++++++inlineTextBox name='element (no name)' ++++++staticText name=' ' ++++++++inlineTextBox name=' ' ++++++emphasis name='include me'
diff --git a/content/test/data/accessibility/aria/aria-emphasis-expected-mac.txt b/content/test/data/accessibility/aria/aria-emphasis-expected-mac.txt index a7e6477..f33d307 100644 --- a/content/test/data/accessibility/aria/aria-emphasis-expected-mac.txt +++ b/content/test/data/accessibility/aria/aria-emphasis-expected-mac.txt
@@ -1,7 +1,8 @@ AXWebArea AXRoleDescription='HTML content' ++AXGroup AXSubrole=AXEmphasisStyleGroup AXRoleDescription='emphasis' ++++AXStaticText AXRoleDescription='text' AXValue='role' -++AXStaticText AXRoleDescription='text' AXValue='element (no name)' +++AXGroup AXSubrole=AXEmphasisStyleGroup AXRoleDescription='emphasis' +++++AXStaticText AXRoleDescription='text' AXValue='element (no name)' ++AXStaticText AXRoleDescription='text' AXValue=' ' ++AXGroup AXSubrole=AXEmphasisStyleGroup AXDescription='include me' AXRoleDescription='emphasis' ++++AXStaticText AXRoleDescription='text' AXValue='element (with name)'
diff --git a/content/test/data/accessibility/aria/aria-emphasis-expected-uia-win.txt b/content/test/data/accessibility/aria/aria-emphasis-expected-uia-win.txt index 9d472d9e..adb1c0e2e 100644 --- a/content/test/data/accessibility/aria/aria-emphasis-expected-uia-win.txt +++ b/content/test/data/accessibility/aria/aria-emphasis-expected-uia-win.txt
@@ -1,7 +1,8 @@ Document LocalizedControlType='document' ++Text LocalizedControlType='emphasis' ++++Text LocalizedControlType='text' Name='role' -++Text LocalizedControlType='text' Name='element (no name)' +++Text LocalizedControlType='emphasis' IsControlElement=false +++++Text LocalizedControlType='text' Name='element (no name)' ++Text LocalizedControlType='text' Name=' ' ++Text LocalizedControlType='emphasis' Name='include me' -++++Text LocalizedControlType='text' Name='element (with name)' +++++Text LocalizedControlType='text' Name='element (with name)' \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-emphasis-expected-win.txt b/content/test/data/accessibility/aria/aria-emphasis-expected-win.txt index df35353..627ad8eb 100644 --- a/content/test/data/accessibility/aria/aria-emphasis-expected-win.txt +++ b/content/test/data/accessibility/aria/aria-emphasis-expected-win.txt
@@ -1,7 +1,8 @@ ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE ++IA2_ROLE_TEXT_FRAME xml-roles:emphasis ++++ROLE_SYSTEM_STATICTEXT name='role' -++ROLE_SYSTEM_STATICTEXT name='element (no name)' +++IA2_ROLE_TEXT_FRAME +++++ROLE_SYSTEM_STATICTEXT name='element (no name)' ++ROLE_SYSTEM_STATICTEXT name=' ' ++IA2_ROLE_TEXT_FRAME name='include me' -++++ROLE_SYSTEM_STATICTEXT name='element (with name)' +++++ROLE_SYSTEM_STATICTEXT name='element (with name)' \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-option-expected-android-assist-data.txt b/content/test/data/accessibility/aria/aria-option-expected-android-assist-data.txt index e1e5c6cd..aaeebe2 100644 --- a/content/test/data/accessibility/aria/aria-option-expected-android-assist-data.txt +++ b/content/test/data/accessibility/aria/aria-option-expected-android-assist-data.txt
@@ -6,10 +6,13 @@ ++++++TextView text:"option 2" textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] ++++View textSize:16.0 style:0 htmlInfo:[{htmlTag="div"}, {display="block"}, {id="opt3"}, {role="option"}] ++++++TextView text:"cat" textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] -++++++TextView text:"erpillar" textSize:16.0 style:1 htmlInfo:[{htmlTag=""}, {display=""}] +++++++View textSize:16.0 style:1 htmlInfo:[{htmlTag="strong"}, {display="inline"}] +++++++++TextView text:"erpillar" textSize:16.0 style:1 htmlInfo:[{htmlTag=""}, {display=""}] ++++View textSize:16.0 style:0 htmlInfo:[{htmlTag="div"}, {display="block"}, {id="opt4"}, {role="option"}] ++++++TextView text:"cat" textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] -++++++TextView text:"fish" textSize:16.0 style:2 htmlInfo:[{htmlTag=""}, {display=""}] +++++++View textSize:16.0 style:2 htmlInfo:[{htmlTag="em"}, {display="inline"}] +++++++++TextView text:"fish" textSize:16.0 style:2 htmlInfo:[{htmlTag=""}, {display=""}] ++++View text:"medusa" textSize:16.0 style:0 htmlInfo:[{htmlTag="div"}, {display="block"}, {aria-label="medusa"}, {id="opt5"}, {role="option"}] -++++++TextView text:"jelly" textSize:16.0 style:2 htmlInfo:[{htmlTag=""}, {display=""}] +++++++View textSize:16.0 style:2 htmlInfo:[{htmlTag="em"}, {display="inline"}] +++++++++TextView text:"jelly" textSize:16.0 style:2 htmlInfo:[{htmlTag=""}, {display=""}] ++++++TextView text:"fish" textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-option-expected-android-external.txt b/content/test/data/accessibility/aria/aria-option-expected-android-external.txt index 8c1d8ec..045bdab9 100644 --- a/content/test/data/accessibility/aria/aria-option-expected-android-external.txt +++ b/content/test/data/accessibility/aria/aria-option-expected-android-external.txt
@@ -3,5 +3,11 @@ ++++View text:"option 1" viewIdResName:"opt1" clickable focusable CollectionItemInfo:[rowIndex=0, colIndex=0] actions:[FOCUS, CLICK, AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="listBoxOption", clickableScore="200"] ++++View text:"label 2" viewIdResName:"opt2" clickable focusable CollectionItemInfo:[rowIndex=1, colIndex=0] actions:[FOCUS, CLICK, AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="listBoxOption", clickableScore="200"] ++++View text:"caterpillar" viewIdResName:"opt3" clickable focusable CollectionItemInfo:[rowIndex=2, colIndex=0] actions:[FOCUS, CLICK, AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="listBoxOption", clickableScore="200"] +++++++TextView text:"cat" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText", clickableScore="100"] +++++++View text:"erpillar" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="strong", clickableScore="100"] ++++View text:"catfish" viewIdResName:"opt4" clickable focusable CollectionItemInfo:[rowIndex=3, colIndex=0] actions:[FOCUS, CLICK, AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="listBoxOption", clickableScore="200"] -++++View text:"medusa" viewIdResName:"opt5" clickable focusable CollectionItemInfo:[rowIndex=4, colIndex=0] actions:[FOCUS, CLICK, AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="listBoxOption", clickableScore="200"] \ No newline at end of file +++++++TextView text:"cat" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText", clickableScore="100"] +++++++View text:"fish" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="emphasis", clickableScore="100"] +++++View text:"medusa" viewIdResName:"opt5" clickable focusable CollectionItemInfo:[rowIndex=4, colIndex=0] actions:[FOCUS, CLICK, AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="listBoxOption", clickableScore="200"] +++++++View text:"jelly" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="emphasis", clickableScore="100"] +++++++TextView text:"fish" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText", clickableScore="100"] \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-option-expected-android.txt b/content/test/data/accessibility/aria/aria-option-expected-android.txt index fd702f19..fdaf1eb 100644 --- a/content/test/data/accessibility/aria/aria-option-expected-android.txt +++ b/content/test/data/accessibility/aria/aria-option-expected-android.txt
@@ -3,5 +3,11 @@ ++++android.view.View clickable collection_item focusable name='option 1' row_span=1 column_span=1 ++++android.view.View clickable collection_item focusable name='label 2' item_index=1 row_index=1 row_span=1 column_span=1 ++++android.view.View clickable collection_item focusable name='caterpillar' item_index=2 row_index=2 row_span=1 column_span=1 +++++++android.widget.TextView name='cat' +++++++android.view.View name='erpillar' ++++android.view.View clickable collection_item focusable name='catfish' item_index=3 row_index=3 row_span=1 column_span=1 -++++android.view.View clickable collection_item focusable name='medusa' item_index=4 row_index=4 row_span=1 column_span=1 \ No newline at end of file +++++++android.widget.TextView name='cat' +++++++android.view.View name='fish' +++++android.view.View clickable collection_item focusable name='medusa' item_index=4 row_index=4 row_span=1 column_span=1 +++++++android.view.View name='jelly' +++++++android.widget.TextView name='fish' \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-option-expected-auralinux.txt b/content/test/data/accessibility/aria/aria-option-expected-auralinux.txt index 2067fd2..6d8e0f2 100644 --- a/content/test/data/accessibility/aria/aria-option-expected-auralinux.txt +++ b/content/test/data/accessibility/aria/aria-option-expected-auralinux.txt
@@ -3,5 +3,14 @@ ++++[list item] name='option 1' selectable xml-roles:option ++++[list item] name='label 2' selectable xml-roles:option ++++[list item] name='caterpillar' selectable xml-roles:option +++++++[static] name='cat' +++++++[static] +++++++++[static] name='erpillar' ++++[list item] name='catfish' selectable xml-roles:option -++++[list item] name='medusa' selectable xml-roles:option \ No newline at end of file +++++++[static] name='cat' +++++++[static] +++++++++[static] name='fish' +++++[list item] name='medusa' selectable xml-roles:option +++++++[static] +++++++++[static] name='jelly' +++++++[static] name='fish' \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-option-expected-blink.txt b/content/test/data/accessibility/aria/aria-option-expected-blink.txt index 21ff38c..55ba2f68 100644 --- a/content/test/data/accessibility/aria/aria-option-expected-blink.txt +++ b/content/test/data/accessibility/aria/aria-option-expected-blink.txt
@@ -11,15 +11,18 @@ ++++++++listBoxOption focusable name='caterpillar' selected=false ++++++++++staticText name='cat' ++++++++++++inlineTextBox name='cat' -++++++++++staticText name='erpillar' -++++++++++++inlineTextBox name='erpillar' +++++++++++strong +++++++++++++staticText name='erpillar' +++++++++++++++inlineTextBox name='erpillar' ++++++++listBoxOption focusable name='catfish' selected=false ++++++++++staticText name='cat' ++++++++++++inlineTextBox name='cat' -++++++++++staticText name='fish' -++++++++++++inlineTextBox name='fish' +++++++++++emphasis +++++++++++++staticText name='fish' +++++++++++++++inlineTextBox name='fish' ++++++++listBoxOption focusable name='medusa' selected=false -++++++++++staticText name='jelly' -++++++++++++inlineTextBox name='jelly' +++++++++++emphasis +++++++++++++staticText name='jelly' +++++++++++++++inlineTextBox name='jelly' ++++++++++staticText name='fish' ++++++++++++inlineTextBox name='fish' \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-option-expected-mac.txt b/content/test/data/accessibility/aria/aria-option-expected-mac.txt index fa1aeae..135c3dd 100644 --- a/content/test/data/accessibility/aria/aria-option-expected-mac.txt +++ b/content/test/data/accessibility/aria/aria-option-expected-mac.txt
@@ -3,5 +3,14 @@ ++++AXStaticText AXRoleDescription='text' AXValue='option 1' ++++AXStaticText AXRoleDescription='text' AXValue='label 2' ++++AXStaticText AXRoleDescription='text' AXValue='caterpillar' +++++++AXStaticText AXRoleDescription='text' AXValue='cat' +++++++AXGroup AXSubrole=AXStrongStyleGroup AXRoleDescription='strong' +++++++++AXStaticText AXRoleDescription='text' AXValue='erpillar' ++++AXStaticText AXRoleDescription='text' AXValue='catfish' -++++AXStaticText AXRoleDescription='text' AXValue='medusa' +++++++AXStaticText AXRoleDescription='text' AXValue='cat' +++++++AXGroup AXSubrole=AXEmphasisStyleGroup AXRoleDescription='emphasis' +++++++++AXStaticText AXRoleDescription='text' AXValue='fish' +++++AXStaticText AXRoleDescription='text' AXValue='jellyfish' +++++++AXGroup AXSubrole=AXEmphasisStyleGroup AXRoleDescription='emphasis' +++++++++AXStaticText AXRoleDescription='text' AXValue='jelly' +++++++AXStaticText AXRoleDescription='text' AXValue='fish' \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-option-expected-win.txt b/content/test/data/accessibility/aria/aria-option-expected-win.txt index 97f2d94..6084029 100644 --- a/content/test/data/accessibility/aria/aria-option-expected-win.txt +++ b/content/test/data/accessibility/aria/aria-option-expected-win.txt
@@ -3,5 +3,14 @@ ++++ROLE_SYSTEM_LISTITEM name='option 1' FOCUSABLE SELECTABLE xml-roles:option ++++ROLE_SYSTEM_LISTITEM name='label 2' FOCUSABLE SELECTABLE xml-roles:option ++++ROLE_SYSTEM_LISTITEM name='caterpillar' FOCUSABLE SELECTABLE xml-roles:option +++++++ROLE_SYSTEM_STATICTEXT name='cat' +++++++IA2_ROLE_TEXT_FRAME +++++++++ROLE_SYSTEM_STATICTEXT name='erpillar' ++++ROLE_SYSTEM_LISTITEM name='catfish' FOCUSABLE SELECTABLE xml-roles:option -++++ROLE_SYSTEM_LISTITEM name='medusa' FOCUSABLE SELECTABLE xml-roles:option \ No newline at end of file +++++++ROLE_SYSTEM_STATICTEXT name='cat' +++++++IA2_ROLE_TEXT_FRAME +++++++++ROLE_SYSTEM_STATICTEXT name='fish' +++++ROLE_SYSTEM_LISTITEM name='medusa' FOCUSABLE SELECTABLE xml-roles:option +++++++IA2_ROLE_TEXT_FRAME +++++++++ROLE_SYSTEM_STATICTEXT name='jelly' +++++++ROLE_SYSTEM_STATICTEXT name='fish' \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-strong-expected-android-assist-data.txt b/content/test/data/accessibility/aria/aria-strong-expected-android-assist-data.txt index 594b7db..211961f 100644 --- a/content/test/data/accessibility/aria/aria-strong-expected-android-assist-data.txt +++ b/content/test/data/accessibility/aria/aria-strong-expected-android-assist-data.txt
@@ -1,7 +1,8 @@ WebView textSize:16.0 style:0 htmlInfo:[{htmlTag="#document"}, {display=""}] ++View textSize:16.0 style:0 htmlInfo:[{htmlTag="div"}, {display="block"}, {role="strong"}] ++++TextView text:"role" textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] -++TextView text:"element (no name)" textSize:16.0 style:1 htmlInfo:[{htmlTag=""}, {display=""}] +++View textSize:16.0 style:1 htmlInfo:[{htmlTag="strong"}, {display="inline"}] +++++TextView text:"element (no name)" textSize:16.0 style:1 htmlInfo:[{htmlTag=""}, {display=""}] ++TextView text:" " textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] ++View text:"include me" textSize:16.0 style:1 htmlInfo:[{htmlTag="strong"}, {display="inline"}, {aria-label="include me"}] ++++TextView text:"element (with name)" textSize:16.0 style:1 htmlInfo:[{htmlTag=""}, {display=""}] \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-strong-expected-android-external.txt b/content/test/data/accessibility/aria/aria-strong-expected-android-external.txt index 33b5fee..6c959d8 100644 --- a/content/test/data/accessibility/aria/aria-strong-expected-android-external.txt +++ b/content/test/data/accessibility/aria/aria-strong-expected-android-external.txt
@@ -1,5 +1,5 @@ WebView focusable focused scrollable actions:[CLEAR_FOCUS, AX_FOCUS] bundle:[chromeRole="rootWebArea"] ++View text:"role" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="strong"] -++TextView text:"element (no name)" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText"] +++View text:"element (no name)" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="strong"] ++TextView text:" " actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText"] ++View text:"include me" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="strong"] \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-strong-expected-android.txt b/content/test/data/accessibility/aria/aria-strong-expected-android.txt index 5539280c..87dd3b8 100644 --- a/content/test/data/accessibility/aria/aria-strong-expected-android.txt +++ b/content/test/data/accessibility/aria/aria-strong-expected-android.txt
@@ -1,5 +1,5 @@ android.webkit.WebView focusable focused scrollable ++android.view.View name='role' -++android.widget.TextView name='element (no name)' +++android.view.View name='element (no name)' ++android.widget.TextView name=' ' ++android.view.View name='include me' \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-strong-expected-auralinux.txt b/content/test/data/accessibility/aria/aria-strong-expected-auralinux.txt index ced0fca..b742f13 100644 --- a/content/test/data/accessibility/aria/aria-strong-expected-auralinux.txt +++ b/content/test/data/accessibility/aria/aria-strong-expected-auralinux.txt
@@ -1,7 +1,8 @@ [document web] ++[static] xml-roles:strong ++++[static] name='role' -++[static] name='element (no name)' +++[static] +++++[static] name='element (no name)' ++[static] name=' ' ++[static] name='include me' -++++[static] name='element (with name)' +++++[static] name='element (with name)' \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-strong-expected-blink.txt b/content/test/data/accessibility/aria/aria-strong-expected-blink.txt index 5a07e03..77090944 100644 --- a/content/test/data/accessibility/aria/aria-strong-expected-blink.txt +++ b/content/test/data/accessibility/aria/aria-strong-expected-blink.txt
@@ -4,8 +4,9 @@ ++++++strong ++++++++staticText name='role' ++++++++++inlineTextBox name='role' -++++++staticText name='element (no name)' -++++++++inlineTextBox name='element (no name)' +++++++strong +++++++++staticText name='element (no name)' +++++++++++inlineTextBox name='element (no name)' ++++++staticText name=' ' ++++++++inlineTextBox name=' ' ++++++strong name='include me'
diff --git a/content/test/data/accessibility/aria/aria-strong-expected-mac.txt b/content/test/data/accessibility/aria/aria-strong-expected-mac.txt index 28e5466..5fd4a7a 100644 --- a/content/test/data/accessibility/aria/aria-strong-expected-mac.txt +++ b/content/test/data/accessibility/aria/aria-strong-expected-mac.txt
@@ -1,7 +1,8 @@ AXWebArea AXRoleDescription='HTML content' ++AXGroup AXSubrole=AXStrongStyleGroup AXRoleDescription='strong' ++++AXStaticText AXRoleDescription='text' AXValue='role' -++AXStaticText AXRoleDescription='text' AXValue='element (no name)' +++AXGroup AXSubrole=AXStrongStyleGroup AXRoleDescription='strong' +++++AXStaticText AXRoleDescription='text' AXValue='element (no name)' ++AXStaticText AXRoleDescription='text' AXValue=' ' ++AXGroup AXSubrole=AXStrongStyleGroup AXDescription='include me' AXRoleDescription='strong' ++++AXStaticText AXRoleDescription='text' AXValue='element (with name)'
diff --git a/content/test/data/accessibility/aria/aria-strong-expected-uia-win.txt b/content/test/data/accessibility/aria/aria-strong-expected-uia-win.txt index 090fa66..c1fbb9d9 100644 --- a/content/test/data/accessibility/aria/aria-strong-expected-uia-win.txt +++ b/content/test/data/accessibility/aria/aria-strong-expected-uia-win.txt
@@ -1,7 +1,8 @@ Document LocalizedControlType='document' ++Text LocalizedControlType='strong' ++++Text LocalizedControlType='text' Name='role' -++Text LocalizedControlType='text' Name='element (no name)' +++Text LocalizedControlType='strong' IsControlElement=false +++++Text LocalizedControlType='text' Name='element (no name)' ++Text LocalizedControlType='text' Name=' ' ++Text LocalizedControlType='strong' Name='include me' -++++Text LocalizedControlType='text' Name='element (with name)' +++++Text LocalizedControlType='text' Name='element (with name)' \ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-strong-expected-win.txt b/content/test/data/accessibility/aria/aria-strong-expected-win.txt index f2e58bb0..fb62cd0 100644 --- a/content/test/data/accessibility/aria/aria-strong-expected-win.txt +++ b/content/test/data/accessibility/aria/aria-strong-expected-win.txt
@@ -1,7 +1,8 @@ ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE ++IA2_ROLE_TEXT_FRAME xml-roles:strong ++++ROLE_SYSTEM_STATICTEXT name='role' -++ROLE_SYSTEM_STATICTEXT name='element (no name)' +++IA2_ROLE_TEXT_FRAME +++++ROLE_SYSTEM_STATICTEXT name='element (no name)' ++ROLE_SYSTEM_STATICTEXT name=' ' ++IA2_ROLE_TEXT_FRAME name='include me' -++++ROLE_SYSTEM_STATICTEXT name='element (with name)' +++++ROLE_SYSTEM_STATICTEXT name='element (with name)' \ No newline at end of file
diff --git a/content/test/data/accessibility/css/before-after-code-expected-android-assist-data.txt b/content/test/data/accessibility/css/before-after-code-expected-android-assist-data.txt index 58dc9bde..d5e7f15 100644 --- a/content/test/data/accessibility/css/before-after-code-expected-android-assist-data.txt +++ b/content/test/data/accessibility/css/before-after-code-expected-android-assist-data.txt
@@ -3,25 +3,29 @@ ++++TextView text:"start" textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] ++View textSize:16.0 style:0 htmlInfo:[{htmlTag="div"}, {display="block"}] ++++TextView text:"text with " textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] -++++TextView text:"[" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] -++++TextView text:":before" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] -++++TextView text:"]" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] +++++View textSize:13.0 style:0 htmlInfo:[{htmlTag="code"}, {display="inline"}] +++++++TextView text:"[" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] +++++++TextView text:":before" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] +++++++TextView text:"]" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] ++++TextView text:" and " textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] -++++TextView text:"[" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] -++++TextView text:":after" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] -++++TextView text:"]" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] +++++View textSize:13.0 style:0 htmlInfo:[{htmlTag="code"}, {display="inline"}] +++++++TextView text:"[" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] +++++++TextView text:":after" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] +++++++TextView text:"]" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] ++++TextView text:" content, then a" textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] ++++TextView text:"bold" textSize:16.0 style:1 htmlInfo:[{htmlTag=""}, {display=""}] ++++TextView text:" element with a " textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] -++++TextView text:"[" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] -++++TextView text:"block" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] -++++TextView text:"]" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] +++++View textSize:13.0 style:0 htmlInfo:[{htmlTag="code"}, {display="inline"}] +++++++TextView text:"[" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] +++++++TextView text:"block" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] +++++++TextView text:"]" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] ++++TextView text:" before content then a " textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] ++++TextView text:"italic" textSize:16.0 style:2 htmlInfo:[{htmlTag=""}, {display=""}] ++++TextView text:"element with a " textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] -++++TextView text:"[" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] -++++TextView text:"block" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] -++++TextView text:"]" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] +++++View textSize:13.0 style:0 htmlInfo:[{htmlTag="code"}, {display="inline"}] +++++++TextView text:"[" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] +++++++TextView text:"block" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] +++++++TextView text:"]" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] ++++TextView text:" after content" textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] ++View textSize:16.0 style:0 htmlInfo:[{htmlTag="div"}, {display="block"}] ++++TextView text:"end" textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] \ No newline at end of file
diff --git a/content/test/data/accessibility/css/before-after-code-expected-android-external.txt b/content/test/data/accessibility/css/before-after-code-expected-android-external.txt index f1ca5d2f..70f5903 100644 --- a/content/test/data/accessibility/css/before-after-code-expected-android-external.txt +++ b/content/test/data/accessibility/css/before-after-code-expected-android-external.txt
@@ -1,4 +1,17 @@ WebView focusable focused scrollable actions:[CLEAR_FOCUS, AX_FOCUS] bundle:[chromeRole="rootWebArea"] ++TextView text:"start" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="genericContainer"] -++TextView text:"text with [:before] and [:after] content, then abold element with a [block] before content then a italicelement with a [block] after content" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="genericContainer"] +++View actions:[AX_FOCUS] bundle:[chromeRole="genericContainer"] +++++TextView text:"text with " actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText"] +++++View text:"[:before]" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="code"] +++++TextView text:" and " actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText"] +++++View text:"[:after]" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="code"] +++++TextView text:" content, then a" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText"] +++++TextView text:"bold" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText"] +++++TextView text:" element with a " actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText"] +++++View text:"[block]" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="code"] +++++TextView text:" before content then a " actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText"] +++++TextView text:"italic" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText"] +++++TextView text:"element with a " actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText"] +++++View text:"[block]" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="code"] +++++TextView text:" after content" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText"] ++TextView text:"end" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="genericContainer"] \ No newline at end of file
diff --git a/content/test/data/accessibility/css/display-to-block-expected-blink.txt b/content/test/data/accessibility/css/display-to-block-expected-blink.txt index 3fa7af7..6ccf4449 100644 --- a/content/test/data/accessibility/css/display-to-block-expected-blink.txt +++ b/content/test/data/accessibility/css/display-to-block-expected-blink.txt
@@ -8,5 +8,6 @@ ++++++++genericContainer display='block' ++++++++++checkBox display='inline-block' name='checkbox' checkedState=false ++++++++genericContainer display='block' -++++++++++staticText name='done' -++++++++++++inlineTextBox name='done' \ No newline at end of file +++++++++++code display='inline' +++++++++++++staticText name='done' +++++++++++++++inlineTextBox name='done' \ No newline at end of file
diff --git a/content/test/data/accessibility/css/display-to-inline-expected-blink.txt b/content/test/data/accessibility/css/display-to-inline-expected-blink.txt index 31895ff..71be947 100644 --- a/content/test/data/accessibility/css/display-to-inline-expected-blink.txt +++ b/content/test/data/accessibility/css/display-to-inline-expected-blink.txt
@@ -7,5 +7,6 @@ ++++++++genericContainer display='inline' ++++++++++checkBox display='inline-block' name='checkbox' checkedState=false ++++++++genericContainer display='block' -++++++++++staticText name='done' -++++++++++++inlineTextBox name='done' \ No newline at end of file +++++++++++code display='inline' +++++++++++++staticText name='done' +++++++++++++++inlineTextBox name='done' \ No newline at end of file
diff --git a/content/test/data/accessibility/css/display-to-none-expected-blink.txt b/content/test/data/accessibility/css/display-to-none-expected-blink.txt index a7e85e5..37662bd8 100644 --- a/content/test/data/accessibility/css/display-to-none-expected-blink.txt +++ b/content/test/data/accessibility/css/display-to-none-expected-blink.txt
@@ -8,5 +8,6 @@ ++++++++genericContainer ignored invisible ++++++++++checkBox ignored invisible ++++++++genericContainer display='block' -++++++++++staticText name='done' -++++++++++++inlineTextBox name='done' \ No newline at end of file +++++++++++code display='inline' +++++++++++++staticText name='done' +++++++++++++++inlineTextBox name='done' \ No newline at end of file
diff --git a/content/test/data/accessibility/css/visibility-to-collapsed-expected-blink.txt b/content/test/data/accessibility/css/visibility-to-collapsed-expected-blink.txt index 2e914487..bf2c239 100644 --- a/content/test/data/accessibility/css/visibility-to-collapsed-expected-blink.txt +++ b/content/test/data/accessibility/css/visibility-to-collapsed-expected-blink.txt
@@ -7,8 +7,9 @@ ++++++++genericContainer ++++++++++checkBox name='checkbox' checkedState=false ++++++++genericContainer -++++++++++staticText name='done' -++++++++++++inlineTextBox name='done' +++++++++++code +++++++++++++staticText name='done' +++++++++++++++inlineTextBox name='done' ++++++group ++++++++mark ++++++++++staticText name='text'
diff --git a/content/test/data/accessibility/css/visibility-to-hidden-expected-blink.txt b/content/test/data/accessibility/css/visibility-to-hidden-expected-blink.txt index 6fbed7d..c25875d 100644 --- a/content/test/data/accessibility/css/visibility-to-hidden-expected-blink.txt +++ b/content/test/data/accessibility/css/visibility-to-hidden-expected-blink.txt
@@ -7,8 +7,9 @@ ++++++++genericContainer ignored invisible ++++++++++checkBox ignored invisible ++++++++genericContainer -++++++++++staticText name='done' -++++++++++++inlineTextBox name='done' +++++++++++code +++++++++++++staticText name='done' +++++++++++++++inlineTextBox name='done' ++++++group ignored invisible ++++++++mark ignored invisible ++++++++++staticText ignored invisible name='text' \ No newline at end of file
diff --git a/content/test/data/accessibility/css/visibility-to-visible-expected-blink.txt b/content/test/data/accessibility/css/visibility-to-visible-expected-blink.txt index 2e914487..bf2c239 100644 --- a/content/test/data/accessibility/css/visibility-to-visible-expected-blink.txt +++ b/content/test/data/accessibility/css/visibility-to-visible-expected-blink.txt
@@ -7,8 +7,9 @@ ++++++++genericContainer ++++++++++checkBox name='checkbox' checkedState=false ++++++++genericContainer -++++++++++staticText name='done' -++++++++++++inlineTextBox name='done' +++++++++++code +++++++++++++staticText name='done' +++++++++++++++inlineTextBox name='done' ++++++group ++++++++mark ++++++++++staticText name='text'
diff --git a/content/test/data/accessibility/html/code-expected-android-assist-data.txt b/content/test/data/accessibility/html/code-expected-android-assist-data.txt index 8427827..12fac56e 100644 --- a/content/test/data/accessibility/html/code-expected-android-assist-data.txt +++ b/content/test/data/accessibility/html/code-expected-android-assist-data.txt
@@ -1,3 +1,4 @@ WebView textSize:16.0 style:0 htmlInfo:[{htmlTag="#document"}, {display=""}] ++View textSize:16.0 style:0 htmlInfo:[{htmlTag="body"}, {display="block"}] -++++TextView text:"A piece of computer code" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] \ No newline at end of file +++++View textSize:13.0 style:0 htmlInfo:[{htmlTag="code"}, {display="inline"}] +++++++TextView text:"A piece of computer code" textSize:13.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] \ No newline at end of file
diff --git a/content/test/data/accessibility/html/code-expected-android-external.txt b/content/test/data/accessibility/html/code-expected-android-external.txt index 4a33aaaa..276df4d 100644 --- a/content/test/data/accessibility/html/code-expected-android-external.txt +++ b/content/test/data/accessibility/html/code-expected-android-external.txt
@@ -1,2 +1,3 @@ WebView focusable focused scrollable actions:[CLEAR_FOCUS, AX_FOCUS] bundle:[chromeRole="rootWebArea"] -++TextView text:"A piece of computer code" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="genericContainer"] \ No newline at end of file +++View actions:[AX_FOCUS] bundle:[chromeRole="genericContainer"] +++++View text:"A piece of computer code" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="code"] \ No newline at end of file
diff --git a/content/test/data/accessibility/html/code-expected-auralinux.txt b/content/test/data/accessibility/html/code-expected-auralinux.txt index c0e6e02..7fee81bc 100644 --- a/content/test/data/accessibility/html/code-expected-auralinux.txt +++ b/content/test/data/accessibility/html/code-expected-auralinux.txt
@@ -1,3 +1,4 @@ [document web] ++[section] -++++[static] name='A piece of computer code' +++++[static] +++++++[static] name='A piece of computer code' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/code-expected-blink.txt b/content/test/data/accessibility/html/code-expected-blink.txt index b596fbf6..4454b3a 100644 --- a/content/test/data/accessibility/html/code-expected-blink.txt +++ b/content/test/data/accessibility/html/code-expected-blink.txt
@@ -1,5 +1,6 @@ rootWebArea ++genericContainer ignored ++++genericContainer -++++++staticText name='A piece of computer code' -++++++++inlineTextBox name='A piece of computer code' +++++++code +++++++++staticText name='A piece of computer code' +++++++++++inlineTextBox name='A piece of computer code' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/code-expected-fuchsia.txt b/content/test/data/accessibility/html/code-expected-fuchsia.txt index 8b040907..3341dd6a 100644 --- a/content/test/data/accessibility/html/code-expected-fuchsia.txt +++ b/content/test/data/accessibility/html/code-expected-fuchsia.txt
@@ -1,5 +1,6 @@ UNKNOWN focusable has_input_focus ++UNKNOWN hidden ++++UNKNOWN -++++++STATIC_TEXT label='A piece of computer code' -++++++++UNKNOWN label='A piece of computer code' \ No newline at end of file +++++++UNKNOWN +++++++++STATIC_TEXT label='A piece of computer code' +++++++++++UNKNOWN label='A piece of computer code'
diff --git a/content/test/data/accessibility/html/code-expected-mac.txt b/content/test/data/accessibility/html/code-expected-mac.txt index feb36123..0206fb2 100644 --- a/content/test/data/accessibility/html/code-expected-mac.txt +++ b/content/test/data/accessibility/html/code-expected-mac.txt
@@ -1,3 +1,4 @@ AXWebArea ++AXGroup -++++AXStaticText AXValue='A piece of computer code' +++++AXGroup AXSubrole=AXCodeStyleGroup +++++++AXStaticText AXValue='A piece of computer code' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/em-expected-android-assist-data.txt b/content/test/data/accessibility/html/em-expected-android-assist-data.txt index 1a4d348e..afe1244 100644 --- a/content/test/data/accessibility/html/em-expected-android-assist-data.txt +++ b/content/test/data/accessibility/html/em-expected-android-assist-data.txt
@@ -1,5 +1,6 @@ WebView textSize:16.0 style:0 htmlInfo:[{htmlTag="#document"}, {display=""}] ++View textSize:16.0 style:0 htmlInfo:[{htmlTag="body"}, {display="block"}] ++++TextView text:"One word is " textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] -++++TextView text:"emphasized" textSize:16.0 style:2 htmlInfo:[{htmlTag=""}, {display=""}] +++++View textSize:16.0 style:2 htmlInfo:[{htmlTag="em"}, {display="inline"}] +++++++TextView text:"emphasized" textSize:16.0 style:2 htmlInfo:[{htmlTag=""}, {display=""}] ++++TextView text:"." textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] \ No newline at end of file
diff --git a/content/test/data/accessibility/html/em-expected-android-external.txt b/content/test/data/accessibility/html/em-expected-android-external.txt index 63717d27..2f28f0c 100644 --- a/content/test/data/accessibility/html/em-expected-android-external.txt +++ b/content/test/data/accessibility/html/em-expected-android-external.txt
@@ -1,2 +1,5 @@ WebView focusable focused scrollable actions:[CLEAR_FOCUS, AX_FOCUS] bundle:[chromeRole="rootWebArea"] -++TextView text:"One word is emphasized." actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="genericContainer"] \ No newline at end of file +++View actions:[AX_FOCUS] bundle:[chromeRole="genericContainer"] +++++TextView text:"One word is " actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText"] +++++View text:"emphasized" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="emphasis"] +++++TextView text:"." actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText"] \ No newline at end of file
diff --git a/content/test/data/accessibility/html/em-expected-auralinux.txt b/content/test/data/accessibility/html/em-expected-auralinux.txt index 4a596ffb..0f84489 100644 --- a/content/test/data/accessibility/html/em-expected-auralinux.txt +++ b/content/test/data/accessibility/html/em-expected-auralinux.txt
@@ -1,5 +1,6 @@ [document web] ++[section] ++++[static] name='One word is ' -++++[static] name='emphasized' -++++[static] name='.' +++++[static] +++++++[static] name='emphasized' +++++[static] name='.' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/em-expected-blink.txt b/content/test/data/accessibility/html/em-expected-blink.txt index d0ebdb6f..162098cd 100644 --- a/content/test/data/accessibility/html/em-expected-blink.txt +++ b/content/test/data/accessibility/html/em-expected-blink.txt
@@ -3,7 +3,8 @@ ++++genericContainer ++++++staticText name='One word is ' ++++++++inlineTextBox name='One word is ' -++++++staticText name='emphasized' -++++++++inlineTextBox name='emphasized' +++++++emphasis +++++++++staticText name='emphasized' +++++++++++inlineTextBox name='emphasized' ++++++staticText name='.' -++++++++inlineTextBox name='.' +++++++++inlineTextBox name='.' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/em-expected-fuchsia.txt b/content/test/data/accessibility/html/em-expected-fuchsia.txt index f8f522e..3415fbd 100644 --- a/content/test/data/accessibility/html/em-expected-fuchsia.txt +++ b/content/test/data/accessibility/html/em-expected-fuchsia.txt
@@ -3,7 +3,8 @@ ++++UNKNOWN ++++++STATIC_TEXT label='One word is ' ++++++++UNKNOWN label='One word is ' -++++++STATIC_TEXT label='emphasized' -++++++++UNKNOWN label='emphasized' +++++++UNKNOWN +++++++++STATIC_TEXT label='emphasized' +++++++++++UNKNOWN label='emphasized' ++++++STATIC_TEXT label='.' -++++++++UNKNOWN label='.' \ No newline at end of file +++++++++UNKNOWN label='.'
diff --git a/content/test/data/accessibility/html/em-expected-mac.txt b/content/test/data/accessibility/html/em-expected-mac.txt index f40c6d9..b0a9b7a 100644 --- a/content/test/data/accessibility/html/em-expected-mac.txt +++ b/content/test/data/accessibility/html/em-expected-mac.txt
@@ -1,5 +1,6 @@ AXWebArea ++AXGroup ++++AXStaticText AXValue='One word is ' -++++AXStaticText AXValue='emphasized' -++++AXStaticText AXValue='.' +++++AXGroup AXSubrole=AXEmphasisStyleGroup +++++++AXStaticText AXValue='emphasized' +++++AXStaticText AXValue='.' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/em-expected-uia-win.txt b/content/test/data/accessibility/html/em-expected-uia-win.txt index bc76855..0ee34896 100644 --- a/content/test/data/accessibility/html/em-expected-uia-win.txt +++ b/content/test/data/accessibility/html/em-expected-uia-win.txt
@@ -1,5 +1,6 @@ Document ++Group IsControlElement=false ++++Text Name='One word is ' -++++Text Name='emphasized' -++++Text Name='.' +++++Text IsControlElement=false +++++++Text Name='emphasized' +++++Text Name='.' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/em-expected-win.txt b/content/test/data/accessibility/html/em-expected-win.txt index 8a1182b..1320534 100644 --- a/content/test/data/accessibility/html/em-expected-win.txt +++ b/content/test/data/accessibility/html/em-expected-win.txt
@@ -1,5 +1,6 @@ ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE ++IA2_ROLE_SECTION ++++ROLE_SYSTEM_STATICTEXT name='One word is ' -++++ROLE_SYSTEM_STATICTEXT name='emphasized' -++++ROLE_SYSTEM_STATICTEXT name='.' +++++IA2_ROLE_TEXT_FRAME +++++++ROLE_SYSTEM_STATICTEXT name='emphasized' +++++ROLE_SYSTEM_STATICTEXT name='.' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/list-markers-expected-android-assist-data.txt b/content/test/data/accessibility/html/list-markers-expected-android-assist-data.txt index a6ae445ab..e345f23 100644 --- a/content/test/data/accessibility/html/list-markers-expected-android-assist-data.txt +++ b/content/test/data/accessibility/html/list-markers-expected-android-assist-data.txt
@@ -13,5 +13,6 @@ ++++View textSize:16.0 style:0 htmlInfo:[{htmlTag="li"}, {display="list-item"}] ++++++View text:"• " textSize:16.0 style:0 htmlInfo:[{htmlTag="::marker"}, {display="inline-block"}] ++++++TextView text:"Some " textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] -++++++TextView text:"more" textSize:16.0 style:1 htmlInfo:[{htmlTag=""}, {display=""}] +++++++View textSize:16.0 style:1 htmlInfo:[{htmlTag="strong"}, {display="inline"}] +++++++++TextView text:"more" textSize:16.0 style:1 htmlInfo:[{htmlTag=""}, {display=""}] ++++++TextView text:" text." textSize:16.0 style:0 htmlInfo:[{htmlTag=""}, {display=""}] \ No newline at end of file
diff --git a/content/test/data/accessibility/html/list-markers-expected-android-external.txt b/content/test/data/accessibility/html/list-markers-expected-android-external.txt index 87312df0..2bd6cde62 100644 --- a/content/test/data/accessibility/html/list-markers-expected-android-external.txt +++ b/content/test/data/accessibility/html/list-markers-expected-android-external.txt
@@ -13,5 +13,5 @@ ++++View CollectionItemInfo:[rowIndex=2, colIndex=0] actions:[AX_FOCUS] bundle:[chromeRole="listItem"] ++++++View text:"• " actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="listMarker"] ++++++TextView text:"Some " actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText"] -++++++TextView text:"more" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText"] +++++++View text:"more" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="strong"] ++++++TextView text:" text." actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="staticText"] \ No newline at end of file
diff --git a/content/test/data/accessibility/html/list-markers-expected-android.txt b/content/test/data/accessibility/html/list-markers-expected-android.txt index cbb3b81c..14d93de3 100644 --- a/content/test/data/accessibility/html/list-markers-expected-android.txt +++ b/content/test/data/accessibility/html/list-markers-expected-android.txt
@@ -13,5 +13,5 @@ ++++android.view.View collection_item item_index=2 row_index=2 row_span=1 column_span=1 ++++++android.view.View name='%E2%80%A2 ' ++++++android.widget.TextView name='Some ' -++++++android.widget.TextView name='more' +++++++android.view.View name='more' ++++++android.widget.TextView name=' text.' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/list-markers-expected-auralinux.txt b/content/test/data/accessibility/html/list-markers-expected-auralinux.txt index 8baa80f..760d8ba 100644 --- a/content/test/data/accessibility/html/list-markers-expected-auralinux.txt +++ b/content/test/data/accessibility/html/list-markers-expected-auralinux.txt
@@ -13,5 +13,6 @@ ++++[list item] ++++++[static] name='%E2%80%A2 ' ++++++[static] name='Some ' -++++++[static] name='more' +++++++[static] +++++++++[static] name='more' ++++++[static] name=' text.' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/list-markers-expected-blink.txt b/content/test/data/accessibility/html/list-markers-expected-blink.txt index 0436351..bae30244 100644 --- a/content/test/data/accessibility/html/list-markers-expected-blink.txt +++ b/content/test/data/accessibility/html/list-markers-expected-blink.txt
@@ -25,7 +25,8 @@ ++++++++++++staticText ignored name='%E2%80%A2 ' ++++++++++staticText name='Some ' ++++++++++++inlineTextBox name='Some ' -++++++++++staticText name='more' -++++++++++++inlineTextBox name='more' +++++++++++strong +++++++++++++staticText name='more' +++++++++++++++inlineTextBox name='more' ++++++++++staticText name=' text.' -++++++++++++inlineTextBox name=' text.' +++++++++++++inlineTextBox name=' text.' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/list-markers-expected-fuchsia.txt b/content/test/data/accessibility/html/list-markers-expected-fuchsia.txt index 65242f90..b666db5 100644 --- a/content/test/data/accessibility/html/list-markers-expected-fuchsia.txt +++ b/content/test/data/accessibility/html/list-markers-expected-fuchsia.txt
@@ -25,7 +25,8 @@ ++++++++++++STATIC_TEXT hidden label='%E2%80%A2 ' ++++++++++STATIC_TEXT label='Some ' ++++++++++++UNKNOWN label='Some ' -++++++++++STATIC_TEXT label='more' -++++++++++++UNKNOWN label='more' +++++++++++UNKNOWN +++++++++++++STATIC_TEXT label='more' +++++++++++++++UNKNOWN label='more' ++++++++++STATIC_TEXT label=' text.' -++++++++++++UNKNOWN label=' text.' \ No newline at end of file +++++++++++++UNKNOWN label=' text.'
diff --git a/content/test/data/accessibility/html/list-markers-expected-mac.txt b/content/test/data/accessibility/html/list-markers-expected-mac.txt index ef951dd..df3f93a 100644 --- a/content/test/data/accessibility/html/list-markers-expected-mac.txt +++ b/content/test/data/accessibility/html/list-markers-expected-mac.txt
@@ -13,5 +13,6 @@ ++++AXGroup ++++++AXListMarker AXValue='%E2%80%A2 ' ++++++AXStaticText AXValue='Some ' -++++++AXStaticText AXValue='more' +++++++AXGroup AXSubrole=AXStrongStyleGroup +++++++++AXStaticText AXValue='more' ++++++AXStaticText AXValue=' text.' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/list-markers-expected-uia-win.txt b/content/test/data/accessibility/html/list-markers-expected-uia-win.txt index 9f7d033..af87588 100644 --- a/content/test/data/accessibility/html/list-markers-expected-uia-win.txt +++ b/content/test/data/accessibility/html/list-markers-expected-uia-win.txt
@@ -13,5 +13,6 @@ ++++ListItem Name='Some more text.' ++++++Text Name='%E2%80%A2 ' IsControlElement=false ++++++Text Name='Some ' IsControlElement=false -++++++Text Name='more' IsControlElement=false -++++++Text Name=' text.' IsControlElement=false +++++++Text IsControlElement=false +++++++++Text Name='more' +++++++Text Name=' text.' IsControlElement=false \ No newline at end of file
diff --git a/content/test/data/accessibility/html/list-markers-expected-win.txt b/content/test/data/accessibility/html/list-markers-expected-win.txt index 8e10da1..1687e31 100644 --- a/content/test/data/accessibility/html/list-markers-expected-win.txt +++ b/content/test/data/accessibility/html/list-markers-expected-win.txt
@@ -13,5 +13,6 @@ ++++ROLE_SYSTEM_LISTITEM READONLY ++++++ROLE_SYSTEM_STATICTEXT name='%E2%80%A2 ' ++++++ROLE_SYSTEM_STATICTEXT name='Some ' -++++++ROLE_SYSTEM_STATICTEXT name='more' +++++++IA2_ROLE_TEXT_FRAME +++++++++ROLE_SYSTEM_STATICTEXT name='more' ++++++ROLE_SYSTEM_STATICTEXT name=' text.' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/strong-expected-android-assist-data.txt b/content/test/data/accessibility/html/strong-expected-android-assist-data.txt index 5c595a17..5cf8537 100644 --- a/content/test/data/accessibility/html/strong-expected-android-assist-data.txt +++ b/content/test/data/accessibility/html/strong-expected-android-assist-data.txt
@@ -1,3 +1,4 @@ WebView textSize:16.0 style:0 htmlInfo:[{htmlTag="#document"}, {display=""}] ++View textSize:16.0 style:0 htmlInfo:[{htmlTag="body"}, {display="block"}] -++++TextView text:"Strong text" textSize:16.0 style:1 htmlInfo:[{htmlTag=""}, {display=""}] \ No newline at end of file +++++View textSize:16.0 style:1 htmlInfo:[{htmlTag="strong"}, {display="inline"}] +++++++TextView text:"Strong text" textSize:16.0 style:1 htmlInfo:[{htmlTag=""}, {display=""}] \ No newline at end of file
diff --git a/content/test/data/accessibility/html/strong-expected-android-external.txt b/content/test/data/accessibility/html/strong-expected-android-external.txt index 8d43a3173..25051ff 100644 --- a/content/test/data/accessibility/html/strong-expected-android-external.txt +++ b/content/test/data/accessibility/html/strong-expected-android-external.txt
@@ -1,2 +1,3 @@ WebView focusable focused scrollable actions:[CLEAR_FOCUS, AX_FOCUS] bundle:[chromeRole="rootWebArea"] -++TextView text:"Strong text" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="genericContainer"] \ No newline at end of file +++View actions:[AX_FOCUS] bundle:[chromeRole="genericContainer"] +++++View text:"Strong text" actions:[AX_FOCUS, NEXT, PREVIOUS] bundle:[chromeRole="strong"] \ No newline at end of file
diff --git a/content/test/data/accessibility/html/strong-expected-auralinux.txt b/content/test/data/accessibility/html/strong-expected-auralinux.txt index 54276bb0..b008bfd9 100644 --- a/content/test/data/accessibility/html/strong-expected-auralinux.txt +++ b/content/test/data/accessibility/html/strong-expected-auralinux.txt
@@ -1,3 +1,4 @@ [document web] ++[section] -++++[static] name='Strong text' +++++[static] +++++++[static] name='Strong text' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/strong-expected-blink.txt b/content/test/data/accessibility/html/strong-expected-blink.txt index 240d519..64da098 100644 --- a/content/test/data/accessibility/html/strong-expected-blink.txt +++ b/content/test/data/accessibility/html/strong-expected-blink.txt
@@ -1,5 +1,6 @@ rootWebArea ++genericContainer ignored ++++genericContainer -++++++staticText name='Strong text' -++++++++inlineTextBox name='Strong text' +++++++strong +++++++++staticText name='Strong text' +++++++++++inlineTextBox name='Strong text' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/strong-expected-fuchsia.txt b/content/test/data/accessibility/html/strong-expected-fuchsia.txt index 363b28a..63cbc8f 100644 --- a/content/test/data/accessibility/html/strong-expected-fuchsia.txt +++ b/content/test/data/accessibility/html/strong-expected-fuchsia.txt
@@ -1,5 +1,6 @@ UNKNOWN focusable has_input_focus ++UNKNOWN hidden ++++UNKNOWN -++++++STATIC_TEXT label='Strong text' -++++++++UNKNOWN label='Strong text' \ No newline at end of file +++++++UNKNOWN +++++++++STATIC_TEXT label='Strong text' +++++++++++UNKNOWN label='Strong text'
diff --git a/content/test/data/accessibility/html/strong-expected-mac.txt b/content/test/data/accessibility/html/strong-expected-mac.txt index a328e90..3c3618a 100644 --- a/content/test/data/accessibility/html/strong-expected-mac.txt +++ b/content/test/data/accessibility/html/strong-expected-mac.txt
@@ -1,3 +1,4 @@ AXWebArea ++AXGroup -++++AXStaticText AXValue='Strong text' +++++AXGroup AXSubrole=AXStrongStyleGroup +++++++AXStaticText AXValue='Strong text' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/text-colors-and-styles-expected-android.txt b/content/test/data/accessibility/html/text-colors-and-styles-expected-android.txt index a4c98ad..d5810e3 100644 --- a/content/test/data/accessibility/html/text-colors-and-styles-expected-android.txt +++ b/content/test/data/accessibility/html/text-colors-and-styles-expected-android.txt
@@ -2,7 +2,8 @@ ++android.widget.TextView name='color' ++android.widget.TextView role_description='heading 1' heading name='text size' ++android.widget.TextView role_description='heading 2' heading name='text style' -++android.widget.TextView name='strong' +++android.view.View +++++android.view.View name='strong' ++android.widget.TextView name='italic' ++android.widget.TextView name=' ' ++android.widget.TextView name='bold' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/text-colors-and-styles-expected-auralinux.txt b/content/test/data/accessibility/html/text-colors-and-styles-expected-auralinux.txt index 09ee618..d1d5c65b 100644 --- a/content/test/data/accessibility/html/text-colors-and-styles-expected-auralinux.txt +++ b/content/test/data/accessibility/html/text-colors-and-styles-expected-auralinux.txt
@@ -6,7 +6,8 @@ ++[heading] name='text style' ++++[static] name='text style' ++[paragraph] -++++[static] name='strong' +++++[static] +++++++[static] name='strong' ++[static] name='italic' ++[static] name=' ' ++[static] name='bold' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/text-colors-and-styles-expected-blink.txt b/content/test/data/accessibility/html/text-colors-and-styles-expected-blink.txt index 338609d..84cd1c5 100644 --- a/content/test/data/accessibility/html/text-colors-and-styles-expected-blink.txt +++ b/content/test/data/accessibility/html/text-colors-and-styles-expected-blink.txt
@@ -11,8 +11,9 @@ ++++++++staticText name='text style' ++++++++++inlineTextBox name='text style' ++++++paragraph -++++++++staticText name='strong' -++++++++++inlineTextBox name='strong' +++++++++strong +++++++++++staticText name='strong' +++++++++++++inlineTextBox name='strong' ++++++staticText name='italic' ++++++++inlineTextBox name='italic' ++++++staticText name=' '
diff --git a/content/test/data/accessibility/html/text-colors-and-styles-expected-mac.txt b/content/test/data/accessibility/html/text-colors-and-styles-expected-mac.txt index 23e97ef..86680912 100644 --- a/content/test/data/accessibility/html/text-colors-and-styles-expected-mac.txt +++ b/content/test/data/accessibility/html/text-colors-and-styles-expected-mac.txt
@@ -6,7 +6,8 @@ ++AXHeading AXTitle='text style' AXValue=2 ++++AXStaticText AXValue='text style' ++AXGroup -++++AXStaticText AXValue='strong' +++++AXGroup AXSubrole=AXStrongStyleGroup +++++++AXStaticText AXValue='strong' ++AXStaticText AXValue='italic' ++AXStaticText AXValue=' ' ++AXStaticText AXValue='bold' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/text-colors-and-styles-expected-uia-win.txt b/content/test/data/accessibility/html/text-colors-and-styles-expected-uia-win.txt index 94f7b5b3..03b8657 100644 --- a/content/test/data/accessibility/html/text-colors-and-styles-expected-uia-win.txt +++ b/content/test/data/accessibility/html/text-colors-and-styles-expected-uia-win.txt
@@ -6,7 +6,8 @@ ++Text Name='text style' ++++Text Name='text style' IsControlElement=false ++Group IsControlElement=false -++++Text Name='strong' +++++Text IsControlElement=false +++++++Text Name='strong' ++Text Name='italic' ++Text Name=' ' ++Text Name='bold' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/text-colors-and-styles-expected-win.txt b/content/test/data/accessibility/html/text-colors-and-styles-expected-win.txt index e02442c..266ffa1 100644 --- a/content/test/data/accessibility/html/text-colors-and-styles-expected-win.txt +++ b/content/test/data/accessibility/html/text-colors-and-styles-expected-win.txt
@@ -6,7 +6,8 @@ ++IA2_ROLE_HEADING name='text style' ++++ROLE_SYSTEM_STATICTEXT name='text style' ++IA2_ROLE_PARAGRAPH -++++ROLE_SYSTEM_STATICTEXT name='strong' +++++IA2_ROLE_TEXT_FRAME +++++++ROLE_SYSTEM_STATICTEXT name='strong' ++ROLE_SYSTEM_STATICTEXT name='italic' ++ROLE_SYSTEM_STATICTEXT name=' ' ++ROLE_SYSTEM_STATICTEXT name='bold' \ No newline at end of file
diff --git a/content/test/data/accessibility/mac/selection/set-selection-contenteditable-expected.txt b/content/test/data/accessibility/mac/selection/set-selection-contenteditable-expected.txt index c5ac91f..7a31240 100644 --- a/content/test/data/accessibility/mac/selection/set-selection-contenteditable-expected.txt +++ b/content/test/data/accessibility/mac/selection/set-selection-contenteditable-expected.txt
@@ -20,7 +20,7 @@ ce1.AXSelectedText='quick' // Select text inside a span. text=:8 -text.AXValue='lazy' +text.AXValue='' text_range={anchor: {:8, 0, down}, focus: {:8, 4, down}} marker_0={:8, 0, down} marker_1={:8, 4, down} @@ -37,12 +37,12 @@ AXSelectedTextChanged on AXTextArea AXValue='The quick brown foxes jumps over the lazy dog' AXTextSelectionDirection=AXTextSelectionDirectionUnknown AXTextSelectionGranularity=AXTextSelectionGranularityUnknown AXTextStateChangeType=AXTextStateChangeTypeUnknown ce1.AXSelectedText='jumps' // Select the text after a forced break. -text=:14 +text=:15 text.AXValue='with five dozen liquor jugs.' -text_range={anchor: {:14, 0, down}, focus: {:14, 28, down}} -marker_0={:14, 0, down} -marker_1={:14, 4, down} -target_selected_marker_range={anchor: {:14, 0, down}, focus: {:14, 4, down}} -ce2.AXSelectedTextMarkerRange={anchor: {:14, 0, down}, focus: {:14, 4, down}} +text_range={anchor: {:15, 0, down}, focus: {:15, 28, down}} +marker_0={:15, 0, down} +marker_1={:15, 4, down} +target_selected_marker_range={anchor: {:15, 0, down}, focus: {:15, 4, down}} +ce2.AXSelectedTextMarkerRange={anchor: {:15, 0, down}, focus: {:15, 4, down}} AXSelectedTextChanged on AXTextArea AXValue='Pack my box<newline>with five dozen liquor jugs.' AXTextSelectionDirection=AXTextSelectionDirectionUnknown AXTextSelectionGranularity=AXTextSelectionGranularityUnknown AXTextStateChangeType=AXTextStateChangeTypeSelectionMove -ce2.AXSelectedText='with' +ce2.AXSelectedText='with' \ No newline at end of file
diff --git a/docs/lacros/build_linux_lacros.md b/docs/lacros/build_linux_lacros.md index 9bf10c2e..3b29b60 100644 --- a/docs/lacros/build_linux_lacros.md +++ b/docs/lacros/build_linux_lacros.md
@@ -37,7 +37,7 @@ % gn args out_linux_ash/Release target_os="chromeos" -use_remoteeec=true # speeds up compilation +use_remoteexec=true # speeds up compilation ``` out_linux_lacros: the directory that holds artifacts for lacros-chrome running on linux ```shell
diff --git a/docs/pgo.md b/docs/pgo.md index 4b743f3..81eee6a 100644 --- a/docs/pgo.md +++ b/docs/pgo.md
@@ -25,11 +25,10 @@ use_remoteexec = true ``` - For android you may need in addition: + For android you need these in addition: ``` target_os = "android" target_cpu = "arm64" - is_high_end_android = true ``` * Run representative benchmarks to produce profiles
diff --git a/extensions/browser/guest_view/mime_handler_view/test_mime_handler_view_guest.cc b/extensions/browser/guest_view/mime_handler_view/test_mime_handler_view_guest.cc index 51ede0e..7e24411 100644 --- a/extensions/browser/guest_view/mime_handler_view/test_mime_handler_view_guest.cc +++ b/extensions/browser/guest_view/mime_handler_view/test_mime_handler_view_guest.cc
@@ -6,7 +6,7 @@ #include "base/functional/bind.h" #include "base/task/single_thread_task_runner.h" -#include "base/test/test_timeouts.h" +#include "base/test/run_until.h" #include "base/time/time.h" #include "components/guest_view/browser/test_guest_view_manager.h" #include "content/public/browser/browser_task_traits.h" @@ -82,15 +82,11 @@ void TestMimeHandlerViewGuest::WaitForGuestLoadStartThenStop( GuestViewBase* guest_view) { auto* guest_contents = guest_view->web_contents(); - - while (!guest_contents->IsLoading() && - !guest_view->GetController().GetLastCommittedEntry()) { - base::RunLoop run_loop; - base::SingleThreadTaskRunner::GetCurrentDefault()->PostDelayedTask( - FROM_HERE, run_loop.QuitClosure(), TestTimeouts::tiny_timeout()); - run_loop.Run(); - } - + // Wait for loading to start. + EXPECT_TRUE(base::test::RunUntil([&]() { + return guest_contents->IsLoading() || + guest_view->GetController().GetLastCommittedEntry(); + })); ASSERT_TRUE(content::WaitForLoadStop(guest_contents)); }
diff --git a/gpu/command_buffer/common/shared_image_usage.h b/gpu/command_buffer/common/shared_image_usage.h index f732b58..ceba507 100644 --- a/gpu/command_buffer/common/shared_image_usage.h +++ b/gpu/command_buffer/common/shared_image_usage.h
@@ -28,9 +28,9 @@ // Image will be used as a scanout buffer (overlay) SHARED_IMAGE_USAGE_SCANOUT = 1 << 5, // Image will be used in OOP rasterization. This flag is used on top of - // SHARED_IMAGE_USAGE_RASTER to indicate that the client will only use - // RasterInterface for OOP rasterization. TODO(backer): Eliminate once we can - // CPU raster to SkImage via RasterInterface. + // SHARED_IMAGE_USAGE_RASTER_{READ, WRITE} to indicate that the client will + // only use RasterInterface for OOP rasterization. TODO(backer): Eliminate + // once we can CPU raster to SkImage via RasterInterface. SHARED_IMAGE_USAGE_OOP_RASTERIZATION = 1 << 6, // Image will be used by Dawn (for WebGPU) SHARED_IMAGE_USAGE_WEBGPU = 1 << 7, @@ -86,13 +86,6 @@ LAST_SHARED_IMAGE_USAGE = SHARED_IMAGE_USAGE_CPU_UPLOAD }; -// Constant left in place while we transition the codebase to use RASTER_READ -// and RASTER_WRITE. -// TODO(crbug.com/1519074): Transition all usage of this constant and eliminate -// the constant. -inline constexpr uint32_t SHARED_IMAGE_USAGE_RASTER = - SHARED_IMAGE_USAGE_RASTER_READ | SHARED_IMAGE_USAGE_RASTER_WRITE; - // Returns true if usage is a valid client usage. GPU_EXPORT bool IsValidClientUsage(uint32_t usage);
diff --git a/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory.cc b/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory.cc index 363e5ff..8b60eb7 100644 --- a/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory.cc +++ b/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory.cc
@@ -179,9 +179,9 @@ SHARED_IMAGE_USAGE_GLES2_READ | SHARED_IMAGE_USAGE_GLES2_WRITE | SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT | SHARED_IMAGE_USAGE_DISPLAY_WRITE | SHARED_IMAGE_USAGE_DISPLAY_READ | - SHARED_IMAGE_USAGE_RASTER | SHARED_IMAGE_USAGE_OOP_RASTERIZATION | - SHARED_IMAGE_USAGE_SCANOUT | SHARED_IMAGE_USAGE_WEBGPU | - SHARED_IMAGE_USAGE_VIDEO_DECODE | + SHARED_IMAGE_USAGE_RASTER_READ | SHARED_IMAGE_USAGE_RASTER_WRITE | + SHARED_IMAGE_USAGE_OOP_RASTERIZATION | SHARED_IMAGE_USAGE_SCANOUT | + SHARED_IMAGE_USAGE_WEBGPU | SHARED_IMAGE_USAGE_VIDEO_DECODE | SHARED_IMAGE_USAGE_WEBGPU_SWAP_CHAIN_TEXTURE | SHARED_IMAGE_USAGE_HIGH_PERFORMANCE_GPU | SHARED_IMAGE_USAGE_WEBGPU_STORAGE_TEXTURE | @@ -892,10 +892,8 @@ const FormatInfo& format_info = GetFormatInfo(format); - // SHARED_IMAGE_USAGE_RASTER is set when we want to write on Skia - // representation and SHARED_IMAGE_USAGE_DISPLAY_READ is used for cases we - // want to read from skia representation. - bool used_by_skia = (usage & SHARED_IMAGE_USAGE_RASTER) || + bool used_by_skia = (usage & SHARED_IMAGE_USAGE_RASTER_READ) || + (usage & SHARED_IMAGE_USAGE_RASTER_WRITE) || (usage & SHARED_IMAGE_USAGE_DISPLAY_READ) || (usage & SHARED_IMAGE_USAGE_DISPLAY_WRITE); bool used_by_gl = (HasGLES2ReadOrWriteUsage(usage)) ||
diff --git a/gpu/command_buffer/service/shared_image/angle_vulkan_image_backing.cc b/gpu/command_buffer/service/shared_image/angle_vulkan_image_backing.cc index 038e7e72..cbf090b 100644 --- a/gpu/command_buffer/service/shared_image/angle_vulkan_image_backing.cc +++ b/gpu/command_buffer/service/shared_image/angle_vulkan_image_backing.cc
@@ -280,7 +280,8 @@ constexpr auto kUsageNeedsColorAttachment = SHARED_IMAGE_USAGE_GLES2_READ | SHARED_IMAGE_USAGE_GLES2_WRITE | - SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT | SHARED_IMAGE_USAGE_RASTER | + SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT | + SHARED_IMAGE_USAGE_RASTER_READ | SHARED_IMAGE_USAGE_RASTER_WRITE | SHARED_IMAGE_USAGE_OOP_RASTERIZATION | SHARED_IMAGE_USAGE_WEBGPU; VkImageUsageFlags vk_usage = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
diff --git a/gpu/command_buffer/service/shared_image/angle_vulkan_image_backing_factory.cc b/gpu/command_buffer/service/shared_image/angle_vulkan_image_backing_factory.cc index a85aa4b..7c9e78c3 100644 --- a/gpu/command_buffer/service/shared_image/angle_vulkan_image_backing_factory.cc +++ b/gpu/command_buffer/service/shared_image/angle_vulkan_image_backing_factory.cc
@@ -25,9 +25,10 @@ SHARED_IMAGE_USAGE_SCANOUT | #endif SHARED_IMAGE_USAGE_GLES2_READ | SHARED_IMAGE_USAGE_GLES2_WRITE | - SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT | SHARED_IMAGE_USAGE_RASTER | - SHARED_IMAGE_USAGE_DISPLAY_READ | SHARED_IMAGE_USAGE_DISPLAY_WRITE | - SHARED_IMAGE_USAGE_OOP_RASTERIZATION | SHARED_IMAGE_USAGE_CPU_UPLOAD; + SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT | SHARED_IMAGE_USAGE_RASTER_READ | + SHARED_IMAGE_USAGE_RASTER_WRITE | SHARED_IMAGE_USAGE_DISPLAY_READ | + SHARED_IMAGE_USAGE_DISPLAY_WRITE | SHARED_IMAGE_USAGE_OOP_RASTERIZATION | + SHARED_IMAGE_USAGE_CPU_UPLOAD; } // namespace
diff --git a/gpu/command_buffer/service/shared_image/d3d_image_backing_factory.cc b/gpu/command_buffer/service/shared_image/d3d_image_backing_factory.cc index 098a086..20744b68 100644 --- a/gpu/command_buffer/service/shared_image/d3d_image_backing_factory.cc +++ b/gpu/command_buffer/service/shared_image/d3d_image_backing_factory.cc
@@ -87,9 +87,9 @@ SHARED_IMAGE_USAGE_GLES2_READ | SHARED_IMAGE_USAGE_GLES2_WRITE | SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT | SHARED_IMAGE_USAGE_DISPLAY_WRITE | SHARED_IMAGE_USAGE_DISPLAY_READ | - SHARED_IMAGE_USAGE_RASTER | SHARED_IMAGE_USAGE_OOP_RASTERIZATION | - SHARED_IMAGE_USAGE_SCANOUT | SHARED_IMAGE_USAGE_WEBGPU | - SHARED_IMAGE_USAGE_VIDEO_DECODE | + SHARED_IMAGE_USAGE_RASTER_READ | SHARED_IMAGE_USAGE_RASTER_WRITE | + SHARED_IMAGE_USAGE_OOP_RASTERIZATION | SHARED_IMAGE_USAGE_SCANOUT | + SHARED_IMAGE_USAGE_WEBGPU | SHARED_IMAGE_USAGE_VIDEO_DECODE | SHARED_IMAGE_USAGE_WEBGPU_SWAP_CHAIN_TEXTURE | SHARED_IMAGE_USAGE_HIGH_PERFORMANCE_GPU | SHARED_IMAGE_USAGE_CPU_UPLOAD | SHARED_IMAGE_USAGE_WEBGPU_STORAGE_TEXTURE;
diff --git a/gpu/command_buffer/service/shared_image/egl_image_backing_factory.cc b/gpu/command_buffer/service/shared_image/egl_image_backing_factory.cc index 0488291..55742176 100644 --- a/gpu/command_buffer/service/shared_image/egl_image_backing_factory.cc +++ b/gpu/command_buffer/service/shared_image/egl_image_backing_factory.cc
@@ -26,8 +26,9 @@ SHARED_IMAGE_USAGE_GLES2_READ | SHARED_IMAGE_USAGE_GLES2_WRITE | SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT | SHARED_IMAGE_USAGE_DISPLAY_WRITE | SHARED_IMAGE_USAGE_DISPLAY_READ | - SHARED_IMAGE_USAGE_RASTER | SHARED_IMAGE_USAGE_OOP_RASTERIZATION | - SHARED_IMAGE_USAGE_WEBGPU | SHARED_IMAGE_USAGE_CONCURRENT_READ_WRITE | + SHARED_IMAGE_USAGE_RASTER_READ | SHARED_IMAGE_USAGE_RASTER_WRITE | + SHARED_IMAGE_USAGE_OOP_RASTERIZATION | SHARED_IMAGE_USAGE_WEBGPU | + SHARED_IMAGE_USAGE_CONCURRENT_READ_WRITE | SHARED_IMAGE_USAGE_WEBGPU_SWAP_CHAIN_TEXTURE | SHARED_IMAGE_USAGE_MACOS_VIDEO_TOOLBOX | SHARED_IMAGE_USAGE_HIGH_PERFORMANCE_GPU | @@ -131,7 +132,8 @@ if (gr_context_type != GrContextType::kGL && ((usage & SHARED_IMAGE_USAGE_DISPLAY_READ) || (usage & SHARED_IMAGE_USAGE_DISPLAY_WRITE) || - (usage & SHARED_IMAGE_USAGE_RASTER))) { + (usage & SHARED_IMAGE_USAGE_RASTER_READ) || + (usage & SHARED_IMAGE_USAGE_RASTER_WRITE))) { return false; } constexpr uint32_t kInvalidUsage = SHARED_IMAGE_USAGE_VIDEO_DECODE |
diff --git a/gpu/command_buffer/service/shared_image/external_vk_image_backing.cc b/gpu/command_buffer/service/shared_image/external_vk_image_backing.cc index ec4a2f6..7dbdccf 100644 --- a/gpu/command_buffer/service/shared_image/external_vk_image_backing.cc +++ b/gpu/command_buffer/service/shared_image/external_vk_image_backing.cc
@@ -162,7 +162,8 @@ auto* device_queue = context_state->vk_context_provider()->GetDeviceQueue(); constexpr auto kUsageNeedsColorAttachment = SHARED_IMAGE_USAGE_GLES2_READ | SHARED_IMAGE_USAGE_GLES2_WRITE | - SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT | SHARED_IMAGE_USAGE_RASTER | + SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT | + SHARED_IMAGE_USAGE_RASTER_READ | SHARED_IMAGE_USAGE_RASTER_WRITE | SHARED_IMAGE_USAGE_OOP_RASTERIZATION | SHARED_IMAGE_USAGE_WEBGPU; VkImageUsageFlags vk_usage = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
diff --git a/gpu/command_buffer/service/shared_image/external_vk_image_backing.h b/gpu/command_buffer/service/shared_image/external_vk_image_backing.h index 0956855..9e57072 100644 --- a/gpu/command_buffer/service/shared_image/external_vk_image_backing.h +++ b/gpu/command_buffer/service/shared_image/external_vk_image_backing.h
@@ -121,7 +121,8 @@ return !use_separate_gl_texture() && !gl_textures_.empty(); } - if ((usage() & SHARED_IMAGE_USAGE_RASTER) && + if ((usage() & + (SHARED_IMAGE_USAGE_RASTER_READ | SHARED_IMAGE_USAGE_RASTER_WRITE)) && (usage() & SHARED_IMAGE_USAGE_SCANOUT)) { return true; }
diff --git a/gpu/command_buffer/service/shared_image/external_vk_image_backing_factory.cc b/gpu/command_buffer/service/shared_image/external_vk_image_backing_factory.cc index 7f6806e15..1b0a00f8 100644 --- a/gpu/command_buffer/service/shared_image/external_vk_image_backing_factory.cc +++ b/gpu/command_buffer/service/shared_image/external_vk_image_backing_factory.cc
@@ -92,7 +92,7 @@ bool IsFormatSupported(viz::SharedImageFormat format, gfx::GpuMemoryBufferType gmb_type, uint32_t usage) { - // GL interop does not work with external sampler. Also, see + // Accessing via GL does not work with external sampling. Also, see // https://crbug.com/1394888. // NOTE: At the current time this check is elided on Fuchsia as there is no // alternative backing that can be used in this case on Fuchsia, which results @@ -104,8 +104,7 @@ // TODO(crbug.com/1310026): Enable ImageBackingOzone to be used for all planes // in Fuchsia and enable this check for Fuchsia. #if !BUILDFLAG(IS_FUCHSIA) - if (HasGLES2ReadOrWriteUsage(usage) || - usage & SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT) { + if (HasGLES2ReadOrWriteUsage(usage)) { if (format.IsLegacyMultiplanar() || format.PrefersExternalSampler()) { return false; } @@ -155,10 +154,10 @@ SHARED_IMAGE_USAGE_GLES2_READ | SHARED_IMAGE_USAGE_GLES2_WRITE | SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT | SHARED_IMAGE_USAGE_DISPLAY_WRITE | SHARED_IMAGE_USAGE_DISPLAY_READ | - SHARED_IMAGE_USAGE_RASTER | SHARED_IMAGE_USAGE_OOP_RASTERIZATION | - SHARED_IMAGE_USAGE_SCANOUT | SHARED_IMAGE_USAGE_VIDEO_DECODE | - SHARED_IMAGE_USAGE_HIGH_PERFORMANCE_GPU | SHARED_IMAGE_USAGE_CPU_UPLOAD | - SHARED_IMAGE_USAGE_CPU_WRITE; + SHARED_IMAGE_USAGE_RASTER_READ | SHARED_IMAGE_USAGE_RASTER_WRITE | + SHARED_IMAGE_USAGE_OOP_RASTERIZATION | SHARED_IMAGE_USAGE_SCANOUT | + SHARED_IMAGE_USAGE_VIDEO_DECODE | SHARED_IMAGE_USAGE_HIGH_PERFORMANCE_GPU | + SHARED_IMAGE_USAGE_CPU_UPLOAD | SHARED_IMAGE_USAGE_CPU_WRITE; ExternalVkImageBackingFactory::ExternalVkImageBackingFactory( scoped_refptr<SharedContextState> context_state)
diff --git a/gpu/command_buffer/service/shared_image/gl_texture_image_backing_factory.cc b/gpu/command_buffer/service/shared_image/gl_texture_image_backing_factory.cc index 0977f38..cc52081 100644 --- a/gpu/command_buffer/service/shared_image/gl_texture_image_backing_factory.cc +++ b/gpu/command_buffer/service/shared_image/gl_texture_image_backing_factory.cc
@@ -27,8 +27,9 @@ SHARED_IMAGE_USAGE_GLES2_READ | SHARED_IMAGE_USAGE_GLES2_WRITE | SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT | SHARED_IMAGE_USAGE_DISPLAY_WRITE | SHARED_IMAGE_USAGE_DISPLAY_READ | - SHARED_IMAGE_USAGE_RASTER | SHARED_IMAGE_USAGE_OOP_RASTERIZATION | - SHARED_IMAGE_USAGE_SCANOUT | SHARED_IMAGE_USAGE_CONCURRENT_READ_WRITE | + SHARED_IMAGE_USAGE_RASTER_READ | SHARED_IMAGE_USAGE_RASTER_WRITE | + SHARED_IMAGE_USAGE_OOP_RASTERIZATION | SHARED_IMAGE_USAGE_SCANOUT | + SHARED_IMAGE_USAGE_CONCURRENT_READ_WRITE | SHARED_IMAGE_USAGE_HIGH_PERFORMANCE_GPU | SHARED_IMAGE_USAGE_CPU_UPLOAD | kWebGPUUsages; } @@ -175,7 +176,8 @@ if (gr_context_type != GrContextType::kGL && ((usage & SHARED_IMAGE_USAGE_DISPLAY_READ) || (usage & SHARED_IMAGE_USAGE_DISPLAY_WRITE) || - (usage & SHARED_IMAGE_USAGE_RASTER))) { + (usage & SHARED_IMAGE_USAGE_RASTER_READ) || + (usage & SHARED_IMAGE_USAGE_RASTER_WRITE))) { return false; } @@ -206,8 +208,9 @@ DCHECK(CanCreateTexture(format, size, pixel_data, GL_TEXTURE_2D)); const bool for_framebuffer_attachment = - (usage & (SHARED_IMAGE_USAGE_RASTER | - SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT)) != 0; + (usage & + (SHARED_IMAGE_USAGE_RASTER_READ | SHARED_IMAGE_USAGE_RASTER_WRITE | + SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT)) != 0; const bool framebuffer_attachment_angle = for_framebuffer_attachment && texture_usage_angle_;
diff --git a/gpu/command_buffer/service/shared_image/iosurface_image_backing_factory.mm b/gpu/command_buffer/service/shared_image/iosurface_image_backing_factory.mm index 57d6801..d2a90d50 100644 --- a/gpu/command_buffer/service/shared_image/iosurface_image_backing_factory.mm +++ b/gpu/command_buffer/service/shared_image/iosurface_image_backing_factory.mm
@@ -101,9 +101,10 @@ SHARED_IMAGE_USAGE_GLES2_READ | SHARED_IMAGE_USAGE_GLES2_WRITE | SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT | SHARED_IMAGE_USAGE_DISPLAY_WRITE | SHARED_IMAGE_USAGE_DISPLAY_READ | - SHARED_IMAGE_USAGE_RASTER | SHARED_IMAGE_USAGE_OOP_RASTERIZATION | - SHARED_IMAGE_USAGE_SCANOUT | SHARED_IMAGE_USAGE_WEBGPU | - SHARED_IMAGE_USAGE_CONCURRENT_READ_WRITE | SHARED_IMAGE_USAGE_VIDEO_DECODE | + SHARED_IMAGE_USAGE_RASTER_READ | SHARED_IMAGE_USAGE_RASTER_WRITE | + SHARED_IMAGE_USAGE_OOP_RASTERIZATION | SHARED_IMAGE_USAGE_SCANOUT | + SHARED_IMAGE_USAGE_WEBGPU | SHARED_IMAGE_USAGE_CONCURRENT_READ_WRITE | + SHARED_IMAGE_USAGE_VIDEO_DECODE | SHARED_IMAGE_USAGE_WEBGPU_SWAP_CHAIN_TEXTURE | SHARED_IMAGE_USAGE_MACOS_VIDEO_TOOLBOX | SHARED_IMAGE_USAGE_RASTER_DELEGATED_COMPOSITING | @@ -355,8 +356,9 @@ } const bool for_framebuffer_attachment = - (usage & (SHARED_IMAGE_USAGE_RASTER | - SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT)) != 0; + (usage & + (SHARED_IMAGE_USAGE_RASTER_READ | SHARED_IMAGE_USAGE_RASTER_WRITE | + SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT)) != 0; // |scoped_progress_reporter| will notify |progress_reporter_| upon // construction and destruction. We limit the scope so that progress is @@ -465,8 +467,9 @@ } const bool for_framebuffer_attachment = - (usage & (SHARED_IMAGE_USAGE_RASTER | - SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT)) != 0; + (usage & + (SHARED_IMAGE_USAGE_RASTER_READ | SHARED_IMAGE_USAGE_RASTER_WRITE | + SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT)) != 0; const bool framebuffer_attachment_angle = for_framebuffer_attachment && angle_texture_usage_; const bool retain_gl_texture = gr_context_type_ == GrContextType::kGL;
diff --git a/gpu/command_buffer/service/shared_image/ozone_image_backing.cc b/gpu/command_buffer/service/shared_image/ozone_image_backing.cc index 7fc917d..4a72272 100644 --- a/gpu/command_buffer/service/shared_image/ozone_image_backing.cc +++ b/gpu/command_buffer/service/shared_image/ozone_image_backing.cc
@@ -459,7 +459,8 @@ context_state_(std::move(context_state)), workarounds_(workarounds), use_passthrough_(use_passthrough) { - bool used_by_skia = (usage & SHARED_IMAGE_USAGE_RASTER) || + bool used_by_skia = (usage & SHARED_IMAGE_USAGE_RASTER_READ) || + (usage & SHARED_IMAGE_USAGE_RASTER_WRITE) || (usage & SHARED_IMAGE_USAGE_DISPLAY_READ); bool used_by_gl = (HasGLES2ReadOrWriteUsage(usage)) ||
diff --git a/gpu/command_buffer/service/shared_image/ozone_image_backing_factory.cc b/gpu/command_buffer/service/shared_image/ozone_image_backing_factory.cc index 0ecff9de..a587d9b1 100644 --- a/gpu/command_buffer/service/shared_image/ozone_image_backing_factory.cc +++ b/gpu/command_buffer/service/shared_image/ozone_image_backing_factory.cc
@@ -60,9 +60,10 @@ SHARED_IMAGE_USAGE_GLES2_READ | SHARED_IMAGE_USAGE_GLES2_WRITE | SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT | SHARED_IMAGE_USAGE_DISPLAY_WRITE | SHARED_IMAGE_USAGE_DISPLAY_READ | - SHARED_IMAGE_USAGE_RASTER | SHARED_IMAGE_USAGE_OOP_RASTERIZATION | - SHARED_IMAGE_USAGE_SCANOUT | SHARED_IMAGE_USAGE_WEBGPU | - SHARED_IMAGE_USAGE_CONCURRENT_READ_WRITE | SHARED_IMAGE_USAGE_VIDEO_DECODE | + SHARED_IMAGE_USAGE_RASTER_READ | SHARED_IMAGE_USAGE_RASTER_WRITE | + SHARED_IMAGE_USAGE_OOP_RASTERIZATION | SHARED_IMAGE_USAGE_SCANOUT | + SHARED_IMAGE_USAGE_WEBGPU | SHARED_IMAGE_USAGE_CONCURRENT_READ_WRITE | + SHARED_IMAGE_USAGE_VIDEO_DECODE | SHARED_IMAGE_USAGE_WEBGPU_SWAP_CHAIN_TEXTURE | SHARED_IMAGE_USAGE_RASTER_DELEGATED_COMPOSITING | SHARED_IMAGE_USAGE_HIGH_PERFORMANCE_GPU | SHARED_IMAGE_USAGE_CPU_UPLOAD | @@ -279,7 +280,8 @@ return false; } - bool used_by_skia = (usage & SHARED_IMAGE_USAGE_RASTER) || + bool used_by_skia = (usage & SHARED_IMAGE_USAGE_RASTER_READ) || + (usage & SHARED_IMAGE_USAGE_RASTER_WRITE) || (usage & SHARED_IMAGE_USAGE_DISPLAY_READ) || (usage & SHARED_IMAGE_USAGE_DISPLAY_WRITE); bool used_by_vulkan =
diff --git a/gpu/command_buffer/service/shared_image/raw_draw_image_backing_factory.cc b/gpu/command_buffer/service/shared_image/raw_draw_image_backing_factory.cc index aaf806d8..b5800cc 100644 --- a/gpu/command_buffer/service/shared_image/raw_draw_image_backing_factory.cc +++ b/gpu/command_buffer/service/shared_image/raw_draw_image_backing_factory.cc
@@ -10,8 +10,9 @@ namespace gpu { constexpr uint32_t kSupportedUsage = - SHARED_IMAGE_USAGE_DISPLAY_READ | SHARED_IMAGE_USAGE_RASTER | - SHARED_IMAGE_USAGE_OOP_RASTERIZATION | SHARED_IMAGE_USAGE_RAW_DRAW; + SHARED_IMAGE_USAGE_DISPLAY_READ | SHARED_IMAGE_USAGE_RASTER_READ | + SHARED_IMAGE_USAGE_RASTER_WRITE | SHARED_IMAGE_USAGE_OOP_RASTERIZATION | + SHARED_IMAGE_USAGE_RAW_DRAW; RawDrawImageBackingFactory::RawDrawImageBackingFactory() : SharedImageBackingFactory(kSupportedUsage) {}
diff --git a/gpu/command_buffer/service/shared_image/skia_vk_android_image_representation.cc b/gpu/command_buffer/service/shared_image/skia_vk_android_image_representation.cc index 977c71cc..9eb97dc0c 100644 --- a/gpu/command_buffer/service/shared_image/skia_vk_android_image_representation.cc +++ b/gpu/command_buffer/service/shared_image/skia_vk_android_image_representation.cc
@@ -294,7 +294,8 @@ const uint32_t kSingleDeviceUsage = SHARED_IMAGE_USAGE_DISPLAY_READ | SHARED_IMAGE_USAGE_DISPLAY_WRITE | - SHARED_IMAGE_USAGE_RASTER | SHARED_IMAGE_USAGE_OOP_RASTERIZATION; + SHARED_IMAGE_USAGE_RASTER_READ | SHARED_IMAGE_USAGE_RASTER_WRITE | + SHARED_IMAGE_USAGE_OOP_RASTERIZATION; // If SharedImage is used outside of current VkDeviceQueue we need to transfer // image back to it's original queue. Note, that for multithreading we use
diff --git a/gpu/command_buffer/service/shared_image/skia_vk_ozone_image_representation.cc b/gpu/command_buffer/service/shared_image/skia_vk_ozone_image_representation.cc index 6b2b400..3f275e4 100644 --- a/gpu/command_buffer/service/shared_image/skia_vk_ozone_image_representation.cc +++ b/gpu/command_buffer/service/shared_image/skia_vk_ozone_image_representation.cc
@@ -267,7 +267,8 @@ SkiaVkOzoneImageRepresentation::GetEndAccessState() { const uint32_t kSingleDeviceUsage = SHARED_IMAGE_USAGE_DISPLAY_READ | SHARED_IMAGE_USAGE_DISPLAY_WRITE | - SHARED_IMAGE_USAGE_RASTER | SHARED_IMAGE_USAGE_OOP_RASTERIZATION; + SHARED_IMAGE_USAGE_RASTER_READ | SHARED_IMAGE_USAGE_RASTER_WRITE | + SHARED_IMAGE_USAGE_OOP_RASTERIZATION; // If SharedImage is used outside of current VkDeviceQueue we need to transfer // image back to it's original queue. Note, that for multithreading we use
diff --git a/gpu/command_buffer/service/shared_image/wrapped_sk_image_backing_factory.cc b/gpu/command_buffer/service/shared_image/wrapped_sk_image_backing_factory.cc index 9dfd6dc3..69ccc50 100644 --- a/gpu/command_buffer/service/shared_image/wrapped_sk_image_backing_factory.cc +++ b/gpu/command_buffer/service/shared_image/wrapped_sk_image_backing_factory.cc
@@ -28,8 +28,9 @@ namespace { constexpr uint32_t kSupportedUsage = SHARED_IMAGE_USAGE_DISPLAY_READ | SHARED_IMAGE_USAGE_DISPLAY_WRITE | - SHARED_IMAGE_USAGE_RASTER | SHARED_IMAGE_USAGE_OOP_RASTERIZATION | - SHARED_IMAGE_USAGE_CPU_UPLOAD | SHARED_IMAGE_USAGE_MIPMAP; + SHARED_IMAGE_USAGE_RASTER_READ | SHARED_IMAGE_USAGE_RASTER_WRITE | + SHARED_IMAGE_USAGE_OOP_RASTERIZATION | SHARED_IMAGE_USAGE_CPU_UPLOAD | + SHARED_IMAGE_USAGE_MIPMAP; constexpr uint32_t kGraphiteDawnFallbackUsage = SHARED_IMAGE_USAGE_GLES2_READ | SHARED_IMAGE_USAGE_GLES2_WRITE |
diff --git a/infra/config/generated/testing/variants.pyl b/infra/config/generated/testing/variants.pyl index 51c09e9..870bb38 100644 --- a/infra/config/generated/testing/variants.pyl +++ b/infra/config/generated/testing/variants.pyl
@@ -323,32 +323,32 @@ }, 'LACROS_VERSION_SKEW_CANARY': { 'identifier': 'Lacros version skew testing ash canary', - 'description': 'Run with ash-chrome version 122.0.6258.0', + 'description': 'Run with ash-chrome version 122.0.6259.0', 'args': [ - '--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6258.0/test_ash_chrome', + '--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6259.0/test_ash_chrome', ], 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/linux-ash-chromium/x86_64/ash.zip', - 'location': 'lacros_version_skew_tests_v122.0.6258.0', - 'revision': 'version:122.0.6258.0', + 'location': 'lacros_version_skew_tests_v122.0.6259.0', + 'revision': 'version:122.0.6259.0', }, ], }, }, 'LACROS_VERSION_SKEW_DEV': { 'identifier': 'Lacros version skew testing ash dev', - 'description': 'Run with ash-chrome version 122.0.6226.0', + 'description': 'Run with ash-chrome version 122.0.6241.0', 'args': [ - '--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6226.0/test_ash_chrome', + '--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6241.0/test_ash_chrome', ], 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/linux-ash-chromium/x86_64/ash.zip', - 'location': 'lacros_version_skew_tests_v122.0.6226.0', - 'revision': 'version:122.0.6226.0', + 'location': 'lacros_version_skew_tests_v122.0.6241.0', + 'revision': 'version:122.0.6241.0', }, ], },
diff --git a/infra/config/targets/lacros-version-skew-variants.json b/infra/config/targets/lacros-version-skew-variants.json index 1df86db..e3c52f2d 100644 --- a/infra/config/targets/lacros-version-skew-variants.json +++ b/infra/config/targets/lacros-version-skew-variants.json
@@ -1,32 +1,32 @@ { "LACROS_VERSION_SKEW_CANARY": { "args": [ - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6258.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6259.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 122.0.6258.0", + "description": "Run with ash-chrome version 122.0.6259.0", "identifier": "Lacros version skew testing ash canary", "swarming": { "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6258.0", - "revision": "version:122.0.6258.0" + "location": "lacros_version_skew_tests_v122.0.6259.0", + "revision": "version:122.0.6259.0" } ] } }, "LACROS_VERSION_SKEW_DEV": { "args": [ - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6226.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6241.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 122.0.6226.0", + "description": "Run with ash-chrome version 122.0.6241.0", "identifier": "Lacros version skew testing ash dev", "swarming": { "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6226.0", - "revision": "version:122.0.6226.0" + "location": "lacros_version_skew_tests_v122.0.6241.0", + "revision": "version:122.0.6241.0" } ] }
diff --git a/internal b/internal index 30fdbea..f4265bd 160000 --- a/internal +++ b/internal
@@ -1 +1 @@ -Subproject commit 30fdbead0c83d2500fbcfd3309af0e4eb3c9ece6 +Subproject commit f4265bdd4f42aff11fc3c350a5da34634afb9818
diff --git a/ios/build/chrome_build.gni b/ios/build/chrome_build.gni index 6598ef5e..17f24168 100644 --- a/ios/build/chrome_build.gni +++ b/ios/build/chrome_build.gni
@@ -48,7 +48,7 @@ ios_credential_provider_extension_api_key = "" # Controls whether ScreenTime API is used. - ios_enable_screen_time = true + ios_enable_screen_time = false # Enable background fetch mode for feed refresh. ios_enable_background_mode = true
diff --git a/ios/chrome/app/BUILD.gn b/ios/chrome/app/BUILD.gn index 52ea9af..cd7a528 100644 --- a/ios/chrome/app/BUILD.gn +++ b/ios/chrome/app/BUILD.gn
@@ -582,6 +582,7 @@ "//ios/chrome/browser/variations/model:ios_chrome_ui_string_overrider_factory", "//ios/chrome/browser/voice/model", "//ios/chrome/browser/web/model", + "//ios/chrome/browser/web_state_list/model/web_usage_enabler", "//ios/chrome/common/app_group", "//ios/chrome/common/app_group:main_app", "//ios/chrome/common/intents",
diff --git a/ios/chrome/app/application_delegate/BUILD.gn b/ios/chrome/app/application_delegate/BUILD.gn index 8b91eda6..bfa7e4d 100644 --- a/ios/chrome/app/application_delegate/BUILD.gn +++ b/ios/chrome/app/application_delegate/BUILD.gn
@@ -66,6 +66,7 @@ "//ios/chrome/browser/ui/settings", "//ios/chrome/browser/ui/settings:settings_root", "//ios/chrome/browser/url_loading/model", + "//ios/chrome/browser/web_state_list/model/web_usage_enabler", "//ios/chrome/common/app_group", "//ios/chrome/common/crash_report", "//ios/chrome/test:test_support", @@ -211,6 +212,7 @@ "//ios/chrome/browser/ui/main", "//ios/chrome/browser/url_loading/model", "//ios/chrome/browser/web_state_list/model:session_metrics", + "//ios/chrome/browser/web_state_list/model/web_usage_enabler", "//ios/chrome/browser/widget_kit/model:features", "//ios/chrome/common/app_group", "//ios/chrome/common/app_group:main_app",
diff --git a/ios/chrome/app/application_delegate/app_state.mm b/ios/chrome/app/application_delegate/app_state.mm index c8c8d35..9ece6468 100644 --- a/ios/chrome/app/application_delegate/app_state.mm +++ b/ios/chrome/app/application_delegate/app_state.mm
@@ -50,6 +50,7 @@ #import "ios/chrome/browser/signin/model/authentication_service_factory.h" #import "ios/chrome/browser/signin/model/system_identity_manager.h" #import "ios/chrome/browser/web_state_list/model/session_metrics.h" +#import "ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent.h" #import "ios/net/cookies/cookie_store_ios.h" #import "ios/public/provider/chrome/browser/app_distribution/app_distribution_api.h" #import "ios/public/provider/chrome/browser/user_feedback/user_feedback_api.h" @@ -397,8 +398,12 @@ // provider (and no tabs). if (self.initStage >= InitStageBrowserObjectsForUI) { for (SceneState* sceneState in self.connectedScenes) { - sceneState.browserProviderInterface.currentBrowserProvider - .userInteractionEnabled = NO; + Browser* browser = + sceneState.browserProviderInterface.currentBrowserProvider.browser; + if (browser && WebUsageEnablerBrowserAgent::FromBrowser(browser)) { + WebUsageEnablerBrowserAgent::FromBrowser(browser)->SetWebUsageEnabled( + false); + } } }
diff --git a/ios/chrome/app/application_delegate/app_state_unittest.mm b/ios/chrome/app/application_delegate/app_state_unittest.mm index 53b290e..f26bb72 100644 --- a/ios/chrome/app/application_delegate/app_state_unittest.mm +++ b/ios/chrome/app/application_delegate/app_state_unittest.mm
@@ -38,6 +38,7 @@ #import "ios/chrome/browser/shared/public/features/system_flags.h" #import "ios/chrome/browser/ui/safe_mode/safe_mode_coordinator.h" #import "ios/chrome/browser/ui/settings/settings_navigation_controller.h" +#import "ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent.h" #import "ios/chrome/common/crash_report/crash_helper.h" #import "ios/chrome/test/block_cleanup_test.h" #import "ios/chrome/test/providers/app_distribution/test_app_distribution.h" @@ -336,16 +337,6 @@ std::unique_ptr<TestChromeBrowserState> browser_state_; }; -// Used to have a thread handling the closing of the IO threads. -class AppStateWithThreadTest : public PlatformTest { - protected: - AppStateWithThreadTest() - : task_environment_(web::WebTaskEnvironment::REAL_IO_THREAD) {} - - private: - web::WebTaskEnvironment task_environment_; -}; - #pragma mark - Tests. using AppStateNoFixtureTest = PlatformTest; @@ -381,42 +372,48 @@ } // Test that -applicationWillTerminate clears everything. -TEST_F(AppStateWithThreadTest, willTerminate) { +TEST_F(AppStateTest, willTerminate) { // Setup. ios::provider::test::ResetAppDistributionNotificationsState(); ASSERT_FALSE(ios::provider::test::AreAppDistributionNotificationsCanceled()); - id startupInformation = - [OCMockObject mockForProtocol:@protocol(StartupInformation)]; - [[startupInformation expect] stopChromeMain]; + [[GetStartupInformationMock() stub] setIsFirstRun:YES]; + [[[GetStartupInformationMock() stub] andReturnValue:@YES] isFirstRun]; - AppState* appState = - [[AppState alloc] initWithStartupInformation:startupInformation]; + [[GetStartupInformationMock() expect] stopChromeMain]; - id appStateMock = OCMPartialMock(appState); + AppState* appState = GetAppStateWithMock(); + + id appStateMock = OCMPartialMock(GetAppStateWithMock()); [[appStateMock expect] completeUIInitialization]; - [appState addAgent:[[SafeModeAppAgent alloc] init]]; - AppStateObserverToMockMainController* observer = - [AppStateObserverToMockMainController alloc]; - [appState addObserver:observer]; - // Start init stages. [appState startInitialization]; [appState queueTransitionToNextInitStage]; + // Initialize the WebUsageEnablerBrowserAgent for all scenes. + for (SceneState* connectedScene in appState.connectedScenes) { + Browser* test_browser = + connectedScene.browserProviderInterface.currentBrowserProvider.browser; + WebUsageEnablerBrowserAgent::CreateForBrowser(test_browser); + } + id application = [OCMockObject mockForClass:[UIApplication class]]; // Action. [appState applicationWillTerminate:application]; // Test. - EXPECT_OCMOCK_VERIFY(startupInformation); + EXPECT_OCMOCK_VERIFY(GetStartupInformationMock()); EXPECT_OCMOCK_VERIFY(application); + for (SceneState* connectedScene in appState.connectedScenes) { - EXPECT_FALSE(connectedScene.browserProviderInterface.mainBrowserProvider - .userInteractionEnabled); + Browser* browser = + connectedScene.browserProviderInterface.currentBrowserProvider.browser; + EXPECT_FALSE( + WebUsageEnablerBrowserAgent::FromBrowser(browser)->IsWebUsageEnabled()); } + EXPECT_TRUE(ios::provider::test::AreAppDistributionNotificationsCanceled()); }
diff --git a/ios/chrome/app/main_controller.mm b/ios/chrome/app/main_controller.mm index 46b393a..cbd9c65fe 100644 --- a/ios/chrome/app/main_controller.mm +++ b/ios/chrome/app/main_controller.mm
@@ -124,6 +124,7 @@ #import "ios/chrome/browser/ui/webui/chrome_web_ui_ios_controller_factory.h" #import "ios/chrome/browser/url_loading/model/url_loading_params.h" #import "ios/chrome/browser/web/model/certificate_policy_app_agent.h" +#import "ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent.h" #import "ios/chrome/common/app_group/app_group_constants.h" #import "ios/chrome/common/app_group/app_group_field_trial_version.h" #import "ios/chrome/common/app_group/app_group_utils.h" @@ -1470,10 +1471,12 @@ if (willShowActivityIndicator) { // User interaction still needs to be disabled as a way to // force reload all the web states and to reset NTPs. - browserProviderInterface.mainBrowserProvider.userInteractionEnabled = - NO; - browserProviderInterface.incognitoBrowserProvider - .userInteractionEnabled = NO; + WebUsageEnablerBrowserAgent::FromBrowser( + browserProviderInterface.mainBrowserProvider.browser) + ->SetWebUsageEnabled(false); + WebUsageEnablerBrowserAgent::FromBrowser( + browserProviderInterface.incognitoBrowserProvider.browser) + ->SetWebUsageEnabled(false); if (didShowActivityIndicator && browserProviderInterface.mainBrowserProvider.browser) { @@ -1484,9 +1487,12 @@ [handler hideActivityOverlay]; } } - browserProviderInterface.mainBrowserProvider.userInteractionEnabled = YES; - browserProviderInterface.incognitoBrowserProvider.userInteractionEnabled = - YES; + WebUsageEnablerBrowserAgent::FromBrowser( + browserProviderInterface.mainBrowserProvider.browser) + ->SetWebUsageEnabled(true); + WebUsageEnablerBrowserAgent::FromBrowser( + browserProviderInterface.incognitoBrowserProvider.browser) + ->SetWebUsageEnabled(true); [browserProviderInterface.currentBrowserProvider setPrimary:YES]; } // `completionBlock` is run once, not once per scene.
diff --git a/ios/chrome/app/strings/ios_strings.grd b/ios/chrome/app/strings/ios_strings.grd index cd1f19f..b5da46d 100644 --- a/ios/chrome/app/strings/ios_strings.grd +++ b/ios/chrome/app/strings/ios_strings.grd
@@ -3964,14 +3964,14 @@ <message name="IDS_IOS_SAVE_PASSWORD_TO_ACCOUNT_STORE_DESCRIPTION" desc="Description of save password in google account action. [iOS only]" meaning="Telling user that current password is in local device store and suggesting moving it to their google account store."> This password is saved only to this device. To use it on your other devices, save it in your Google Account, <ph name="EMAIL">$1<ex>johndoe@gmail.com</ex></ph>. </message> - <message name="IDS_IOS_SAVE_TO_DRIVE_ACCOUNT_PICKER_TITLE" desc="Dialog title to invite the user to pick an account to save a file to Google Drive. [iOS only]"> - Save in Google Drive + <message name="IDS_IOS_SAVE_TO_DRIVE_ACCOUNT_PICKER_TITLE" desc="Dialog title to invite the user to pick a destination for their download (e.g. Files or Drive) and if applicable (e.g. they choose Drive) an account to save a file as. [iOS only]"> + Save in... </message> - <message name="IDS_IOS_SAVE_TO_DRIVE_ACCOUNT_PICKER_BODY" desc="Text when a user attempts to download a file and save it to Google Drive, then is presented with the account picker dialog to select which account they want to use to save the file. [iOS only]" meaning="Text when a user attempts to download a file and save it to Google Drive, then is presented with the account picker dialog to select which account they want to use to save the file. [iOS only]"> - Select the account you want to use to save <ph name="FILENAME">$1<ex>file.zip</ex></ph> + <message name="IDS_IOS_SAVE_TO_DRIVE_ACCOUNT_PICKER_BODY" desc="Text when a user attempts to download a file and is eligible to save it to Google Drive, then is presented with the account picker dialog to select a destination for their download, and if applicable e.g. they choose Drive as a destination, which account they want to use to save the file. [iOS only]" meaning="Text when a user attempts to download a file and is eligible to save it to Google Drive, then is presented with the account picker dialog to select a destination for their download, and if applicable e.g. they choose Drive as a destination, which account they want to use to save the file. [iOS only]"> + Choose where to save <ph name="FILENAME">$1<ex>file.zip</ex></ph> </message> - <message name="IDS_IOS_SAVE_TO_DRIVE_ACCOUNT_PICKER_BODY_WITH_SIZE" desc="Text when a user attempts to download a file and save it to Google Drive, then is presented with the account picker dialog to select which account they want to use to save the file. [iOS only]" meaning="Text when a user attempts to download a file and save it to Google Drive, then is presented with the account picker dialog to select which account they want to use to save the file. [iOS only]"> - Select the account you want to use to save <ph name="FILENAME">$1<ex>file.zip</ex></ph> (<ph name="FILE_SIZE">$2<ex>456KB</ex></ph>) + <message name="IDS_IOS_SAVE_TO_DRIVE_ACCOUNT_PICKER_BODY_WITH_SIZE" desc="Text when a user attempts to download a file and is eligible to save it to Google Drive, then is presented with the account picker dialog to select a destination for their download, and if applicable e.g. they choose Drive as a destination, which account they want to use to save the file. [iOS only]" meaning="Text when a user attempts to download a file and is eligible to save it to Google Drive, then is presented with the account picker dialog to select a destination for their download, and if applicable e.g. they choose Drive as a destination, which account they want to use to save the file. [iOS only]"> + Choose where to save <ph name="FILENAME">$1<ex>file.zip</ex></ph> (<ph name="FILE_SIZE">$2<ex>456KB</ex></ph>) </message> <message name="IDS_IOS_SAVE_TO_DRIVE_ACCOUNT_PICKER_SUBMIT" desc="Dialog primary button label to validate the account picked to save a file to Google Drive. [iOS only]" meaning="This button saves the file to the user's Google Drive storage i.e. this means 'Save' as in 'Save in Google Drive'."> Save @@ -4977,7 +4977,7 @@ Last Tab Used on <ph name="SOURCE_DEVICE">$1<ex>iPad</ex></ph> </message> <message name="IDS_IOS_TAB_RESUMPTION_CONTEXT_MENU_DESCRIPTION" desc="Descripiton for the long-press context menu of the module that presents the last opened tab, on the new tab page."> - Hide "Continue Browsing" + Hide "Continue with This Tab" </message> <message name="IDS_IOS_TAB_RESUMPTION_CONTEXT_MENU_TITLE" desc="Title for the long-press context menu of the module that presents the last opened tab, on the new tab page."> This card shows your last used open tab across all your synced devices within the last 24 hours. @@ -4991,8 +4991,8 @@ <message name="IDS_IOS_TAB_RESUMPTION_TILE_HOST_LABEL" desc="Label that displays the name of the last synced device. This module presents the last open tab, on the new tab page."> From "<ph name="SOURCE_DEVICE">$1<ex>iPad</ex></ph>" </message> - <message name="IDS_IOS_TAB_RESUMPTION_TITLE" desc="Title for the module that presents the last opened tab, on the new tab page."> - Continue Browsing + <message name="IDS_IOS_TAB_RESUMPTION_TITLE" desc="Title for the module that presents the last opened tab, on the new tab page." meaning="This is mostly in title case, iOS only."> + Continue with This Tab </message> <message name="IDS_IOS_TAB_STRIP_ENTER_TAB_SWITCHER" desc="The accessibility label of the tab strip button to enter the tab switcher. The tab switcher is a view showing the opened tabs, and allows users to switch, close, and open new tabs. [iOS only]"> Enter Tab Switcher @@ -5581,6 +5581,9 @@ <message name="IDS_IOS_WHATS_NEW_IPH_TEXT" desc="An in product help message to inform the user about the feature What's New."> Explore new features and tips in What’s New </message> + <message name="IDS_IOS_WHATS_NEW_IPHONE_ONLY_TITLE" desc="Title of a label in the What's New instructions notifies the user that the feature is exclusively available on iPhone."> + Only available on iPhone + </message> <message name="IDS_IOS_WHATS_NEW_LEARN_MORE_ACTION_TITLE" desc="Label of the button for users to learn more about a feature or a chrome tip."> Learn More </message>
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SAVE_TO_DRIVE_ACCOUNT_PICKER_BODY.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SAVE_TO_DRIVE_ACCOUNT_PICKER_BODY.png.sha1 index 13e073c..e5eaf7df 100644 --- a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SAVE_TO_DRIVE_ACCOUNT_PICKER_BODY.png.sha1 +++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SAVE_TO_DRIVE_ACCOUNT_PICKER_BODY.png.sha1
@@ -1 +1 @@ -f17446697c61d8469c5585cb3cd1d6171d5048c9 \ No newline at end of file +4d3d10f5b3e851ab8ab4b6a51eeb2888932ee632 \ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SAVE_TO_DRIVE_ACCOUNT_PICKER_BODY_WITH_SIZE.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SAVE_TO_DRIVE_ACCOUNT_PICKER_BODY_WITH_SIZE.png.sha1 index d6babdd..e5eaf7df 100644 --- a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SAVE_TO_DRIVE_ACCOUNT_PICKER_BODY_WITH_SIZE.png.sha1 +++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SAVE_TO_DRIVE_ACCOUNT_PICKER_BODY_WITH_SIZE.png.sha1
@@ -1 +1 @@ -24249118e6b91e0d78712748c424cfe8ea50b415 \ No newline at end of file +4d3d10f5b3e851ab8ab4b6a51eeb2888932ee632 \ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SAVE_TO_DRIVE_ACCOUNT_PICKER_TITLE.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SAVE_TO_DRIVE_ACCOUNT_PICKER_TITLE.png.sha1 index 13e073c..7278a04b 100644 --- a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SAVE_TO_DRIVE_ACCOUNT_PICKER_TITLE.png.sha1 +++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SAVE_TO_DRIVE_ACCOUNT_PICKER_TITLE.png.sha1
@@ -1 +1 @@ -f17446697c61d8469c5585cb3cd1d6171d5048c9 \ No newline at end of file +109619fe2e8d9c42bc72a762c351a27b0a608474 \ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_TAB_RESUMPTION_CONTEXT_MENU_DESCRIPTION.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_TAB_RESUMPTION_CONTEXT_MENU_DESCRIPTION.png.sha1 index 19a5166..e28a0a3 100644 --- a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_TAB_RESUMPTION_CONTEXT_MENU_DESCRIPTION.png.sha1 +++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_TAB_RESUMPTION_CONTEXT_MENU_DESCRIPTION.png.sha1
@@ -1 +1 @@ -87ef528e21051ddd70ce5c432e618e1d676c7195 \ No newline at end of file +d5ddbcda539bf32bd8d9bc964e6fda5ce32671b6 \ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_TAB_RESUMPTION_TITLE.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_TAB_RESUMPTION_TITLE.png.sha1 index 187b120..e28a0a3 100644 --- a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_TAB_RESUMPTION_TITLE.png.sha1 +++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_TAB_RESUMPTION_TITLE.png.sha1
@@ -1 +1 @@ -5f9f74be9bb5fb66bfed37d2a47aa4d867b4ef8a \ No newline at end of file +d5ddbcda539bf32bd8d9bc964e6fda5ce32671b6 \ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_WHATS_NEW_IPHONE_ONLY_TITLE.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_WHATS_NEW_IPHONE_ONLY_TITLE.png.sha1 new file mode 100644 index 0000000..5d1b3a5c --- /dev/null +++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_WHATS_NEW_IPHONE_ONLY_TITLE.png.sha1
@@ -0,0 +1 @@ +3bf2f8c7a330bc234d34317c6106c413c8e036fd \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_af.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_af.xtb index 73e1d61..828c82d 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_af.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_af.xtb
@@ -283,6 +283,7 @@ <translation id="8776843108004031667">Hierdie rekening en enige ongstoorde data sal uit Chromium verwyder word.</translation> <translation id="88376265765385899">Maak die Chromium-boekmerke oop.</translation> <translation id="8860548555286245440">Maak URL’e in Chromium in Incognitomodus oop</translation> +<translation id="8866191443434488382">Chromium sal naspoornommers op werwe bespeur wat jy besoek en vir jou pakkie-opdaterings op die Nuwe Oortjie-bladsy wys. Die pakkienaspoornommer en webwerfnaam sal na Chromium gestuur word om hierdie kenmerk beskikbaar te maak en om inkopiekenmerke vir almal te verbeter. Jy kan dit enige tyd in <ph name="BEGIN_LINK" />Pakkienasporinginstellings<ph name="END_LINK" /> opdateer.</translation> <translation id="8909995017390087892">Chromium vir iOS</translation> <translation id="8924617840944134898">Maak Incognito-oortjie op Chromium oop</translation> <translation id="894437814105052438">Chromium sal nie enige nuwe data na jou Google-rekening sinkroniseer nadat jy afgemeld het nie. Data wat voorheen gesinkroniseer is, bly in hierdie rekening.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_am.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_am.xtb index cd87bd58..69bed95 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_am.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_am.xtb
@@ -101,6 +101,7 @@ <translation id="3955621079070267756">ከማንኛውም መተግበሪያ Chromiumን ይክፈቱ</translation> <translation id="4005283307739974863">በChromium ውስጥ የደህንነት ፍተሻን ይከፍታል እና ያሄዳል።</translation> <translation id="4043291146360695975">የይለፍ ቃላት የሚቀመጡት በዚህ መሣሪያ ላይ ብቻ ባለው የይለፍ ቃል አስተዳዳሪ ላይ ነው።</translation> +<translation id="4076589763479456892">የይለፍ ሐረግዎን ከረሱ ወይም ይህን ቅንብር መለወጥ ከፈለጉ፣ <ph name="BEGIN_LINK" />በመለያዎ ውስጥ ያለውን የChromium ውሂብ ያጽዱ<ph name="END_LINK" />።</translation> <translation id="4099085513035183040">በChromium ቅድመ-ይሁንታ ላይ አይደገፍም</translation> <translation id="4106512142782407609">እንደ <ph name="EMAIL" /> ሆነው ገብተዋል። @@ -152,6 +153,7 @@ <translation id="5534584691915394889">ይህ ከChromium እና Google ሌንስ በእርስዎ Apple ቀን መቁጠሪያ ውስጥ ክስተቶችን ለመፍጠር ሥራ ላይ ይውላል።</translation> <translation id="5571094606370987472">የChromium የቅርብ ጊዜ ትሮችን ይከፍታል።</translation> <translation id="5623083843656850677">ከChromium ሲወጡ ወይም ወደ ሌላ መተግበሪያ ሲቀይሩ የእርስዎን ማንነት የማያሳውቁ ትሮች ይቆልፉ።</translation> +<translation id="5671188105328420281">የChromium ጠቃሚ ምክሮች</translation> <translation id="5688047395118852662">ይህ ካርድ እንዴት ከChromium ምርጡን ማግኘት እንደሚችሉ ጥቆማዎችን ያሳይዎታል።</translation> <translation id="5700709190537129682">Chromium የእርስዎን የይለፍ ቃላት መፈተሽ አይችልም</translation> <translation id="5777187867430702742">የChromium ገፅ</translation> @@ -280,6 +282,7 @@ <translation id="8776843108004031667">ይህ መለያ እና ማንኛውም ያልተቀመጠ ውሂብ ከChromium ይወገዳል።</translation> <translation id="88376265765385899">የChromium እልባቶችን ይከፍታል።</translation> <translation id="8860548555286245440">የማይታወቁ ዩአርኤልዎችን በማንነት የማያሳውቅ Chromium ይክፈቱ</translation> +<translation id="8866191443434488382">Chromium በሚጎበኟቸው ጣቢያዎች ላይ ያሉ የመከታተያ ቁጥሮች ለይቶ ያውቃል እና በአዲሱ የትር ገፅ ላይ የጥቅል ዝማኔዎች ያሳይዎታል። ይህንን ባህሪ ለማቅረብ እና ለሁሉም ሰው የግዢ ባህሪያትን ለማሻሻል የጥቅል መከታተያ ቁጥሩ እና የድር ጣቢያው ስም ወደ Chromium ይላካል። ይህንን በማንኛውም ጊዜ <ph name="BEGIN_LINK" />በጥቅል መከታተያ ቅንብሮች<ph name="END_LINK" /> ውስጥ ማዘመን ይችላሉ።</translation> <translation id="8909995017390087892">Chromium ለiOS</translation> <translation id="8924617840944134898">የChromium ማንነት የማያሳውቅ ትርን ክፈት</translation> <translation id="894437814105052438">ዘግተው ሲወጡ Chromium ማንኛውም አዲስ ውሂብ ከGoogle መለያዎ ጋር አያሰምርም። ከዚህ ቀደም የሰመረ ውሂብ በመለያው ውስጥ ይቆያል።</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_as.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_as.xtb index 8d72c90..fda24653 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_as.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_as.xtb
@@ -102,6 +102,7 @@ <translation id="3955621079070267756">যিকোনো এপৰ পৰা Chromium খোলক</translation> <translation id="4005283307739974863">Chromiumত সুৰক্ষা পৰীক্ষা খোলে আৰু চলায়।</translation> <translation id="4043291146360695975">পাছৱৰ্ডসমূহ কেৱল এই ডিভাইচটোত থকা পাছৱৰ্ড পৰিচালকত ছেভ কৰা হয়।</translation> +<translation id="4076589763479456892">আপুনি যদি নিজৰ পাছফ্ৰে’জটো পাহৰিছে অথবা এই ছেটিংটো সলাব বিচাৰে, <ph name="BEGIN_LINK" />আপোনাৰ একাউণ্টৰ Chromiumৰ ডেটা মচক<ph name="END_LINK" />।</translation> <translation id="4099085513035183040">Chromium বিটাত সমৰ্থিত নহয়</translation> <translation id="4106512142782407609"><ph name="EMAIL" /> হিচাপে ছাইন ইন কৰিছে। @@ -153,6 +154,7 @@ <translation id="5534584691915394889">Chromium আৰু Google Lensৰ পৰা আপোনাৰ Apple Calendarত অনুষ্ঠান সৃষ্টি কৰিবলৈ এইটো ব্যৱহাৰ কৰা হ’ব।</translation> <translation id="5571094606370987472">Chromiumৰ শেহতীয়া টেব খোলে।</translation> <translation id="5623083843656850677">আপুনি Chromiumৰ পৰা বাহিৰ ওলালে অথবা অন্য কোনো এপ্ ব্যৱহাৰ কৰিলে আপোনাৰ ইনক’গনিট’ টেবসমূহ লক কৰক।</translation> +<translation id="5671188105328420281">Chromiumৰ কিটিপ</translation> <translation id="5688047395118852662">এই কাৰ্ডখনে আপোনাক Chromiumৰ পৰা কেনেকৈ পাৰ্যমানে উপকৃত হ’ব পাৰি তাৰ পৰামৰ্শ দেখুৱায়।</translation> <translation id="5700709190537129682">Chromiumএ আপোনাৰ পাছৱর্ডসমূহ পৰীক্ষা কৰিব নোৱাৰে</translation> <translation id="5777187867430702742">Chromium পৃষ্ঠা</translation> @@ -281,6 +283,7 @@ <translation id="8776843108004031667">এই একাউণ্টটো আৰু যিকোনো ছেভ নকৰা ডেটা Chromiumৰ পৰা আঁতৰোৱা হ’ব।</translation> <translation id="88376265765385899">Chromiumৰ বুকমাৰ্কসমূহ খোলে।</translation> <translation id="8860548555286245440">ইনক’গনিট’ত Chromiumত URL খোলক</translation> +<translation id="8866191443434488382">Chromiumএ আপুনি চোৱা ছাইটসমূহত ট্ৰেকিং নম্বৰ চিনাক্ত কৰিব আৰু আপোনাক নতুন টেবৰ পৃষ্ঠাখনত পেকেজৰ আপডে’ট দেখুৱাব। এই সুবিধাটো প্ৰদান কৰিবলৈ আৰু সকলোৰে বাবে বজাৰ কৰাৰ সুবিধা উন্নত কৰিবলৈ পেকেজ ট্ৰেকিং নম্বৰ আৰু ৱেবছাইটৰ নাম Chromiumলৈ পঠিওৱা হ’ব। আপুনি <ph name="BEGIN_LINK" />পেকেজ ট্ৰেকিঙৰ ছেটিঙ<ph name="END_LINK" />ত যিকোনো সময়তে এইটো আপডে’ট কৰিব পাৰে।</translation> <translation id="8909995017390087892">iOSৰ বাবে Chromium</translation> <translation id="8924617840944134898">Chromium ইনক’গ্নিট’ টেব খোলক</translation> <translation id="894437814105052438">আপুনি ছাইন আউট কৰিলে Chromiumএ আপোনাৰ Google একাউণ্টত কোনো নতুন ডেটা ছিংক নকৰিব। পূৰ্বে ছিংক কৰা ডেটাখিনি একাউণ্টটোতে থাকে।</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_be.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_be.xtb index 9bbccef..ff195154 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_be.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_be.xtb
@@ -283,6 +283,7 @@ <translation id="8776843108004031667">Гэты ўліковы запіс і ўсе незахаваныя даныя будуць выдалены з браўзера Chromium.</translation> <translation id="88376265765385899">Дазваляе адкрыць закладкі Chromium.</translation> <translation id="8860548555286245440">Адкрыць URL-адрасы ў Chromium інкогніта</translation> +<translation id="8866191443434488382">Chromium будзе выяўляць нумары для адсочвання на сайтах, якія вы наведваеце, і паказваць актуальную інфармацыю пра пасылкі ў новай укладцы. Нумар для адсочвання пасылкі і назва вэб-сайта будуць перадавацца ў Google, каб забяспечыць працу гэтай функцыі і палепшыць шопінг для ўсіх карыстальнікаў. Вы ў любы час можаце змяніць выбраныя параметры ў <ph name="BEGIN_LINK" />наладах адсочвання пасылак<ph name="END_LINK" />.</translation> <translation id="8909995017390087892">Chromium для iOS</translation> <translation id="8924617840944134898">Адкрыць у Chromium укладку ў рэжыме інкогніта</translation> <translation id="894437814105052438">Калі вы выйдзеце з Уліковага запісу Google, Chromium перастане сінхранізаваць з ім новыя даныя. Даныя, сінхранізаваныя раней, застануцца ва ўліковым запісе.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_bg.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_bg.xtb index 924fbe7..2413314c 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_bg.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_bg.xtb
@@ -283,6 +283,7 @@ <translation id="8776843108004031667">Този профил и всички незапазени данни ще бъдат премахнати от Chromium.</translation> <translation id="88376265765385899">Отваря отметките в Chromium.</translation> <translation id="8860548555286245440">Отваряне на URL адресите в режим „инкогнито“ на Chromium</translation> +<translation id="8866191443434488382">Chromium ще открива проследяващите номера на сайтовете, които посещавате, и ще ви показва актуална информация за съответните пратки в нов раздел. Номерът за проследяване на пратката и името на уебсайта ще бъдат изпратени до Chromium с цел предоставяне на тази функция и подобряване на функциите за пазаруване за всички. Можете да актуализирате това по всяко време от <ph name="BEGIN_LINK" />настройките за проследяване на пратки<ph name="END_LINK" />.</translation> <translation id="8909995017390087892">Chromium за iOS</translation> <translation id="8924617840944134898">Отваряне на раздел в Chromium в режим „инкогнито“</translation> <translation id="894437814105052438">Когато излезете от профила си, Chromium няма да синхронизира новите данни с профила ви в Google. Синхронизираните по-рано данни продължават да се съхраняват в профила ви.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ca.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ca.xtb index 0aee70b..634e253 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_ca.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ca.xtb
@@ -102,6 +102,7 @@ <translation id="3955621079070267756">Obre Chromium des de qualsevol aplicació</translation> <translation id="4005283307739974863">Obre i executa la comprovació de seguretat a Chromium.</translation> <translation id="4043291146360695975">Les contrasenyes es desen al gestor de contrasenyes només en aquest dispositiu.</translation> +<translation id="4076589763479456892">Si has oblidat la frase de contrasenya o vols canviar aquesta opció de configuració, <ph name="BEGIN_LINK" />esborra les dades de Chromium del compte<ph name="END_LINK" />.</translation> <translation id="4099085513035183040">No s'admeten a la versió beta de Chromium</translation> <translation id="4106512142782407609">Has iniciat la sessió com a <ph name="EMAIL" />. @@ -153,6 +154,7 @@ <translation id="5534584691915394889">S'utilitzarà per crear esdeveniments al teu Calendari d'Apple des de Chromium i Google Lens.</translation> <translation id="5571094606370987472">Obre les pestanyes recents de Chromium.</translation> <translation id="5623083843656850677">Bloqueja les pestanyes d'incògnit quan surtis de Chromium o quan canviïs d'aplicació.</translation> +<translation id="5671188105328420281">Consells per a Chromium</translation> <translation id="5688047395118852662">Aquesta targeta mostra suggeriments sobre com pots treure el màxim profit de Chromium.</translation> <translation id="5700709190537129682">Chromium no pot comprovar les teves contrasenyes</translation> <translation id="5777187867430702742">Pàgina de Chromium</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_cs.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_cs.xtb index d32a335..b292356 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_cs.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_cs.xtb
@@ -101,6 +101,7 @@ <translation id="3955621079070267756">Otevírejte Chromium z libovolné aplikace</translation> <translation id="4005283307739974863">Otevře a spustí bezpečnostní kontrolu v prohlížeči Chromium.</translation> <translation id="4043291146360695975">Hesla se ukládají pouze do Správce hesel na tomto zařízení.</translation> +<translation id="4076589763479456892">Pokud heslovou frázi zapomenete nebo toto nastavení budete chtít změnit, <ph name="BEGIN_LINK" />vymažte data prohlížeče Chromium ve svém účtu<ph name="END_LINK" />.</translation> <translation id="4099085513035183040">V beta verzi prohlížeče Chromium není podporováno</translation> <translation id="4106512142782407609">Jste přihlášeni jako <ph name="EMAIL" />. @@ -152,6 +153,7 @@ <translation id="5534584691915394889">Tyto údaje poslouží k vytváření událostí v Kalendáři Apple z prohlížeče Chromium a z Google Lens.</translation> <translation id="5571094606370987472">Otevře nedávno použité karty prohlížeče Chromium.</translation> <translation id="5623083843656850677">Uzamkněte anonymní karty, když prohlížeč Chromium opustíte nebo přejdete do jiné aplikace.</translation> +<translation id="5671188105328420281">Tipy pro Chromium</translation> <translation id="5688047395118852662">Tato karta zobrazuje návrhy, jak Chromium využít na maximum.</translation> <translation id="5700709190537129682">Chromium nemůže zkontrolovat hesla</translation> <translation id="5777187867430702742">Stránka prohlížeče Chromium</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_cy.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_cy.xtb index 595671e..a423097 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_cy.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_cy.xtb
@@ -283,6 +283,7 @@ <translation id="8776843108004031667">Bydd y cyfrif hwn ac unrhyw ddata sydd heb eu cadw yn cael eu tynnu o Chromium.</translation> <translation id="88376265765385899">Yn agor y nodau tudalen Chromium.</translation> <translation id="8860548555286245440">Agor cyfeiriadau URL yn Chromium yn y modd Anhysbys</translation> +<translation id="8866191443434488382">Bydd Chromium yn canfod rhifau olrhain ar wefannau rydych chi'n ymweld â nhw ac yn dangos diweddariadau pecyn ar y dudalen Tab Newydd. Bydd y rhif olrhain pecyn ac enw'r wefan yn cael eu hanfon i Chromium i ddarparu'r nodwedd hon ac i wella nodweddion siopa i bawb. Gallwch ddiweddaru hwn yn y <ph name="BEGIN_LINK" />Gosodiadau Olrhain Pecyn<ph name="END_LINK" />.</translation> <translation id="8909995017390087892">Chromium ar gyfer iOS</translation> <translation id="8924617840944134898">Agor Tab Anhysbys Chromium</translation> <translation id="894437814105052438">Pan fyddwch yn allgofnodi, ni fydd Chromium yn cysoni unrhyw ddata newydd i'ch Cyfrif Google. Mae data sydd wedi'u cysoni yn flaenorol yn aros yn y cyfrif.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_da.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_da.xtb index 2309c184..7d1e3a4 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_da.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_da.xtb
@@ -283,6 +283,7 @@ <translation id="8776843108004031667">Denne konto og data, som ikke er gemt, fjernes fra Chromium.</translation> <translation id="88376265765385899">Åbner Chromium-bogmærkerne.</translation> <translation id="8860548555286245440">Åbn webadresser i Chromium i inkognitotilstand</translation> +<translation id="8866191443434488382">Chromium registrerer sporingsnumre på de websites, du besøger, og viser dig pakkeopdateringer på siden Ny fane. Pakkesporingsnummeret og websitets navn sendes til Chromium for at levere denne funktion og forbedre shoppingfunktioner for alle. Du kan til enhver tid opdatere dette i <ph name="BEGIN_LINK" />indstillingerne for pakkesporing<ph name="END_LINK" />.</translation> <translation id="8909995017390087892">Chromium til iOS</translation> <translation id="8924617840944134898">Åbn inkognitofane i Chromium</translation> <translation id="894437814105052438">Når du er logget ud, synkroniserer Chromium ikke nye data med din Google-konto. De data, der tidligere er blevet synkroniseret, forbliver på din konto.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_en-GB.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_en-GB.xtb index 640461a..9f04b17 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_en-GB.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_en-GB.xtb
@@ -102,6 +102,7 @@ <translation id="3955621079070267756">Open Chromium from any app</translation> <translation id="4005283307739974863">Opens and Runs Safety Check in Chromium.</translation> <translation id="4043291146360695975">Passwords are saved to Password Manager on this device only.</translation> +<translation id="4076589763479456892">If you forgot your passphrase or want to change this setting, <ph name="BEGIN_LINK" />clear the Chromium data in your account<ph name="END_LINK" />.</translation> <translation id="4099085513035183040">Not supported on Chromium beta</translation> <translation id="4106512142782407609">Signed in as <ph name="EMAIL" />. @@ -153,6 +154,7 @@ <translation id="5534584691915394889">This will be used to create events in your Apple Calendar from Chromium and Google Lens.</translation> <translation id="5571094606370987472">Opens the Chromium Recent Tabs.</translation> <translation id="5623083843656850677">Lock your Incognito tabs when you leave Chromium or switch to a different app.</translation> +<translation id="5671188105328420281">Chromium tips</translation> <translation id="5688047395118852662">This card shows you suggestions on how to get the most out of Chromium.</translation> <translation id="5700709190537129682">Chromium can't check your passwords</translation> <translation id="5777187867430702742">Chromium page</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_et.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_et.xtb index 26150c1e..bbe66e02 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_et.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_et.xtb
@@ -283,6 +283,7 @@ <translation id="8776843108004031667">See konto ja kõik salvestamata andmed eemaldatakse Chromiumist.</translation> <translation id="88376265765385899">Avab Chromiumi järjehoidjad.</translation> <translation id="8860548555286245440">Ava URL-id Chromiumis inkognito režiimis</translation> +<translation id="8866191443434488382">Chromium tuvastab teie külastatud saitidel jälgimiskoodid. Kui avate uue vahelehe, kuvatakse saadetise uusim olek. Selle funktsiooni pakkumiseks ja ostufunktsioonide kõigi jaoks paremaks muutmiseks edastatakse paki jälgimiskood ja veebisaidi nimi Chromiumile. Saate seda muuta <ph name="BEGIN_LINK" />pakkide jälgimise seadetes<ph name="END_LINK" />.</translation> <translation id="8909995017390087892">Chromium iOS-ile</translation> <translation id="8924617840944134898">Chromiumi inkognito vahelehe avamine</translation> <translation id="894437814105052438">Väljalogimisel ei sünkrooni Chromium teie Google'i kontoga uusi andmeid. Varem sünkroonitud andmed jäävad kontole.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_fa.xtb index f82735f..bb88a4f8 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_fa.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_fa.xtb
@@ -283,6 +283,7 @@ <translation id="8776843108004031667">این حساب و همه دادههای ذخیرهنشده از Chromium برداشته میشود.</translation> <translation id="88376265765385899">نشانکهای Chromium را باز میکند.</translation> <translation id="8860548555286245440">باز کردن نشانیهای وب در Chromium درحالت «ناشناس»</translation> +<translation id="8866191443434488382">Chromium شمارههای رهگیری را در سایتهایی که از آنها بازدید میکنید شناسایی میکند و بهروزرسانیهای بسته را در صفحه «برگه جدید» نشان میدهد. برای ارائه این ویژگی و بهبود ویژگیهای خرید برای همه، شماره رهگیری بسته و نام وبسایت به Chromium ارسال میشود. هرزمان خواستید میتوانید این مورد را در <ph name="BEGIN_LINK" />تنظیمات رهگیری بسته<ph name="END_LINK" /> بهروزرسانی کنید.</translation> <translation id="8909995017390087892">Chromium برای iOS</translation> <translation id="8924617840944134898">باز کردن برگه ناشناس Chromium</translation> <translation id="894437814105052438">وقتی از سیستم خارج شوید، Chromium هیچکدام از دادههای جدید را با «حساب Google» شما همگامسازی نخواهد کرد. دادههایی که قبلاً همگامسازی شدهاند در حساب میمانند.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_fil.xtb index cd23a50e..48b07e06 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_fil.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_fil.xtb
@@ -283,6 +283,7 @@ <translation id="8776843108004031667">Aalisin sa Chromium ang account na ito at anumang hindi naka-save na data.</translation> <translation id="88376265765385899">Mabubuksan ang mga bookmark sa Chromium.</translation> <translation id="8860548555286245440">Buksan ang mga URL sa Chromium sa Incognito</translation> +<translation id="8866191443434488382">Made-detect ng Chromium ang mga tracking number sa mga site na binibisita mo at magpapakita ito sa iyo ng mga update sa package sa page na Bagong Tab. Ipapadala sa Chromium ang tracking number ng package at pangalan ng website para maibigay ang feature na ito at para mapahusay ang mga feature para sa shopping para sa lahat. Puwede mo itong i-update anumang oras sa <ph name="BEGIN_LINK" />Mga Setting ng Pagsubaybay sa Package<ph name="END_LINK" />.</translation> <translation id="8909995017390087892">Chromium para sa iOS</translation> <translation id="8924617840944134898">Magbukas ng Tab na Incognito sa Chromium</translation> <translation id="894437814105052438">Kapag nag-sign out ka, hindi magsi-sync ang Chromium ng anumang bagong data sa iyong Google Account. Mananatili sa account ang data na dati nang na-sync.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_fr.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_fr.xtb index 703ddf4c..105c87e 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_fr.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_fr.xtb
@@ -102,6 +102,7 @@ <translation id="3955621079070267756">Ouvrir Chromium depuis n'importe quelle appli</translation> <translation id="4005283307739974863">Lance le contrôle de sécurité dans Chromium.</translation> <translation id="4043291146360695975">Les mots de passe sont enregistrés dans le Gestionnaire de mots de passe uniquement sur cet appareil.</translation> +<translation id="4076589763479456892">Si vous avez oublié votre phrase secrète ou si vous souhaitez modifier ce paramètre, <ph name="BEGIN_LINK" />effacez les données Chromium de votre compte<ph name="END_LINK" />.</translation> <translation id="4099085513035183040">Non disponible dans la version bêta de Chromium</translation> <translation id="4106512142782407609">Connecté en tant que <ph name="EMAIL" />. @@ -153,6 +154,7 @@ <translation id="5534584691915394889">Cela permettra de créer des événements dans votre calendrier Apple à partir de Chromium et de Google Lens.</translation> <translation id="5571094606370987472">Ouvre les onglets récents de Chromium.</translation> <translation id="5623083843656850677">Verrouillez vos onglets de navigation privée lorsque vous quittez Chromium ou passez à une autre appli.</translation> +<translation id="5671188105328420281">Astuces Chromium</translation> <translation id="5688047395118852662">Cette fiche vous propose des suggestions pour tirer le meilleur parti de Chromium.</translation> <translation id="5700709190537129682">Chromium ne parvient pas à vérifier vos mots de passe</translation> <translation id="5777187867430702742">Page Chromium</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_id.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_id.xtb index fd87fe2..047260d 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_id.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_id.xtb
@@ -283,6 +283,7 @@ <translation id="8776843108004031667">Akun ini dan semua data yang tidak disimpan akan dihapus dari Chromium.</translation> <translation id="88376265765385899">Membuka bookmark Chromium.</translation> <translation id="8860548555286245440">Buka URL di Chromium dalam mode Samaran</translation> +<translation id="8866191443434488382">Chromium akan mendeteksi nomor pelacakan di situs yang Anda buka dan menampilkan info terbaru terkait paket di halaman Tab Baru. Nomor pelacakan paket dan nama situs akan dikirim ke Chromium untuk menyediakan fitur ini dan meningkatkan kualitas fitur belanja bagi semua orang. Anda dapat memperbaruinya kapan saja di <ph name="BEGIN_LINK" />Setelan Pelacakan Paket<ph name="END_LINK" />.</translation> <translation id="8909995017390087892">Chromium untuk iOS</translation> <translation id="8924617840944134898">Buka Tab Samaran Chromium</translation> <translation id="894437814105052438">Jika Anda logout, Chromium tidak akan menyinkronkan data baru apa pun ke Akun Google Anda. Data yang sebelumnya disinkronkan tetap tersimpan di akun.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_it.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_it.xtb index 3f27369..48d2e3b 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_it.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_it.xtb
@@ -102,6 +102,7 @@ <translation id="3955621079070267756">Apri Chromium da qualsiasi app</translation> <translation id="4005283307739974863">Apre ed esegue il controllo di sicurezza in Chromium.</translation> <translation id="4043291146360695975">Le password vengono salvate in Gestore delle password solo su questo dispositivo.</translation> +<translation id="4076589763479456892">Se dimentichi la passphrase o vuoi modificare questa impostazione, <ph name="BEGIN_LINK" />cancella i dati di Chromium nel tuo account<ph name="END_LINK" />.</translation> <translation id="4099085513035183040">Non supportata su Chromium beta</translation> <translation id="4106512142782407609">Accesso eseguito come <ph name="EMAIL" />. @@ -153,6 +154,7 @@ <translation id="5534584691915394889">Verranno creati eventi nel tuo Calendario Apple da Chromium e Google Lens.</translation> <translation id="5571094606370987472">Apre le schede recenti di Chromium.</translation> <translation id="5623083843656850677">Blocca le schede di navigazione in incognito quando esci da Chromium o passi a un'altra app.</translation> +<translation id="5671188105328420281">Suggerimenti per Chromium</translation> <translation id="5688047395118852662">In questa scheda vengono mostrati suggerimenti su come utilizzare al meglio Chromium.</translation> <translation id="5700709190537129682">Chromium non può controllare le tue password</translation> <translation id="5777187867430702742">Pagina di Chromium</translation> @@ -283,6 +285,7 @@ <translation id="8776843108004031667">Questo account e gli eventuali dati non salvati verranno rimossi da Chromium.</translation> <translation id="88376265765385899">Consente di aprire i preferiti di Chromium.</translation> <translation id="8860548555286245440">Apri gli URL in Chromium in incognito</translation> +<translation id="8866191443434488382">Chromium rileverà i numeri di riferimento sui siti che visiti e mostrerà gli aggiornamenti relativi ai pacchetti nella pagina Nuova scheda. Il numero per il monitoraggio della spedizione e il nome del sito web verranno inviati a Chromium per fornire questa funzionalità e migliorare le funzionalità di acquisto per tutti. Puoi aggiornarli in qualsiasi momento nelle <ph name="BEGIN_LINK" />impostazioni di monitoraggio della spedizione<ph name="END_LINK" />.</translation> <translation id="8909995017390087892">Chromium per iOS</translation> <translation id="8924617840944134898">Apri scheda di navigazione in incognito di Chromium</translation> <translation id="894437814105052438">Se esci, Chromium non sincronizzerà gli eventuali nuovi dati con il tuo Account Google. I dati sincronizzati in precedenza rimangono memorizzati nell'account.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_iw.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_iw.xtb index 0f12943..f683ea2a 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_iw.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_iw.xtb
@@ -283,6 +283,7 @@ <translation id="8776843108004031667">החשבון הזה וכל הנתונים שלא נשמרו יוסרו מ-Chromium.</translation> <translation id="88376265765385899">פתיחת הסימניות ב-Chromium.</translation> <translation id="8860548555286245440">פתיחת כתובות URL ב-Chromium במצב אנונימי</translation> +<translation id="8866191443434488382">Chromium יזהה מספרי מעקב באתרים שבהם ביקרת, ואפשר יהיה לראות עדכונים על חבילות בדף 'כרטיסייה חדשה'. מספר המעקב אחר החבילה ושם האתר יישלחו אל Chromium כדי לספק את התכונה הזו ולשפר את התכונות שקשורות לקניות לכולם. תמיד אפשר לעדכן את האפשרות הזו <ph name="BEGIN_LINK" />בהגדרות המעקב אחר חבילה<ph name="END_LINK" />.</translation> <translation id="8909995017390087892">Chromium ל-iOS</translation> <translation id="8924617840944134898">פתיחת כרטיסייה פרטית ב-Chromium</translation> <translation id="894437814105052438">לאחר היציאה מהחשבון, לא יתבצע סנכרון של נתונים חדשים מ-Chromium בחשבון Google שלך. נתונים שסונכרנו בעבר יישארו בחשבון.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ja.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ja.xtb index 9f518f68..673452b 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_ja.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ja.xtb
@@ -102,6 +102,7 @@ <translation id="3955621079070267756">他のアプリから Chromium を開く</translation> <translation id="4005283307739974863">Chromium で安全チェックを開いて実行します。</translation> <translation id="4043291146360695975">パスワードは、このデバイスのパスワード マネージャーにのみ保存されます。</translation> +<translation id="4076589763479456892">パスフレーズを忘れた場合や、この設定を変更する場合は、<ph name="BEGIN_LINK" />アカウントの Chromium データを消去<ph name="END_LINK" />してください。</translation> <translation id="4099085513035183040">Chromium ベータ版ではサポートされていません</translation> <translation id="4106512142782407609"><ph name="EMAIL" /> としてログインしています。 @@ -153,6 +154,7 @@ <translation id="5534584691915394889">Chromium や Google レンズから Apple カレンダーの予定を作成するために使用されます。</translation> <translation id="5571094606370987472">Chromium で最近使ったタブを開きます。</translation> <translation id="5623083843656850677">Chromium から離れたり、別のアプリに切り替えたりするときに、シークレット タブをロックできます。</translation> +<translation id="5671188105328420281">Chromium を使いこなすヒント</translation> <translation id="5688047395118852662">このカードでは、Chromium を最大限に活用するためのヒントを紹介しています。</translation> <translation id="5700709190537129682">Chromium でパスワードを確認できません</translation> <translation id="5777187867430702742">Chromium ページ</translation> @@ -283,6 +285,7 @@ <translation id="8776843108004031667">このアカウントと保存されていないデータは Chromium から削除されます。</translation> <translation id="88376265765385899">Chromium ブックマークを開きます。</translation> <translation id="8860548555286245440">シークレット モードの Chromium で URL を開く</translation> +<translation id="8866191443434488382">Chromium はアクセスしたサイトで追跡番号を検出し、新しいタブページに最新情報を表示します。荷物追跡番号とウェブサイト名は、この機能の提供とショッピング機能の改善を目的として、Chromium に送信されます。この設定は<ph name="BEGIN_LINK" />荷物追跡設定<ph name="END_LINK" />でいつでも変更できます。</translation> <translation id="8909995017390087892">iOS 版 Chromium</translation> <translation id="8924617840944134898">Chromium でシークレット タブを開く</translation> <translation id="894437814105052438">ログアウトすると、Chromium で新しいデータが Google アカウントと同期されなくなります。これまでに同期されたデータはアカウントに残ります。</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ka.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ka.xtb index 25ad4d9f..6979346 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_ka.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ka.xtb
@@ -102,6 +102,7 @@ <translation id="3955621079070267756">გახსენით Chromium ნებისმიერი აპიდან</translation> <translation id="4005283307739974863">გახსნის და გაუშვებს უსაფრთხოების შემოწმებას Chromium-ში.</translation> <translation id="4043291146360695975">პაროლები ინახება პაროლების მმართველში მხოლოდ ამ მოწყობილობაზე.</translation> +<translation id="4076589763479456892">საიდუმლო ფრაზის დავიწყების ან ამ პარამეტრის შეცვლის სურვილის შემთხვევაში, <ph name="BEGIN_LINK" />წაშალეთ Chromium მონაცემები თქვენს ანგარიშში<ph name="END_LINK" />.</translation> <translation id="4099085513035183040">მხარდაუჭერელია Chromium Beta-ში</translation> <translation id="4106512142782407609">შესული ხართ, როგორც <ph name="EMAIL" />. @@ -153,6 +154,7 @@ <translation id="5534584691915394889">ამის მეშვეობით შესაძლებელი გახდება, Chromium-ისა და Google Lens-ის მეშვეობით შექმნათ მოვლენები თქვენს Apple Calendar-ში.</translation> <translation id="5571094606370987472">გახსნის Chromium-ის ბოლოდროინდელ ჩანართებს.</translation> <translation id="5623083843656850677">ჩაკეტეთ ინკოგნიტო ჩანართები Chromium-იდან გასვლის ან სხვა აპზე გადართვის დროს.</translation> +<translation id="5671188105328420281">მინიშნებები Chromium-ისთვის</translation> <translation id="5688047395118852662">ამ ბარათზე მოცემულია რეკომენდაციები Chromium-ის შესაძლებლობების მაქსიმალურად გამოყენებასთან დაკავშირებით.</translation> <translation id="5700709190537129682">Chromium ვერ ახერხებს თქვენი პაროლების შემოწმებას</translation> <translation id="5777187867430702742">Chromium-ის გვერდი</translation> @@ -283,6 +285,7 @@ <translation id="8776843108004031667">ეს ანგარიში და შეუნახავი მონაცემები ამოიშლება Chromium-იდან.</translation> <translation id="88376265765385899">გახსნის Chromium-ის სანიშნეებს.</translation> <translation id="8860548555286245440">URL-ების Chromium-ში ინკოგნიტო რეჟიმში გახსნა</translation> +<translation id="8866191443434488382">Chromium აღმოაჩენს თვალის დევნებისთვის განკუთვნილ ნომრებს საიტებზე, რომლებსაც სტუმრობთ, შემდეგ კი მოგაწვდით ამანათებთან დაკავშირებულ ახალ ინფორმაციას „ახალი ჩანართის“ გვერდზე. ამანათისთვის თვალის დევნების ნომერი და ვებსაიტის სახელი გაეგზავნება Chromium-ს ამ ფუნქციის უზრუნველყოფისა და საყიდლებთან დაკავშირებული ფუნქციებით საყოველთაო გაუმჯობესების მიზნით. არჩევანის გაახლებას ნებისმიერ დროს შეძლებთ <ph name="BEGIN_LINK" />ამანათებისთვის თვალის დევნების პარამეტრებიდან<ph name="END_LINK" />.</translation> <translation id="8909995017390087892">Chromium (iOS-ისთვის)</translation> <translation id="8924617840944134898">ინკოგნიტო ჩანართის გახსნა Chromium-ში</translation> <translation id="894437814105052438">გასვლისას Chromium არ შეასრულებს ახალი მონაცემების სინქრონიზაციას თქვენს Google ანგარიშთან. ადრე სინქრონიზებული მონაცემები ანგარიშში დარჩება.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ko.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ko.xtb index 5e53ef683..4c9484c 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_ko.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ko.xtb
@@ -283,6 +283,7 @@ <translation id="8776843108004031667">이 계정 및 저장되지 않은 모든 데이터가 Chromium에서 삭제됩니다.</translation> <translation id="88376265765385899">Chromium 북마크를 엽니다.</translation> <translation id="8860548555286245440">Chromium에서 시크릿 모드로 URL 열기</translation> +<translation id="8866191443434488382">Chromium은 사용자가 방문한 사이트에서 운송장 번호를 감지하여 새 탭 페이지에 배송 현황을 표시합니다. 이 기능을 제공하고 모든 사용자를 위해 쇼핑 기능을 개선하기 위해 운송장 번호와 웹사이트 이름이 Chromium으로 전송됩니다. <ph name="BEGIN_LINK" />배송 추적 설정<ph name="END_LINK" />에서 언제든지 업데이트할 수 있습니다.</translation> <translation id="8909995017390087892">iOS용 Chromium</translation> <translation id="8924617840944134898">Chromium 시크릿 탭 열기</translation> <translation id="894437814105052438">로그아웃하면 Chromium에서 더 이상 새로운 데이터를 내 Google 계정에 동기화하지 않습니다. 이전에 동기화된 데이터는 계정에 그대로 유지됩니다.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_lo.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_lo.xtb index 69d669a2..80a31e4 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_lo.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_lo.xtb
@@ -284,6 +284,7 @@ <translation id="8776843108004031667">ບັນຊີນີ້ ແລະ ຂໍ້ມູນທີ່ບໍ່ໄດ້ບັນທຶກໄວ້ຕ່າງໆຈະຖືກລຶບອອກຈາກ Chromium.</translation> <translation id="88376265765385899">ເປີິດບຸກມາກ Chromium.</translation> <translation id="8860548555286245440">ເປີດ URL ໃນ Chromium ໃນໂໝດບໍ່ເປີດເຜີຍຕົວຕົນ</translation> +<translation id="8866191443434488382">Chromium ຈະກວດຫາໝາຍເລກການຕິດຕາມຢູ່ເວັບໄຊຕ່າງໆທີ່ທ່ານເຂົ້າເບິ່ງ ແລະ ສະແດງຂໍ້ມູນອັບເດດກ່ຽວກັບພັດສະດຸໃຫ້ທ່ານເຫັນຢູ່ໜ້າແຖບໃໝ່. ລະບົບຈະສົ່ງໝາຍເລກຕິດຕາມພັດສະດຸ ແລະ ຊື່ເວັບໄຊໄປຫາ Chromium ເພື່ອໃຫ້ບໍລິການຄຸນສົມບັດນີ້ ແລະ ເພື່ອປັບປຸງຄຸນສົມບັດຕ່າງໆກ່ຽວກັບການຊື້ເຄື່ອງສຳລັບທຸກຄົນ. ທ່ານສາມາດອັບເດດຂໍ້ມູນນີ້ໄດ້ທຸກເວລາໃນ <ph name="BEGIN_LINK" />ການຕັ້ງຄ່າການຕິດຕາມພັດສະດຸ<ph name="END_LINK" />.</translation> <translation id="8909995017390087892">Chromium ສຳລັບ iOS</translation> <translation id="8924617840944134898">ເປີດແຖບບໍ່ເປີດເຜີຍຕົວຕົນ Chromium</translation> <translation id="894437814105052438">ເມື່ອທ່ານອອກຈາກລະບົບ, Chromium ຈະບໍ່ຊິ້ງຂໍ້ມູນໃໝ່ໃດໆກັບບັນຊີ Google ຂອງທ່ານ. ຂໍ້ມູນທີ່ຊິ້ງໄວ້ກ່ອນໜ້າຈະຍັງຢູ່ໃນບັນຊີ.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_mr.xtb index 7350db6..70770fd 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_mr.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_mr.xtb
@@ -283,6 +283,7 @@ <translation id="8776843108004031667">हे खाते आणि कोणताही सेव्ह न केलेला डेटा Chromium मधून काढून टाकला जाईल.</translation> <translation id="88376265765385899">Chromium बुकमार्क उघडते.</translation> <translation id="8860548555286245440">URLs ना Chromium मध्ये गुप्त मोड मध्ये उघडा</translation> +<translation id="8866191443434488382">Chromium हे तुम्ही भेट दिलेल्या साइटवरील ट्रॅकिंग नंबर डिटेक्ट करेल आणि तुम्हाला नवीन टॅब पेजवर पॅकेजशी संबंधित अपडेट दाखवेल. हे वैशिष्ट्य पुरवण्यासाठी आणि सर्वांसाठी खरेदी वैशिष्ट्यांमध्ये सुधारणा करण्यासाठी पॅकेज ट्रॅकिंग नंबर व वेबसाइटचे नाव हे Chromium ला पाठवले जाईल. तुम्ही हे <ph name="BEGIN_LINK" />पॅकेज ट्रॅकिंग सेटिंग्ज<ph name="END_LINK" /> मध्ये कधीही अपडेट करू शकता.</translation> <translation id="8909995017390087892">iOS साठी Chromium</translation> <translation id="8924617840944134898">Chromium गुप्त टॅब उघडा</translation> <translation id="894437814105052438">तुम्ही साइन आउट करता तेव्हा, Chromium तुमच्या Google खाते मध्ये कोणताही नवीन डेटा सिंक करणार नाही. याआधी सिंक केलेला डेटा खात्यामध्ये राहील.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ms.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ms.xtb index bc0d4312..8a04b55 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_ms.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ms.xtb
@@ -102,6 +102,7 @@ <translation id="3955621079070267756">Buka Chromium Daripada Mana-mana Apl</translation> <translation id="4005283307739974863">Buka dan Jalankan Pemeriksaan Keselamatan dalam Chromium.</translation> <translation id="4043291146360695975">Kata laluan disimpan pada Pengurus Kata Laluan pada peranti ini sahaja.</translation> +<translation id="4076589763479456892">Jika anda terlupa ungkapan laluan anda atau mahu menukar tetapan ini, <ph name="BEGIN_LINK" />kosongkan data Chromium dalam akaun anda<ph name="END_LINK" />.</translation> <translation id="4099085513035183040">Tidak disokong pada Chromium Beta</translation> <translation id="4106512142782407609">Log masuk sebagai <ph name="EMAIL" />. @@ -153,6 +154,7 @@ <translation id="5534584691915394889">Tindakan ini akan digunakan untuk membuat acara pada Apple Calendar anda daripada Chromium dan Google Lens.</translation> <translation id="5571094606370987472">Membuka Tab Terbaharu Chromium.</translation> <translation id="5623083843656850677">Kunci tab inkognito anda semasa anda keluar daripada Chromium atau beralih kepada apl lain.</translation> +<translation id="5671188105328420281">Petua Chromium</translation> <translation id="5688047395118852662">Kad ini menunjukkan cadangan tentang cara memanfaatkan Chromium sepenuhnya.</translation> <translation id="5700709190537129682">Chromium tidak dapat menyemak kata laluan anda</translation> <translation id="5777187867430702742">Halaman Chromium</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ne.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ne.xtb index a420e64..35f88d17 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_ne.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ne.xtb
@@ -280,6 +280,7 @@ <translation id="8776843108004031667">यो खाता र सेभ नगरिएका सबै डेटा Chromium बाट हटाइने छन्।</translation> <translation id="88376265765385899">Chromium मा सेभ गरिएका बुकमार्कहरू खोल्छ।</translation> <translation id="8860548555286245440">URL हरू Chromium को इन्कोग्निटो मोडमा खोल्नुहोस्</translation> +<translation id="8866191443434488382">Chromium ले तपाईं जाने साइटहरूमा ट्र्याकिङ नम्बर पत्ता लगाउने छ र तपाईंलाई नयाँ ट्याब पेजमा प्याकेजसम्बन्धी अद्यावधिक जानकारी देखाउने छ। यो सुविधा प्रदान गर्न र सबैका निम्ति Shopping का सुविधाहरूको गुणस्तर सुधार गर्न प्याकेज ट्र्याकिङ नम्बर र वेबसाइटको नाम Chromium मा पठाइने छन्। तपाईं जुनसुकै बेला <ph name="BEGIN_LINK" />प्याकेज ट्र्याकिङसम्बन्धी सेटिङ<ph name="END_LINK" />मा गई यो कुरा परिवर्तन गर्न सक्नुहुन्छ।</translation> <translation id="8909995017390087892">iOS का लागि बनाइएको Chromium</translation> <translation id="8924617840944134898">Chromium को इन्कोग्निटो ट्याब खोल्नुहोस्</translation> <translation id="894437814105052438">तपाईंले साइन आउट गर्नुभयो भने Chromium ले तपाईंको Google खातामा कुनै पनि नयाँ डेटा सिंक गर्ने छैन। यसअघि सिंक भएका डेटा खातामा सुरक्षित रहिरहन्छन्।</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_nl.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_nl.xtb index 189d160..d16f82e8 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_nl.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_nl.xtb
@@ -102,6 +102,7 @@ <translation id="3955621079070267756">Chromium openen via elke app</translation> <translation id="4005283307739974863">Opent de Veiligheidscheck in Chromium en voert deze uit.</translation> <translation id="4043291146360695975">Wachtwoorden worden alleen opgeslagen in Wachtwoordmanager op dit apparaat.</translation> +<translation id="4076589763479456892">Als je je wachtwoordzin bent vergeten of deze instelling wilt wijzigen, <ph name="BEGIN_LINK" />wis je de Chromium-gegevens in je account<ph name="END_LINK" />.</translation> <translation id="4099085513035183040">Niet ondersteund in Chromium (bèta)</translation> <translation id="4106512142782407609">Ingelogd als <ph name="EMAIL" />. @@ -153,6 +154,7 @@ <translation id="5534584691915394889">Hiermee worden vanuit Chromium en Google Lens afspraken gemaakt in je Apple-agenda.</translation> <translation id="5571094606370987472">Opent de recente Chromium-tabbladen.</translation> <translation id="5623083843656850677">Vergrendel de incognitotabbladen als je Chromium verlaat of overschakelt naar een andere app.</translation> +<translation id="5671188105328420281">Chromium-tips</translation> <translation id="5688047395118852662">Op deze kaart zie je suggesties voor hoe je het maximale uit Chromium kunt halen.</translation> <translation id="5700709190537129682">Chromium kan je wachtwoorden niet checken</translation> <translation id="5777187867430702742">Chromium-pagina</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_pa.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_pa.xtb index 2979def..5821424 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_pa.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_pa.xtb
@@ -102,6 +102,7 @@ <translation id="3955621079070267756">ਕਿਸੇ ਵੀ ਐਪ ਤੋਂ Chrome ਖੋਲ੍ਹੋ</translation> <translation id="4005283307739974863">ਇਸ ਨਾਲ Chromium ਵਿੱਚ ਸੁਰੱਖਿਆ ਜਾਂਚ ਖੁੱਲ੍ਹਦੀ ਅਤੇ ਚੱਲਦੀ ਹੈ।</translation> <translation id="4043291146360695975">ਪਾਸਵਰਡ ਸਿਰਫ਼ ਇਸ ਡੀਵਾਈਸ 'ਤੇ ਪਾਸਵਰਡ ਪ੍ਰਬੰਧਕ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤੇ ਗਏ ਹਨ।</translation> +<translation id="4076589763479456892">ਜੇ ਤੁਸੀਂ ਆਪਣਾ ਪਾਸਫਰੇਜ਼ ਭੁੱਲ ਗਏ ਹੋ ਜਾਂ ਇਸ ਸੈਟਿੰਗ ਨੂੰ ਬਦਲਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ <ph name="BEGIN_LINK" />ਆਪਣੇ ਖਾਤੇ ਵਿੱਚ Chromium ਡਾਟੇ ਨੂੰ ਕਲੀਅਰ ਕਰੋ<ph name="END_LINK" />।</translation> <translation id="4099085513035183040">Chromium ਬੀਟਾ 'ਤੇ ਸਮਰਥਿਤ ਨਹੀਂ</translation> <translation id="4106512142782407609"><ph name="EMAIL" /> ਵਜੋਂ ਸਾਈਨ-ਇਨ ਕੀਤਾ ਗਿਆ। @@ -153,6 +154,7 @@ <translation id="5534584691915394889">ਇਸਦੀ ਵਰਤੋਂ Chromium ਅਤੇ Google Lens ਤੋਂ ਤੁਹਾਡੇ Apple Calendar ਵਿੱਚ ਇਵੈਂਟ ਬਣਾਉਣ ਲਈ ਕੀਤੀ ਜਾਵੇਗੀ।</translation> <translation id="5571094606370987472">Chromium ਹਾਲੀਆ ਟੈਬਾਂ ਖੋਲ੍ਹਦਾ ਹੈ।</translation> <translation id="5623083843656850677">Chromium ਤੋਂ ਬਾਹਰ ਨਿਕਲਣ ਜਾਂ ਕਿਸੇ ਵੱਖਰੀ ਐਪ 'ਤੇ ਸਵਿੱਚ ਕਰਨ ਦੌਰਾਨ ਆਪਣੀਆਂ ਇਨਕੋਗਨਿਟੋ ਟੈਬਾਂ ਨੂੰ ਲਾਕ ਕਰੋ।</translation> +<translation id="5671188105328420281">Chromium ਸੰਬੰਧੀ ਨੁਕਤੇ</translation> <translation id="5688047395118852662">ਇਹ ਕਾਰਡ ਤੁਹਾਨੂੰ Chromium ਦਾ ਵੱਧ ਤੋਂ ਵੱਧ ਲਾਹਾ ਲੈਣ ਦੇ ਤਰੀਕੇ ਬਾਰੇ ਸੁਝਾਅ ਦਿਖਾਉਂਦਾ ਹੈ।</translation> <translation id="5700709190537129682">Chromium ਤੁਹਾਡੇ ਪਾਸਵਰਡਾਂ ਦੀ ਜਾਂਚ ਨਹੀਂ ਕਰ ਸਕਦਾ</translation> <translation id="5777187867430702742">Chromium ਪੰਨਾ</translation> @@ -283,6 +285,7 @@ <translation id="8776843108004031667">Chromium ਤੋਂ ਇਸ ਖਾਤੇ ਅਤੇ ਕਿਸੇ ਵੀ ਅਣਰੱਖਿਅਤ ਡਾਟੇ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ।</translation> <translation id="88376265765385899">Chromium ਬੁੱਕਮਾਰਕਾਂ ਨੂੰ ਖੋਲ੍ਹਦਾ ਹੈ।</translation> <translation id="8860548555286245440">Chromium ਵਿੱਚ URL ਨੂੰ ਇਨਕੋਗਨਿਟੋ ਵਿੱਚ ਖੋਲ੍ਹੋ</translation> +<translation id="8866191443434488382">Chromium ਤੁਹਾਡੇ ਵੱਲੋਂ ਦੇਖੀਆਂ ਗਈਆਂ ਸਾਈਟਾਂ ਦੇ ਟਰੈਕਿੰਗ ਨੰਬਰਾਂ ਦਾ ਪਤਾ ਲਗਾਵੇਗਾ ਅਤੇ ਨਵੇਂ ਟੈਬ ਪੰਨੇ 'ਤੇ ਤੁਹਾਨੂੰ ਪੈਕੇਜ ਸੰਬੰਧੀ ਅੱਪਡੇਟਾਂ ਦਿਖਾਵੇਗਾ। ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ ਮੁਹੱਈਆ ਕਰਨ ਅਤੇ ਹਰ ਕਿਸੇ ਲਈ ਖਰੀਦਦਾਰੀ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ ਪੈਕੇਜ ਟਰੈਕਿੰਗ ਨੰਬਰ ਅਤੇ ਵੈੱਬਸਾਈਟ ਦਾ ਨਾਮ Chromium ਨੂੰ ਭੇਜਿਆ ਜਾਵੇਗਾ। ਤੁਸੀਂ ਇਸਨੂੰ ਕਿਸੇ ਵੇਲੇ ਵੀ <ph name="BEGIN_LINK" />ਪੈਕੇਜ ਟਰੈਕਿੰਗ ਸੈਟਿੰਗਾਂ<ph name="END_LINK" /> ਵਿੱਚ ਅੱਪਡੇਟ ਕਰ ਸਕਦੇ ਹੋ।</translation> <translation id="8909995017390087892">iOS ਲਈ Chromium</translation> <translation id="8924617840944134898">Chromium ਇਨਕੋਗਨਿਟੋ ਟੈਬ ਖੋਲ੍ਹੋ</translation> <translation id="894437814105052438">ਜਦੋਂ ਤੁਸੀਂ ਸਾਈਨ-ਆਊਟ ਕਰਦੇ ਹੋ, ਤਾਂ Chromium ਕਿਸੇ ਵੀ ਤਰ੍ਹਾਂ ਦੇ ਨਵੇਂ ਡਾਟੇ ਨੂੰ ਤੁਹਾਡੇ Google ਖਾਤੇ ਨਾਲ ਸਿੰਕ ਨਹੀਂ ਕਰੇਗਾ। ਪਹਿਲਾਂ ਸਿੰਕ ਕੀਤਾ ਗਿਆ ਡਾਟਾ ਖਾਤੇ ਵਿੱਚ ਹੀ ਰਹਿੰਦਾ ਹੈ।</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_pl.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_pl.xtb index b4856a5..3879affc 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_pl.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_pl.xtb
@@ -102,6 +102,7 @@ <translation id="3955621079070267756">Otwieraj Chromium z dowolnej aplikacji</translation> <translation id="4005283307739974863">Otwiera i uruchamia kontrolę zabezpieczeń w Chromium.</translation> <translation id="4043291146360695975">Hasła są zapisywane w Menedżerze haseł tylko na tym urządzeniu.</translation> +<translation id="4076589763479456892">Jeśli zapomnisz hasło lub zechcesz zmienić to ustawienie, <ph name="BEGIN_LINK" />wyczyść dane Chromium na swoim koncie<ph name="END_LINK" />.</translation> <translation id="4099085513035183040">Nieobsługiwane w Chromium Beta</translation> <translation id="4106512142782407609">Zalogowano jako <ph name="EMAIL" />. @@ -153,6 +154,7 @@ <translation id="5534584691915394889">Będziemy z tego korzystać, aby tworzyć wydarzenia z Chromium i Obiektywu Google w kalendarzu Apple.</translation> <translation id="5571094606370987472">Otwiera ostatnie karty w Chromium.</translation> <translation id="5623083843656850677">Po zamknięciu Chromium lub przełączeniu się na inną aplikację zablokuj karty incognito.</translation> +<translation id="5671188105328420281">Chromium – wskazówki</translation> <translation id="5688047395118852662">Ta karta zawiera sugestie, które pomogą Ci w pełni wykorzystać możliwości Chromium.</translation> <translation id="5700709190537129682">Chromium nie może sprawdzić Twoich haseł</translation> <translation id="5777187867430702742">Strona Chromium</translation> @@ -283,6 +285,7 @@ <translation id="8776843108004031667">To konto razem z wszelkimi niezapisanymi danymi zostanie usunięte z Chromium.</translation> <translation id="88376265765385899">Otwiera zakładki w Chromium.</translation> <translation id="8860548555286245440">Otwieraj adresy URL w Chromium w trybie incognito</translation> +<translation id="8866191443434488382">Chromium będzie wykrywać numery śledzenia w odwiedzanych przez Ciebie witrynach i wyświetlać aktualne informacje o przesyłkach na stronie Nowa karta. Numery śledzenia przesyłek i nazwy witryn będą wysyłane do zespołu Chromium i używane do obsługi tej funkcji oraz do ogólnego ulepszania funkcji zakupów. Możesz to zmienić w dowolnym momencie w <ph name="BEGIN_LINK" />ustawieniach śledzenia przesyłek<ph name="END_LINK" />.</translation> <translation id="8909995017390087892">Chromium na iOS</translation> <translation id="8924617840944134898">Otwórz kartę incognito w Chromium</translation> <translation id="894437814105052438">Gdy się wylogujesz, Chromium nie zsynchronizuje żadnych nowych danych z Twoim kontem Google. Dane, które zostały zsynchronizowane wcześniej, pozostaną na koncie.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ro.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ro.xtb index 87543499..32dc6fb 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_ro.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ro.xtb
@@ -283,6 +283,7 @@ <translation id="8776843108004031667">Acest cont și toate datele nesalvate vor fi eliminate din Chromium.</translation> <translation id="88376265765385899">Deschide marcajele Chromium.</translation> <translation id="8860548555286245440">Deschide adrese URL în Chromium în modul incognito</translation> +<translation id="8866191443434488382">Chromium va detecta numerele de urmărire pe site-urile pe care le accesezi și va afișa noutăți despre colete în pagina Filă nouă. Numărul de urmărire a coletului și numele site-ului se vor trimite la Chromium pentru a oferi această funcție și a îmbunătăți funcțiile pentru cumpărături pentru toată lumea. Poți actualiza oricând opțiunea în <ph name="BEGIN_LINK" />Setările pentru urmărirea coletelor<ph name="END_LINK" />.</translation> <translation id="8909995017390087892">Chromium pentru iOS</translation> <translation id="8924617840944134898">Deschide o filă incognito în Chromium</translation> <translation id="894437814105052438">Când te deconectezi, Chromium nu va sincroniza datele noi cu Contul tău Google. Datele sincronizate anterior rămân în cont.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_sk.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_sk.xtb index 9e0819d..4e132d50 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_sk.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_sk.xtb
@@ -102,6 +102,7 @@ <translation id="3955621079070267756">Otvárajte Chromium z ľubovoľnej aplikácie</translation> <translation id="4005283307739974863">Otvorí a spustí kontrolu bezpečnosti v prehliadači Chromium.</translation> <translation id="4043291146360695975">Heslá sa ukladajú do správcu hesiel iba v tomto zariadení.</translation> +<translation id="4076589763479456892">Ak ste zabudli prístupovú frázu alebo chcete toto nastavenie zmeniť, <ph name="BEGIN_LINK" />vymažte údaje prehliadača Chromium vo svojom účte<ph name="END_LINK" />.</translation> <translation id="4099085513035183040">Nepodporované vo verzii Chromium Beta</translation> <translation id="4106512142782407609">Prihlásili ste sa ako <ph name="EMAIL" />. @@ -153,6 +154,7 @@ <translation id="5534584691915394889">Umožní to vytvárať udalosti vo vašom Kalendári Apple v prehliadači Chromium a funkcii Google Lens.</translation> <translation id="5571094606370987472">Otvorí nedávne karty v prehliadači Chromium.</translation> <translation id="5623083843656850677">Uzamknite karty inkognito, keď opustíte Chromium, alebo prepnite na inú aplikáciu.</translation> +<translation id="5671188105328420281">Tipy pre Chromium</translation> <translation id="5688047395118852662">Na tejto karte sa vám zobrazujú návrhy, ako využívať Chromium naplno.</translation> <translation id="5700709190537129682">Chromium nemôže skontrolovať heslá</translation> <translation id="5777187867430702742">Stránka prehliadača Chromium</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_sr-Latn.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_sr-Latn.xtb index 961a3639..b3ea1a6 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_sr-Latn.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_sr-Latn.xtb
@@ -281,6 +281,7 @@ <translation id="8776843108004031667">Ovaj nalog i svi nesačuvani podaci ukloniće se iz Chromium-a.</translation> <translation id="88376265765385899">Otvara Chromium obeleživače.</translation> <translation id="8860548555286245440">Otvorite URL-ove u Chromium-u u režimu bez arhiviranja</translation> +<translation id="8866191443434488382">Chromium otkriva brojeve za praćenje na sajtovima koje posećujete i prikazuje vam novosti o paketima na stranici Nova kartica. Broj za praćenje paketa i naziv veb-sajta biće poslati Chromium-u radi pružanja ove funkcije i poboljšanja funkcija kupovine za sve. To možete da ažurirate u svakom trenutku u <ph name="BEGIN_LINK" />podešavanjima praćenja paketa<ph name="END_LINK" />.</translation> <translation id="8909995017390087892">Chromium za iOS</translation> <translation id="8924617840944134898">Otvori Chromium karticu bez arhiviranja</translation> <translation id="894437814105052438">Kada se odjavite, Chromium ne sinhronizuje nikakve nove podatke sa Google nalogom. Prethodno sinhronizovani podaci ostaju na nalogu.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_sr.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_sr.xtb index 314693fd..687aa79 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_sr.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_sr.xtb
@@ -281,6 +281,7 @@ <translation id="8776843108004031667">Овај налог и сви несачувани подаци уклониће се из Chromium-а.</translation> <translation id="88376265765385899">Отвара Chromium обележиваче.</translation> <translation id="8860548555286245440">Отворите URL-ове у Chromium-у у режиму без архивирања</translation> +<translation id="8866191443434488382">Chromium открива бројеве за праћење на сајтовима које посећујете и приказује вам новости о пакетима на страници Нова картица. Број за праћење пакета и назив веб-сајта биће послати Chromium-у ради пружања ове функције и побољшања функција куповине за све. То можете да ажурирате у сваком тренутку у <ph name="BEGIN_LINK" />подешавањима праћења пакета<ph name="END_LINK" />.</translation> <translation id="8909995017390087892">Chromium за iOS</translation> <translation id="8924617840944134898">Отвори Chromium картицу без архивирања</translation> <translation id="894437814105052438">Када се одјавите, Chromium не синхронизује никакве нове податке са Google налогом. Претходно синхронизовани подаци остају на налогу.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_te.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_te.xtb index 0432e45..b73b27da 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_te.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_te.xtb
@@ -283,6 +283,7 @@ <translation id="8776843108004031667">ఈ ఖాతా, ఇంకా ఏదైనా సేవ్ చేయని డేటా Chromium నుండి తీసివేయబడతాయి.</translation> <translation id="88376265765385899">Chromium బుక్మార్క్లను తెరుస్తుంది.</translation> <translation id="8860548555286245440">Chromiumలోని అజ్ఞాత మోడ్లో URLలను తెరవండి</translation> +<translation id="8866191443434488382">మీరు చూసే సైట్లలోని ట్రాకింగ్ నంబర్లను Chromium గుర్తించి, కొత్త ట్యాబ్ పేజీలో మీ ప్యాకేజీ అప్డేట్లను చూపుతుంది. ఈ ఫీచర్ను అందించడానికి, అందరి కోసం షాపింగ్ ఫీచర్లను మెరుగుపరచడానికి ప్యాకేజీ ట్రాకింగ్ నంబర్, వెబ్సైట్ పేరు Chromiumకు పంపబడతాయి. మీరు దీనిని <ph name="BEGIN_LINK" />ప్యాకేజీ ట్రాకింగ్ సెట్టింగ్ల<ph name="END_LINK" />లో ఎప్పుడైనా అప్డేట్ చేయవచ్చు.</translation> <translation id="8909995017390087892">iOS కోసం Chromium</translation> <translation id="8924617840944134898">Chromium అజ్ఞాత ట్యాబ్ను తెరవండి</translation> <translation id="894437814105052438">మీరు సైన్ అవుట్ చేసినప్పుడు, మీ Google ఖాతాకు ఎలాంటి కొత్త డేటాను Chromium సింక్ చేయదు. ఇంతకుముందు సింక్ చేయబడిన డేటా ఖాతాలో ఉండిపోతుంది.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_th.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_th.xtb index 3a6d90b..cd9d28e 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_th.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_th.xtb
@@ -102,6 +102,7 @@ <translation id="3955621079070267756">เปิด Chromium จากแอปใดก็ได้</translation> <translation id="4005283307739974863">เปิดและเรียกใช้การตรวจสอบความปลอดภัยใน Chromium</translation> <translation id="4043291146360695975">รหัสผ่านจะบันทึกอยู่ในเครื่องมือจัดการรหัสผ่านในอุปกรณ์นี้เท่านั้น</translation> +<translation id="4076589763479456892">หากลืมรหัสผ่านหรือต้องการเปลี่ยนการตั้งค่านี้ ให้<ph name="BEGIN_LINK" />ล้างข้อมูล Chromium ในบัญชี<ph name="END_LINK" /></translation> <translation id="4099085513035183040">ไม่รองรับใน Chromium เบต้า</translation> <translation id="4106512142782407609">ลงชื่อเข้าใช้ด้วย <ph name="EMAIL" /> @@ -153,6 +154,7 @@ <translation id="5534584691915394889">ระบบจะใช้เพื่อสร้างกิจกรรมจาก Chromium และ Google Lens ในปฏิทินของ Apple</translation> <translation id="5571094606370987472">เปิดแท็บล่าสุดใน Chromium</translation> <translation id="5623083843656850677">ล็อกแท็บที่ไม่ระบุตัวตนเมื่อคุณออกจาก Chromium หรือเปลี่ยนไปใช้แอปอื่น</translation> +<translation id="5671188105328420281">เคล็ดลับในการใช้ Chromium</translation> <translation id="5688047395118852662">การ์ดนี้แสดงคำแนะนำเกี่ยวกับวิธีใช้ Chromium ให้เกิดประโยชน์สูงสุด</translation> <translation id="5700709190537129682">Chromium ตรวจสอบรหัสผ่านของคุณไม่ได้</translation> <translation id="5777187867430702742">หน้า Chromium</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_tr.xtb index 6ab891a..18eb668 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_tr.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_tr.xtb
@@ -283,6 +283,7 @@ <translation id="8776843108004031667">Bu hesap ve kaydedilmemiş tüm veriler Chromium'dan kaldırılacak.</translation> <translation id="88376265765385899">Chromium yer işaretlerini açar.</translation> <translation id="8860548555286245440">URL'leri Chromium'da Gizli modda aç</translation> +<translation id="8866191443434488382">Chromium, ziyaret ettiğiniz sitelerdeki takip numaralarını algılar ve kargoyla ilgili güncellemeleri Yeni Sekme sayfasında gösterir. Kargo takip numarası ve web sitesinin adı, bu özelliğin sunulması ve Alışveriş özelliklerinin herkes için iyileştirilmesi amacıyla Chromium'a gönderilir. Bunu istediğiniz zaman <ph name="BEGIN_LINK" />Kargo Takibi Ayarları<ph name="END_LINK" />'ndan güncelleyebilirsiniz.</translation> <translation id="8909995017390087892">iOS için Chromium</translation> <translation id="8924617840944134898">Chromium gizli sekmesini aç</translation> <translation id="894437814105052438">Oturumu kapattığınızda Chromium, hiçbir yeni veriyi Google Hesabınızla senkronize etmez. Önceden senkronize edilmiş veriler hesapta kalır.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_uk.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_uk.xtb index a2f6e6c..77d41cbd 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_uk.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_uk.xtb
@@ -283,6 +283,7 @@ <translation id="8776843108004031667">Цей обліковий запис і всі незбережені дані буде вилучено з Chromium.</translation> <translation id="88376265765385899">Відкриває закладки в Chromium.</translation> <translation id="8860548555286245440">Відкривати URL-адреси в Chromium в анонімному режимі</translation> +<translation id="8866191443434488382">Chromium виявлятиме номери відстеження на сайтах, які ви відвідуєте, і показуватиме оновлення щодо відправлень на сторінці нової вкладки. Номер відстеження замовлення й назва веб-сайту надсилатимуться в Chromium, щоб забезпечити роботу цієї функції і зробити покупки зручнішими для всіх користувачів. Ви можете будь-коли змінити це в <ph name="BEGIN_LINK" />налаштуваннях відстеження замовлень<ph name="END_LINK" />.</translation> <translation id="8909995017390087892">Chromium для iOS</translation> <translation id="8924617840944134898">Відкрити анонімну вкладку Chromium</translation> <translation id="894437814105052438">Коли ви вийдете з облікового запису, Chromium не синхронізуватиме нові дані з обліковим записом Google. Дані попередніх синхронізацій залишаться.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_uz.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_uz.xtb index f0c2c93f..957076e 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_uz.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_uz.xtb
@@ -282,6 +282,7 @@ <translation id="8776843108004031667">Bu hisob va uning barcha saqlanmagan maʼlumotlari Chromiumdan olib tashlanadi.</translation> <translation id="88376265765385899">Chromium bukmarklarini ochadi.</translation> <translation id="8860548555286245440">URL manzillarni Chromium brauzerida Inkognito rejimda ochish</translation> +<translation id="8866191443434488382">Chromium siz ochgan saytlardagi treking raqamlarini aniqlaydi va yangi varaqda paket yangilanishlarini koʻrsatadi. Bu funksiyani taqdim qilish va hamma uchun xaridni yaxshilash uchun joʻnatmani kuzatish raqami va veb-sayt nomi Chromium brauzeriga yuboriladi. Buni istalgan vaqtda <ph name="BEGIN_LINK" />Joʻnatmani kuzatish raqamlari<ph name="END_LINK" /> orqali yangilash mumkin.</translation> <translation id="8909995017390087892">iOS uchun Chromium</translation> <translation id="8924617840944134898">Chromiumda inkognito varaq ochish</translation> <translation id="894437814105052438">Hisobingizdan chiqsangiz, Chromium yangi maʼlumotlarni Google hisobingizga sinxronlamaydi. Oldin sinxronlangan maʼlumotlar hisobingizda qoladi.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_zh-HK.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_zh-HK.xtb index 8555572..182fb80 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_zh-HK.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_zh-HK.xtb
@@ -283,6 +283,7 @@ <translation id="8776843108004031667">此帳戶和所有未儲存的資料將從 Chromium 中移除。</translation> <translation id="88376265765385899">開啟 Chromium 書籤。</translation> <translation id="8860548555286245440">在 Chromium 無痕模式中開啟網址</translation> +<translation id="8866191443434488382">當你瀏覽網站時,Chromium 會在網站上偵測是否有追蹤號碼,並在「新分頁」顯示包裹最新消息。為提供此功能,系統會將包裹追蹤編號和網站名稱傳送給 Chromium,為所有人改善購物功能。你可隨時在「<ph name="BEGIN_LINK" />包裹追蹤設定<ph name="END_LINK" />」進行更新。</translation> <translation id="8909995017390087892">Chromium iOS 版</translation> <translation id="8924617840944134898">開啟 Chromium 無痕式分頁</translation> <translation id="894437814105052438">登出時,Chromium 將不會同步任何新資料至您的 Google 帳戶。不過,先前已同步處理的資料仍會保存在帳戶中。</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_zh-TW.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_zh-TW.xtb index a571918..07ae902 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_zh-TW.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_zh-TW.xtb
@@ -283,6 +283,7 @@ <translation id="8776843108004031667">系統會將這個帳戶和所有未儲存的資料從 Chromium 中移除。</translation> <translation id="88376265765385899">開啟 Chromium 書籤。</translation> <translation id="8860548555286245440">在 Chromium 中以無痕模式開啟網址</translation> +<translation id="8866191443434488382">造訪網站時,Chromium 會在網站上偵測是否有追蹤號碼,並在新分頁顯示包裹配送動態。為提供這項功能,系統會將包裹追蹤號碼和網站名稱傳送給 Chromium。這些資料也會用於改善購物功能,造福所有使用者。你隨時可以前往<ph name="BEGIN_LINK" />包裹追蹤設定<ph name="END_LINK" />進行更新。</translation> <translation id="8909995017390087892">iOS 版 Chromium</translation> <translation id="8924617840944134898">開啟 Chromium 無痕分頁</translation> <translation id="894437814105052438">登出帳戶後,Chromium 就不會將任何新資料同步到你的 Google 帳戶。不過,先前已同步處理的資料仍會保存在帳戶中。</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_af.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_af.xtb index fffc21b..c7a5a47 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_af.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_af.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="af"> +<translation id="1066101356081285416">Chrome sal naspoornommers op werwe bespeur wat jy besoek en vir jou pakkie-opdaterings op die Nuwe Oortjie-bladsy wys. Die pakkienaspoornommer en webwerfnaam sal na Google gestuur word om hierdie kenmerk beskikbaar te maak en om Google Shopping-kenmerke vir almal te verbeter. Jy kan dit enige tyd in <ph name="BEGIN_LINK" />Pakkienasporinginstellings<ph name="END_LINK" /> opdateer.</translation> <translation id="1085696779717592361">Gebruik Chrome by verstek</translation> <translation id="1105362920864247682">Vee blaaierdata in Chrome uit.</translation> <translation id="1113057722807951993">Wagfrase-enkripsie sluit nie betaalmetodes en adresse van Google Pay af in nie.
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_am.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_am.xtb index 141d216d..d42de5dc 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_am.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_am.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="am"> +<translation id="1066101356081285416">Chrome በሚጎበኟቸው ጣቢያዎች ላይ ያሉ የመከታተያ ቁጥሮች ለይቶ ያውቃል እና በአዲሱ የትር ገፅ ላይ የጥቅል ዝማኔዎች ያሳይዎታል። ይህንን ባህሪ ለማቅረብ እና ለሁሉም ሰው የGoogle ግዢ ባህሪያትን ለማሻሻል የጥቅል መከታተያ ቁጥሩ እና የድር ጣቢያው ስም ወደ Google ይላካል። ይህንን በማንኛውም ጊዜ <ph name="BEGIN_LINK" />በጥቅል መከታተያ ቅንብሮች<ph name="END_LINK" /> ውስጥ ማዘመን ይችላሉ።</translation> <translation id="1085696779717592361">በነባሪነት Chromeን ይጠቀሙ</translation> <translation id="1105362920864247682">በChrome ውስጥ የአሰሳ ውሂብን ያጽዱ።</translation> <translation id="1113057722807951993">የይለፍ ሐረግ ምስጠራ ከGoogle Pay የመክፈያ ዘዴዎችን እና አድራሻዎችን አያካትትም። @@ -40,6 +41,7 @@ <translation id="1682483655351012182">የChrome ውሂብዎን ያስምሩ</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1790080846677398234">በChrome ውስጥ የገቡትን ዩአርኤሎች ወደ ዕልባቶችዎ ያክላል።</translation> +<translation id="1799920918471566157">የChrome ጠቃሚ ምክሮች</translation> <translation id="1830634592642484976">ይህ አድራሻ በአሁኑ ጊዜ Chrome ላይ ተቀምጧል። በሁሉም የGoogle ምርቶች ላይ እሱን ለመጠቀም በGoogle መለያዎ <ph name="USER_EMAIL" /> ውስጥ ያስቀምጡት።</translation> <translation id="1843217788865538014">አገናኞችን በመልዕክቶች፣ ሰነዶች እና ሌሎች መተግበሪያዎች ውስጥ መታ ሲያደርጉ በራስ-ሰር Chromeን ይጠቀሙ።</translation> <translation id="1910975740091000991">Chrome ለiOS</translation> @@ -74,6 +76,7 @@ <translation id="2702250627063295552">የንባብ ዝርዝር ንጥልን ወደ Chrome ያክሉ</translation> <translation id="2736805085127235148">አሁን ላይ በእርስዎ የመሣሪያ ቅንብሮች ውስጥ የChrome ማሳወቂያዎች ጠፍተዋል።</translation> <translation id="2767464022270041271">ምንም የተቀመጡ የይለፍ ቃላት የሉም። Google የይለፍ ቃል አስተዳዳሪ የይለፍ ቃላትዎን ሲያስቀምጡ ሊፈትሻቸው ይችላል።</translation> +<translation id="2789947168960170215">የይለፍ ሐረግዎን ከረሱ ወይም ይህን ቅንብር መለወጥ ከፈለጉ፣ <ph name="BEGIN_LINK" />በመለያዎ ውስጥ ያለውን የChrome ውሂብ ያጽዱ<ph name="END_LINK" />።</translation> <translation id="2868822340714096138">Chrome ውስጥ የአሰሳ ውሂብን ያጽዱ</translation> <translation id="2869959624320573933">በመለያ ወደ Chrome ይግቡ</translation> <translation id="2876628302275096482"><ph name="BEGIN_LINK" />Chrome እንዴት የእርስዎን ውሂብ በግል እንደሚያስቀምጥ<ph name="END_LINK" /> የበለጠ ይወቁ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_as.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_as.xtb index c9410e1..782de0c 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_as.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_as.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="as"> +<translation id="1066101356081285416">Chromeএ আপুনি চোৱা ছাইটসমূহত ট্ৰেকিং নম্বৰ চিনাক্ত কৰিব আৰু আপোনাক নতুন টেবৰ পৃষ্ঠাখনত পেকেজৰ আপডে’ট দেখুৱাব। এই সুবিধাটো প্ৰদান কৰিবলৈ আৰু সকলোৰে বাবে Googleৰ বজাৰ কৰাৰ সুবিধা উন্নত কৰিবলৈ পেকেজ ট্ৰেকিং নম্বৰ আৰু ৱেবছাইটৰ নাম Googleলৈ পঠিওৱা হ’ব। আপুনি <ph name="BEGIN_LINK" />পেকেজ ট্ৰেকিঙৰ ছেটিঙ<ph name="END_LINK" />ত যিকোনো সময়তে এইটো আপডে’ট কৰিব পাৰে।</translation> <translation id="1085696779717592361">ডিফ’ল্ট হিচাপে Chrome ব্যৱহাৰ কৰক</translation> <translation id="1105362920864247682">Chromeত ব্ৰাউজিঙৰ ডেটা মচক।</translation> <translation id="1113057722807951993">পাছফ্ৰে’জ এনক্ৰিপশ্বনত Google Payৰ পৰিশোধ পদ্ধতি আৰু ঠিকনা অন্তৰ্ভুক্ত নহয়। @@ -40,6 +41,7 @@ <translation id="1682483655351012182">আপোনাৰ Chrome ডেটা ছিংক কৰক</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1790080846677398234">Chromeত আপোনাৰ বুকমাৰ্কত ইনপুট কৰা URL যোগ দিয়ে।</translation> +<translation id="1799920918471566157">Chromeৰ কিটিপ</translation> <translation id="1830634592642484976">এই ঠিকনাটো বৰ্তমান Chromeত ছেভ কৰা হয়। এইটো সমগ্ৰ Google প্ৰ’ডাক্টসমূহত ব্যৱহাৰ কৰিবলৈ, ইয়াক আপোনাৰ Google একাউণ্ট <ph name="USER_EMAIL" />ত ছেভ কৰক।</translation> <translation id="1843217788865538014">আপুনি বাৰ্তা, নথি আৰু অন্য এপ্সমূহত থকা কোনো লিংক টিপিলে স্বয়ংক্ৰিয়ভাৱে Chrome ব্যৱহাৰ কৰক।</translation> <translation id="1910975740091000991">iOSৰ বাবে Chrome</translation> @@ -74,6 +76,7 @@ <translation id="2702250627063295552">Chromeত পঢ়াৰ সূচীৰ বস্তু যোগ দিয়ক</translation> <translation id="2736805085127235148">আপোনাৰ ডিভাইচৰ ছেটিঙত বৰ্তমান Chromeৰ জাননী অফ কৰা আছে।</translation> <translation id="2767464022270041271">কোনো ছেভ কৰা পাছৱৰ্ড নাই। আপুনি নিজৰ পাছৱৰ্ডসমূহ ছেভ কৰিলে Google Password Managerএ সেইসমূহ পৰীক্ষা কৰিব পাৰে।</translation> +<translation id="2789947168960170215">আপুনি যদি নিজৰ পাছফ্ৰে’জটো পাহৰিছে অথবা এই ছেটিংটো সলাব বিচাৰে, <ph name="BEGIN_LINK" />আপোনাৰ একাউণ্টৰ Chromeৰ ডেটা মচক<ph name="END_LINK" />।</translation> <translation id="2868822340714096138">Chromeত ব্ৰাউজিঙৰ ডেটা মচক</translation> <translation id="2869959624320573933">Chromeত ছাইন-ইন কৰক</translation> <translation id="2876628302275096482"><ph name="BEGIN_LINK" />Chromeএ কেনেকৈ আপোনাৰ ডেটা ব্যক্তিগত কৰি ৰাখে<ph name="END_LINK" /> সেই বিষয়ে অধিক জানক</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_be.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_be.xtb index 37dc2fbc..09e5214 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_be.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_be.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="be"> +<translation id="1066101356081285416">Chrome будзе выяўляць нумары для адсочвання на сайтах, якія вы наведваеце, і паказваць актуальную інфармацыю пра пасылкі ў новай укладцы. Нумар для адсочвання пасылкі і назва вэб-сайта будуць перадавацца ў Google, каб забяспечыць працу гэтай функцыі і палепшыць шопінг для ўсіх карыстальнікаў. Вы ў любы час можаце змяніць выбраныя параметры ў <ph name="BEGIN_LINK" />наладах адсочвання пасылак<ph name="END_LINK" />.</translation> <translation id="1085696779717592361">Выкарыстоўвайце Chrome стандартна</translation> <translation id="1105362920864247682">Выдаліць даныя пра работу ў браўзеры Chrome.</translation> <translation id="1113057722807951993">Шыфраванне фразай-паролем не прымяняецца да спосабаў аплаты і адрасоў з Google Pay.
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_bg.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_bg.xtb index d574cf0..756b99b 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_bg.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_bg.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="bg"> +<translation id="1066101356081285416">Chrome ще открива проследяващите номера на сайтовете, които посещавате, и ще ви показва актуална информация за съответните пратки в нов раздел. Номерът за проследяване на пратката и името на уебсайта ще бъдат изпратени до Google с цел предоставяне на тази функция и подобряване на функциите на Google Пазаруване за всички. Можете да актуализирате това по всяко време от <ph name="BEGIN_LINK" />настройките за проследяване на пратки<ph name="END_LINK" />.</translation> <translation id="1085696779717592361">Използване на Chrome по подразбиране</translation> <translation id="1105362920864247682">Изчистване на данните за сърфирането в Chrome.</translation> <translation id="1113057722807951993">Шифроването с пропуск не включва начините на плащане и адресите от Google Pay.
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ca.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ca.xtb index e804a9ef..a953a61 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ca.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ca.xtb
@@ -40,6 +40,7 @@ <translation id="1682483655351012182">Sincronitza les dades de Chrome</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1790080846677398234">Afegeix els URL introduïts a les adreces d'interès de Chrome.</translation> +<translation id="1799920918471566157">Consells per a Chrome</translation> <translation id="1830634592642484976">Actualment aquesta adreça està desada a Chrome. Per utilitzar-la en tots els productes de Google, desa-la al teu Compte de Google, <ph name="USER_EMAIL" />.</translation> <translation id="1843217788865538014">Utilitza Chrome automàticament quan toquis enllaços en missatges, documents i altres aplicacions.</translation> <translation id="1910975740091000991">Chrome per a iOS</translation> @@ -74,6 +75,7 @@ <translation id="2702250627063295552">Afegeix un element de llista de lectura a Chrome</translation> <translation id="2736805085127235148">En aquests moments, les notificacions de Chrome estan desactivades a la configuració del dispositiu.</translation> <translation id="2767464022270041271">No hi ha cap contrasenya desada. El gestor de contrasenyes de Google pot comprovar les teves contrasenyes quan les deses.</translation> +<translation id="2789947168960170215">Si has oblidat la frase de contrasenya o vols canviar aquesta opció de configuració, <ph name="BEGIN_LINK" />esborra les dades de Chrome del compte<ph name="END_LINK" />.</translation> <translation id="2868822340714096138">Esborra les dades de navegació a Chrome</translation> <translation id="2869959624320573933">Inicia la sessió a Chrome</translation> <translation id="2876628302275096482">Més informació sobre <ph name="BEGIN_LINK" />com Chrome manté la privadesa de les teves dades<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_cs.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_cs.xtb index 458b75cf..3f4045d 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_cs.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_cs.xtb
@@ -41,6 +41,7 @@ <translation id="1682483655351012182">Synchronizovat data prohlížeče Chrome</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1790080846677398234">Přidá zadané adresy URL do záložek v Chromu.</translation> +<translation id="1799920918471566157">Tipy Chrome</translation> <translation id="1830634592642484976">Tato adresa je aktuálně uložena v Chromu. Pokud ji chcete používat ve službách Google, uložte ji do svého účtu Google <ph name="USER_EMAIL" />.</translation> <translation id="1843217788865538014">Automaticky použít Chrome, když klepnete na odkazy ve zprávách, dokumentech a ostatních aplikacích</translation> <translation id="1910975740091000991">Chrome pro iOS</translation> @@ -75,6 +76,7 @@ <translation id="2702250627063295552">Přidat položku do seznamu četby v Chromu</translation> <translation id="2736805085127235148">Oznámení prohlížeče Chrome jsou aktuálně v nastavení zařízení vypnutá.</translation> <translation id="2767464022270041271">Nemáte žádná uložená hesla. Správce hesel Google může hesla zkontrolovat, pouze když si je uložíte.</translation> +<translation id="2789947168960170215">Pokud heslovou frázi zapomenete nebo toto nastavení budete chtít změnit, <ph name="BEGIN_LINK" />vymažte data prohlížeče Chrome ve svém účtu<ph name="END_LINK" />.</translation> <translation id="2868822340714096138">Vymazat údaje o prohlížení v Chromu</translation> <translation id="2869959624320573933">Přihlaste se do Chromu</translation> <translation id="2876628302275096482"><ph name="BEGIN_LINK" />Další informace o tom, jak Chrome uchovává vaše data v soukromí<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_cy.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_cy.xtb index 919527c..e5cd0228 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_cy.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_cy.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="cy"> +<translation id="1066101356081285416">Bydd Chrome yn canfod rhifau olrhain ar wefannau rydych chi'n ymweld â nhw ac yn dangos diweddariadau pecyn ar dudalen y Tab Newydd. Bydd y rhif olrhain pecyn ac enw'r wefan yn cael eu hanfon i Google i ddarparu'r nodwedd hon ac i wella nodweddion siopa Google i bawb. Gallwch ddiweddaru hwn yn y <ph name="BEGIN_LINK" />Gosodiadau Olrhain Pecyn<ph name="END_LINK" />.</translation> <translation id="1085696779717592361">Defnyddiwch Chrome yn Ddiofyn</translation> <translation id="1105362920864247682">Clirio Data Pori yn Chrome.</translation> <translation id="1113057722807951993">Nid yw amgryptio cyfrinymadrodd yn cynnwys dulliau talu a chyfeiriadau gan Google Pay.
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_da.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_da.xtb index 5876982..077a16e 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_da.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_da.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="da"> +<translation id="1066101356081285416">Chrome registrerer sporingsnumre på de websites, du besøger, og viser dig pakkeopdateringer på siden Ny fane. Pakkesporingsnummeret og websitets navn sendes til Google for at levere denne funktion og forbedre Googles shoppingfunktioner for alle. Du kan til enhver tid opdatere dette i <ph name="BEGIN_LINK" />indstillingerne for pakkesporing<ph name="END_LINK" />.</translation> <translation id="1085696779717592361">Brug Chrome som standard</translation> <translation id="1105362920864247682">Ryd browserdata i Chrome.</translation> <translation id="1113057722807951993">Kryptering med adgangssætning omfatter ikke betalingsmetoder og adresser fra Google Pay.
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_en-GB.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_en-GB.xtb index 99c00360..669ff6c8 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_en-GB.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_en-GB.xtb
@@ -41,6 +41,7 @@ <translation id="1682483655351012182">Sync your Chrome data</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1790080846677398234">Adds the inputted URLs to your bookmarks in Chrome.</translation> +<translation id="1799920918471566157">Chrome tips</translation> <translation id="1830634592642484976">This address is currently saved to Chrome. To use it across Google products, save it in your Google Account, <ph name="USER_EMAIL" />.</translation> <translation id="1843217788865538014">Automatically use Chrome when you tap links in messages, documents and other apps.</translation> <translation id="1910975740091000991">Chrome for iOS</translation> @@ -75,6 +76,7 @@ <translation id="2702250627063295552">Add Reading List item to Chrome</translation> <translation id="2736805085127235148">Chrome notifications are currently turned off in your device settings.</translation> <translation id="2767464022270041271">No saved passwords. Google Password Manager can check your passwords when you save them.</translation> +<translation id="2789947168960170215">If you forgot your passphrase or want to change this setting, <ph name="BEGIN_LINK" />clear the Chrome data in your account<ph name="END_LINK" />.</translation> <translation id="2868822340714096138">Clear browsing data in Chrome</translation> <translation id="2869959624320573933">Sign In to Chrome</translation> <translation id="2876628302275096482">Learn more about <ph name="BEGIN_LINK" />how Chrome keeps your data private<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_et.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_et.xtb index 4e1f7f8..111ca5f0 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_et.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_et.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="et"> +<translation id="1066101356081285416">Chrome tuvastab teie külastatud saitidel jälgimiskoodid. Kui avate uue vahelehe, kuvatakse saadetise uusim olek. Selle funktsiooni pakkumiseks ja Google'i ostufunktsioonide kõigi jaoks paremaks muutmiseks edastatakse paki jälgimiskood ja veebisaidi nimi Google'ile. Saate seda muuta <ph name="BEGIN_LINK" />pakkide jälgimise seadetes<ph name="END_LINK" />.</translation> <translation id="1085696779717592361">Vaikimisi Chrome'i kasutamine</translation> <translation id="1105362920864247682">Tühjendage Chrome'i sirvimisandmed.</translation> <translation id="1113057722807951993">Parooliga krüpteerimine ei hõlma Google Pay makseviise ja aadresse.
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fa.xtb index 38172ac..1578df9 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fa.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fa.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="fa"> +<translation id="1066101356081285416">Chrome شمارههای رهگیری را در سایتهایی که از آنها بازدید میکنید شناسایی میکند و بهروزرسانیهای بسته را در صفحه «برگه جدید» نشان میدهد. برای ارائه این ویژگی و بهبود ویژگیهای Google Shopping برای همه، شماره رهگیری بسته و نام وبسایت به Google ارسال میشود. هرزمان خواستید میتوانید این مورد را در <ph name="BEGIN_LINK" />تنظیمات رهگیری بسته<ph name="END_LINK" /> بهروزرسانی کنید.</translation> <translation id="1085696779717592361">استفاده از Chrome بهطور پیشفرض</translation> <translation id="1105362920864247682">پاک کردن دادههای مرور در Chrome.</translation> <translation id="1113057722807951993">رمزگذاری گذرعبارت شامل روشهای پرداخت و نشانیهای ذخیرهشده در Google Pay نمیشود.
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fil.xtb index ef7ce011..8f127b2 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fil.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fil.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="fil"> +<translation id="1066101356081285416">Made-detect ng Chrome ang mga tracking number sa mga site na binibisita mo at magpapakita ito sa iyo ng mga update sa package sa page na Bagong Tab. Ipapadala sa Google ang tracking number ng package at pangalan ng website para maibigay ang feature na ito at para mapahusay ang mga feature ng Google para sa shopping para sa lahat. Puwede mo itong i-update anumang oras sa <ph name="BEGIN_LINK" />Mga Setting ng Pagsubaybay sa Package<ph name="END_LINK" />.</translation> <translation id="1085696779717592361">Gamitin ang Chrome Bilang Default</translation> <translation id="1105362920864247682">I-clear ang Data Mula sa Pagba-browse sa Chrome.</translation> <translation id="1113057722807951993">Hindi kasama sa pag-encrypt ng passphrase ang mga paraan ng pagbabayad at address mula sa Google Pay.
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fr.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fr.xtb index f9377e7..9c0f5afe 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fr.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fr.xtb
@@ -41,6 +41,7 @@ <translation id="1682483655351012182">Synchroniser vos données Chrome</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1790080846677398234">Ajoute les URL saisies à vos favoris dans Chrome.</translation> +<translation id="1799920918471566157">Astuces Chrome</translation> <translation id="1830634592642484976">Cette adresse est actuellement enregistrée dans Chrome. Pour l'utiliser avec d'autres produits Google, enregistrez-la dans votre compte Google (<ph name="USER_EMAIL" />).</translation> <translation id="1843217788865538014">Utilisez automatiquement Chrome lorsque vous appuyez sur des liens dans des messages, des documents et d'autres applis.</translation> <translation id="1910975740091000991">Chrome pour iOS</translation> @@ -75,6 +76,7 @@ <translation id="2702250627063295552">Ajouter un élément de liste de lecture à Chrome</translation> <translation id="2736805085127235148">Les notifications Chrome sont actuellement désactivées dans les paramètres de votre appareil.</translation> <translation id="2767464022270041271">Aucun mot de passe enregistré. Le Gestionnaire de mots de passe de Google peut vérifier vos mots de passe lorsque vous les enregistrez.</translation> +<translation id="2789947168960170215">Si vous avez oublié votre phrase secrète ou si vous souhaitez modifier ce paramètre, <ph name="BEGIN_LINK" />effacez les données Chrome de votre compte<ph name="END_LINK" />.</translation> <translation id="2868822340714096138">Effacer les données de navigation dans Chrome</translation> <translation id="2869959624320573933">Connectez-vous à Chrome</translation> <translation id="2876628302275096482">Découvrez <ph name="BEGIN_LINK" />comment Chrome protège la confidentialité de vos données<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_id.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_id.xtb index bb41cd6..8f4b39e 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_id.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_id.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="id"> +<translation id="1066101356081285416">Chrome akan mendeteksi nomor pelacakan di situs yang Anda buka dan menampilkan info terbaru terkait paket di halaman Tab Baru. Nomor pelacakan paket dan nama situs akan dikirim ke Google untuk menyediakan fitur ini dan meningkatkan kualitas fitur belanja Google bagi semua orang. Anda dapat memperbaruinya kapan saja di <ph name="BEGIN_LINK" />Setelan Pelacakan Paket<ph name="END_LINK" />.</translation> <translation id="1085696779717592361">Gunakan Chrome secara Default</translation> <translation id="1105362920864247682">Menghapus Data Penjelajahan di Chrome.</translation> <translation id="1113057722807951993">Enkripsi frasa sandi tidak mencakup alamat dan metode pembayaran dari Google Pay.
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_it.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_it.xtb index 5d0d37e6..503681db 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_it.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_it.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="it"> +<translation id="1066101356081285416">Chrome rileverà i numeri di riferimento sui siti che visiti e mostrerà gli aggiornamenti relativi ai pacchetti nella pagina Nuova scheda. Il numero per il monitoraggio della spedizione e il nome del sito web verranno inviati a Google per fornire questa funzionalità e migliorare le funzionalità di Google Shopping per tutti. Puoi aggiornarli in qualsiasi momento nelle <ph name="BEGIN_LINK" />impostazioni di monitoraggio della spedizione<ph name="END_LINK" />.</translation> <translation id="1085696779717592361">Usa Chrome per impostazione predefinita</translation> <translation id="1105362920864247682">Cancella i dati di navigazione in Chrome.</translation> <translation id="1113057722807951993">La crittografia delle passphrase non include metodi di pagamento e indirizzi di Google Pay. @@ -40,6 +41,7 @@ <translation id="1682483655351012182">Sincronizza i tuoi dati di Chrome</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1790080846677398234">Aggiunge gli URL inseriti ai preferiti in Chrome.</translation> +<translation id="1799920918471566157">Suggerimenti per Chrome</translation> <translation id="1830634592642484976">Al momento questo indirizzo è salvato su Chrome. Per usarlo su tutti i prodotti Google, salvalo nel tuo Account Google <ph name="USER_EMAIL" />.</translation> <translation id="1843217788865538014">Usa automaticamente Chrome quando tocchi link in messaggi, documenti e altre app.</translation> <translation id="1910975740091000991">Chrome per iOS</translation> @@ -74,6 +76,7 @@ <translation id="2702250627063295552">Aggiungi elemento dell'elenco di lettura a Chrome</translation> <translation id="2736805085127235148">Le notifiche di Chrome sono attualmente disattivate nelle impostazioni del dispositivo.</translation> <translation id="2767464022270041271">Nessuna password salvata. Gestore delle password di Google può controllare le tue password quando le salvi.</translation> +<translation id="2789947168960170215">Se dimentichi la passphrase o vuoi modificare questa impostazione, <ph name="BEGIN_LINK" />cancella i dati di Chrome nel tuo account<ph name="END_LINK" />.</translation> <translation id="2868822340714096138">Cancella i dati di navigazione in Chrome</translation> <translation id="2869959624320573933">Accedi a Chrome</translation> <translation id="2876628302275096482">Scopri di più su <ph name="BEGIN_LINK" />come Chrome mantiene privati i tuoi dati<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_iw.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_iw.xtb index 702f4d1..cca8495 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_iw.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_iw.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="iw"> +<translation id="1066101356081285416">Chrome יזהה מספרי מעקב באתרים שבהם ביקרת, ואפשר יהיה לראות עדכונים על חבילות בדף 'כרטיסייה חדשה'. מספר המעקב אחר החבילה ושם האתר יישלחו אל Google כדי לספק את התכונה הזו ולשפר את התכונות שקשורות לקניות ב-Google לכולם. תמיד אפשר לעדכן את האפשרות הזו <ph name="BEGIN_LINK" />בהגדרות המעקב אחר חבילה<ph name="END_LINK" />.</translation> <translation id="1085696779717592361">שימוש ב-Chrome כברירת מחדל</translation> <translation id="1105362920864247682">ניקוי נתוני הגלישה ב-Chrome.</translation> <translation id="1113057722807951993">הצפנה של ביטוי סיסמה לא כוללת אמצעי תשלום וכתובות מ-Google Pay.
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ja.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ja.xtb index 8ff30a81..35a76189 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ja.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ja.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="ja"> +<translation id="1066101356081285416">Chrome はアクセスしたサイトで追跡番号を検出し、新しいタブページに最新情報を表示します。荷物追跡番号とウェブサイト名は、この機能の提供と Google ショッピング機能の改善を目的として、Google に送信されます。この設定は<ph name="BEGIN_LINK" />荷物追跡設定<ph name="END_LINK" />でいつでも変更できます。</translation> <translation id="1085696779717592361">Chrome をデフォルトに設定する</translation> <translation id="1105362920864247682">Chrome の閲覧データを削除します。</translation> <translation id="1113057722807951993">Google Pay のお支払い方法と住所は、パスフレーズによる暗号化の対象には含まれません。 @@ -40,6 +41,7 @@ <translation id="1682483655351012182">Chrome のデータを同期する</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1790080846677398234">入力した URL を Chrome のブックマークに追加します。</translation> +<translation id="1799920918471566157">Chrome を使いこなすヒント</translation> <translation id="1830634592642484976">この住所は現在、Chrome に保存されています。Google サービス全体で使用するには、Google アカウント(<ph name="USER_EMAIL" />)に保存してください。</translation> <translation id="1843217788865538014">メッセージ、ドキュメント、他のアプリのリンクをタップすると、Chrome が自動的に開きます。</translation> <translation id="1910975740091000991">Chrome for iOS</translation> @@ -74,6 +76,7 @@ <translation id="2702250627063295552">Chrome にリーディング リストの項目を追加する</translation> <translation id="2736805085127235148">現在、デバイスの設定で Chrome の通知がオフになっています。</translation> <translation id="2767464022270041271">保存されているパスワードがありません。パスワードを保存すると、Google パスワード マネージャーで確認できるようになります。</translation> +<translation id="2789947168960170215">パスフレーズを忘れた場合や、この設定を変更する場合は、<ph name="BEGIN_LINK" />アカウントの Chrome データを消去<ph name="END_LINK" />してください。</translation> <translation id="2868822340714096138">Chrome の閲覧データを削除する</translation> <translation id="2869959624320573933">Chrome へのログイン</translation> <translation id="2876628302275096482"><ph name="BEGIN_LINK" />Chrome でユーザーデータのプライバシーを保護する方法<ph name="END_LINK" />についての詳細</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ka.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ka.xtb index 6ae51c9..e1c1828 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ka.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ka.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="ka"> +<translation id="1066101356081285416">Chrome აღმოაჩენს თვალის დევნებისთვის განკუთვნილ ნომრებს საიტებზე, რომლებსაც სტუმრობთ, შემდეგ კი მოგაწვდით ამანათებთან დაკავშირებულ ახალ ინფორმაციას „ახალი ჩანართის“ გვერდზე. ამანათისთვის თვალის დევნების ნომერი და ვებსაიტის სახელი გაეგზავნება Google-ს ამ ფუნქციის უზრუნველყოფისა და Google-ში საყიდლებთან დაკავშირებული ფუნქციებით საყოველთაო გაუმჯობესების მიზნით. არჩევანის გაახლებას ნებისმიერ დროს შეძლებთ <ph name="BEGIN_LINK" />ამანათებისთვის თვალის დევნების პარამეტრებიდან<ph name="END_LINK" />.</translation> <translation id="1085696779717592361">გამოიყენეთ Chrome ნაგულისხმევად</translation> <translation id="1105362920864247682">დათვალიერების მონაცემების გასუფთავება Chrome-ში.</translation> <translation id="1113057722807951993">საიდუმლო ფრაზით დაშიფვრა არ მოიცავს გადახდის მეთოდებსა და მისამართებს Google Pay-დან. @@ -40,6 +41,7 @@ <translation id="1682483655351012182">თქვენი Chrome მონაცემების სინქრონიზაცია</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1790080846677398234">დაამატებს შეყვანილ URL-ებს თქვენს სანიშნეებს Chrome-ში.</translation> +<translation id="1799920918471566157">მინიშნებები Chrome-ისთვის</translation> <translation id="1830634592642484976">ეს მისამართი ამჟამად შენახულია Chrome-ში. სხვადასხვა Google პროდუქტში მის გამოსაყენებლად შეინახეთ ის თქვენს Google ანგარიშში (<ph name="USER_EMAIL" />).</translation> <translation id="1843217788865538014">ავტომატურად გამოიყენეთ Chrome, როცა შეტყობინებებში, დოკუმენტებში ან სხვა აპებში ბმულებს ეხებით.</translation> <translation id="1910975740091000991">Chrome iOS-ისთვის</translation> @@ -74,6 +76,7 @@ <translation id="2702250627063295552">საკითხავი სიის ერთეულის დამატება Chrome-ში</translation> <translation id="2736805085127235148">Chrome-ისგან შეტყობინებების მიღება ამჟამად გამორთულია თქვენი მოწყობილობის პარამეტრებიდან.</translation> <translation id="2767464022270041271">შენახული პაროლები არ არის. Google პაროლების მმართველი თქვენი პაროლების შემოწმებას შეძლებს მათი შენახვის შემდეგ.</translation> +<translation id="2789947168960170215">საიდუმლო ფრაზის დავიწყების ან ამ პარამეტრის შეცვლის სურვილის შემთხვევაში, <ph name="BEGIN_LINK" />წაშალეთ Chrome მონაცემები თქვენს ანგარიშში<ph name="END_LINK" />.</translation> <translation id="2868822340714096138">დათვალიერების მონაცემების გასუფთავება Chrome-ში</translation> <translation id="2869959624320573933">შედით Chrome-ში</translation> <translation id="2876628302275096482">შეიტყვეთ მეტი იმის შესახებ, თუ <ph name="BEGIN_LINK" />როგორ ინარჩუნებს Chrome თქვენი მონაცემების კონფიდენციალურობას<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ko.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ko.xtb index d31b84b..77938d22 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ko.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ko.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="ko"> +<translation id="1066101356081285416">Chrome은 사용자가 방문한 사이트에서 운송장 번호를 감지하여 새 탭 페이지에 배송 현황을 표시합니다. 이 기능을 제공하고 모든 사용자를 위해 Google 쇼핑 기능을 개선하기 위해 운송장 번호와 웹사이트 이름이 Google로 전송됩니다. <ph name="BEGIN_LINK" />배송 추적 설정<ph name="END_LINK" />에서 언제든지 업데이트할 수 있습니다.</translation> <translation id="1085696779717592361">Chrome을 기본 브라우저로 사용</translation> <translation id="1105362920864247682">Chrome에서 인터넷 사용 기록을 삭제합니다.</translation> <translation id="1113057722807951993">Google Pay 결제 수단 및 주소는 암호로 암호화되지 않습니다.
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_lo.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_lo.xtb index 780eea5..07c038bf 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_lo.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_lo.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="lo"> +<translation id="1066101356081285416">Chrome ຈະກວດຫາໝາຍເລກການຕິດຕາມຢູ່ເວັບໄຊຕ່າງໆທີ່ທ່ານເຂົ້າເບິ່ງ ແລະ ສະແດງຂໍ້ມູນອັບເດດກ່ຽວກັບພັດສະດຸໃຫ້ທ່ານເຫັນຢູ່ໜ້າແຖບໃໝ່. ລະບົບຈະສົ່ງໝາຍເລກຕິດຕາມພັດສະດຸ ແລະ ຊື່ເວັບໄຊໄປຫາ Google ເພື່ອໃຫ້ບໍລິການຄຸນສົມບັດນີ້ ແລະ ເພື່ອປັບປຸງຄຸນສົມບັດຕ່າງໆກ່ຽວກັບການຊື້ເຄື່ອງຂອງ Google ສຳລັບທຸກຄົນ. ທ່ານສາມາດອັບເດດຂໍ້ມູນນີ້ໄດ້ທຸກເວລາໃນ <ph name="BEGIN_LINK" />ການຕັ້ງຄ່າການຕິດຕາມພັດສະດຸ<ph name="END_LINK" />.</translation> <translation id="1085696779717592361">ໃຊ້ Chrome ເປັນຄ່າເລີ່ມຕົ້ນ</translation> <translation id="1105362920864247682">ລຶບລ້າງຂໍ້ມູນການທ່ອງເວັບໃນ Chrome.</translation> <translation id="1113057722807951993">ການເຂົ້າລະຫັດດ້ວຍລະຫັດຜ່ານບໍ່ຮວມເຖິງວິທີການຈ່າຍເງິນ ແລະ ທີ່ຢູ່ຈາກ Google Pay.
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_mr.xtb index 76c734e..ce87267 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_mr.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_mr.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="mr"> +<translation id="1066101356081285416">Chrome हे तुम्ही भेट दिलेल्या साइटवरील ट्रॅकिंग नंबर डिटेक्ट करेल आणि तुम्हाला नवीन टॅब पेजवर पॅकेजशी संबंधित अपडेट दाखवेल. हे वैशिष्ट्य पुरवण्यासाठी आणि सर्वांसाठी Google खरेदी वैशिष्ट्यांमध्ये सुधारणा करण्यासाठी पॅकेज ट्रॅकिंग नंबर व वेबसाइटचे नाव हे Chromium ला पाठवले जाईल. तुम्ही हे <ph name="BEGIN_LINK" />पॅकेज ट्रॅकिंग सेटिंग्ज<ph name="END_LINK" /> मध्ये कधीही अपडेट करू शकता.</translation> <translation id="1085696779717592361">बाय डीफॉल्ट Chrome वापरा</translation> <translation id="1105362920864247682">Chrome मधील ब्राउझिंग डेटा साफ करा.</translation> <translation id="1113057722807951993">पासफ्रेझ एंक्रिप्शनमध्ये Google Pay वरील पेमेंट पद्धतींचा आणि पत्त्यांचा समावेश नसतो.
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ms.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ms.xtb index e241a9a..95a3aaef 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ms.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ms.xtb
@@ -41,6 +41,7 @@ <translation id="1682483655351012182">Segerakkan Data Chrome Anda</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1790080846677398234">Menambahkan URL yang diinput pada penanda halaman anda dalam Chrome.</translation> +<translation id="1799920918471566157">Petua Chrome</translation> <translation id="1830634592642484976">Alamat ini disimpan dalam Chrome pada masa ini. Untuk menggunakan alamat ini pada seluruh produk Google, simpan alamat ini dalam Google Account anda, <ph name="USER_EMAIL" />.</translation> <translation id="1843217788865538014">Gunakan Chrome secara automatik apabila anda mengetik pautan dalam mesej, dokumen dan apl lain.</translation> <translation id="1910975740091000991">Chrome untuk iOS</translation> @@ -75,6 +76,7 @@ <translation id="2702250627063295552">Tambahkan Item Senarai Bacaan pada Chrome</translation> <translation id="2736805085127235148">Pemberitahuan Chrome dimatikan dalam tetapan peranti anda pada masa ini.</translation> <translation id="2767464022270041271">Tiada kata laluan yang disimpan. Google Password Manager boleh menyemak kata laluan anda yang disimpan.</translation> +<translation id="2789947168960170215">Jika anda terlupa ungkapan laluan anda atau mahu menukar tetapan ini, <ph name="BEGIN_LINK" />kosongkan data Chrome dalam akaun anda<ph name="END_LINK" />.</translation> <translation id="2868822340714096138">Kosongkan Data Semakan Imbas dalam Chrome</translation> <translation id="2869959624320573933">Log Masuk ke Chrome</translation> <translation id="2876628302275096482">Ketahui lebih lanjut tentang <ph name="BEGIN_LINK" />cara Chrome mengekalkan data anda peribadi<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ne.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ne.xtb index af32747..7c5d6a5 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ne.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ne.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="ne"> +<translation id="1066101356081285416">Chrome ले तपाईं जाने साइटहरूमा ट्र्याकिङ नम्बर पत्ता लगाउने छ र तपाईंलाई नयाँ ट्याब पेजमा प्याकेजसम्बन्धी अद्यावधिक जानकारी देखाउने छ। यो सुविधा प्रदान गर्न र सबैका निम्ति Google Shopping का सुविधाहरूको गुणस्तर सुधार गर्न प्याकेज ट्र्याकिङ नम्बर र वेबसाइटको नाम Google मा पठाइने छन्। तपाईं जुनसुकै बेला <ph name="BEGIN_LINK" />प्याकेज ट्र्याकिङसम्बन्धी सेटिङ<ph name="END_LINK" />मा गई यो कुरा परिवर्तन गर्न सक्नुहुन्छ।</translation> <translation id="1085696779717592361">Chrome लाई डिफल्ट ब्राउजर बनाउनुहोस्</translation> <translation id="1105362920864247682">Chrome को ब्राउजिङ डेटा मेटाउनुहोस्।</translation> <translation id="1113057722807951993">पासफ्रेज इन्क्रिप्सनमा Google Pay मा भएका भुक्तानी विधि र ठेगानाहरू समावेश हुँदैनन्।
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_nl.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_nl.xtb index ae45ce3..00fa9c6 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_nl.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_nl.xtb
@@ -41,6 +41,7 @@ <translation id="1682483655351012182">Je Chrome-gegevens synchroniseren</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1790080846677398234">Voegt de ingevoerde URL's toe aan je bookmarks in Chrome.</translation> +<translation id="1799920918471566157">Chrome-tips</translation> <translation id="1830634592642484976">Dit adres is momenteel opgeslagen in Chrome. Als je het wilt gebruiken in andere Google-producten, sla je het op in je Google-account (<ph name="USER_EMAIL" />).</translation> <translation id="1843217788865538014">Gebruik automatisch Chrome als je op links in berichten, documenten en andere apps tikt.</translation> <translation id="1910975740091000991">Chrome voor iOS</translation> @@ -75,6 +76,7 @@ <translation id="2702250627063295552">Item toevoegen aan leeslijst in Chrome</translation> <translation id="2736805085127235148">Chrome-meldingen staan momenteel uit in je apparaatinstellingen.</translation> <translation id="2767464022270041271">Geen opgeslagen wachtwoorden. Google Wachtwoordmanager kan je wachtwoorden checken als je deze opslaat.</translation> +<translation id="2789947168960170215">Als je je wachtwoordzin bent vergeten of deze instelling wilt wijzigen, <ph name="BEGIN_LINK" />wis je de Chrome-gegevens in je account<ph name="END_LINK" />.</translation> <translation id="2868822340714096138">Browsegegevens in Chrome wissen</translation> <translation id="2869959624320573933">Inloggen bij Chrome</translation> <translation id="2876628302275096482">Meer informatie over <ph name="BEGIN_LINK" />hoe Chrome je gegevens privé houdt<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_pa.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_pa.xtb index dc6b317d..a464f332 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_pa.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_pa.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="pa"> +<translation id="1066101356081285416">Chrome ਤੁਹਾਡੇ ਵੱਲੋਂ ਦੇਖੀਆਂ ਗਈਆਂ ਸਾਈਟਾਂ ਦੇ ਟਰੈਕਿੰਗ ਨੰਬਰਾਂ ਦਾ ਪਤਾ ਲਗਾਵੇਗਾ ਅਤੇ ਨਵੇਂ ਟੈਬ ਪੰਨੇ 'ਤੇ ਤੁਹਾਨੂੰ ਪੈਕੇਜ ਸੰਬੰਧੀ ਅੱਪਡੇਟਾਂ ਦਿਖਾਵੇਗਾ। ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ ਮੁਹੱਈਆ ਕਰਨ ਅਤੇ ਹਰ ਕਿਸੇ ਲਈ Google ਖਰੀਦਦਾਰੀ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ ਪੈਕੇਜ ਟਰੈਕਿੰਗ ਨੰਬਰ ਅਤੇ ਵੈੱਬਸਾਈਟ ਦਾ ਨਾਮ Google ਨੂੰ ਭੇਜਿਆ ਜਾਵੇਗਾ। ਤੁਸੀਂ ਇਸਨੂੰ ਕਿਸੇ ਵੇਲੇ ਵੀ <ph name="BEGIN_LINK" />ਪੈਕੇਜ ਟਰੈਕਿੰਗ ਸੈਟਿੰਗਾਂ<ph name="END_LINK" /> ਵਿੱਚ ਅੱਪਡੇਟ ਕਰ ਸਕਦੇ ਹੋ।</translation> <translation id="1085696779717592361">Chrome ਨੂੰ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਤੌਰ 'ਤੇ ਵਰਤੋ</translation> <translation id="1105362920864247682">Chrome ਵਿੱਚ ਬ੍ਰਾਊਜ਼ਿੰਗ ਡਾਟਾ ਕਲੀਅਰ ਕਰੋ।</translation> <translation id="1113057722807951993">ਪਾਸਫਰੇਜ਼ ਇਨਕ੍ਰਿਪਸ਼ਨ ਵਿੱਚ Google Pay ਦੀਆਂ ਭੁਗਤਾਨ ਵਿਧੀਆਂ ਅਤੇ ਪਤੇ ਸ਼ਾਮਲ ਨਹੀਂ ਹਨ। @@ -40,6 +41,7 @@ <translation id="1682483655351012182">ਆਪਣੇ Chrome ਡਾਟੇ ਦਾ ਸਿੰਕ ਕਰੋ</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1790080846677398234">ਤੁਹਾਡੇ Chrome ਬੁੱਕਮਾਰਕਾਂ ਵਿੱਚ ਇਨਪੁੱਟ ਕੀਤੇ URL ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ।</translation> +<translation id="1799920918471566157">Chrome ਸੰਬੰਧੀ ਨੁਕਤੇ</translation> <translation id="1830634592642484976">ਇਹ ਪਤਾ ਫ਼ਿਲਹਾਲ Chrome 'ਤੇ ਰੱਖਿਅਤ ਹੈ। ਇਸਨੂੰ ਸਾਰੇ Google ਉਤਪਾਦਾਂ ਵਿੱਚ ਵਰਤਣ ਲਈ, ਇਸਨੂੰ ਆਪਣੇ Google ਖਾਤੇ ਵਿੱਚ ਰੱਖਿਅਤ ਕਰੋ, <ph name="USER_EMAIL" />.</translation> <translation id="1843217788865538014">ਸੁਨੇਹਿਆਂ, ਦਸਤਾਵੇਜ਼ਾਂ ਅਤੇ ਹੋਰ ਐਪਾਂ ਦੇ ਲਿੰਕਾਂ 'ਤੇ ਟੈਪ ਕਰਨ 'ਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ Chrome ਵਿੱਚ ਖੋਲ੍ਹੋ।</translation> <translation id="1910975740091000991">iOS ਲਈ Chrome</translation> @@ -74,6 +76,7 @@ <translation id="2702250627063295552">Chrome ਦੀ ਪੜ੍ਹਨ-ਸੂਚੀ ਵਿੱਚ ਆਈਟਮ ਸ਼ਾਮਲ ਕਰੋ</translation> <translation id="2736805085127235148">ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦੀਆਂ ਸੈਟਿੰਗਾਂ ਵਿੱਚ Chrome ਦੀਆਂ ਸੂਚਨਾਵਾਂ ਫ਼ਿਲਹਾਲ ਬੰਦ ਹਨ।</translation> <translation id="2767464022270041271">ਕੋਈ ਰੱਖਿਅਤ ਕੀਤਾ ਪਾਸਵਰਡ ਨਹੀਂ। ਤੁਹਾਡੇ ਵੱਲੋਂ ਆਪਣੇ ਪਾਸਵਰਡ ਰੱਖਿਅਤ ਕਰਨ 'ਤੇ Google Password Manager ਉਨ੍ਹਾਂ ਦੀ ਜਾਂਚ ਕਰ ਸਕਦਾ ਹੈ।</translation> +<translation id="2789947168960170215">ਜੇ ਤੁਸੀਂ ਆਪਣਾ ਪਾਸਫਰੇਜ਼ ਭੁੱਲ ਗਏ ਹੋ ਜਾਂ ਇਸ ਸੈਟਿੰਗ ਨੂੰ ਬਦਲਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ <ph name="BEGIN_LINK" />ਆਪਣੇ ਖਾਤੇ ਵਿੱਚ Chrome ਡਾਟੇ ਨੂੰ ਕਲੀਅਰ ਕਰੋ<ph name="END_LINK" />।</translation> <translation id="2868822340714096138">Chrome ਵਿੱਚ ਬ੍ਰਾਊਜ਼ਿੰਗ ਡਾਟਾ ਕਲੀਅਰ ਕਰੋ</translation> <translation id="2869959624320573933">Chrome ਵਿੱਚ ਸਾਈਨ-ਇਨ ਕਰੋ</translation> <translation id="2876628302275096482"><ph name="BEGIN_LINK" />Chrome ਤੁਹਾਡੇ ਡਾਟੇ ਨੂੰ ਨਿੱਜੀ ਕਿਵੇਂ ਰੱਖਦਾ ਹੈ<ph name="END_LINK" /> ਇਸ ਬਾਰੇ ਹੋਰ ਜਾਣੋ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_pl.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_pl.xtb index 8bd9348..47816ae 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_pl.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_pl.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="pl"> +<translation id="1066101356081285416">Chrome będzie wykrywać numery śledzenia w odwiedzanych przez Ciebie witrynach i wyświetlać aktualne informacje o przesyłkach na stronie Nowa karta. Numery śledzenia przesyłek i nazwy witryn będą wysyłane do Google i używane do obsługi tej funkcji oraz do ogólnego ulepszania funkcji zakupów. Możesz to zmienić w dowolnym momencie w <ph name="BEGIN_LINK" />ustawieniach śledzenia przesyłek<ph name="END_LINK" />.</translation> <translation id="1085696779717592361">Domyślne korzystanie z Chrome</translation> <translation id="1105362920864247682">Wyczyść dane przeglądania w Chrome.</translation> <translation id="1113057722807951993">Szyfrowanie haseł nie obejmuje form płatności ani adresów w Google Pay. @@ -40,6 +41,7 @@ <translation id="1682483655351012182">Synchronizuj dane Chrome</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1790080846677398234">Dodaje wpisane adresy URL do zakładek w Chrome.</translation> +<translation id="1799920918471566157">Chrome – wskazówki</translation> <translation id="1830634592642484976">Ten adres jest obecnie zapisany w Chrome. Aby używać go w różnych usługach Google, zapisz go na swoim koncie Google <ph name="USER_EMAIL" />.</translation> <translation id="1843217788865538014">Automatycznie używaj Chrome, gdy klikasz linki w wiadomościach, dokumentach i innych aplikacjach.</translation> <translation id="1910975740091000991">Chrome na iOS</translation> @@ -74,6 +76,7 @@ <translation id="2702250627063295552">Dodaj element listy Do przeczytania do Chrome</translation> <translation id="2736805085127235148">Powiadomienia Chrome są aktualnie wyłączone w ustawieniach urządzenia.</translation> <translation id="2767464022270041271">Brak zapisanych haseł. Menedżer haseł Google może sprawdzać Twoje hasła, gdy je zapiszesz.</translation> +<translation id="2789947168960170215">Jeśli zapomnisz hasło lub zechcesz zmienić to ustawienie, <ph name="BEGIN_LINK" />wyczyść dane Chrome na swoim koncie<ph name="END_LINK" />.</translation> <translation id="2868822340714096138">Wyczyść dane przeglądania w Chrome</translation> <translation id="2869959624320573933">Zaloguj się w Chrome</translation> <translation id="2876628302275096482">Dowiedz się więcej o tym, <ph name="BEGIN_LINK" />jak Chrome dba o prywatność Twoich danych<ph name="END_LINK" />.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ro.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ro.xtb index ec5e7df..0ae4201b 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ro.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ro.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="ro"> +<translation id="1066101356081285416">Chrome va detecta numerele de urmărire pe site-urile pe care le accesezi și va afișa noutăți despre colete în pagina Filă nouă. Numărul de urmărire a coletului și numele site-ului se vor trimite la Google pentru a oferi această funcție și a îmbunătăți funcțiile Cumpărături Google pentru toată lumea. Poți actualiza oricând opțiunea în <ph name="BEGIN_LINK" />Setările pentru urmărirea coletelor<ph name="END_LINK" />.</translation> <translation id="1085696779717592361">Folosește Chrome în mod prestabilit</translation> <translation id="1105362920864247682">Șterge datele de navigare din Chrome.</translation> <translation id="1113057722807951993">Criptarea expresiei de acces nu include metodele de plată și adresele din Google Pay.
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sk.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sk.xtb index 3448c4b..710f032 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sk.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sk.xtb
@@ -40,6 +40,7 @@ <translation id="1682483655351012182">Synchronizácia údajov Chromu</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1790080846677398234">Pridá vložené webové adresy do záložiek v Chrome.</translation> +<translation id="1799920918471566157">Tipy pre Chrome</translation> <translation id="1830634592642484976">Táto adresa je momentálne uložená v Chrome. Ak ju chcete používať v službách Googlu, uložte si ju do účtu Google <ph name="USER_EMAIL" />.</translation> <translation id="1843217788865538014">Automaticky používajte Chrome, keď klepnete na odkazy v správach, dokumentoch a aplikáciách.</translation> <translation id="1910975740091000991">Chrome pre iOS</translation> @@ -74,6 +75,7 @@ <translation id="2702250627063295552">Pridať položku čitateľského zoznamu do Chromu</translation> <translation id="2736805085127235148">Upozornenia Chromu sú momentálne v nastaveniach zariadenia vypnuté.</translation> <translation id="2767464022270041271">Žiadne uložené heslá. Správca hesiel Google môže kontrolovať heslá, keď ich uložíte.</translation> +<translation id="2789947168960170215">Ak ste zabudli prístupovú frázu alebo chcete toto nastavenie zmeniť, <ph name="BEGIN_LINK" />vymažte údaje Chromu vo svojom účte<ph name="END_LINK" />.</translation> <translation id="2868822340714096138">Vymazanie dát prehliadania v Chrome</translation> <translation id="2869959624320573933">Prihláste sa do Chromu</translation> <translation id="2876628302275096482"><ph name="BEGIN_LINK" />Ako Chrome uchováva vaše údaje v súkromí<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr-Latn.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr-Latn.xtb index bc56898..e82e7f89 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr-Latn.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr-Latn.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="sr-Latn"> +<translation id="1066101356081285416">Chrome otkriva brojeve za praćenje na sajtovima koje posećujete i prikazuje vam novosti o paketima na stranici Nova kartica. Broj za praćenje paketa i naziv veb-sajta se šalju Google-u radi pružanja ove funkcije i poboljšanja funkcija Google kupovine za sve. To možete da ažurirate u svakom trenutku u <ph name="BEGIN_LINK" />podešavanjima praćenja paketa<ph name="END_LINK" />.</translation> <translation id="1085696779717592361">Podrazumevano koristite Chrome</translation> <translation id="1105362920864247682">Obrišite podatke pregledanja u Chrome-u.</translation> <translation id="1113057722807951993">Šifrovanje pomoću pristupne fraze ne obuhvata načine plaćanja i adrese iz Google Pay-a.
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr.xtb index 5c28bd5a..7ad2c9d 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="sr"> +<translation id="1066101356081285416">Chrome открива бројеве за праћење на сајтовима које посећујете и приказује вам новости о пакетима на страници Нова картица. Број за праћење пакета и назив веб-сајта се шаљу Google-у ради пружања ове функције и побољшања функција Google куповине за све. То можете да ажурирате у сваком тренутку у <ph name="BEGIN_LINK" />подешавањима праћења пакета<ph name="END_LINK" />.</translation> <translation id="1085696779717592361">Подразумевано користите Chrome</translation> <translation id="1105362920864247682">Обришите податке прегледања у Chrome-у.</translation> <translation id="1113057722807951993">Шифровање помоћу приступне фразе не обухвата начине плаћања и адресе из Google Pay-а.
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_te.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_te.xtb index ea109a6..47ad871e 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_te.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_te.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="te"> +<translation id="1066101356081285416">మీరు చూసే సైట్లలోని ట్రాకింగ్ నంబర్లను Chrome గుర్తించి, కొత్త ట్యాబ్ పేజీలో మీ ప్యాకేజీ అప్డేట్లను చూపుతుంది. ఈ ఫీచర్ను అందించడానికి, అందరి కోసం షాపింగ్ ఫీచర్లను మెరుగుపరచడానికి ప్యాకేజీ ట్రాకింగ్ నంబర్, వెబ్సైట్ పేరు Googleకు పంపబడతాయి. మీరు దీనిని <ph name="BEGIN_LINK" />ప్యాకేజీ ట్రాకింగ్ సెట్టింగ్ల<ph name="END_LINK" />లో ఎప్పుడైనా అప్డేట్ చేయవచ్చు.</translation> <translation id="1085696779717592361">Chromeను ఆటోమేటిక్ బ్రౌజర్గా ఉపయోగించండి</translation> <translation id="1105362920864247682">Chromeలో బ్రౌజింగ్ డేటాను క్లియర్ చేయండి.</translation> <translation id="1113057722807951993">రహస్య పదబంధం ఎన్క్రిప్షన్లో Google Pay నుండి పేమెంట్ ఆప్షన్లు, అడ్రస్ల ఉండవు.
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_th.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_th.xtb index 0373ad3..d1d9b24c 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_th.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_th.xtb
@@ -41,6 +41,7 @@ <translation id="1682483655351012182">ซิงค์ข้อมูล Chrome</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1790080846677398234">เพิ่ม URL ที่ป้อนไปยังบุ๊กมาร์กใน Chrome</translation> +<translation id="1799920918471566157">เคล็ดลับในการใช้ Chrome</translation> <translation id="1830634592642484976">บันทึกที่อยู่นี้ไว้ใน Chrome แล้ว หากต้องการใช้ในผลิตภัณฑ์ต่างๆ ของ Google ให้บันทึกไว้ในบัญชี Google ของคุณ <ph name="USER_EMAIL" /></translation> <translation id="1843217788865538014">ใช้ Chrome โดยอัตโนมัติเมื่อคุณแตะลิงก์ในข้อความ เอกสาร และแอปอื่นๆ</translation> <translation id="1910975740091000991">Chrome สำหรับ iOS</translation> @@ -75,6 +76,7 @@ <translation id="2702250627063295552">เพิ่มรายการเรื่องรออ่านใน Chrome</translation> <translation id="2736805085127235148">ตอนนี้การแจ้งเตือนของ Chrome ปิดอยู่ในการตั้งค่าอุปกรณ์</translation> <translation id="2767464022270041271">ไม่มีรหัสผ่านที่บันทึกไว้ เครื่องมือจัดการรหัสผ่านบน Google จะตรวจสอบรหัสผ่านได้เมื่อคุณบันทึกไว้</translation> +<translation id="2789947168960170215">หากลืมรหัสผ่านหรือต้องการเปลี่ยนการตั้งค่านี้ ให้<ph name="BEGIN_LINK" />ล้างข้อมูล Chrome ในบัญชี<ph name="END_LINK" /></translation> <translation id="2868822340714096138">ล้างข้อมูลการท่องเว็บใน Chrome</translation> <translation id="2869959624320573933">ลงชื่อเข้าใช้ Chrome</translation> <translation id="2876628302275096482">ดูข้อมูลเพิ่มเติมเกี่ยวกับ<ph name="BEGIN_LINK" />วิธีที่ Chrome ช่วยรักษาข้อมูลของคุณให้เป็นส่วนตัว<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_tr.xtb index 9fbcb52a..8aad5be7 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_tr.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_tr.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="tr"> +<translation id="1066101356081285416">Chrome, ziyaret ettiğiniz sitelerdeki takip numaralarını algılar ve kargoyla ilgili güncellemeleri Yeni Sekme sayfasında gösterir. Kargo takip numarası ve web sitesinin adı, bu özelliğin sunulması ve Google Alışveriş özelliklerinin herkes için iyileştirilmesi amacıyla Google'a gönderilir. Bunu istediğiniz zaman <ph name="BEGIN_LINK" />Kargo Takibi Ayarları<ph name="END_LINK" />'ndan güncelleyebilirsiniz.</translation> <translation id="1085696779717592361">Chrome'u Varsayılan Olarak Kullanın</translation> <translation id="1105362920864247682">Chrome'da Tarama Verilerini Temizleyin.</translation> <translation id="1113057722807951993">Parolayla şifreleme, Google Pay'deki ödeme yöntemlerini ve adresleri kapsamaz.
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_uk.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_uk.xtb index 9913f80..81b31a8 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_uk.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_uk.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="uk"> +<translation id="1066101356081285416">Chrome виявлятиме номери відстеження на сайтах, які ви відвідуєте, і показуватиме оновлення щодо відправлень на сторінці нової вкладки. Номер відстеження замовлення й назва веб-сайту надсилатимуться в Google, щоб забезпечити роботу цієї функції і зробити покупки в Google зручнішими для всіх користувачів. Ви можете будь-коли змінити це в <ph name="BEGIN_LINK" />налаштуваннях відстеження замовлень<ph name="END_LINK" />.</translation> <translation id="1085696779717592361">Використовувати Chrome за умовчанням</translation> <translation id="1105362920864247682">Очистити дані веб-перегляду в Chrome.</translation> <translation id="1113057722807951993">Шифрування за допомогою парольної фрази не застосовується до способів оплати й адрес із Google Pay.
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_uz.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_uz.xtb index dde5f08..ff932c9 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_uz.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_uz.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="uz"> +<translation id="1066101356081285416">Chrome siz ochgan saytlardagi treking raqamlarini aniqlaydi va yangi varaqda paket yangilanishlarini koʻrsatadi. Bu funksiyani ishlashini taʼminlash va hamma uchun Google Shopping xizmatini yaxshilash uchun joʻnatmani kuzatish raqami va veb-sayt nomi Chrome brauzeriga yuboriladi. Buni istalgan vaqtda <ph name="BEGIN_LINK" />Joʻnatmani kuzatish raqamlari<ph name="END_LINK" /> orqali yangilash mumkin.</translation> <translation id="1085696779717592361">Chrome birlamchi boʻlsin</translation> <translation id="1105362920864247682">Chrome brauzer maʼlumotlarini tozalash.</translation> <translation id="1113057722807951993">Kodli ibora bilan shifrlash ichiga Google Pay xizmatidagi toʻlov usullari va manzillar kirmaydi.
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-HK.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-HK.xtb index 4c96393..b47fbf4d 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-HK.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-HK.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="zh-HK"> +<translation id="1066101356081285416">當你瀏覽網站時,Chrome 會在網站上偵測是否有追蹤號碼,並在「新分頁」顯示包裹最新消息。為提供此功能,系統會將包裹追蹤編號和網站名稱傳送給 Google,為所有人改善購物功能。你可隨時在「<ph name="BEGIN_LINK" />包裹追蹤設定<ph name="END_LINK" />」進行更新。</translation> <translation id="1085696779717592361">預設為使用 Chrome</translation> <translation id="1105362920864247682">清除 Chrome 中的瀏覽資料。</translation> <translation id="1113057722807951993">密碼短語加密的資料不包括 Google Pay 的付款方法和地址。
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-TW.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-TW.xtb index ba5bc2e..0e173e2 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-TW.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-TW.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="zh-TW"> +<translation id="1066101356081285416">造訪網站時,Chrome 會在網站上偵測是否有追蹤號碼,並在新分頁顯示包裹配送動態。為提供這項功能,系統會將包裹追蹤號碼和網站名稱傳送給 Google。這些資料也會用於改善 Google 購物功能,造福所有使用者。你隨時可以前往<ph name="BEGIN_LINK" />包裹追蹤設定<ph name="END_LINK" />進行更新。</translation> <translation id="1085696779717592361">使用 Chrome 做為預設瀏覽器</translation> <translation id="1105362920864247682">清除 Chrome 中的瀏覽資料。</translation> <translation id="1113057722807951993">通關密語加密的資料不包括 Google Pay 的付款方式和地址。如要變更這項設定,請<ph name="BEGIN_LINK" />清除帳戶中的 Chrome 資料<ph name="END_LINK" />。</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_af.xtb b/ios/chrome/app/strings/resources/ios_strings_af.xtb index 4520773..2cb2f32 100644 --- a/ios/chrome/app/strings/resources/ios_strings_af.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_af.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Raak en hou ’n datum.</translation> <translation id="1959679933317802873">Wag tans vir inhoud</translation> <translation id="1967461193809857427">{count,plural, =1{Maak die oortjie oop wat jy onlangs op Android gebruik het?}other{Maak die oortjies oop wat jy onlangs op Android gebruik het?}}</translation> +<translation id="1972325230031091483">Jy sal vinniger kan blaai omdat inhoud proaktief op grond van jou huidige webbladsybesoek gelaai word</translation> <translation id="1973912524893600642">Hou data</translation> <translation id="1974060860693918893">Gevorderd</translation> <translation id="1980417445547898121">{count,plural, =1{Kry die {count} oortjie wat onlangs op jou ander toestel aktief was op hierdie iPhone}other{Kry die {count} oortjies wat onlangs op jou ander toestel aktief was op hierdie iPhone}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Wysig die geleentheidbesonderhede en tik op “Stoor”.</translation> <translation id="3240426699337459095">Skakel gekopieer</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">As jy ook Chrome-gebruiksverslae deel, sluit daardie verslae die URL'e in wat jy besoek</translation> <translation id="3245744387817103524">Jou verandering kon nie gestoor word nie.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> van <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Vul wagwoorde outomaties in</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">Onaktief</translation> <translation id="4375040482473363939">QR-kodesoektog</translation> <translation id="4378154925671717803">Foon</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> het ’n wagwoord met jou gedeel vir <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Tik om taal te verander.</translation> <translation id="4405320213589929829">Gebruik adresse op webbladsye om plaaslike inligting en rigtingaanwysings te kry.</translation> <translation id="4420409367264901497">Wysig boekmerk</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Gaan tans wagwoorde na …</translation> <translation id="5559567453458728487">Skakel metingeenhede om wat op die web gevind word</translation> <translation id="556042886152191864">Knoppie</translation> +<translation id="5572648434713976849">Jy sal verbeterde voorstelle in die adresbalk kry</translation> <translation id="5572684875078967866">Inligtingberging</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Spoor hierdie pakkie na}other{Spoor alle pakkies na}}</translation> <translation id="5597915316964418992">Maak die oortjierooster oop</translation> @@ -924,6 +926,7 @@ <translation id="5922999516621365983">Sleep oortjie hierheen om dit vas te speld.</translation> <translation id="5938160824633642847">Jou toestel is amper vol. Maak spasie beskikbaar en probeer weer.</translation> <translation id="5948291296578561264">Hiermee kan jy foto's in jou fotobiblioteek stoor.</translation> +<translation id="5954562874938077107">Gaan na Lens</translation> <translation id="5955891643922670672">Bekyk tans vanlyn weergawe</translation> <translation id="5957613098218939406">Meer opsies</translation> <translation id="595769230373966252">Soek met <ph name="SEARCH_PROVIDER" /></translation> @@ -1082,6 +1085,7 @@ <translation id="6642362222295953972">Skakel oor na bestaande oortjie</translation> <translation id="6643016212128521049">Vee uit</translation> <translation id="6645899968535965230">QR-kode: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">URL'e wat jy besoek, word na Google toe gestuur om te voorspel watter werwe jy dalk volgende sal besoek</translation> <translation id="6647480763136463714"><ph name="TIME" /> laas laat loop</translation> <translation id="6656103420185847513">Wysig vouer</translation> <translation id="6657585470893396449">Wagwoord</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_am.xtb b/ios/chrome/app/strings/resources/ios_strings_am.xtb index d11587f..ab28950 100644 --- a/ios/chrome/app/strings/resources/ios_strings_am.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_am.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">አንድን ቀን ይንኩ እና ይያዙ።</translation> <translation id="1959679933317802873">ይዘትን በመጠባበቅ ላይ</translation> <translation id="1967461193809857427">{count,plural, =1{በAndroid ላይ ትተውት የነበረ ትርን ለመቀጠል ይከፈት?}one{በAndroid ላይ ትተውት የነበረ ትርን ለመቀጠል ይከፈት?}other{በAndroid ላይ ትተዋቸው የነበሩ ትሮችን ለመቀጠል ይከፈቱ?}}</translation> +<translation id="1972325230031091483">አሁን ባለው የድረ-ገፅ ጉብኝትዎ ላይ በመመስረት ይዘቱ በንቃት ስለተጫነ በፍጥነት ያስሱታል</translation> <translation id="1973912524893600642">ውሂብን አቆይ</translation> <translation id="1974060860693918893">የላቀ</translation> <translation id="1980417445547898121">{count,plural, =1{የእርስዎን {count} በቅርብ ጊዜ ገቢር የነበረ ትር ከሌላ መሣሪያዎ በዚህ iPhone ላይ ያግኙ}one{የእርስዎን {count} በቅርብ ጊዜ ገቢር የነበረ ትር ከሌላ መሣሪያዎ በዚህ iPhone ላይ ያግኙ}other{የእርስዎን {count} በቅርብ ጊዜ ገቢር የነበሩ ትሮች ከሌላ መሣሪያዎ በዚህ iPhone ላይ ያግኙ}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">የክስተት ዝርዝሮቹን ያርትዑ እና «አስቀምጥ» የሚለውን መታ ያድርጉ።</translation> <translation id="3240426699337459095">አገናኝ ተቀድቷል</translation> <translation id="3244271242291266297">ወወ</translation> +<translation id="3245429137663807393">እንዲሁም የChrome አጠቃቀም ሪፖርቶችን ካጋሩ፣ እነዚያ ሪፖርቶች እርስዎ የሚጎበኟቸውን ዩአርኤሎች ያካትታሉ</translation> <translation id="3245744387817103524">ለውጥዎ መቀመጥ አልቻለም።</translation> <translation id="3252394070589632019"><ph name="VALUE" />፣ <ph name="ADDITIONAL_INFO" />፣ <ph name="INDEX" /> ከ<ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">የይለፍ ቃላትን ራስ-ሙላ</translation> @@ -557,6 +559,7 @@ <translation id="3922310737605261887">የቀዱትን ጽሁፍ ይፈልጉ</translation> <translation id="3928666092801078803">የእኔን ውሂብ አጣምር</translation> <translation id="3929457972718048006">አድራሻዎች</translation> +<translation id="3948600256434252210">ማንነት የማያሳውቅ ውስጥ ለማሰስ ወደ ቀኝ ማንሸራተት ይችላሉ።</translation> <translation id="3955822496205734389">ደካማ የይለፍ ቃላት አሉዎት።</translation> <translation id="3959736869653157332">ምናሌ → አዲስ ማንነት የማያሳውቅ ትር</translation> <translation id="3962326069546168954">ያስቀምጡ</translation> @@ -633,7 +636,6 @@ <translation id="4371591986692297148">ያልነቃ</translation> <translation id="4375040482473363939">የQR ኮድ ፍለጋ</translation> <translation id="4378154925671717803">ስልክ</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> ለ<ph name="WEBSITE" /> የይለፍ ቃል ከእርስዎ ጋር አጋርተዋል።</translation> <translation id="4389019817280890563">ቋንቋን ለመለወጥ መታ ያድርጉ።</translation> <translation id="4405320213589929829">አካባቢያዊ መረጃ እና አቅጣጫዎችን ለማግኘት በድረ-ገጾች ላይ ያሉ አድራሻዎችን ይጠቀሙ።</translation> <translation id="4420409367264901497">እልባትን አርትዕ</translation> @@ -662,6 +664,7 @@ <translation id="4539187448429948815">{count,plural, =1{{count} የተቀመጠ ራስሰር አጠናቅ ጥቆማ ከቁልፍ ሰሌዳዎ በላይ ይገኛል።}one{{count} የተቀመጡ ራስሰር አጠናቅ ጥቆማዎች ከቁልፍ ሰሌዳዎ በላይ ይገኛሉ።}other{{count} የተቀመጡ ራስሰር አጠናቅ ጥቆማዎች ከቁልፍ ሰሌዳዎ በላይ ይገኛሉ።}}</translation> <translation id="4540780316273593836">የሆነ ችግር ተፈጥሯል</translation> <translation id="4550040941166547650">በዚህ መሣሪያ ላይ ብቻ</translation> +<translation id="4564893319561643483">«<ph name="TITLE" />» የሚለውን ደብቅ</translation> <translation id="457292989631956153">{COUNT,plural, =1{{COUNT} ገቢር ያልሆነ ትር ይዘጋ?}one{{COUNT} ገቢር ያልሆነ ትር ይዘጋ?}other{{COUNT} ገቢር ያልሆኑ ትሮች ይዘጉ?}}</translation> <translation id="457386861538956877">ተጨማሪ...</translation> <translation id="4587589328781138893">ጣቢያዎች</translation> @@ -859,6 +862,7 @@ <translation id="555749644339804659">የይለፍ ቃላትን በመፈተሽ ላይ…</translation> <translation id="5559567453458728487">በድር ላይ የተገኙ የልወጣ መለኪያ አሃዶችን ይቀይሩ</translation> <translation id="556042886152191864">አዘራር</translation> +<translation id="5572648434713976849">በአድራሻ አሞሌው ውስጥ የተሻሻሉ የአስተያየት ጥቆማዎችን ያገኛሉ</translation> <translation id="5572684875078967866">የመረጃ ማከማቻ</translation> <translation id="5591792606924434384">{COUNT,plural, =1{ይህን ጥቅል ተከታተል}one{ሁሉንም ጥቅል ተከታተል}other{ሁሉንም ጥቅል ተከታተል}}</translation> <translation id="5597915316964418992">የትር ፍርግርግን ይክፈቱ</translation> @@ -1085,6 +1089,7 @@ <translation id="6642362222295953972">አሁን ወዳለ ትር ይቀይሩ</translation> <translation id="6643016212128521049">አጽዳ</translation> <translation id="6645899968535965230">የQR ኮድ፦ <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">እርስዎ የሚጎበኟቸው ዩአርኤሎች ቀጥሎ የትኞቹን ጣቢያዎች ሊጎበኙ እንደሚችሉ ለመተንበይ ወደ Google ይላካሉ</translation> <translation id="6647480763136463714">መጨረሻ ያሄደው <ph name="TIME" /></translation> <translation id="6656103420185847513">አቃፊ ያርትዑ</translation> <translation id="6657585470893396449">የይለፍ ቃል</translation> @@ -1262,6 +1267,7 @@ <translation id="7658239707568436148">ይቅር</translation> <translation id="7666861622396822790">ይህን <ph name="BEGIN_LINK" />የይዘት ቅንብሮች<ph name="END_LINK" /> ውስጥ ማስተዳደር ይችላሉ።</translation> <translation id="7671141431838911305">ጫን</translation> +<translation id="7673346542062368520">ማንነት የማያሳውቅ ውስጥ ለማሰስ ወደ ግራ ማንሸራተት ይችላሉ።</translation> <translation id="7679915578945954324">የድር ጣቢያ አድራሻዎች ተቀድተዋል</translation> <translation id="7687508192620387263">የቀን መቁጠሪያ ፋይል ይገኛል</translation> <translation id="7701040980221191251">ምንም</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ar.xtb b/ios/chrome/app/strings/resources/ios_strings_ar.xtb index b94d4c7..416a8ddf 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ar.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ar.xtb
@@ -185,6 +185,7 @@ <translation id="1959441496380398824">انقر مع الاستمرار على تاريخ.</translation> <translation id="1959679933317802873">جارٍ انتظار عرض المحتوى</translation> <translation id="1967461193809857427">{count,plural, =1{هل تريد استئناف التصفح من علامة التبويب التي توقّفت عندها في Android؟}zero{هل تريد استئناف التصفح من علامات التبويب التي توقّفت عندها في Android؟}two{هل تريد استئناف التصفح من علامتَي التبويب اللتين توقّفت عندهما في Android؟}few{هل تريد استئناف التصفح من علامات التبويب التي توقّفت عندها في Android؟}many{هل تريد استئناف التصفح من علامات التبويب التي توقّفت عندها في Android؟}other{هل تريد استئناف التصفح من علامات التبويب التي توقّفت عندها في Android؟}}</translation> +<translation id="1972325230031091483">ستتمكّن من التصفُّح بشكلٍ أسرع لأنه يتم تحميل المحتوى مسبقًا استنادًا إلى زيارتك الحالية لصفحة الويب.</translation> <translation id="1973912524893600642">الاحتفاظ بالبيانات</translation> <translation id="1974060860693918893">الإعدادات المتقدّمة</translation> <translation id="1980417445547898121">{count,plural, =1{يمكنك استخدام هاتف iPhone هذا للاطّلاع على علامة تبويب واحدة ({count}) نشطة مؤخرًا على جهازك الآخر.}zero{يمكنك استخدام هاتف iPhone هذا للاطّلاع على {count} علامة تبويب نشطة مؤخرًا على جهازك الآخر.}two{يمكنك استخدام هاتف iPhone هذا للاطّلاع على علامتَي تبويب ({count}) نشطتَين مؤخرًا على جهازك الآخر.}few{يمكنك استخدام هاتف iPhone هذا للاطّلاع على {count} علامات تبويب نشطة مؤخرًا على جهازك الآخر.}many{يمكنك استخدام هاتف iPhone هذا للاطّلاع على {count} علامة تبويب نشطة مؤخرًا على جهازك الآخر.}other{يمكنك استخدام هاتف iPhone هذا للاطّلاع على {count} علامة تبويب نشطة مؤخرًا على جهازك الآخر.}}</translation> @@ -293,6 +294,7 @@ <translation id="2547458583188611426">المزامنة غير مفعَّلة. يجب إدخال عبارة المرور لبدء المزامنة.</translation> <translation id="2551153019974022505">خطأ في الحساب</translation> <translation id="2556092377360758201">بلا حماية (غير مُستحسَن)</translation> +<translation id="2561375093019333908">فتح</translation> <translation id="2562041823070056534">جارٍ الإرسال إلى <ph name="DEVICE_NAME" />...</translation> <translation id="2576499762020411840">استخدام كلمات المرور في حساب Google وحفظها</translation> <translation id="2577522251608256362">الحي</translation> @@ -435,6 +437,7 @@ <translation id="3235242129752692527">عدِّل تفاصيل الحدث وانقر على "حفظ".</translation> <translation id="3240426699337459095">تم نسخ الرابط</translation> <translation id="3244271242291266297">الشهر</translation> +<translation id="3245429137663807393">في حال مشاركة تقارير استخدام Chrome أيضًا، ستتضمّن هذه التقارير عناوين URL التي تزورها</translation> <translation id="3245744387817103524">تعذَّر حفظ التغيير.</translation> <translation id="3252394070589632019"><ph name="VALUE" />، و<ph name="ADDITIONAL_INFO" />، و<ph name="INDEX" /> من <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">الملء التلقائي لكلمات المرور</translation> @@ -634,7 +637,6 @@ <translation id="4371591986692297148">غير مفعّلة</translation> <translation id="4375040482473363939">البحث عن رمز الاستجابة السريعة</translation> <translation id="4378154925671717803">هاتف</translation> -<translation id="4388983683160515185">لقد تلقّيت من "<ph name="FULL_NAME" />" كلمة مرور للموقع الإلكتروني <ph name="WEBSITE" />.</translation> <translation id="4389019817280890563">انقر لتغيير اللغة.</translation> <translation id="4405320213589929829">استخدِم العناوين على صفحات الويب للحصول على المعلومات والاتجاهات المحليّة.</translation> <translation id="4420409367264901497">تعديل الإشارة المرجعية</translation> @@ -850,6 +852,7 @@ <translation id="5513681519188741830">قبل <ph name="TIME" /> ساعة</translation> <translation id="5525269841082836315">إنشاء عبارة مرور</translation> <translation id="553151287733286479">{COUNT,plural, =1{هناك كلمة مرور واحدة ({COUNT}) ضعيفة}zero{هناك {COUNT} كلمة مرور ضعيفة}two{هناك كلمتا مرور ({COUNT}) ضعيفتان}few{هناك {COUNT} كلمات مرور ضعيفة}many{هناك {COUNT} كلمة مرور ضعيفة}other{هناك {COUNT} كلمة مرور ضعيفة}}</translation> +<translation id="5532545557415295622">مربّع حوار تأكيد مهلة عدم استخدام الجهاز</translation> <translation id="5542540507657872337">تم العثور على <ph name="COUNT" /> علامة تبويب مفتوحة.</translation> <translation id="5548760955356983418">يتيح لك Handoff بدء تصفح موقع على هذا الجهاز ثم متابعة التصفح بسهولة على جهاز Mac. سيظهر الموقع المفتوح حاليًا على Dock بـ Mac. @@ -859,6 +862,7 @@ <translation id="555749644339804659">جارٍ التحقّق من كلمات المرور…</translation> <translation id="5559567453458728487">تحويل وحدات القياس التي تم العثور عليها على الويب</translation> <translation id="556042886152191864">زر</translation> +<translation id="5572648434713976849">ستحصل على اقتراحات محسّنة في شريط العناوين.</translation> <translation id="5572684875078967866">تخزين المعلومات</translation> <translation id="5591792606924434384">{COUNT,plural, =1{تتبُّع هذا الطرد}zero{تتبُّع كل الطرود}two{تتبُّع هذين الطردَين}few{تتبُّع كل الطرود}many{تتبُّع كل الطرود}other{تتبُّع كل الطرود}}</translation> <translation id="5597915316964418992">افتح شبكة علامات التبويب.</translation> @@ -1085,6 +1089,7 @@ <translation id="6642362222295953972">التبديل إلى علامة تبويب حالية</translation> <translation id="6643016212128521049">محو</translation> <translation id="6645899968535965230">رمز الاستجابة السريعة: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">يتم إرسال عناوين URL التي تزورها إلى Google لتوقّع المواقع الإلكترونية التي ستزورها بعد ذلك.</translation> <translation id="6647480763136463714">وقت إجراء آخر عملية تحقُّق: <ph name="TIME" /></translation> <translation id="6656103420185847513">تعديل مجلد</translation> <translation id="6657585470893396449">كلمة المرور</translation> @@ -1290,6 +1295,7 @@ <translation id="7781829728241885113">أمس</translation> <translation id="7786246662347093005">{COUNT,plural, =1{بعد يوم واحد}zero{بعد {COUNT} يوم}two{بعد يومين ({COUNT})}few{بعد {COUNT} أيام}many{بعد {COUNT} يومًا}other{بعد {COUNT} يوم}}</translation> <translation id="7791543448312431591">إضافة</translation> +<translation id="7792549458069452436">الحصول على التطبيق</translation> <translation id="7807060072011926525">خلاصة مقدَّمة من Google</translation> <translation id="7812377703891978671">يمكنك الوصول إلى جميع سجلّات التصفُّح من خلال اختيار <ph name="HISTORY_BUTTON_ACCESSIBILITY_LABEL" />.</translation> <translation id="78146569776629510">عمليات التنزيل</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_as.xtb b/ios/chrome/app/strings/resources/ios_strings_as.xtb index 87ccba1..0902d48 100644 --- a/ios/chrome/app/strings/resources/ios_strings_as.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_as.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">এটা তাৰিখ স্পৰ্শ কৰি ধৰি ৰাখক।</translation> <translation id="1959679933317802873">সমলৰ বাবে অপেক্ষা কৰি থকা হৈছে</translation> <translation id="1967461193809857427">{count,plural, =1{আপুনি Androidত এৰি অহা টেবটোলৈ যাব বিচাৰেনে?}one{আপুনি Androidত এৰি অহা টেবসমূহলৈ যাব বিচাৰেনে?}other{আপুনি Androidত এৰি অহা টেবসমূহলৈ যাব বিচাৰেনে?}}</translation> +<translation id="1972325230031091483">আপোনাৰ বৰ্তমান চোৱা ৱেবপৃষ্ঠাখনৰ ভিত্তিত সমল আগতীয়াকৈ ল’ড কৰা হয় বাবে আপুনি দ্ৰুতভাৱে ব্ৰাউজ কৰিব পাৰিব</translation> <translation id="1973912524893600642">ডেটাখিনি ৰাখক</translation> <translation id="1974060860693918893">উন্নত</translation> <translation id="1980417445547898121">{count,plural, =1{এই iPhoneত আপোনাৰ অন্য ডিভাইচৰ পৰা আপোনাৰ {count} টা শেহতীয়াকৈ সক্ৰিয় হৈ থকা টেব লাভ কৰক}one{এই iPhoneত আপোনাৰ অন্য ডিভাইচৰ পৰা আপোনাৰ {count} টা শেহতীয়াকৈ সক্ৰিয় হৈ থকা টেব লাভ কৰক}other{এই iPhoneত আপোনাৰ অন্য ডিভাইচৰ পৰা আপোনাৰ {count} টা শেহতীয়াকৈ সক্ৰিয় হৈ থকা টেব লাভ কৰক}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">অনুষ্ঠানৰ সবিশেষ সম্পাদনা কৰি “ছেভ কৰক“ টিপক।</translation> <translation id="3240426699337459095">লিংকটোৰ প্ৰতিলিপি কৰা হ’ল</translation> <translation id="3244271242291266297">মাহ</translation> +<translation id="3245429137663807393">যদি আপুনি Chrome ব্যৱহাৰ কৰাৰ ৰিপ’ৰ্টও শ্বেয়াৰ কৰে, সেই ৰিপ’ৰ্টত আপুনি চোৱা URLসমূহ অন্তৰ্ভুক্ত হয়</translation> <translation id="3245744387817103524">আপুনি কৰা সালসলনি ছেভ কৰিব পৰা নগ’ল।</translation> <translation id="3252394070589632019"><ph name="NUM_SUGGESTIONS" />ৰ <ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /></translation> <translation id="3264775633254836593">পাছৱৰ্ড স্বয়ংক্ৰিয়ভাৱে পূৰ কৰক</translation> @@ -557,6 +559,7 @@ <translation id="3922310737605261887">প্ৰতিলিপি কৰা পাঠৰ সন্ধান কৰক</translation> <translation id="3928666092801078803">মোৰ ডেটা সংযুক্ত কৰক</translation> <translation id="3929457972718048006">ঠিকনা</translation> +<translation id="3948600256434252210">আপুনি ইনক’গনিট’ত ব্ৰাউজ কৰিবলৈ সোঁফালে ছোৱাইপ কৰিব পাৰে।</translation> <translation id="3955822496205734389">আপোনাৰ অবিশ্বস্ত পাছৱৰ্ড আছে।</translation> <translation id="3959736869653157332">মেনু → নতুন ইনক’গনিট’ টেব</translation> <translation id="3962326069546168954">ছেভ কৰক</translation> @@ -633,7 +636,6 @@ <translation id="4371591986692297148">নিষ্ক্ৰিয় হৈ আছে</translation> <translation id="4375040482473363939">কিউআৰ ক’ড স্কেন কৰক</translation> <translation id="4378154925671717803">ফ'ন</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" />এ <ph name="WEBSITE" />ৰ বাবে আপোনাৰ সৈতে এটা পাছৱৰ্ড শ্বেয়াৰ কৰিছে</translation> <translation id="4389019817280890563">ভাষা সলনি কৰিবলৈ টিপক।</translation> <translation id="4405320213589929829">স্থানীয় তথ্য আৰু দিক্-নিৰ্দেশনা পাবলৈ ৱেব পৃষ্ঠাত থকা ঠিকনাসমূহ ব্যৱহাৰ কৰক।</translation> <translation id="4420409367264901497">বুকমাৰ্ক সম্পাদনা কৰক</translation> @@ -662,6 +664,7 @@ <translation id="4539187448429948815">{count,plural, =1{আপোনাৰ কীব’ৰ্ডৰ ওপৰত {count} টা স্বয়ংক্ৰিয়ভাৱে সম্পূৰ্ণ কৰাৰ সুবিধাই দিয়া ছেভ কৰি থোৱা পৰামৰ্শ উপলব্ধ।}one{আপোনাৰ কীব’ৰ্ডৰ ওপৰত {count} টা স্বয়ংক্ৰিয়ভাৱে সম্পূৰ্ণ কৰাৰ সুবিধাই দিয়া ছেভ কৰি থোৱা পৰামৰ্শ উপলব্ধ।}other{আপোনাৰ কীব’ৰ্ডৰ ওপৰত {count} টা স্বয়ংক্ৰিয়ভাৱে সম্পূৰ্ণ কৰাৰ সুবিধাই দিয়া ছেভ কৰি থোৱা পৰামৰ্শ উপলব্ধ।}}</translation> <translation id="4540780316273593836">কিবা ভুল হ’ল</translation> <translation id="4550040941166547650">কেৱল এই ডিভাইচটোত</translation> +<translation id="4564893319561643483">"<ph name="TITLE" />" লুকুৱাওক</translation> <translation id="457292989631956153">{COUNT,plural, =1{{COUNT} টা নিষ্ক্ৰিয় টেব বন্ধ কৰিবনে?}one{{COUNT} টা নিষ্ক্ৰিয় টেব বন্ধ কৰিবনে?}other{{COUNT} টা নিষ্ক্ৰিয় টেব বন্ধ কৰিবনে?}}</translation> <translation id="457386861538956877">অধিক…</translation> <translation id="4587589328781138893">Sites</translation> @@ -859,6 +862,7 @@ <translation id="555749644339804659">পাছৱৰ্ড পৰীক্ষা কৰি আছে…</translation> <translation id="5559567453458728487">ৱেবত পোৱা জোখ-মাখ একক ৰূপান্তৰ কৰক</translation> <translation id="556042886152191864">বুটাম</translation> +<translation id="5572648434713976849">আপুনি ঠিকনাৰ বাৰত উন্নত পৰামৰ্শসমূহ পাব</translation> <translation id="5572684875078967866">তথ্যৰ ষ্ট’ৰেজ</translation> <translation id="5591792606924434384">{COUNT,plural, =1{এই পেকেজটো ট্ৰেক কৰক}one{আটাইবোৰ পেকেজ ট্ৰেক কৰক}other{আটাইবোৰ পেকেজ ট্ৰেক কৰক}}</translation> <translation id="5597915316964418992">টেব গ্ৰীডটো খোলক</translation> @@ -1085,6 +1089,7 @@ <translation id="6642362222295953972">ইতিমধ্যে থকা টেবলৈ যাওক</translation> <translation id="6643016212128521049">মচক</translation> <translation id="6645899968535965230">QR ক’ড: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">আপুনি ইয়াৰ পাছত কি ছাইট চাব সেয়া অনুমান কৰিবলৈ আপুনি চোৱা URLসমূহ Googleলৈ পঠিওৱা হয়</translation> <translation id="6647480763136463714"><ph name="TIME" /> অন্তিমবাৰ চলোৱা হৈছে</translation> <translation id="6656103420185847513">ফ’ল্ডাৰ সম্পাদনা কৰক</translation> <translation id="6657585470893396449">পাছৱৰ্ড</translation> @@ -1262,6 +1267,7 @@ <translation id="7658239707568436148">বাতিল কৰক</translation> <translation id="7666861622396822790">আপুনি এইটো <ph name="BEGIN_LINK" />সমলৰ ছেটিঙ<ph name="END_LINK" />ত পৰিচালনা কৰিব পাৰে।</translation> <translation id="7671141431838911305">ইনষ্টল কৰক</translation> +<translation id="7673346542062368520">আপুনি ইনক’গনিট’ত ব্ৰাউজ কৰিবলৈ বাওঁফালে ছোৱাইপ কৰিব পাৰে।</translation> <translation id="7679915578945954324">ছাইটৰ ঠিকনা প্ৰতিলিপি কৰা হৈছে</translation> <translation id="7687508192620387263">কেলেণ্ডাৰৰ ফাইল উপলব্ধ</translation> <translation id="7701040980221191251">নাই</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_az.xtb b/ios/chrome/app/strings/resources/ios_strings_az.xtb index 0e9b977..fd38734 100644 --- a/ios/chrome/app/strings/resources/ios_strings_az.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_az.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Tarixə toxunub saxlayın.</translation> <translation id="1959679933317802873">Məzmun gözlənilir</translation> <translation id="1967461193809857427">{count,plural, =1{Android-də qaldığınız tabdan davam edilsin?}other{Android-də qaldığınız tablardan davam edilsin?}}</translation> +<translation id="1972325230031091483">Cari veb səhifə ziyarətinizə əsasən məzmun proaktiv şəkildə yükləndiyinə görə daha sürətli gözdən keçirəcəksiniz</translation> <translation id="1973912524893600642">Datanı saxlayın</translation> <translation id="1974060860693918893">Qabaqcıl</translation> <translation id="1980417445547898121">{count,plural, =1{Digər cihazdakı son {count} aktiv tabı bu iPhone-da əldə edin}other{Digər cihazdakı son {count} aktiv tabı bu iPhone-da əldə edin}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">Tədbir detallarını redaktə edin və "Yadda saxlayın" üzərinə toxunun.</translation> <translation id="3240426699337459095">Link kopyalandı</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Chrome istifadə hesabatlarını da paylaşırsınızsa, bu hesabatlara ziyarət etdiyiniz keçidlər daxil olacaq</translation> <translation id="3245744387817103524">Dəyişiklik yaddaşda saxlanmadı.</translation> <translation id="3252394070589632019"><ph name="NUM_SUGGESTIONS" /> təklifdən <ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /></translation> <translation id="3264775633254836593">Parolları avtomatik doldurun</translation> @@ -633,7 +635,6 @@ <translation id="4371591986692297148">Fəaliyyətsiz</translation> <translation id="4375040482473363939">QR kod Axtarışı</translation> <translation id="4378154925671717803">Telefon</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> <ph name="WEBSITE" /> üçün sizinlə parol paylaşıb</translation> <translation id="4389019817280890563">Dili dəyişmək üçün toxunun.</translation> <translation id="4405320213589929829">Lokal məlumat və istiqamətlər üçün veb-səhifələrdəki ünvanlardan istifadə edin.</translation> <translation id="4420409367264901497">Əlfəcinə düzəliş edin</translation> @@ -859,6 +860,7 @@ <translation id="555749644339804659">Parollar yoxlanır…</translation> <translation id="5559567453458728487">Vebdə tapılan ölçü vahidlərini çevirin</translation> <translation id="556042886152191864">Düymə</translation> +<translation id="5572648434713976849">Ünvan panelində təkmilləşdirilmiş təkliflər alacaqsınız</translation> <translation id="5572684875078967866">Məlumat yaddaşı</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Bu paketi izləyin}other{Bütün paketləri izləyin}}</translation> <translation id="5597915316964418992">Tab Torunu açın</translation> @@ -1085,6 +1087,7 @@ <translation id="6642362222295953972">Mövcud taba keçin</translation> <translation id="6643016212128521049">Silin</translation> <translation id="6645899968535965230">QR Kodu: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Ziyarət etdiyiniz keçidlər növbəti dəfə hansı saytlara daxil ola biləcəyinizi proqnozlaşdırmaq üçün Google'a göndərilir</translation> <translation id="6647480763136463714">Son yoxlama: <ph name="TIME" /></translation> <translation id="6656103420185847513">Qovluğa düzəliş edin</translation> <translation id="6657585470893396449">Parol</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_be.xtb b/ios/chrome/app/strings/resources/ios_strings_be.xtb index 00281b0..50f835b1 100644 --- a/ios/chrome/app/strings/resources/ios_strings_be.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_be.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Націсніце і ўтрымлівайце дату.</translation> <translation id="1959679933317802873">Чакаецца атрыманне змесціва</translation> <translation id="1967461193809857427">{count,plural, =1{Адкрыць укладку, якую вы праглядалі на Android?}one{Адкрыць укладкі, якія вы праглядалі на Android?}few{Адкрыць укладкі, якія вы праглядалі на Android?}many{Адкрыць укладкі, якія вы праглядалі на Android?}other{Адкрыць укладкі, якія вы праглядалі на Android?}}</translation> +<translation id="1972325230031091483">Паскорыцца прагляд сайтаў, паколькі змесціва будзе загружацца без запыту на падставе даных з бягучай вэб-старонкі</translation> <translation id="1973912524893600642">Захаваць даныя</translation> <translation id="1974060860693918893">Пашыраныя налады</translation> <translation id="1980417445547898121">{count,plural, =1{Адкрыйце на iPhone {count} укладку, якая нядаўна была актыўнай на іншай прыладзе}one{Адкрыйце на iPhone {count} укладку, якія нядаўна былі актыўнымі на іншай прыладзе}few{Адкрыйце на iPhone {count} укладкі, якія нядаўна былі актыўнымі на іншай прыладзе}many{Адкрыйце на iPhone {count} укладак, якія нядаўна былі актыўнымі на іншай прыладзе}other{Адкрыйце на iPhone {count} укладкі, якія нядаўна былі актыўнымі на іншай прыладзе}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">Змяніце звесткі пра падзею і націсніце Save ("Захаваць").</translation> <translation id="3240426699337459095">Спасылка скапіравана</translation> <translation id="3244271242291266297">ММ</translation> +<translation id="3245429137663807393">Калі вы абагульваеце справаздачы пра выкарыстанне браўзера Chrome, у іх уключаюцца URL-адрасы наведаных вамі старонак.</translation> <translation id="3245744387817103524">Не ўдалося захаваць змяненне.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> з <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Аўтазапаўненне пароляў</translation> @@ -633,7 +635,6 @@ <translation id="4371591986692297148">неактыўная</translation> <translation id="4375040482473363939">Пошук па QR-кодзе</translation> <translation id="4378154925671717803">Тэлефон</translation> -<translation id="4388983683160515185">Карыстальнік <ph name="FULL_NAME" /> абагуліў з вамі пароль для <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Каб змяніць мову, націсніце.</translation> <translation id="4405320213589929829">Праглядайце інфармацыю пра месцы на карце і маршруты, націскаючы на адрасы на вэб-старонках.</translation> <translation id="4420409367264901497">Рэдагаваць закладку</translation> @@ -859,6 +860,7 @@ <translation id="555749644339804659">Ідзе праверка пароляў…</translation> <translation id="5559567453458728487">Пераўтвараць адзінкі вымярэння, знойдзеныя ў інтэрнэце</translation> <translation id="556042886152191864">Кнопка</translation> +<translation id="5572648434713976849">Вы будзеце атрымліваць лепшыя прапановы ў адрасным радку</translation> <translation id="5572684875078967866">Аб'ём даных</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Адсочваць гэту пасылку}one{Адсочваць усе пасылкі}few{Адсочваць усе пасылкі}many{Адсочваць усе пасылкі}other{Адсочваць усе пасылкі}}</translation> <translation id="5597915316964418992">Адкрыйце сетку ўкладак</translation> @@ -1085,6 +1087,7 @@ <translation id="6642362222295953972">Пераключыцца на існуючую ўкладку</translation> <translation id="6643016212128521049">Ачысціць</translation> <translation id="6645899968535965230">QR-код: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">URL-адрасы старонак, якія вы наведваеце, адпраўляюцца ў Google, каб прадказваць, якія сайты вы можаце наведаць далей</translation> <translation id="6647480763136463714">Апошні запуск: <ph name="TIME" /></translation> <translation id="6656103420185847513">Рэдагаваць папку</translation> <translation id="6657585470893396449">Пароль</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bg.xtb b/ios/chrome/app/strings/resources/ios_strings_bg.xtb index 7c0de42..851cac7 100644 --- a/ios/chrome/app/strings/resources/ios_strings_bg.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_bg.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Докоснете и задръжте дата.</translation> <translation id="1959679933317802873">Изчаква се съдържание</translation> <translation id="1967461193809857427">{count,plural, =1{Да се продължи ли от раздела, в който сте прекъснали на устройството си с Android?}other{Да се продължи ли от разделите, в които сте прекъснали на устройството си с Android?}}</translation> +<translation id="1972325230031091483">Ще сърфирате по-бързо, тъй като съдържанието се зарежда предварително въз основа на уеб страницата, на която се намирате в момента</translation> <translation id="1973912524893600642">Запазване на данните</translation> <translation id="1974060860693918893">Разширени</translation> <translation id="1980417445547898121">{count,plural, =1{Получете на този iPhone наскоро активния {count} раздел от другото си устройство}other{Получете на този iPhone наскоро активните {count} раздела от другото си устройство}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Редактирайте подробностите за събитието и докоснете „Запазване“.</translation> <translation id="3240426699337459095">Връзката е копирана</translation> <translation id="3244271242291266297">ММ</translation> +<translation id="3245429137663807393">Ако споделяте и отчети за употребата на Chrome, те ще включват посещаваните от вас URL адреси</translation> <translation id="3245744387817103524">Промяната ви не бе запазена.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> от <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Автоматично попълване на пароли</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">Неактивно</translation> <translation id="4375040482473363939">Търсене по код за бърза реакция</translation> <translation id="4378154925671717803">Телефон</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> сподели с вас парола за <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Докоснете за смяна на езика.</translation> <translation id="4405320213589929829">Използвайте адресите в уеб страници, за да получавате местна информация и упътвания.</translation> <translation id="4420409367264901497">Редактиране на отметката</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Паролите се проверяват…</translation> <translation id="5559567453458728487">Преобразуване на мерни единици, намерени в мрежата</translation> <translation id="556042886152191864">Бутон</translation> +<translation id="5572648434713976849">Ще получавате подобрени предложения в адресната лента</translation> <translation id="5572684875078967866">Хранилище за информация</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Проследяване на тази пратка}other{Проследяване на всички пратки}}</translation> <translation id="5597915316964418992">Отворете мрежата с раздели.</translation> @@ -1083,6 +1085,7 @@ <translation id="6642362222295953972">Превключване към съществуващия раздел</translation> <translation id="6643016212128521049">Изчистване</translation> <translation id="6645899968535965230">QR код: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Посещаваните от вас URL адреси се изпращат до Google с цел предвиждане на следващите страници, които е възможно да посетите</translation> <translation id="6647480763136463714">Последно изпълнение: <ph name="TIME" /></translation> <translation id="6656103420185847513">Редактиране на папката</translation> <translation id="6657585470893396449">Парола</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bn.xtb b/ios/chrome/app/strings/resources/ios_strings_bn.xtb index 521ce9b..76adadc 100644 --- a/ios/chrome/app/strings/resources/ios_strings_bn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_bn.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">তারিখ টাচ করে ধরে রাখুন।</translation> <translation id="1959679933317802873">কন্টেন্টের জন্য অপেক্ষা করা হচ্ছে</translation> <translation id="1967461193809857427">{count,plural, =1{Android-এ আপনি যে ট্যাব ইতিমধ্যে ব্যবহার করেছেন সেগুলি দেখবেন?}one{Android-এ আপনি যে ট্যাব ইতিমধ্যে ব্যবহার করেছেন সেগুলি দেখবেন?}other{Android-এ আপনি যে ট্যাব ইতিমধ্যে ব্যবহার করেছেন সেগুলি দেখবেন?}}</translation> +<translation id="1972325230031091483">আপনি আরও দ্রুত ব্রাউজ করবেন কারণ, আপনার বর্তমান ওয়েবপেজ দেখার উপরে ভিত্তি করে কন্টেন্ট নিজে থেকে লোড হয়</translation> <translation id="1973912524893600642">ডেটা রাখুন</translation> <translation id="1974060860693918893">উন্নত</translation> <translation id="1980417445547898121">{count,plural, =1{এই iPhone-এ, অন্য ডিভাইসে অ্যাক্টিভ থাকা আপনার {count}টি সাম্প্রতিক ট্যাব দেখুন}one{এই iPhone-এ, অন্য ডিভাইসে অ্যাক্টিভ থাকা আপনার {count}টি সাম্প্রতিক ট্যাব দেখুন}other{এই iPhone-এ, অন্য ডিভাইসে অ্যাক্টিভ থাকা আপনার {count}টি সাম্প্রতিক ট্যাব দেখুন}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">ইভেন্টের বিবরণ এডিট করুন ও “সেভ করুন“ বিকল্পে ট্যাপ করুন।</translation> <translation id="3240426699337459095">লিঙ্ক কপি করা হয়েছে</translation> <translation id="3244271242291266297">মিমি</translation> +<translation id="3245429137663807393">আপনি Chrome ব্যবহারের রিপোর্ট শেয়ার করলেও, আপনার দেখা URL তার মধ্যে অন্তর্ভুক্ত থাকে</translation> <translation id="3245744387817103524">আপনার পরিবর্তন সেভ করা যায়নি।</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="NUM_SUGGESTIONS" /> এর <ph name="INDEX" /></translation> <translation id="3264775633254836593">পাসওয়ার্ড অটোফিল করা</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">চালু নেই</translation> <translation id="4375040482473363939">QR কোড খুঁজুন</translation> <translation id="4378154925671717803">ফোন</translation> -<translation id="4388983683160515185"><ph name="WEBSITE" />-এর জন্য <ph name="FULL_NAME" /> আপনার সাথে পাসওয়ার্ড শেয়ার করেছেন</translation> <translation id="4389019817280890563">ভাষা পরিবর্তন করতে ট্যাপ করুন।</translation> <translation id="4405320213589929829">স্থানীয় তথ্য ও দিকনির্দেশ পেতে ওয়েবপেজে ঠিকানা ব্যবহার করুন।</translation> <translation id="4420409367264901497">বুকমার্ক এডিট করুন</translation> @@ -858,6 +859,7 @@ <translation id="555749644339804659">পাসওয়ার্ড চেক করা হচ্ছে…</translation> <translation id="5559567453458728487">ওয়েবে খুঁজে পাওয়া পরিমাপ করার একক কনভার্ট করুন</translation> <translation id="556042886152191864">বোতাম</translation> +<translation id="5572648434713976849">অ্যাড্রেস বারে উন্নত সাজেশন পাবেন</translation> <translation id="5572684875078967866">তথ্যের স্টোরেজ</translation> <translation id="5591792606924434384">{COUNT,plural, =1{এই প্যাকেজ ট্র্যাক করুন}one{সব প্যাকেজ ট্র্যাক করুন}other{সব প্যাকেজ ট্র্যাক করুন}}</translation> <translation id="5597915316964418992">ট্যাব গ্রিড খুলুন</translation> @@ -1084,6 +1086,7 @@ <translation id="6642362222295953972">আগে থেকে থাকা ট্যাবে পাল্টান</translation> <translation id="6643016212128521049">সাফ করুন</translation> <translation id="6645899968535965230">QR কোড: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">আপনি পরে কোন কোন সাইট ভিজিট করতে পারেন তা অনুমান করার জন্য আপনি যেসব URL দেখেন তা Google-এ পাঠানো হয়</translation> <translation id="6647480763136463714">শেষবার চেক করা হয়েছে <ph name="TIME" /></translation> <translation id="6656103420185847513">ফোল্ডার সম্পাদনা করুন</translation> <translation id="6657585470893396449">পাসওয়ার্ড</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bs.xtb b/ios/chrome/app/strings/resources/ios_strings_bs.xtb index 58956f62..ab2ce96 100644 --- a/ios/chrome/app/strings/resources/ios_strings_bs.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_bs.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Dodirnite i zadržite datum.</translation> <translation id="1959679933317802873">Čeka se sadržaj</translation> <translation id="1967461193809857427">{count,plural, =1{Nastaviti s karticom koju ste napustili na Androidu?}one{Nastaviti s karticama koje ste napustili na Androidu?}few{Nastaviti s karticama koje ste napustili na Androidu?}other{Nastaviti s karticama koje ste napustili na Androidu?}}</translation> +<translation id="1972325230031091483">Pregledat ćete brže jer se sadržaj učitava proaktivno na osnovu vaše posjete trenutnoj web stranici</translation> <translation id="1973912524893600642">Zadrži podatke</translation> <translation id="1974060860693918893">Napredno</translation> <translation id="1980417445547898121">{count,plural, =1{Dohvatite {count} nedavnu aktivnu karticu s drugog uređaja na ovom iPhoneu}one{Dohvatite {count} nedavnu aktivnu karticu s drugog uređaja na ovom iPhoneu}few{Dohvatite {count} nedavne aktivne kartice s drugog uređaja na ovom iPhoneu}other{Dohvatite {count} nedavnih aktivnih kartica s drugog uređaja na ovom iPhoneu}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">Uredite detalje događaja i dodirnite "Sačuvaj".</translation> <translation id="3240426699337459095">Link je kopiran</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Ako dijelite i izvještaje o korištenju Chromea, ti izvještaji uključuju URL-ove koje posjećujete</translation> <translation id="3245744387817103524">Pohranjivanje promjene nije uspjelo.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> od <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Automatski popuni lozinke</translation> @@ -633,7 +635,6 @@ <translation id="4371591986692297148">Neaktivno</translation> <translation id="4375040482473363939">Pretraživanje putem QR koda</translation> <translation id="4378154925671717803">Telefon</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> je s vama podijelio/la lozinku za web lokaciju <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Dodirnite da promijenite jezik.</translation> <translation id="4405320213589929829">Koristite adrese na web stranicama da dobijete lokalne informacije i smjernice.</translation> <translation id="4420409367264901497">Uređivanje oznake</translation> @@ -859,6 +860,7 @@ <translation id="555749644339804659">Provjera lozinki…</translation> <translation id="5559567453458728487">Pretvorite mjerne jedinice pronađene na webu</translation> <translation id="556042886152191864">Dugme</translation> +<translation id="5572648434713976849">Dobijat ćete poboljšane prijedloge u traci za adresu</translation> <translation id="5572684875078967866">Pohrana informacija</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Prati ovaj paket}one{Prati sve pakete}few{Prati sve pakete}other{Prati sve pakete}}</translation> <translation id="5597915316964418992">Otvorite rešetku kartica</translation> @@ -1085,6 +1087,7 @@ <translation id="6642362222295953972">Prelazak na postojeću karticu</translation> <translation id="6643016212128521049">Obriši</translation> <translation id="6645899968535965230">QR kôd: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">URL-ovi koje posjetite šalju se Googleu radi predviđanja koje web lokacije ćete možda posjetiti sljedeće</translation> <translation id="6647480763136463714">Posljednja aktivnost <ph name="TIME" /></translation> <translation id="6656103420185847513">Uredi folder</translation> <translation id="6657585470893396449">Lozinka</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ca.xtb b/ios/chrome/app/strings/resources/ios_strings_ca.xtb index 0e4565e0..16a601b 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ca.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ca.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Mantén premuda una data.</translation> <translation id="1959679933317802873">S'està esperant el contingut</translation> <translation id="1967461193809857427">{count,plural, =1{Vols continuar des de la pestanya on ho has deixat a Android?}other{Vols continuar des de les pestanyes on ho has deixat a Android?}}</translation> +<translation id="1972325230031091483">Navegaràs més de pressa perquè el contingut es carrega de forma proactiva en funció de la pàgina web que estiguis visitant</translation> <translation id="1973912524893600642">Conserva les dades</translation> <translation id="1974060860693918893">Configuració avançada</translation> <translation id="1980417445547898121">{count,plural, =1{Obtén {count} pestanya activa recentment de l'altre dispositiu a aquest iPhone}other{Obtén les {count} pestanyes actives recentment de l'altre dispositiu a aquest iPhone}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">Edita els detalls de l'esdeveniment i toca Desa.</translation> <translation id="3240426699337459095">S'ha copiat l'enllaç.</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Si també comparteixes els informes d'ús de Chrome, aquests informes inclouen els URL que visites</translation> <translation id="3245744387817103524">No s'ha pogut desar el canvi.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> de <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Emplena automàticament les contrasenyes</translation> @@ -557,6 +559,7 @@ <translation id="3922310737605261887">Cerca el text copiat</translation> <translation id="3928666092801078803">Combina les meves dades</translation> <translation id="3929457972718048006">Adreces</translation> +<translation id="3948600256434252210">Pots lliscar cap a la dreta per navegar d'incògnit.</translation> <translation id="3955822496205734389">Tens contrasenyes poc segures.</translation> <translation id="3959736869653157332">Menú → Nova pestanya d'incògnit</translation> <translation id="3962326069546168954">Desa</translation> @@ -633,7 +636,6 @@ <translation id="4371591986692297148">inactiu</translation> <translation id="4375040482473363939">Cerca mitjançant un codi QR</translation> <translation id="4378154925671717803">Telèfon</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> ha compartit una contrasenya amb tu per a <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Toca per canviar l'idioma.</translation> <translation id="4405320213589929829">Utilitza adreces a les pàgines web per obtenir informació i indicacions locals.</translation> <translation id="4420409367264901497">Edita l'adreça d'interès</translation> @@ -662,6 +664,7 @@ <translation id="4539187448429948815">{count,plural, =1{Hi ha {count} suggeriment de compleció automàtica desat disponible a sobre del teclat.}other{Hi ha {count} suggeriments de compleció automàtica desats disponibles a sobre del teclat.}}</translation> <translation id="4540780316273593836">S'ha produït un error</translation> <translation id="4550040941166547650">Només en aquest dispositiu</translation> +<translation id="4564893319561643483">Amaga "<ph name="TITLE" />"</translation> <translation id="457292989631956153">{COUNT,plural, =1{Vols tancar {COUNT} pestanya inactiva?}other{Vols tancar {COUNT} pestanyes inactives?}}</translation> <translation id="457386861538956877">Més...</translation> <translation id="4587589328781138893">Llocs web</translation> @@ -859,6 +862,7 @@ <translation id="555749644339804659">Comprovant contrasenyes…</translation> <translation id="5559567453458728487">Converteix les unitats de mesura que es trobin al web</translation> <translation id="556042886152191864">Botó</translation> +<translation id="5572648434713976849">Obtindràs suggeriments millorats a la barra d'adreces</translation> <translation id="5572684875078967866">Emmagatzematge d'informació</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Fes el seguiment d'aquest paquet}other{Fes el seguiment de tots els paquets}}</translation> <translation id="5597915316964418992">Obre la quadrícula de pestanyes</translation> @@ -1085,6 +1089,7 @@ <translation id="6642362222295953972">Canvia a la pestanya existent</translation> <translation id="6643016212128521049">Esborra</translation> <translation id="6645899968535965230">Codi QR: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Els URL que visites s'envien a Google per preveure quins llocs web és possible que visitis a continuació</translation> <translation id="6647480763136463714">Darrera execució: <ph name="TIME" /></translation> <translation id="6656103420185847513">Edició de la carpeta</translation> <translation id="6657585470893396449">Contrasenya</translation> @@ -1262,6 +1267,7 @@ <translation id="7658239707568436148">Cancel·la</translation> <translation id="7666861622396822790">Pots gestionar-ho a <ph name="BEGIN_LINK" />Configuració del contingut<ph name="END_LINK" />.</translation> <translation id="7671141431838911305">INSTAL·LA</translation> +<translation id="7673346542062368520">Pots lliscar cap a l'esquerra per navegar d'incògnit.</translation> <translation id="7679915578945954324">S'han copiat les adreces del lloc web</translation> <translation id="7687508192620387263">Hi ha disponible un fitxer de calendari</translation> <translation id="7701040980221191251">Cap</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_cs.xtb b/ios/chrome/app/strings/resources/ios_strings_cs.xtb index 74c41ee..ef4e37f 100644 --- a/ios/chrome/app/strings/resources/ios_strings_cs.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_cs.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Podržte datum.</translation> <translation id="1959679933317802873">Čeká se na obsah</translation> <translation id="1967461193809857427">{count,plural, =1{Obnovit kartu, kterou jste opustili v Androidu?}few{Obnovit karty, které jste opustili v Androidu?}many{Obnovit karty, které jste opustili v Androidu?}other{Obnovit karty, které jste opustili v Androidu?}}</translation> +<translation id="1972325230031091483">Budete web moci procházet rychleji, protože se obsah bude načítat proaktivně na základě aktuálně navštívené webové stránky</translation> <translation id="1973912524893600642">Zachovat data</translation> <translation id="1974060860693918893">Rozšířená nastavení</translation> <translation id="1980417445547898121">{count,plural, =1{Obnovte na tomto iPhonu {count} kartu, která byla nedávno aktivní na vašem jiném zařízení}few{Obnovte na tomto iPhonu {count} karty, které byly nedávno aktivní na vašem jiném zařízení}many{Obnovte na tomto iPhonu {count} karty, která byla nedávno aktivní na vašem jiném zařízení}other{Obnovte na tomto iPhonu {count} karet, které byly nedávno aktivní na vašem jiném zařízení}}</translation> @@ -291,6 +292,7 @@ <translation id="2547458583188611426">Synchronizace nefunguje. Zadejte heslovou frázi.</translation> <translation id="2551153019974022505">Chyba účtu</translation> <translation id="2556092377360758201">Bez ochrany (nedoporučujeme)</translation> +<translation id="2561375093019333908">OTEVŘÍT</translation> <translation id="2562041823070056534">Odesílání do zařízení <ph name="DEVICE_NAME" />...</translation> <translation id="2576499762020411840">Používání a ukládání hesel v účtu Google</translation> <translation id="2577522251608256362">Čtvrť</translation> @@ -433,6 +435,7 @@ <translation id="3235242129752692527">Upravte podrobnosti události a klepněte na Uložit.</translation> <translation id="3240426699337459095">Odkaz byl zkopírován</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Pokud také sdílíte přehledy využití Chromu, budou zahrnovat adresy URL, které navštěvujete</translation> <translation id="3245744387817103524">Změnu nebylo možné uložit.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> z <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Automatické vyplnění hesel</translation> @@ -556,6 +559,7 @@ <translation id="3922310737605261887">Vyhledat zkopírovaný text</translation> <translation id="3928666092801078803">Sloučit má data</translation> <translation id="3929457972718048006">Adresy</translation> +<translation id="3948600256434252210">Přejetím prstem doprava si web můžete prohlížet v anonymním režimu.</translation> <translation id="3955822496205734389">Máte slabá hesla.</translation> <translation id="3959736869653157332">Nabídka → Nová anonymní karta</translation> <translation id="3962326069546168954">Uložit</translation> @@ -632,7 +636,6 @@ <translation id="4371591986692297148">Neaktivní</translation> <translation id="4375040482473363939">Hledání QR kódu</translation> <translation id="4378154925671717803">Telefon</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> s vámi sdílí heslo pro web <ph name="WEBSITE" />.</translation> <translation id="4389019817280890563">Klepnutím změníte jazyk</translation> <translation id="4405320213589929829">Používejte adresy na webových stránkách k získání místních informací a tras.</translation> <translation id="4420409367264901497">Upravit záložku</translation> @@ -661,6 +664,7 @@ <translation id="4539187448429948815">{count,plural, =1{Nad klávesnicí je k dispozici {count} uložený návrh automatického doplňování.}few{Nad klávesnicí jsou k dispozici {count} uložené návrhy automatického doplňování.}many{Nad klávesnicí je k dispozici {count} uloženého návrhu automatického doplňování.}other{Nad klávesnicí je k dispozici {count} uložených návrhů automatického doplňování.}}</translation> <translation id="4540780316273593836">Něco se pokazilo</translation> <translation id="4550040941166547650">Pouze na tomto zařízení</translation> +<translation id="4564893319561643483">Skrýt modul <ph name="TITLE" /></translation> <translation id="457292989631956153">{COUNT,plural, =1{Zavřít {COUNT} neaktivní kartu?}few{Zavřít {COUNT} neaktivní karty?}many{Zavřít {COUNT} neaktivní karty?}other{Zavřít {COUNT} neaktivních karet?}}</translation> <translation id="457386861538956877">Další...</translation> <translation id="4587589328781138893">Weby</translation> @@ -848,6 +852,7 @@ <translation id="5513681519188741830">Před <ph name="TIME" /> h</translation> <translation id="5525269841082836315">Vytvořit heslovou frázi</translation> <translation id="553151287733286479">{COUNT,plural, =1{{COUNT} slabé heslo}few{{COUNT} slabá hesla}many{{COUNT} slabého hesla}other{{COUNT} slabých hesel}}</translation> +<translation id="5532545557415295622">Dialogové okno časového limitu nečinnosti</translation> <translation id="5542540507657872337">Nalezeno: <ph name="COUNT" /></translation> <translation id="5548760955356983418">Handoff umožňuje začít web procházet v tomto zařízení a poté snadno pokračovat na počítači Mac. Akutální otevřený web se zobrazí v doku vašeho počítače Mac. @@ -857,6 +862,7 @@ <translation id="555749644339804659">Kontrola hesel…</translation> <translation id="5559567453458728487">Převádět měrné jednotky nalezené na webech</translation> <translation id="556042886152191864">Tlačítko</translation> +<translation id="5572648434713976849">V adresním řádku se vám budou zobrazovat lepší návrhy</translation> <translation id="5572684875078967866">Úložiště informací</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Sledovat tuto zásilku}few{Sledovat všechny zásilky}many{Sledovat všechny zásilky}other{Sledovat všechny zásilky}}</translation> <translation id="5597915316964418992">Otevřít mřížku karet</translation> @@ -1083,6 +1089,7 @@ <translation id="6642362222295953972">Přepnout na existující kartu</translation> <translation id="6643016212128521049">Vymazat</translation> <translation id="6645899968535965230">QR kód: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Navštívené adresy URL se odesílají do Googlu, aby mohl předvídat, které weby byste mohli navštívit jako další</translation> <translation id="6647480763136463714">Naposledy spuštěno: <ph name="TIME" /></translation> <translation id="6656103420185847513">Úprava složky</translation> <translation id="6657585470893396449">Heslo</translation> @@ -1260,6 +1267,7 @@ <translation id="7658239707568436148">Zrušit</translation> <translation id="7666861622396822790">Toto můžete spravovat v <ph name="BEGIN_LINK" />Nastavení obsahu<ph name="END_LINK" />.</translation> <translation id="7671141431838911305">INSTALOVAT</translation> +<translation id="7673346542062368520">Přejetím prstem doleva si web můžete prohlížet v anonymním režimu.</translation> <translation id="7679915578945954324">Adresy webu byly zkopírovány</translation> <translation id="7687508192620387263">Je k dispozici soubor kalendáře</translation> <translation id="7701040980221191251">Žádné</translation> @@ -1288,6 +1296,7 @@ <translation id="7781829728241885113">Včera</translation> <translation id="7786246662347093005">{COUNT,plural, =1{Po 1 dni}few{Po {COUNT} dnech}many{Po {COUNT} dne}other{Po {COUNT} dnech}}</translation> <translation id="7791543448312431591">Přidat</translation> +<translation id="7792549458069452436">STÁHNOUT APLIKACI</translation> <translation id="7807060072011926525">Poskytuje Google</translation> <translation id="7812377703891978671">Výběrem možnosti <ph name="HISTORY_BUTTON_ACCESSIBILITY_LABEL" /> získáte přístup k celé své historii prohlížení.</translation> <translation id="78146569776629510">Stahování</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_cy.xtb b/ios/chrome/app/strings/resources/ios_strings_cy.xtb index 5cd0a229..b16475e 100644 --- a/ios/chrome/app/strings/resources/ios_strings_cy.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_cy.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Cyffwrdd a dal dyddiad.</translation> <translation id="1959679933317802873">Wrthi'n aros am gynnwys</translation> <translation id="1967461193809857427">{count,plural, =1{Parhau â'r tab y gwnaethoch ei adael ar Android?}zero{Parhau â'r tabiau y gwnaethoch eu gadael ar Android?}two{Parhau â'r tabiau y gwnaethoch eu gadael ar Android?}few{Parhau â'r tabiau y gwnaethoch eu gadael ar Android?}many{Parhau â'r tabiau y gwnaethoch eu gadael ar Android?}other{Parhau â'r tabiau y gwnaethoch eu gadael ar Android?}}</translation> +<translation id="1972325230031091483">Byddwch yn pori'n gyflymach oherwydd bod cynnwys yn cael ei lwytho'n rhagweithiol yn seiliedig ar eich ymweliad tudalen we bresennol</translation> <translation id="1973912524893600642">Cadw Data</translation> <translation id="1974060860693918893">Uwch</translation> <translation id="1980417445547898121">{count,plural, =1{Cael eich {count} tab a oedd yn weithredol yn ddiweddar o'ch dyfais arall ar yr iPhone hwn}zero{Cael eich {count} tab a oedd yn weithredol yn ddiweddar o'ch dyfais ar yr iPhone hwn}two{Cael eich {count} dab a oedd yn weithredol yn ddiweddar o'ch dyfais ar yr iPhone hwn}few{Cael eich {count} thab a oedd yn weithredol yn ddiweddar o'ch dyfais ar yr iPhone hwn}many{Cael eich {count} thab a oedd yn weithredol yn ddiweddar o'ch dyfais ar yr iPhone hwn}other{Cael eich {count} tab a oedd yn weithredol yn ddiweddar o'ch dyfais ar yr iPhone hwn}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Golygu manylion y digwyddiad a thapiwch “Cadw.”</translation> <translation id="3240426699337459095">Cafodd y ddolen ei chopïo</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Os ydych hefyd yn rhannu adroddiadau defnydd Chrome, mae'r adroddiadau hynny'n cynnwys y cyfeiriadau URL rydych yn ymweld â nhw</translation> <translation id="3245744387817103524">Ni fu modd cadw'ch newid.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> o <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Awtolenwi Cyfrineiriau</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">Anweithredol</translation> <translation id="4375040482473363939">Chwilio am god QR</translation> <translation id="4378154925671717803">Ffôn</translation> -<translation id="4388983683160515185">Mae <ph name="FULL_NAME" /> wedi rhannu cyfrinair gyda chi ar gyfer <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Tapiwch i newid iaith.</translation> <translation id="4405320213589929829">Defnyddiwch gyfeiriadau ar dudalennau gwe i gael gwybodaeth a chyfarwyddiadau lleol.</translation> <translation id="4420409367264901497">Golygu Nod Tudalen</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Wrthi'n gwirio cyfrineiriau…</translation> <translation id="5559567453458728487">Trosi unedau mesur a ddarganfyddir ar y we</translation> <translation id="556042886152191864">Botwm</translation> +<translation id="5572648434713976849">Byddwch yn cael awgrymiadau gwell yn y bar cyfeiriadau</translation> <translation id="5572684875078967866">Storfa Gwybodaeth</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Olrhain y Pecyn Hwn}zero{Olrhain Pob Pecyn}two{Olrhain Pob Pecyn}few{Olrhain Pob Pecyn}many{Olrhain Pob Pecyn}other{Olrhain Pob Pecyn}}</translation> <translation id="5597915316964418992">Agorwch y Grid Tabiau</translation> @@ -1083,6 +1085,7 @@ <translation id="6642362222295953972">Newid i dab presennol</translation> <translation id="6643016212128521049">Clirio</translation> <translation id="6645899968535965230">Cod QR: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Anfonir cyfeiriadau URL rydych yn ymweld â nhw at Google i ragfynegi pa wefannau y mae'n bosib y byddwch yn ymweld â nhw nesaf</translation> <translation id="6647480763136463714">Rhedwyd ddiwethaf <ph name="TIME" /></translation> <translation id="6656103420185847513">Golygu'r Ffolder</translation> <translation id="6657585470893396449">Cyfrinair</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_da.xtb b/ios/chrome/app/strings/resources/ios_strings_da.xtb index 0fd7483..f5af5b3 100644 --- a/ios/chrome/app/strings/resources/ios_strings_da.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_da.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Hold fingeren på en dato.</translation> <translation id="1959679933317802873">Venter på indhold</translation> <translation id="1967461193809857427">{count,plural, =1{Vil du se den fane, du havde åben i Android?}one{Vil du se den fane, du havde åben i Android?}other{Vil du se de faner, du havde åbne i Android?}}</translation> +<translation id="1972325230031091483">Du får hurtigere browsing, da indholdet indlæses proaktivt på baggrund af den webside, du aktuelt er på</translation> <translation id="1973912524893600642">Behold data</translation> <translation id="1974060860693918893">Avanceret</translation> <translation id="1980417445547898121">{count,plural, =1{Se {count} fane, der har været aktiv for nylig, fra din anden enhed på denne iPhone}one{Se {count} fane, der har været aktiv for nylig, fra din anden enhed på denne iPhone}other{Se {count} faner, der har været aktive for nylig, fra din anden enhed på denne iPhone}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Rediger begivenhedsoplysningerne, og tryk på "Gem".</translation> <translation id="3240426699337459095">Linket er kopieret</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Hvis du også deler Chrome-brugsrapporter, omfatter de pågældende rapporter de webadresser, du besøger</translation> <translation id="3245744387817103524">Din ændring kunne ikke gemmes.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> af <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Autoudfyld adgangskoder</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">Inaktiv</translation> <translation id="4375040482473363939">Søgning efter QR-kode</translation> <translation id="4378154925671717803">Telefon</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> har delt en adgangskode med dig til <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Tryk for at skifte sprog.</translation> <translation id="4405320213589929829">Brug adresser på websider til at få lokale oplysninger og rutevejledninger.</translation> <translation id="4420409367264901497">Rediger bogmærke</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Tjekker adgangskoder…</translation> <translation id="5559567453458728487">Konverter måleenheder, du finder på nettet</translation> <translation id="556042886152191864">Knap</translation> +<translation id="5572648434713976849">Du får vist forbedrede forslag i adresselinjen</translation> <translation id="5572684875078967866">Datamængde</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Spor denne pakke}one{Spor denne pakke}other{Spor alle pakker}}</translation> <translation id="5597915316964418992">Åbn fanegitteret</translation> @@ -1083,6 +1085,7 @@ <translation id="6642362222295953972">Skift til den eksisterende fane</translation> <translation id="6643016212128521049">Ryd</translation> <translation id="6645899968535965230">QR-kode: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">De websites, du besøger, sendes til Google for at forudsige, hvilke websites du kunne have lyst til at besøge som det næste</translation> <translation id="6647480763136463714">Sidst kørt <ph name="TIME" /></translation> <translation id="6656103420185847513">Rediger mappe</translation> <translation id="6657585470893396449">Adgangskode</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_de.xtb b/ios/chrome/app/strings/resources/ios_strings_de.xtb index 2c7edae..637313a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_de.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_de.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Halte ein Datum gedrückt.</translation> <translation id="1959679933317802873">Inhalte werden abgerufen</translation> <translation id="1967461193809857427">{count,plural, =1{Möchtest du den Tab auf deinem Android-Gerät aufrufen?}other{Möchtest du die Tabs auf deinem Android-Gerät aufrufen?}}</translation> +<translation id="1972325230031091483">Du kannst schneller surfen, da Inhalte basierend auf deinen Seitenaufrufen proaktiv geladen werden</translation> <translation id="1973912524893600642">Daten behalten</translation> <translation id="1974060860693918893">Erweitert</translation> <translation id="1980417445547898121">{count,plural, =1{{count} kürzlich aktiven Tab von deinem anderen Gerät auf dieses iPhone importieren}other{{count} kürzlich aktive Tabs von deinem anderen Gerät auf dieses iPhone importieren}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">Bearbeite die Termindetails und tippe auf „Speichern“.</translation> <translation id="3240426699337459095">Link wurde kopiert.</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Wenn du Chrome-Nutzungsberichte teilst, enthalten diese Berichte die von dir aufgerufenen URLs</translation> <translation id="3245744387817103524">Deine Änderung konnte nicht gespeichert werden.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> von <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Passwörter automatisch ausfüllen lassen</translation> @@ -634,7 +636,6 @@ <translation id="4371591986692297148">Inaktiv</translation> <translation id="4375040482473363939">QR-Code-Suche</translation> <translation id="4378154925671717803">Telefon</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> hat ein Passwort für <ph name="WEBSITE" /> freigegeben</translation> <translation id="4389019817280890563">Zum Ändern der Sprache hier tippen.</translation> <translation id="4405320213589929829">Du kannst Adressen auf Webseiten verwenden, um lokale Informationen und Wegbeschreibungen zu erhalten.</translation> <translation id="4420409367264901497">Lesezeichen bearbeiten</translation> @@ -861,6 +862,7 @@ <translation id="555749644339804659">Passwörter werden geprüft…</translation> <translation id="5559567453458728487">Im Web gefundene Maßeinheiten umrechnen</translation> <translation id="556042886152191864">Schaltfläche</translation> +<translation id="5572648434713976849">Du erhältst bessere Vorschläge in der Adressleiste</translation> <translation id="5572684875078967866">Datenspeicherung</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Dieses Paket verfolgen}other{Alle Pakete verfolgen}}</translation> <translation id="5597915316964418992">Tab-Raster öffnen</translation> @@ -1087,6 +1089,7 @@ <translation id="6642362222295953972">Zu vorhandenem Tab wechseln</translation> <translation id="6643016212128521049">Löschen</translation> <translation id="6645899968535965230">QR-Code: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">URLs von Websites, die du besuchst, werden an Google gesendet, um Prognosen zu erstellen, welche Websites du voraussichtlich als Nächstes besuchen wirst</translation> <translation id="6647480763136463714">Zuletzt ausgeführt: <ph name="TIME" /></translation> <translation id="6656103420185847513">Ordner bearbeiten</translation> <translation id="6657585470893396449">Passwort</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_el.xtb b/ios/chrome/app/strings/resources/ios_strings_el.xtb index 58ab154..17c2ba9f 100644 --- a/ios/chrome/app/strings/resources/ios_strings_el.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_el.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Αγγίξτε παρατεταμένα μια ημερομηνία.</translation> <translation id="1959679933317802873">Αναμονή για περιεχόμενο</translation> <translation id="1967461193809857427">{count,plural, =1{Θέλετε να συνεχίσετε με την καρτέλα που σταματήσατε να χρησιμοποιείτε σε Android;}other{Θέλετε να συνεχίσετε με τις καρτέλες που σταματήσατε να χρησιμοποιείτε σε Android;}}</translation> +<translation id="1972325230031091483">Η περιήγησή σας θα είναι πιο γρήγορη επειδή το περιεχόμενο φορτώνεται προληπτικά με βάση την τρέχουσα επίσκεψή σας στην ιστοσελίδα.</translation> <translation id="1973912524893600642">Διατήρηση δεδομένων</translation> <translation id="1974060860693918893">Σύνθετες</translation> <translation id="1980417445547898121">{count,plural, =1{Λήψη {count} καρτέλας με πρόσφατη δραστηριότητα από την άλλη συσκευή σας σε αυτό το iPhone}other{Λήψη {count} καρτελών με πρόσφατη δραστηριότητα από την άλλη συσκευή σας σε αυτό το iPhone}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Επεξεργαστείτε τις λεπτομέρειες του συμβάντος και πατήστε Αποθήκευση.</translation> <translation id="3240426699337459095">Ο σύνδεσμος αντιγράφηκε</translation> <translation id="3244271242291266297">ΜΜ</translation> +<translation id="3245429137663807393">Εάν κοινοποιείτε επίσης αναφορές χρήσης του Chrome, αυτές περιλαμβάνουν τα URL που επισκέπτεστε</translation> <translation id="3245744387817103524">Δεν ήταν δυνατή η αποθήκευση της αλλαγής που πραγματοποιήσατε.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> από <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Αυτόματη συμπλήρωση κωδικών πρόσβασης</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">Ανενεργή</translation> <translation id="4375040482473363939">Αναζήτηση κωδικού QR</translation> <translation id="4378154925671717803">Τηλέφωνο</translation> -<translation id="4388983683160515185">Ο χρήστης <ph name="FULL_NAME" /> κοινοποίησε έναν κωδικό πρόσβασης σε εσάς για τον ιστότοπο <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Πατήστε για αλλαγή γλώσσας.</translation> <translation id="4405320213589929829">Χρησιμοποιήστε διευθύνσεις σε ιστοσελίδες, για να λάβετε τοπικές πληροφορίες και οδηγίες.</translation> <translation id="4420409367264901497">Επεξεργασία σελιδοδείκτη</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Έλεγχος κωδ. πρόσβασης…</translation> <translation id="5559567453458728487">Μετατροπή μονάδων μέτρησης που υπάρχουν στον ιστό</translation> <translation id="556042886152191864">Κουμπί</translation> +<translation id="5572648434713976849">Θα λαμβάνετε βελτιωμένες προτάσεις στη γραμμή διευθύνσεων.</translation> <translation id="5572684875078967866">Αποθηκευτικός χώρος πληροφοριών</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Παρακολούθηση αυτού του πακέτου}other{Παρακολούθηση όλων των πακέτων}}</translation> <translation id="5597915316964418992">Ανοίξτε το Πλέγμα καρτελών</translation> @@ -1084,6 +1086,7 @@ <translation id="6642362222295953972">Εναλλαγή στην υπάρχουσα καρτέλα</translation> <translation id="6643016212128521049">Διαγραφή</translation> <translation id="6645899968535965230">Κωδικός QR: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Τα URL που επισκέπτεστε αποστέλλονται στο Google για την πρόβλεψη των ιστοτόπων που ενδέχεται να επισκεφτείτε στη συνέχεια.</translation> <translation id="6647480763136463714">Τελευταία εκτέλεση <ph name="TIME" /></translation> <translation id="6656103420185847513">Επεξεργασία φακέλου</translation> <translation id="6657585470893396449">Κωδικός πρόσβασης</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb index aaab0b3..0291b86a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Touch & hold a date.</translation> <translation id="1959679933317802873">Waiting for content</translation> <translation id="1967461193809857427">{count,plural, =1{Pick up the tab you left on Android?}other{Pick up the tabs you left on Android?}}</translation> +<translation id="1972325230031091483">You’ll browse faster because content is proactively loaded based on your current web page visit</translation> <translation id="1973912524893600642">Keep Data</translation> <translation id="1974060860693918893">Advanced</translation> <translation id="1980417445547898121">{count,plural, =1{Get your {count} recently active tab from your other device on this iPhone}other{Get your {count} recently active tabs from your other device on this iPhone}}</translation> @@ -291,6 +292,7 @@ <translation id="2547458583188611426">Sync is not working. To start sync, enter your passphrase.</translation> <translation id="2551153019974022505">Account error</translation> <translation id="2556092377360758201">No protection (not recommended)</translation> +<translation id="2561375093019333908">OPEN</translation> <translation id="2562041823070056534">Sending to <ph name="DEVICE_NAME" />...</translation> <translation id="2576499762020411840">Use and save passwords in Your Google Account</translation> <translation id="2577522251608256362">Neighbourhood</translation> @@ -433,6 +435,7 @@ <translation id="3235242129752692527">Edit the event details and press “Save.“</translation> <translation id="3240426699337459095">Link copied</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">If you also share Chrome usage reports, those reports include the URLs that you visit</translation> <translation id="3245744387817103524">Your change couldn't be saved.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> of <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Auto-fill passwords</translation> @@ -556,6 +559,7 @@ <translation id="3922310737605261887">Search for copied text</translation> <translation id="3928666092801078803">Combine my data</translation> <translation id="3929457972718048006">Addresses</translation> +<translation id="3948600256434252210">You can swipe right to browse in Incognito.</translation> <translation id="3955822496205734389">You have weak passwords.</translation> <translation id="3959736869653157332">Menu → New incognito tab</translation> <translation id="3962326069546168954">Save</translation> @@ -632,7 +636,6 @@ <translation id="4371591986692297148">Inactive</translation> <translation id="4375040482473363939">QR code Search</translation> <translation id="4378154925671717803">Phone</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> has shared a password with you for <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Tap to change language.</translation> <translation id="4405320213589929829">Use addresses on web pages to get local info and directions.</translation> <translation id="4420409367264901497">Edit Bookmark</translation> @@ -661,6 +664,7 @@ <translation id="4539187448429948815">{count,plural, =1{{count} saved autocomplete suggestion available above your keyboard.}other{{count} saved autocomplete suggestions available above your keyboard.}}</translation> <translation id="4540780316273593836">Something went wrong</translation> <translation id="4550040941166547650">Only on this device</translation> +<translation id="4564893319561643483">Hide '<ph name="TITLE" />'</translation> <translation id="457292989631956153">{COUNT,plural, =1{Close {COUNT} inactive tab?}other{Close {COUNT} inactive tabs?}}</translation> <translation id="457386861538956877">More...</translation> <translation id="4587589328781138893">Sites</translation> @@ -848,6 +852,7 @@ <translation id="5513681519188741830"><ph name="TIME" /> h ago</translation> <translation id="5525269841082836315">Create passphrase</translation> <translation id="553151287733286479">{COUNT,plural, =1{{COUNT} weak password}other{{COUNT} weak passwords}}</translation> +<translation id="5532545557415295622">Idle timeout dialogue</translation> <translation id="5542540507657872337"><ph name="COUNT" /> found</translation> <translation id="5548760955356983418">Handoff lets you start browsing a website on this device and then easily continue on your Mac. The current open website will appear in the Dock of your Mac. @@ -857,6 +862,7 @@ <translation id="555749644339804659">Checking passwords…</translation> <translation id="5559567453458728487">Convert measurement units found on the web</translation> <translation id="556042886152191864">Button</translation> +<translation id="5572648434713976849">You'll get improved suggestions in the address bar</translation> <translation id="5572684875078967866">Information storage</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Track this package}other{Track all packages}}</translation> <translation id="5597915316964418992">Open the Tab grid</translation> @@ -1083,6 +1089,7 @@ <translation id="6642362222295953972">Switch to existing tab</translation> <translation id="6643016212128521049">Clear</translation> <translation id="6645899968535965230">QR code: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">URLs that you visit are sent to Google to predict what sites you might visit next</translation> <translation id="6647480763136463714">Last run <ph name="TIME" /></translation> <translation id="6656103420185847513">Edit Folder</translation> <translation id="6657585470893396449">Password</translation> @@ -1260,6 +1267,7 @@ <translation id="7658239707568436148">Cancel</translation> <translation id="7666861622396822790">You can manage this in <ph name="BEGIN_LINK" />Content Settings<ph name="END_LINK" />.</translation> <translation id="7671141431838911305">INSTALL</translation> +<translation id="7673346542062368520">You can swipe left to browse in Incognito.</translation> <translation id="7679915578945954324">Site addresses copied</translation> <translation id="7687508192620387263">Calendar file available</translation> <translation id="7701040980221191251">None</translation> @@ -1288,6 +1296,7 @@ <translation id="7781829728241885113">Yesterday</translation> <translation id="7786246662347093005">{COUNT,plural, =1{After 1 Day}other{After {COUNT} Days}}</translation> <translation id="7791543448312431591">Add</translation> +<translation id="7792549458069452436">GET THE APP</translation> <translation id="7807060072011926525">Provided by Google</translation> <translation id="7812377703891978671">You can access all your browsing history by selecting <ph name="HISTORY_BUTTON_ACCESSIBILITY_LABEL" />.</translation> <translation id="78146569776629510">Downloads</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb index 9c1287e..b03f2360 100644 --- a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Mantén presionada una fecha.</translation> <translation id="1959679933317802873">En espera de contenido</translation> <translation id="1967461193809857427">{count,plural, =1{¿Quieres retomar la pestaña que dejaste en Android?}other{¿Quieres retomar las pestañas que dejaste en Android?}}</translation> +<translation id="1972325230031091483">Navegarás más rápido porque el contenido se cargará proactivamente en función de la página web que visites en el momento</translation> <translation id="1973912524893600642">Conservar los datos</translation> <translation id="1974060860693918893">Configuración avanzada</translation> <translation id="1980417445547898121">{count,plural, =1{Obtén {count} pestaña activa recientemente de tu otro dispositivo en este iPhone}other{Obtén {count} pestañas activas recientemente de tu otro dispositivo en este iPhone}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Edita los detalles del evento y presiona "Guardar".</translation> <translation id="3240426699337459095">Vínculo copiado</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Si también compartes los informes de uso de Chrome, estos incluirán las URL que visites.</translation> <translation id="3245744387817103524">No se pudo guardar el cambio.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> de <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Autocompletar contraseñas</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">Inactivo</translation> <translation id="4375040482473363939">Búsqueda mediante código QR</translation> <translation id="4378154925671717803">Teléfono</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> compartió una contraseña para <ph name="WEBSITE" /> contigo.</translation> <translation id="4389019817280890563">Presiona aquí para cambiar el idioma.</translation> <translation id="4405320213589929829">Usa direcciones en páginas web para obtener información local además de instrucciones sobre cómo llegar</translation> <translation id="4420409367264901497">Editar favorito</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Verificando contraseñas…</translation> <translation id="5559567453458728487">Convierte las unidades de medida que se encuentran en la Web</translation> <translation id="556042886152191864">Botón</translation> +<translation id="5572648434713976849">Recibirás mejores sugerencias en la barra de direcciones</translation> <translation id="5572684875078967866">Almacenamiento de información</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Realizar el seguimiento de este paquete}other{Realizar el seguimiento de todos los paquetes}}</translation> <translation id="5597915316964418992">Abre la cuadrícula de pestañas</translation> @@ -1083,6 +1085,7 @@ <translation id="6642362222295953972">Cambiar a la pestaña existente</translation> <translation id="6643016212128521049">Borrar</translation> <translation id="6645899968535965230">Código QR: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Se enviarán a Google las URL que visites para predecir los sitios que posiblemente vayas a visitar</translation> <translation id="6647480763136463714">Última verificación: <ph name="TIME" /></translation> <translation id="6656103420185847513">Editar carpeta</translation> <translation id="6657585470893396449">Contraseña</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es.xtb b/ios/chrome/app/strings/resources/ios_strings_es.xtb index d5f20e2..dfb2f275 100644 --- a/ios/chrome/app/strings/resources/ios_strings_es.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_es.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Mantén pulsada una fecha.</translation> <translation id="1959679933317802873">Esperando el contenido</translation> <translation id="1967461193809857427">{count,plural, =1{¿Quieres retomar la pestaña que dejaste en Android?}other{¿Quieres retomar las pestañas que dejaste en Android?}}</translation> +<translation id="1972325230031091483">Navegarás más rápido porque el contenido se carga de forma proactiva en función de la página web en la que estás</translation> <translation id="1973912524893600642">Conservar datos</translation> <translation id="1974060860693918893">Configuración avanzada</translation> <translation id="1980417445547898121">{count,plural, =1{Accede en este iPhone a {count} pestaña activa recientemente de tu otro dispositivo}other{Accede en este iPhone a {count} pestañas activas recientemente de tu otro dispositivo}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Edita los detalles del evento y toca Guardar.</translation> <translation id="3240426699337459095">Enlace copiado</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Si también compartes informes de uso de Chrome, esos informes incluirán las URLs que visites.</translation> <translation id="3245744387817103524">No se ha podido guardar tu cambio.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> de <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Autocompletar contraseñas</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">Inactivo</translation> <translation id="4375040482473363939">Búsqueda mediante códigos QR</translation> <translation id="4378154925671717803">Teléfono</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> ha compartido una contraseña de <ph name="WEBSITE" /> contigo</translation> <translation id="4389019817280890563">Toca para cambiar el idioma.</translation> <translation id="4405320213589929829">Usa direcciones en páginas web para obtener información local e indicaciones.</translation> <translation id="4420409367264901497">Editar marcador</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Comprobando contraseñas…</translation> <translation id="5559567453458728487">Convierte las unidades de medida que se encuentran en la Web</translation> <translation id="556042886152191864">Botón</translation> +<translation id="5572648434713976849">Recibirás sugerencias mejoradas en la barra de direcciones</translation> <translation id="5572684875078967866">Almacenamiento de información</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Seguir este paquete}other{Seguir todos los paquetes}}</translation> <translation id="5597915316964418992">Abre la cuadrícula de pestañas</translation> @@ -1083,6 +1085,7 @@ <translation id="6642362222295953972">Cambiar a la pestaña existente</translation> <translation id="6643016212128521049">Borrar</translation> <translation id="6645899968535965230">Código QR: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Las URLs que visitas se envian a Google para predecir qué sitios podrías visitar después</translation> <translation id="6647480763136463714">Última ejecución: <ph name="TIME" /></translation> <translation id="6656103420185847513">Editar carpeta</translation> <translation id="6657585470893396449">Contraseña</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_et.xtb b/ios/chrome/app/strings/resources/ios_strings_et.xtb index bb442e6..aec16c0 100644 --- a/ios/chrome/app/strings/resources/ios_strings_et.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_et.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Puudutage pikalt kuupäeva.</translation> <translation id="1959679933317802873">Sisu ootel</translation> <translation id="1967461193809857427">{count,plural, =1{Kas jätkata vahelehega, mis teil Androidis pooleli jäi?}other{Kas jätkata vahelehtedega, mis teil Androidis pooleli jäid?}}</translation> +<translation id="1972325230031091483">Saate kiiremini sirvida, kuna sisu laaditakse ennetavalt teie praeguse veebilehekülastuse põhjal</translation> <translation id="1973912524893600642">Säilita andmed</translation> <translation id="1974060860693918893">Täpsemad</translation> <translation id="1980417445547898121">{count,plural, =1{Hankige selle iPhone'i teisest seadmest {count} hiljuti aktiivne vaheleht}other{Hankige selle iPhone'i teisest seadmest {count} hiljuti aktiivsed vahelehed}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Muutke sündmuse üksikasju ja puudutage nuppu „Salvesta“.</translation> <translation id="3240426699337459095">Link on kopeeritud</translation> <translation id="3244271242291266297">kk</translation> +<translation id="3245429137663807393">Kui jagate ka Chrome'i kasutusaruandeid, hõlmavad need teie külastatavaid URL-e</translation> <translation id="3245744387817103524">Teie muudatust ei õnnestunud salvestada.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> <ph name="NUM_SUGGESTIONS" />-st</translation> <translation id="3264775633254836593">Paroolide automaattäide</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">Mitteaktiivne</translation> <translation id="4375040482473363939">QR-koodi otsing</translation> <translation id="4378154925671717803">Telefon</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> jagas teiega veebisaidi <ph name="WEBSITE" /> parooli</translation> <translation id="4389019817280890563">Puudutage keele muutmiseks.</translation> <translation id="4405320213589929829">Kohaliku teabe ja juhiste saamiseks kasutage veebilehtedel olevaid aadresse.</translation> <translation id="4420409367264901497">Muuda järjehoidjat</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Paroolide kontrollimine …</translation> <translation id="5559567453458728487">Veebist leitavate mõõtühikute teisendamine</translation> <translation id="556042886152191864">Nupp</translation> +<translation id="5572648434713976849">Saate aadressiribal täiustatud soovitusi</translation> <translation id="5572684875078967866">Infoühikud</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Jälgi seda saadetist}other{Jälgi kõiki saadetisi}}</translation> <translation id="5597915316964418992">Vahelehtede ruudustiku avamine</translation> @@ -1083,6 +1085,7 @@ <translation id="6642362222295953972">Lülita olemasolevale vahelehele</translation> <translation id="6643016212128521049">Tühjenda</translation> <translation id="6645899968535965230">QR-kood: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Teie külastatavad URL-id saadetakse Google'ile, et prognoosida, milliseid saite võiksite järgmisena külastada</translation> <translation id="6647480763136463714">Viimane käitamine: <ph name="TIME" /></translation> <translation id="6656103420185847513">Kausta muutmine</translation> <translation id="6657585470893396449">Parool</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_eu.xtb b/ios/chrome/app/strings/resources/ios_strings_eu.xtb index 6f568928..776c722 100644 --- a/ios/chrome/app/strings/resources/ios_strings_eu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_eu.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Eduki sakatuta data bat.</translation> <translation id="1959679933317802873">Edukiaren zain</translation> <translation id="1967461193809857427">{count,plural, =1{Android-en utzi duzun fitxa ireki nahi duzu?}other{Android-en utzi dituzun fitxak ireki nahi dituzu?}}</translation> +<translation id="1972325230031091483">Bizkorrago arakatuko duzu, edukia proaktiboki kargatuko delako bisitatzen ari zaren web-orriaren arabera</translation> <translation id="1973912524893600642">Mantendu datuak</translation> <translation id="1974060860693918893">Aurreratuak</translation> <translation id="1980417445547898121">{count,plural, =1{Ireki beste gailuan duela gutxi aktibo zegoen {count} fitxa iPhone honetan}other{Ireki beste gailuan duela gutxi aktibo zeuden {count} fitxa iPhone honetan}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Editatu gertaeraren xehetasunak eta sakatu "Gorde".</translation> <translation id="3240426699337459095">Esteka kopiatu da</translation> <translation id="3244271242291266297">HH</translation> +<translation id="3245429137663807393">Chrome-ren erabilera-txostenak ere partekatzen badituzu, bisitatzen dituzun URLak agertuko dira txosten horietan</translation> <translation id="3245744387817103524">Ezin izan da gorde aldaketa.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" /> (<ph name="INDEX" />/<ph name="NUM_SUGGESTIONS" />)</translation> <translation id="3264775633254836593">Bete automatikoki pasahitzak</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">Inaktibo</translation> <translation id="4375040482473363939">QR kode bidezko bilaketa</translation> <translation id="4378154925671717803">Telefonoa</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> erabiltzaileak <ph name="WEBSITE" /> webgunerako pasahitz bat partekatu du zurekin</translation> <translation id="4389019817280890563">Sakatu hau hizkuntza aldatzeko.</translation> <translation id="4405320213589929829">Erabili web-orrietako helbideak kokapen horiei buruzko informazioa eta jarraibideak lortzeko.</translation> <translation id="4420409367264901497">Editatu laster-marka</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Pasahitzak egiaztatzen…</translation> <translation id="5559567453458728487">Bihurtu sarean aurkitutako neurketa-unitateak</translation> <translation id="556042886152191864">Botoia</translation> +<translation id="5572648434713976849">Iradokizun hobeak jasoko dituzu helbide-barran</translation> <translation id="5572684875078967866">Informazioaren biltegiratzea</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Egin paketearen jarraipena}other{Egin pakete guztien jarraipena}}</translation> <translation id="5597915316964418992">Ireki fitxen sareta</translation> @@ -1083,6 +1085,7 @@ <translation id="6642362222295953972">Joan lehendik dagoen fitxara</translation> <translation id="6643016212128521049">Garbitu</translation> <translation id="6645899968535965230">QR kodea: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Bisitatzen dituzun URLak Google-ri bidaltzen zaizkio etorkizunean zein webgune bisitatuko dituzun aurreikusteko</translation> <translation id="6647480763136463714">Azken exekuzioa: <ph name="TIME" /></translation> <translation id="6656103420185847513">Editatu karpeta</translation> <translation id="6657585470893396449">Pasahitza</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_strings_fa.xtb index 9832b695..ff07b10 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fa.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">تاریخی را لمس کنید و نگه دارید.</translation> <translation id="1959679933317802873">درانتظار محتوا</translation> <translation id="1967461193809857427">{count,plural, =1{میخواهید ادامه کار ناتمامتان در برگه Android را انجام دهید؟}one{میخواهید ادامه کار ناتمامتان در برگههای Android را انجام دهید؟}other{میخواهید ادامه کار ناتمامتان در برگههای Android را انجام دهید؟}}</translation> +<translation id="1972325230031091483">سریعتر مرور خواهید کرد چون محتوا بهصورت پیشنگرانه براساس بازدید صفحه وب فعلیتان بار میشود</translation> <translation id="1973912524893600642">نگه داشتن دادهها</translation> <translation id="1974060860693918893">پیشرفته</translation> <translation id="1980417445547898121">{count,plural, =1{{count} برگه اخیراً فعال از دستگاه دیگرتان را در این دستگاه iPhone دریافت کنید}one{{count} برگه اخیراً فعال از دستگاه دیگرتان را در این دستگاه iPhone دریافت کنید}other{{count} برگه اخیراً فعال از دستگاه دیگرتان را در این دستگاه iPhone دریافت کنید}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">جزئیات رویداد را ویرایش کنید و روی «ذخیره» ضربه بزنید.</translation> <translation id="3240426699337459095">پیوند کپی شد</translation> <translation id="3244271242291266297">ماه</translation> +<translation id="3245429137663807393">اگر گزارشهای استفاده از Chrome را نیز همرسانی کنید، این گزارشها نشانیهای وبی را که بازدید میکنید دربرمیگیرند.</translation> <translation id="3245744387817103524">تغییر ذخیره نشد.</translation> <translation id="3252394070589632019"><ph name="VALUE" />، <ph name="ADDITIONAL_INFO" />، <ph name="INDEX" /> از <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">تکمیل خودکار گذرواژهها</translation> @@ -633,7 +635,6 @@ <translation id="4371591986692297148">غیرفعال</translation> <translation id="4375040482473363939">جستجوی رمزینه پاسخسریع</translation> <translation id="4378154925671717803">تلفن</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> گذرواژهای برای <ph name="WEBSITE" /> با شما همرسانی کرده است</translation> <translation id="4389019817280890563">برای تغییر زبان، ضربه بزنید.</translation> <translation id="4405320213589929829">برای دریافت اطلاعات محلی و مسیرها، از نشانیهای موجود در صفحههای وب استفاده کنید.</translation> <translation id="4420409367264901497">ویرایش نشانک</translation> @@ -859,6 +860,7 @@ <translation id="555749644339804659">درحال بررسی گذرواژهها…</translation> <translation id="5559567453458728487">تبدیل واحدهای اندازهگیری پیداشده در وب</translation> <translation id="556042886152191864">دکمه</translation> +<translation id="5572648434713976849">پیشنهادهای بهبودیافتهای در نوار نشانی دریافت خواهید کرد</translation> <translation id="5572684875078967866">ذخیرهسازی اطلاعات</translation> <translation id="5591792606924434384">{COUNT,plural, =1{پیگیری این بسته}one{پیگیری همه بستهها}other{پیگیری همه بستهها}}</translation> <translation id="5597915316964418992">باز کردن شبکه برگه</translation> @@ -1085,6 +1087,7 @@ <translation id="6642362222295953972">رفتن به برگه موجود</translation> <translation id="6643016212128521049">پاک کردن</translation> <translation id="6645899968535965230">رمزینه پاسخسریع: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">نشانیهای وبی که بازدید میکنید به Google ارسال میشود تا پیشبینی شود ممکن است بعداً از چه سایتهایی بازدید کنید</translation> <translation id="6647480763136463714">آخرین اجرا: <ph name="TIME" /></translation> <translation id="6656103420185847513">ویرایش پوشه</translation> <translation id="6657585470893396449">گذرواژه</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fi.xtb b/ios/chrome/app/strings/resources/ios_strings_fi.xtb index 26aed8d..8f40c71c 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fi.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fi.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Kosketa päivämäärää pitkään.</translation> <translation id="1959679933317802873">Odotetaan sisältöä</translation> <translation id="1967461193809857427">{count,plural, =1{Haluatko avata välilehden, joka oli avoinna Android-laitteella?}other{Haluatko avata välilehdet, jotka olivat avoinna Android-laitteella?}}</translation> +<translation id="1972325230031091483">Selaaminen sujuu nopeammin, koska sisältö ladataan proaktiivisesti tällä hetkellä auki olevan verkkosivun perusteella</translation> <translation id="1973912524893600642">Säilytä data</translation> <translation id="1974060860693918893">Lisäasetukset</translation> <translation id="1980417445547898121">{count,plural, =1{Avaa {count} toisella laitteella äskettäin aktiivisena ollut välilehti tällä iPhonella}other{Avaa {count} toisella laitteella äskettäin aktiivisena ollutta välilehteä tällä iPhonella}}</translation> @@ -291,6 +292,7 @@ <translation id="2547458583188611426">Synkronointi ei toimi. Aloita synkronointi lisäämällä tunnuslause.</translation> <translation id="2551153019974022505">Tilivirhe</translation> <translation id="2556092377360758201">Ei suojausta (ei suositella)</translation> +<translation id="2561375093019333908">AVAA</translation> <translation id="2562041823070056534">Lähetetään: <ph name="DEVICE_NAME" />…</translation> <translation id="2576499762020411840">Käytä ja tallenna Google-tilisi salasanoja</translation> <translation id="2577522251608256362">Naapurusto</translation> @@ -433,6 +435,7 @@ <translation id="3235242129752692527">Muokkaa tapahtuman tietoja ja valitse "Tallenna".</translation> <translation id="3240426699337459095">Linkki kopioitu</translation> <translation id="3244271242291266297">KK</translation> +<translation id="3245429137663807393">Jos jaat myös Chromen käyttöraportteja, avaamasi URL-osoitteet näkyvät niissä</translation> <translation id="3245744387817103524">Muutosta ei voitu tallentaa.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" />/<ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Salasanojen automaattinen täyttö</translation> @@ -633,7 +636,6 @@ <translation id="4371591986692297148">Ei aktiivinen</translation> <translation id="4375040482473363939">QR-koodihaku</translation> <translation id="4378154925671717803">Puhelin</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> on jakanut sinulle salasanan sivustolle <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Vaihda kieltä napauttamalla.</translation> <translation id="4405320213589929829">Verkkosivujen osoitteiden avulla voit saada paikallisia tietoja ja reittiohjeita.</translation> <translation id="4420409367264901497">Muokkaa kirjanmerkkiä</translation> @@ -850,6 +852,7 @@ <translation id="5513681519188741830"><ph name="TIME" /> h sitten</translation> <translation id="5525269841082836315">Luo tunnuslause</translation> <translation id="553151287733286479">{COUNT,plural, =1{{COUNT} heikko salasana}other{{COUNT} heikkoa salasanaa}}</translation> +<translation id="5532545557415295622">Epäaktiivisuudesta johtuvan aikakatkaisun valintaikkuna</translation> <translation id="5542540507657872337"><ph name="COUNT" /> löytyi</translation> <translation id="5548760955356983418">Handoffin avulla voit aloittaa verkkosivuston lukemisen laitteellasi ja jatkaa sitä Macilla. Avoin verkkosivusto näytetään Dockissa. @@ -859,6 +862,7 @@ <translation id="555749644339804659">Tarkistetaan salasanoja…</translation> <translation id="5559567453458728487">Muunna verkosta löytyneet mittayksiköt</translation> <translation id="556042886152191864">Painike</translation> +<translation id="5572648434713976849">Näet parempia ehdotuksia osoitepalkissa</translation> <translation id="5572684875078967866">Tietojen tallennus</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Seuraa tätä pakettia}other{Seuraa kaikkia paketteja}}</translation> <translation id="5597915316964418992">Avaa välilehtiruudukko</translation> @@ -1085,6 +1089,7 @@ <translation id="6642362222295953972">Siirry aiemmalle välilehdelle</translation> <translation id="6643016212128521049">Tyhjennä</translation> <translation id="6645899968535965230">QR-koodi: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Avaamasi URL-osoitteet lähetetään Googlelle, jotta seuraavaksi mahdollisesti avaamasi sivustot voidaan ennakoida</translation> <translation id="6647480763136463714">Tarkistettu viimeksi: <ph name="TIME" /></translation> <translation id="6656103420185847513">Muokkaa kansiota</translation> <translation id="6657585470893396449">Salasana</translation> @@ -1291,6 +1296,7 @@ <translation id="7781829728241885113">Eilen</translation> <translation id="7786246662347093005">{COUNT,plural, =1{1 päivän päästä}other{{COUNT} päivän päästä}}</translation> <translation id="7791543448312431591">Lisää</translation> +<translation id="7792549458069452436">LATAA SOVELLUS</translation> <translation id="7807060072011926525">Googlen tarjoama</translation> <translation id="7812377703891978671">Näet koko selaushistoriasi valitsemalla <ph name="HISTORY_BUTTON_ACCESSIBILITY_LABEL" />.</translation> <translation id="78146569776629510">Lataukset</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_strings_fil.xtb index 427a8b7..f60d2cbf 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fil.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Pindutin nang matagal ang isang petsa.</translation> <translation id="1959679933317802873">Naghihintay ng content</translation> <translation id="1967461193809857427">{count,plural, =1{Ibalik ang tab na iniwan mo sa Android?}one{Ibalik ang mga tab na iniwan mo sa Android?}other{Ibalik ang mga tab na iniwan mo sa Android?}}</translation> +<translation id="1972325230031091483">Makakapag-browse ka nang mas mabilis dahil aktibong naglo-load ng content batay sa kasalukuyan mong pagbisita sa webpage</translation> <translation id="1973912524893600642">Panatilihin ang Data</translation> <translation id="1974060860693918893">Advanced</translation> <translation id="1980417445547898121">{count,plural, =1{Kunin ang iyong {count} kamakailang aktibong tab mula sa iba mo pang device sa iPhone na ito}one{Kunin ang iyong {count} kamakailang aktibong tab mula sa iba mo pang device sa iPhone na ito}other{Kunin ang iyong {count} na kamakailang aktibong tab mula sa iba mo pang device sa iPhone na ito}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">I-edit ang mga detalye ng event at i-tap ang “I-save.“</translation> <translation id="3240426699337459095">Nakopya ang link</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Kung nagbabahagi ka rin ng mga ulat ng paggamit sa Chrome, isasama sa mga ulat na iyon ang mga URL na binibisita mo</translation> <translation id="3245744387817103524">Hindi ma-save ang iyong pagbabago.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> ng <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">I-autofill ang Mga Password</translation> @@ -633,7 +635,6 @@ <translation id="4371591986692297148">Hindi Aktibo</translation> <translation id="4375040482473363939">Paghahanap ng QR code</translation> <translation id="4378154925671717803">Telepono</translation> -<translation id="4388983683160515185">Nag-share sa iyo si <ph name="FULL_NAME" /> ng password para sa <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">I-tap para baguhin ang wika.</translation> <translation id="4405320213589929829">Gamitin ang mga address sa mga web page para makakuha ng lokal na impormasyon at mga direksyon.</translation> <translation id="4420409367264901497">I-edit ang Bookmark</translation> @@ -859,6 +860,7 @@ <translation id="555749644339804659">Sinusuri ang password…</translation> <translation id="5559567453458728487">Mag-convert ng mga unit ng pagsukat na makikita sa web</translation> <translation id="556042886152191864">Pindutan</translation> +<translation id="5572648434713976849">Makakakuha ka ng mas magagandang suhestyon sa address bar</translation> <translation id="5572684875078967866">Storage ng Impormasyon</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Subaybayan ang Package na Ito}one{Subaybayan ang Lahat ng Package}other{Subaybayan ang Lahat ng Package}}</translation> <translation id="5597915316964418992">Buksan ang Grid ng Tab</translation> @@ -1085,6 +1087,7 @@ <translation id="6642362222295953972">Lumipat sa kasalukuyang tab</translation> <translation id="6643016212128521049">I-clear</translation> <translation id="6645899968535965230">QR Code: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Ipinapadala sa Google ang mga URL na binibisita mo para mahulaan kung anong mga site ang posibleng susunod mong bibisitahin</translation> <translation id="6647480763136463714">Huling tumakbo nang <ph name="TIME" /></translation> <translation id="6656103420185847513">I-edit ang Folder</translation> <translation id="6657585470893396449">Password</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb b/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb index ddb6330..13c359a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Maintenez le doigt sur une date.</translation> <translation id="1959679933317802873">En attente de contenu…</translation> <translation id="1967461193809857427">{count,plural, =1{Reprendre l'onglet que vous avez laissé sur Android?}one{Reprendre les onglets que vous avez laissés sur Android?}other{Reprendre les onglets que vous avez laissés sur Android?}}</translation> +<translation id="1972325230031091483">Vous naviguerez plus rapidement parce que le contenu sera chargé à l'avance en fonction de la page Web que vous êtes en train de consulter</translation> <translation id="1973912524893600642">Conserver les données</translation> <translation id="1974060860693918893">Options avancées</translation> <translation id="1980417445547898121">{count,plural, =1{Obtenez {count} onglet récemment actif à partir de votre autre appareil sur cet iPhone}one{Obtenez {count} onglet récemment actif à partir de votre autre appareil sur cet iPhone}other{Obtenez vos {count} onglets récemment actifs à partir de votre autre appareil sur cet iPhone}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Modifiez les détails de l'événement et touchez « Enregistrer ».</translation> <translation id="3240426699337459095">Lien copié</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Si vous partagez aussi les rapports d'utilisation de Chrome, ceux-ci incluent les URL que vous consultez</translation> <translation id="3245744387817103524">Votre modification n'a pas pu être enregistrée.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> de <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Remplissage automatique des mots de passe</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">Inactif</translation> <translation id="4375040482473363939">Recherche de code QR</translation> <translation id="4378154925671717803">Numéro de téléphone</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> a partagé un mot de passe avec vous pour <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Toucher pour changer la langue.</translation> <translation id="4405320213589929829">Utilisez les adresses qui figurent sur des pages Web pour obtenir des informations locales et des itinéraires.</translation> <translation id="4420409367264901497">Modifier le favori</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Vérif. mots de passe…</translation> <translation id="5559567453458728487">Convertir les unités de mesure trouvées sur le Web</translation> <translation id="556042886152191864">Bouton</translation> +<translation id="5572648434713976849">Vous recevrez de meilleures suggestions dans la barre d'adresse</translation> <translation id="5572684875078967866">Stockage des informations</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Suivre ce colis}one{Suivre ce colis}other{Suivre tous les colis}}</translation> <translation id="5597915316964418992">Ouvrir la grille d'onglets</translation> @@ -1083,6 +1085,7 @@ <translation id="6642362222295953972">Passer à l'onglet déjà ouvert</translation> <translation id="6643016212128521049">Effacer</translation> <translation id="6645899968535965230">Code QR : <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Les URL des pages que vous visitez sont envoyées à Google aux fins de prédiction des sites que vous êtes susceptible de visiter ultérieurement</translation> <translation id="6647480763136463714">Dernière exécution : <ph name="TIME" /></translation> <translation id="6656103420185847513">Modifier le dossier</translation> <translation id="6657585470893396449">Mot de passe</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fr.xtb b/ios/chrome/app/strings/resources/ios_strings_fr.xtb index 6ab24f6..4ad03664 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fr.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Appuyez de manière prolongée sur une date.</translation> <translation id="1959679933317802873">En attente de contenu</translation> <translation id="1967461193809857427">{count,plural, =1{Afficher l'onglet que vous avez quitté sur Android ?}one{Afficher l'onglet que vous avez quitté sur Android ?}other{Afficher les onglets que vous avez quittés sur Android ?}}</translation> +<translation id="1972325230031091483">Vous naviguerez plus rapidement, car le contenu sera chargé de manière proactive en fonction de la page Web que vous êtes en train de consulter</translation> <translation id="1973912524893600642">Conserver les données</translation> <translation id="1974060860693918893">Paramètres avancés</translation> <translation id="1980417445547898121">{count,plural, =1{Affichez sur cet iPhone {count} onglet récemment actif sur votre autre appareil}one{Affichez sur cet iPhone {count} onglet récemment actif sur votre autre appareil}other{Affichez sur cet iPhone vos {count} onglets récemment actifs sur votre autre appareil}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Modifiez les détails de l'événement, puis appuyez sur "Enregistrer".</translation> <translation id="3240426699337459095">Le lien a bien été copié.</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Si vous partagez aussi les rapports d'utilisation Chrome, ceux-ci incluent les URL que vous consultez</translation> <translation id="3245744387817103524">Impossible d'enregistrer votre modification.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> sur <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Saisir automatiquement les mots de passe</translation> @@ -556,6 +558,7 @@ <translation id="3922310737605261887">Rechercher le texte copié</translation> <translation id="3928666092801078803">Combiner mes données</translation> <translation id="3929457972718048006">Adresses</translation> +<translation id="3948600256434252210">Vous pouvez balayer l'écran vers la droite pour utiliser le mode navigation privée.</translation> <translation id="3955822496205734389">Vous avez des mots de passe peu sécurisés.</translation> <translation id="3959736869653157332">Menu → Nouvel onglet de navigation privée</translation> <translation id="3962326069546168954">Enregistrer</translation> @@ -632,7 +635,6 @@ <translation id="4371591986692297148">Inactive</translation> <translation id="4375040482473363939">Rechercher via un code QR</translation> <translation id="4378154925671717803">Téléphone</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> a partagé avec vous un mot de passe pour <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Appuyez pour modifier la langue.</translation> <translation id="4405320213589929829">Utilisez des adresses sur des pages Web pour obtenir des informations locales et des itinéraires.</translation> <translation id="4420409367264901497">Modifier le favori</translation> @@ -661,6 +663,7 @@ <translation id="4539187448429948815">{count,plural, =1{{count} suggestion de saisie automatique enregistrée disponible au-dessus de votre clavier.}one{{count} suggestion de saisie automatique enregistrée disponible au-dessus de votre clavier.}other{{count} suggestions de saisie automatique enregistrées disponibles au-dessus de votre clavier.}}</translation> <translation id="4540780316273593836">Un problème est survenu</translation> <translation id="4550040941166547650">Uniquement sur cet appareil</translation> +<translation id="4564893319561643483">Masquer "<ph name="TITLE" />"</translation> <translation id="457292989631956153">{COUNT,plural, =1{Fermer {COUNT} onglet inactif ?}one{Fermer {COUNT} onglet inactif ?}other{Fermer {COUNT} onglets inactifs ?}}</translation> <translation id="457386861538956877">Autres...</translation> <translation id="4587589328781138893">Sites</translation> @@ -857,6 +860,7 @@ <translation id="555749644339804659">Vérif. des mots de passe…</translation> <translation id="5559567453458728487">Convertir les unités de mesure trouvées sur le Web</translation> <translation id="556042886152191864">Bouton</translation> +<translation id="5572648434713976849">Vous obtiendrez des suggestions améliorées dans la barre d'adresse</translation> <translation id="5572684875078967866">Stockage des informations</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Suivre ce colis}one{Suivre ce colis}other{Suivre tous les colis}}</translation> <translation id="5597915316964418992">Ouvrez la grille d'onglets</translation> @@ -1083,6 +1087,7 @@ <translation id="6642362222295953972">Passer à un onglet existant</translation> <translation id="6643016212128521049">Effacer</translation> <translation id="6645899968535965230">Code QR : <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Les URL que vous consultez sont envoyées à Google pour prédire les sites que vous êtes susceptible de visiter plus tard</translation> <translation id="6647480763136463714">Dernière exécution <ph name="TIME" /></translation> <translation id="6656103420185847513">Modifier le dossier</translation> <translation id="6657585470893396449">Mot de passe</translation> @@ -1261,6 +1266,7 @@ <translation id="7658239707568436148">Annuler</translation> <translation id="7666861622396822790">Vous pouvez gérer cette option dans les <ph name="BEGIN_LINK" />Paramètres de contenu<ph name="END_LINK" />.</translation> <translation id="7671141431838911305">INSTALLER</translation> +<translation id="7673346542062368520">Vous pouvez balayer l'écran vers la gauche pour utiliser le mode navigation privée.</translation> <translation id="7679915578945954324">Adresses du site copiées</translation> <translation id="7687508192620387263">Fichier d'agenda disponible</translation> <translation id="7701040980221191251">Rien</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gl.xtb b/ios/chrome/app/strings/resources/ios_strings_gl.xtb index df15a477..fc1397c 100644 --- a/ios/chrome/app/strings/resources/ios_strings_gl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_gl.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Mantén premida unha data.</translation> <translation id="1959679933317802873">Á espera de contido</translation> <translation id="1967461193809857427">{count,plural, =1{Queres seguir usando a pestana que deixaches en Android?}other{Queres seguir usando as pestanas que deixaches en Android?}}</translation> +<translation id="1972325230031091483">Navegarás máis rápido porque o contido se cargará de maneira proactiva en función da túa visita á páxina web na que te atopes</translation> <translation id="1973912524893600642">Conservar datos</translation> <translation id="1974060860693918893">Configuración avanzada</translation> <translation id="1980417445547898121">{count,plural, =1{Accede desde este iPhone a {count} pestana activa recentemente noutro dispositivo}other{Accede desde este iPhone a {count} pestanas activas recentemente noutro dispositivo}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Edita os detalles do evento e toca Gardar.</translation> <translation id="3240426699337459095">Copiouse a ligazón</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Se, ademais, compartes os informes de uso de Chrome, neles inclúense os URL que visitas</translation> <translation id="3245744387817103524">Non se puido gardar o cambio.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> de <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Autocompletar contrasinais</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">Inactivo</translation> <translation id="4375040482473363939">Busca de códigos QR</translation> <translation id="4378154925671717803">Teléfono</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> compartiu un contrasinal contigo para <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Toca para cambiar de idioma.</translation> <translation id="4405320213589929829">Usa os enderezos das páxinas web para obter información local e indicacións.</translation> <translation id="4420409367264901497">Editar marcador</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Comprobando contrasinais…</translation> <translation id="5559567453458728487">Converte as unidades de medida que se atopen na Web</translation> <translation id="556042886152191864">Botón</translation> +<translation id="5572648434713976849">Recibirás suxestións melloradas na barra de enderezos</translation> <translation id="5572684875078967866">Almacenamento de información</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Facer seguimento deste paquete}other{Facer seguimento de todos os paquetes}}</translation> <translation id="5597915316964418992">Abre a grade de pestanas</translation> @@ -1083,6 +1085,7 @@ <translation id="6642362222295953972">Cambiar á pestana xa aberta</translation> <translation id="6643016212128521049">Borrar</translation> <translation id="6645899968535965230">Código QR: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Os URL que visitas envíanse a Google para predicir os sitios que probablemente visites a continuación</translation> <translation id="6647480763136463714">Última execución: <ph name="TIME" /></translation> <translation id="6656103420185847513">Editar cartafol</translation> <translation id="6657585470893396449">Contrasinal</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_strings_gu.xtb index 178855b..432fe6b 100644 --- a/ios/chrome/app/strings/resources/ios_strings_gu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">તારીખને ટચ કરીને થોડીવાર દબાવી રાખો.</translation> <translation id="1959679933317802873">તમારું કન્ટેન્ટ લોડ થવાની રાહ જોઈ રહ્યાં છીએ</translation> <translation id="1967461193809857427">{count,plural, =1{Android પરથી તમે છોડેલા ટૅબને અહીં લાવીએ?}one{Android પરથી તમે છોડેલા ટૅબને અહીં લાવીએ?}other{Android પરથી તમે છોડેલા ટૅબને અહીં લાવીએ?}}</translation> +<translation id="1972325230031091483">વેબપેજની તમારી વર્તમાન મુલાકાતના આધારે કન્ટેન્ટ સક્રિય રીતે લોડ કરવામાં આવતું હોવાને કારણે તમે વધુ ઝડપથી બ્રાઉઝ કરી શકશો</translation> <translation id="1973912524893600642">ડેટા રાખો</translation> <translation id="1974060860693918893">વિગતવાર</translation> <translation id="1980417445547898121">{count,plural, =1{તમારા અન્ય ડિવાઇસ પરથી તમારા {count} તાજેતરના સક્રિય ટૅબને આ iPhone પર મેળવો}one{તમારા અન્ય ડિવાઇસ પરથી તમારા {count} તાજેતરના સક્રિય ટૅબને આ iPhone પર મેળવો}other{તમારા અન્ય ડિવાઇસ પરથી તમારા {count} તાજેતરના સક્રિય ટૅબને આ iPhone પર મેળવો}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">ઇવેન્ટની વિગતોમાં ફેરફાર કરો અને "સાચવો" પર ટૅપ કરો.</translation> <translation id="3240426699337459095">લિંક કૉપિ કરી</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">જો તમે Chromeના વપરાશના રિપોર્ટ પણ શેર કરતા હો, તો તે રિપોર્ટમાં તમે મુલાકાત લો છો તે URLs શામેલ હોય છે</translation> <translation id="3245744387817103524">તમારો ફેરફાર સાચવી શકાયો નથી.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="NUM_SUGGESTIONS" /> માનું <ph name="INDEX" /></translation> <translation id="3264775633254836593">ઑટોમૅટિક રીતે પાસવર્ડ ભરો</translation> @@ -633,7 +635,6 @@ <translation id="4371591986692297148">નિષ્ક્રિય</translation> <translation id="4375040482473363939">QR કોડ શોધો</translation> <translation id="4378154925671717803">ફોન</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> દ્વારા તમારી સાથે <ph name="WEBSITE" /> માટેનો પાસવર્ડ શેર કરવામાં આવ્યો છે</translation> <translation id="4389019817280890563">ભાષા બદલવા માટે ટૅપ કરો.</translation> <translation id="4405320213589929829">સ્થાનિક માહિતી અને દિશાનિર્દેશો મેળવવા માટે, વેબપેજ પરના ઍડ્રેસનો ઉપયોગ કરો.</translation> <translation id="4420409367264901497">બુકમાર્કમાં ફેરફાર કરો</translation> @@ -859,6 +860,7 @@ <translation id="555749644339804659">પાસવર્ડ ચેક કરીએ છીએ…</translation> <translation id="5559567453458728487">વેબ પર મળેલા માપના એકમોનું રૂપાંતરણ કરો</translation> <translation id="556042886152191864">બટન</translation> +<translation id="5572648434713976849">ઍડ્રેસ બારમાં તમે બહેતર સૂચનો મેળવશો</translation> <translation id="5572684875078967866">માહિતીનો સ્ટોરેજ</translation> <translation id="5591792606924434384">{COUNT,plural, =1{આ પૅકેજને ટ્રૅક કરો}one{પૅકેજને ટ્રૅક કરો}other{બધા પૅકેજને ટ્રૅક કરો}}</translation> <translation id="5597915316964418992">ટૅબ ગ્રિડ ખોલો</translation> @@ -1085,6 +1087,7 @@ <translation id="6642362222295953972">હાલના ટૅબ પર સ્વિચ કરો</translation> <translation id="6643016212128521049">સાફ કરો</translation> <translation id="6645899968535965230">QR કોડ: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">હવે તમે આના પછી કઈ સાઇટની મુલાકાત લેશો તેનું પૂર્વાનુમાન લગાવવા માટે, તમે જેની મુલાકાત લો છો તે URLs Googleને મોકલવામાં આવે છે</translation> <translation id="6647480763136463714">છેલ્લે સલામતી માટે તપાસ કર્યાનો સમય <ph name="TIME" /></translation> <translation id="6656103420185847513">ફોલ્ડરમાં ફેરફાર કરો</translation> <translation id="6657585470893396449">પાસવર્ડ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hi.xtb b/ios/chrome/app/strings/resources/ios_strings_hi.xtb index e6838b1..c9d3722 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hi.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hi.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">किसी तारीख को दबाकर रखें.</translation> <translation id="1959679933317802873">कॉन्टेंट का इंतज़ार किया जा रहा है</translation> <translation id="1967461193809857427">{count,plural, =1{क्या आपको उसी टैब पर जाना है जिसे आपने Android पर छोड़ा था?}one{क्या आपको उसी टैब पर जाना है जिसे आपने Android पर छोड़ा था?}other{क्या आपको उन ही टैब पर जाना है जिन्हें आपने Android पर छोड़ा था?}}</translation> +<translation id="1972325230031091483">आपको ज़्यादा तेज़ी से ब्राउज़ करने का अनुभव मिलता है, क्योंकि कॉन्टेंट आपके हाल ही में देखे गए वेब पेज के हिसाब से लोड होता है</translation> <translation id="1973912524893600642">डेटा को सेव रखें</translation> <translation id="1974060860693918893">बेहतर सेटिंग</translation> <translation id="1980417445547898121">{count,plural, =1{इस iPhone पर, दूसरे डिवाइस से हाल ही में इस्तेमाल किया जा रहा {count} टैब देखें}one{इस iPhone पर, दूसरे डिवाइस से हाल ही में इस्तेमाल किया जा रहा {count} टैब देखें}other{इस iPhone पर, दूसरे डिवाइस से हाल ही में इस्तेमाल किए जा रहे {count} टैब देखें}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">इवेंट की जानकारी में बदलाव करें और “सेव करें” पर टैप करें.</translation> <translation id="3240426699337459095">लिंक कॉपी की गई</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">अगर Chrome के इस्तेमाल से जुड़ी जानकारी देने वाली रिपोर्ट भी शेयर की जाती हैं, तो याद रखें कि आपके देखे गए पेजों के यूआरएल उनमें शामिल होते हैं</translation> <translation id="3245744387817103524">आपके बदलाव को सेव नहीं किया जा सका.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="NUM_SUGGESTIONS" /> में से <ph name="INDEX" /></translation> <translation id="3264775633254836593">AutoFill Passwords</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">चालू नहीं है</translation> <translation id="4375040482473363939">QR कोड खोज</translation> <translation id="4378154925671717803">फ़ोन</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> ने <ph name="WEBSITE" /> के लिए आपके साथ एक पासवर्ड शेयर किया है</translation> <translation id="4389019817280890563">भाषा बदलने के लिए टैप करें.</translation> <translation id="4405320213589929829">स्थानीय जानकारी और निर्देश पाने के लिए, वेबपेजों पर दिए गए पते का इस्तेमाल करें.</translation> <translation id="4420409367264901497">बुकमार्क में बदलाव करें</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">पासवर्ड जांची जा रही है...</translation> <translation id="5559567453458728487">वेब पर मिले मेज़रमेंट की इकाइयों को बदलना</translation> <translation id="556042886152191864">बटन</translation> +<translation id="5572648434713976849">आपको पता बार में बेहतर सुझाव मिलेंगे</translation> <translation id="5572684875078967866">जानकारी का स्टोरेज</translation> <translation id="5591792606924434384">{COUNT,plural, =1{इस पैकेज को ट्रैक करें}one{सभी पैकेज ट्रैक करें}other{सभी पैकेज ट्रैक करें}}</translation> <translation id="5597915316964418992">टैब ग्रिड खोलें</translation> @@ -924,6 +926,7 @@ <translation id="5922999516621365983">टैब पिन करने के लिए, उसे खींचें और यहां छोड़ें.</translation> <translation id="5938160824633642847">आपके डिवाइस की करीब पूरी जगह भर गई है. जगह खाली करके दोबारा आज़माएं.</translation> <translation id="5948291296578561264">इससे फ़ोटो आपकी फ़ोटो लाइब्रेरी में सेव कर लिए जाते हैं.</translation> +<translation id="5954562874938077107">Lens पर जाएं</translation> <translation id="5955891643922670672">ऑफ़लाइन वर्शन देख रहे हैं</translation> <translation id="5957613098218939406">ज़्यादा विकल्प</translation> <translation id="595769230373966252"><ph name="SEARCH_PROVIDER" /> की मदद से खोजें</translation> @@ -1082,6 +1085,7 @@ <translation id="6642362222295953972">मौजूदा टैब पर जाएं</translation> <translation id="6643016212128521049">मिटाएं</translation> <translation id="6645899968535965230">क्यूआर कोड: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">इस बात का अंदाज़ा लगाने के लिए कि आपको कौन-कौनसी साइटें पसंद हैं, Google को आपके देखे गए पेजों के यूआरएल भेजे जाते हैं</translation> <translation id="6647480763136463714">आखिरी बार <ph name="TIME" /> सुरक्षा जांच की गई</translation> <translation id="6656103420185847513">फ़ोल्डर में बदलाव करें</translation> <translation id="6657585470893396449">पासवर्ड</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hr.xtb b/ios/chrome/app/strings/resources/ios_strings_hr.xtb index 6d7f9e21..361fdbfd 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hr.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Dodirnite i zadržite datum.</translation> <translation id="1959679933317802873">Čekanje sadržaja</translation> <translation id="1967461193809857427">{count,plural, =1{Želite li nastaviti na kartici na kojoj ste stali na Androidu?}one{Želite li nastaviti na karticama na kojima ste stali na Androidu?}few{Želite li nastaviti na karticama na kojima ste stali na Androidu?}other{Želite li nastaviti na karticama na kojima ste stali na Androidu?}}</translation> +<translation id="1972325230031091483">Pregledavat ćete brže jer se sadržaj učitava proaktivno na temelju vašeg trenutačnog posjeta web-stranici</translation> <translation id="1973912524893600642">Zadrži podatke</translation> <translation id="1974060860693918893">Napredno</translation> <translation id="1980417445547898121">{count,plural, =1{Nabavite {count} nedavno aktivnu karticu s drugog uređaja na ovom iPhoneu}one{Nabavite {count} nedavno aktivnu karticu s drugog uređaja na ovom iPhoneu}few{Nabavite {count} nedavno aktivne kartice s drugog uređaja na ovom iPhoneu}other{Nabavite {count} nedavno aktivnih kartica s drugog uređaja na ovom iPhoneu}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">Uredite pojedinosti događaja i dodirnite Spremi.</translation> <translation id="3240426699337459095">Veza je kopirana</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Ako dijelite i izvješća o upotrebi Chromea, ta izvješća uključuju URL-ove koje posjećujete</translation> <translation id="3245744387817103524">Izmjena nije spremljena.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> od <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Automatsko popunjavanje zaporki</translation> @@ -633,7 +635,6 @@ <translation id="4371591986692297148">neaktivan</translation> <translation id="4375040482473363939">Pretraživanje QR kodova</translation> <translation id="4378154925671717803">Telefon</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> s vama dijeli zaporku za web-lokaciju <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Dodirnite da biste promijenili jezik.</translation> <translation id="4405320213589929829">Upotrijebite adrese na web-stranicama da biste dobili lokalne informacije i upute.</translation> <translation id="4420409367264901497">Uređivanje oznake</translation> @@ -859,6 +860,7 @@ <translation id="555749644339804659">Provjera zaporki…</translation> <translation id="5559567453458728487">Preračunajte mjerne jedinice pronađene na webu</translation> <translation id="556042886152191864">Gumb</translation> +<translation id="5572648434713976849">Primat ćete poboljšane prijedloge na adresnoj traci</translation> <translation id="5572684875078967866">Pohrana podataka</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Prati ovaj paket}one{Prati sve pakete}few{Prati sve pakete}other{Prati sve pakete}}</translation> <translation id="5597915316964418992">Otvorite rešetku kartica</translation> @@ -1085,6 +1087,7 @@ <translation id="6642362222295953972">Prijeđite na postojeću karticu</translation> <translation id="6643016212128521049">Izbriši</translation> <translation id="6645899968535965230">QR kôd: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">URL-ovi koje posjećujete šalju se Googleu kako bi se predvidjelo koje biste web-lokacije mogli posjetiti sljedeće</translation> <translation id="6647480763136463714">Posljednje pokretanje <ph name="TIME" /></translation> <translation id="6656103420185847513">Uređivanje mape</translation> <translation id="6657585470893396449">Zaporka</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hu.xtb b/ios/chrome/app/strings/resources/ios_strings_hu.xtb index 3052d75a..a8cceb59 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hu.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Tartsa lenyomva az egyik dátumot.</translation> <translation id="1959679933317802873">Várakozás tartalomra…</translation> <translation id="1967461193809857427">{count,plural, =1{Folytatja az androidos eszközén legutóbb használt lappal?}other{Folytatja az androidos eszközén legutóbb használt lapokkal?}}</translation> +<translation id="1972325230031091483">Gyorsabban böngészhet, mert a rendszer proaktív módon tölti be a tartalmat az aktuálisan felkeresett weboldal alapján.</translation> <translation id="1973912524893600642">Adatok megőrzése</translation> <translation id="1974060860693918893">Speciális</translation> <translation id="1980417445547898121">{count,plural, =1{Megnyithatja ezen az iPhone-on a másik eszközének legutóbb aktív lapját ({count})}other{Megnyithatja ezen az iPhone-on a másik eszközének legutóbb aktív lapjait ({count})}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Szerkessze az esemény adatait, majd koppintson a „Mentés” gombra.</translation> <translation id="3240426699337459095">Link másolva</translation> <translation id="3244271242291266297">HH</translation> +<translation id="3245429137663807393">Ha a Chrome használati jelentéseit is megosztja, ezek a jelentések tartalmazzák az Ön által felkeresett URL-eket.</translation> <translation id="3245744387817103524">Nem sikerült menteni a módosítást.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="NUM_SUGGESTIONS" />/<ph name="INDEX" />. javaslat</translation> <translation id="3264775633254836593">Jelszavak automatikus kitöltése</translation> @@ -633,7 +635,6 @@ <translation id="4371591986692297148">Inaktív</translation> <translation id="4375040482473363939">QR-kód keresése</translation> <translation id="4378154925671717803">Telefon</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> jelszót osztott meg Önnel a következőhöz: <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Koppintson a nyelv módosításához.</translation> <translation id="4405320213589929829">A weboldalakon található címek használatával helyi információkhoz és útvonaltervekhez juthat.</translation> <translation id="4420409367264901497">Könyvjelző szerkesztése</translation> @@ -859,6 +860,7 @@ <translation id="555749644339804659">Jelszavak ellenőrzése…</translation> <translation id="5559567453458728487">Az interneten talált mértékegységek konvertálása</translation> <translation id="556042886152191864">Gomb</translation> +<translation id="5572648434713976849">Jobb javaslatokat kaphat a címsávban</translation> <translation id="5572684875078967866">Adattárolás</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Csomag nyomon követése}other{Az összes csomag nyomon követése}}</translation> <translation id="5597915316964418992">Nyissa meg a laprácsot</translation> @@ -1085,6 +1087,7 @@ <translation id="6642362222295953972">Váltás a meglévő lapra</translation> <translation id="6643016212128521049">Törlés</translation> <translation id="6645899968535965230">QR-kód: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Az Ön által felkeresett URL-ek el lesznek küldve a Google-nak, hogy előrejelezzük, mely webhelyeket fogja esetleg legközelebb felkeresni.</translation> <translation id="6647480763136463714">Utolsó futtatás: <ph name="TIME" /></translation> <translation id="6656103420185847513">Mappa szerkesztése</translation> <translation id="6657585470893396449">Jelszó</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hy.xtb b/ios/chrome/app/strings/resources/ios_strings_hy.xtb index b70990d..eee0125 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hy.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hy.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Հպեք և պահեք որևէ ամսաթիվ։</translation> <translation id="1959679933317802873">Բովանդակության սպասում</translation> <translation id="1967461193809857427">{count,plural, =1{Բացե՞լ նույն ներդիրը, որը վերջերս օգտագործել եք Android սարքում}one{Բացե՞լ նույն ներդիրը, որը վերջերս օգտագործել եք Android սարքում}other{Բացե՞լ նույն ներդիրները, որոնք վերջերս օգտագործել եք Android սարքում}}</translation> +<translation id="1972325230031091483">Դուք ավելի արագ կդիտեք վեբ էջերը, քանի որ բովանդակությունը նախապես բեռնվում է՝ ընթացիկ բացված վեբ էջի հիման վրա։</translation> <translation id="1973912524893600642">Պահպանել տվյալները</translation> <translation id="1974060860693918893">Լրացուցիչ</translation> <translation id="1980417445547898121">{count,plural, =1{Բացեք ձեր մյուս սարքի վերջերս ակտիվ {count} ներդիրը այս iPhone-ում}one{Բացեք ձեր մյուս սարքի վերջերս ակտիվ {count} ներդիրը այս iPhone-ում}other{Բացեք ձեր մյուս սարքի վերջերս ակտիվ {count} ներդիրները այս iPhone-ում}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Փոփոխեք միջոցառման մանրամասները և հպեք «Պահել»։</translation> <translation id="3240426699337459095">Հղումը պատճենվեց</translation> <translation id="3244271242291266297">ամիս</translation> +<translation id="3245429137663807393">Եթե դուք նաև ուղարկում եք Chrome-ի օգտագործման զեկույցներ, դրանցում կներառվեն ձեր այցելած URL-ները</translation> <translation id="3245744387817103524">Փոփոխությունը չհաջողվեց պահել։</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" />-ը <ph name="NUM_SUGGESTIONS" />-ից</translation> <translation id="3264775633254836593">Գաղտնաբառերի ինքնալրացում</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">Ակտիվ չէ</translation> <translation id="4375040482473363939">Սկանավորել QR կոդը</translation> <translation id="4378154925671717803">Հեռախոս</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> օգտատերը ձեզ <ph name="WEBSITE" /> կայքի համար գաղտնաբառ է ուղարկել</translation> <translation id="4389019817280890563">Հպեք՝ լեզուն փոխելու համար։</translation> <translation id="4405320213589929829">Օգտագործեք վեբ էջերում նշված հասցեները՝ տեղական վայրերի մասին տեղեկություններ և երթուղիներ ստանալու համար։</translation> <translation id="4420409367264901497">Փոփոխել էջանիշը</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Գաղտնաբառերի ստուգում…</translation> <translation id="5559567453458728487">Փոխարկել չափման միավորները վեբ էջերում</translation> <translation id="556042886152191864">Կոճակ</translation> +<translation id="5572648434713976849">Հասցեագոտում կհայտնվեն բարելավված հուշումներ։</translation> <translation id="5572684875078967866">Տեղեկությունների ծավալ</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Հետևել այս առաքանուն}one{Հետևել առաքանուն}other{Հետևել բոլոր առաքանիներին}}</translation> <translation id="5597915316964418992">Բացեք ներդիրների ցանցը</translation> @@ -1083,6 +1085,7 @@ <translation id="6642362222295953972">Անցնել մինչ այդ բացած ներդիր</translation> <translation id="6643016212128521049">Մաքրել</translation> <translation id="6645899968535965230">QR կոդ՝ <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Ձեր այցելած էջերի URL-ներն ուղարկվում են Google-ին՝ կանխատեսելու, թե հաջորդիվ ինչ կայքեր կարող եք այցելել։</translation> <translation id="6647480763136463714">Վերջին անգամ գործարկվել է՝ <ph name="TIME" /></translation> <translation id="6656103420185847513">Պանակի փոփոխում</translation> <translation id="6657585470893396449">Գաղտնաբառ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_id.xtb b/ios/chrome/app/strings/resources/ios_strings_id.xtb index 5bd985dd..5e5292f9 100644 --- a/ios/chrome/app/strings/resources/ios_strings_id.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_id.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Sentuh lama tanggal.</translation> <translation id="1959679933317802873">Menunggu konten</translation> <translation id="1967461193809857427">{count,plural, =1{Buka tab yang ditinggalkan di Android?}other{Buka tab yang ditinggalkan di Android?}}</translation> +<translation id="1972325230031091483">Anda akan menjelajah lebih cepat karena konten dimuat secara proaktif berdasarkan halaman web yang sedang Anda buka</translation> <translation id="1973912524893600642">Simpan Data</translation> <translation id="1974060860693918893">Lanjutan</translation> <translation id="1980417445547898121">{count,plural, =1{Dapatkan {count} tab yang baru-baru ini aktif dari perangkat lain di iPhone ini}other{Dapatkan {count} tab yang baru-baru ini aktif dari perangkat lain di iPhone ini}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Edit detail acara dan ketuk “Simpan”.</translation> <translation id="3240426699337459095">Tautan disalin</translation> <translation id="3244271242291266297">BB</translation> +<translation id="3245429137663807393">Jika Anda juga membagikan laporan penggunaan Chrome, laporan tersebut akan menyertakan URL yang Anda buka</translation> <translation id="3245744387817103524">Perubahan Anda tidak dapat disimpan.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> dari <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Isi Otomatis Sandi</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">Tidak aktif</translation> <translation id="4375040482473363939">Telusuri kode QR</translation> <translation id="4378154925671717803">Ponsel</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> telah berbagi sandi dengan Anda untuk <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Ketuk untuk mengubah bahasa.</translation> <translation id="4405320213589929829">Gunakan alamat di halaman web untuk mendapatkan info lokal dan rute.</translation> <translation id="4420409367264901497">Edit Bookmark</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Memeriksa sandi…</translation> <translation id="5559567453458728487">Mengonversi unit pengukuran yang ditemukan di web</translation> <translation id="556042886152191864">Tombol</translation> +<translation id="5572648434713976849">Anda akan mendapatkan saran yang lebih baik di kolom URL</translation> <translation id="5572684875078967866">Penyimpanan Informasi</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Lacak Paket Ini}other{Lacak Semua Paket}}</translation> <translation id="5597915316964418992">Buka Petak Tab</translation> @@ -1083,6 +1085,7 @@ <translation id="6642362222295953972">Beralih ke tab yang ada</translation> <translation id="6643016212128521049">Hapus</translation> <translation id="6645899968535965230">Kode QR: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">URL yang Anda buka akan dikirim ke Google untuk memprediksi situs yang mungkin Anda buka berikutnya</translation> <translation id="6647480763136463714">Terakhir dijalankan <ph name="TIME" /></translation> <translation id="6656103420185847513">Edit Folder</translation> <translation id="6657585470893396449">Sandi</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_is.xtb b/ios/chrome/app/strings/resources/ios_strings_is.xtb index 6c0b3f3..9c079b0 100644 --- a/ios/chrome/app/strings/resources/ios_strings_is.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_is.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Haltu fingri á dagsetningu.</translation> <translation id="1959679933317802873">Bíður eftir efni</translation> <translation id="1967461193809857427">{count,plural, =1{Opna flipann sem þú varst með virkan í Android?}one{Opna flipana sem þú varst með virka í Android?}other{Opna flipana sem þú varst með virka í Android?}}</translation> +<translation id="1972325230031091483">Þú getur vafrað hraðar því að efni er hlaðið forvirkt í samræmi við vefsíðuna sem þú ert að skoða í hvert skipti</translation> <translation id="1973912524893600642">Geyma gögn</translation> <translation id="1974060860693918893">Ítarlegt</translation> <translation id="1980417445547898121">{count,plural, =1{Opnaðu {count} nýlega virkan flipa úr hinu tækinu í þessum iPhone}one{Opnaðu {count} nýlega virkan flipa úr hinu tækinu í þessum iPhone}other{Opnaðu {count} nýlega virka flipa úr hinu tækinu í þessum iPhone}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Breyttu upplýsingum viðburðarins og ýtti á „Vista“.</translation> <translation id="3240426699337459095">Tengill afritaður</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Ef þú deilir einnig Chrome notkunarskýrslum innihalda þær skýrslur vefslóðirnar sem þú opnar</translation> <translation id="3245744387817103524">Ekki tókst að vista breytinguna.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> af <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Sjálfvirk útfylling aðgangsorða</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">Óvirkt</translation> <translation id="4375040482473363939">QR-kóðaleit</translation> <translation id="4378154925671717803">Sími</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> deildi aðgangsorði að <ph name="WEBSITE" /> með þér.</translation> <translation id="4389019817280890563">Ýttu til að skipta um tungumál.</translation> <translation id="4405320213589929829">Notaðu heimilisföng á vefsíðum til að fá staðbundnar upplýsingar og leiðarlýsingar.</translation> <translation id="4420409367264901497">Breyta bókamerki</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Athugar aðgangsorð…</translation> <translation id="5559567453458728487">Umbreyta mælieiningum sem fundust á vefnum</translation> <translation id="556042886152191864">Hnappur</translation> +<translation id="5572648434713976849">Þú færð betri tillögur í veffangastikunni</translation> <translation id="5572684875078967866">Upplýsingageymsla</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Rekja þennan pakka}one{Rekja alla pakka}other{Rekja alla pakka}}</translation> <translation id="5597915316964418992">Opna flipayfirlit</translation> @@ -1083,6 +1085,7 @@ <translation id="6642362222295953972">Skipta yfir í núverandi flipa</translation> <translation id="6643016212128521049">Hreinsa</translation> <translation id="6645899968535965230">QR-kóði: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Vefslóðir sem þú opnar eru sendar til Google til að spá fyrir um hvaða vefsvæði þú kannt að opna næst</translation> <translation id="6647480763136463714">Síðast keyrt <ph name="TIME" /></translation> <translation id="6656103420185847513">Breyta möppu</translation> <translation id="6657585470893396449">Aðgangsorð</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_it.xtb b/ios/chrome/app/strings/resources/ios_strings_it.xtb index 340edc2..75e088b 100644 --- a/ios/chrome/app/strings/resources/ios_strings_it.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_it.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Tocca e tieni premuta una data.</translation> <translation id="1959679933317802873">In attesa di contenuti</translation> <translation id="1967461193809857427">{count,plural, =1{Vuoi riprendere la scheda che avevi lasciato su Android?}other{Vuoi riprendere le schede che avevi lasciato su Android?}}</translation> +<translation id="1972325230031091483">Navigherai più velocemente perché i contenuti vengono caricati in modo proattivo in base alla pagina web che stai visitando</translation> <translation id="1973912524893600642">Conserva i dati</translation> <translation id="1974060860693918893">Avanzate</translation> <translation id="1980417445547898121">{count,plural, =1{Scarica la tua scheda attiva di recente ({count}) dall'altro dispositivo su questo iPhone}other{Scarica le tue schede attive di recente ({count}) dall'altro dispositivo su questo iPhone}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Modifica i dettagli dell'evento e tocca "Salva".</translation> <translation id="3240426699337459095">Link copiato</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Se condividi anche report sull'utilizzo di Chrome, tali report includono gli URL visitati</translation> <translation id="3245744387817103524">Impossibile salvare la modifica.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> di <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Compila automaticamente le password</translation> @@ -556,6 +558,7 @@ <translation id="3922310737605261887">Cerca il testo copiato</translation> <translation id="3928666092801078803">Unisci i miei dati</translation> <translation id="3929457972718048006">Indirizzi</translation> +<translation id="3948600256434252210">Puoi scorrere verso destra per navigare in incognito.</translation> <translation id="3955822496205734389">Hai password inefficaci.</translation> <translation id="3959736869653157332">Menu → Nuova scheda di navigazione in incognito</translation> <translation id="3962326069546168954">Salva</translation> @@ -632,7 +635,6 @@ <translation id="4371591986692297148">non attivo</translation> <translation id="4375040482473363939">Ricerca di codici QR</translation> <translation id="4378154925671717803">Telefono</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> ha condiviso una password con te per <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Tocca per modificare la lingua.</translation> <translation id="4405320213589929829">Usa gli indirizzi nelle pagine web per ricevere informazioni locali e indicazioni stradali.</translation> <translation id="4420409367264901497">Modifica il preferito</translation> @@ -661,6 +663,7 @@ <translation id="4539187448429948815">{count,plural, =1{{count} suggerimento di completamento automatico salvato disponibile sopra la tastiera.}other{{count} suggerimenti di completamento automatico salvati disponibili sopra la tastiera.}}</translation> <translation id="4540780316273593836">Si è verificato un problema</translation> <translation id="4550040941166547650">Solo su questo dispositivo</translation> +<translation id="4564893319561643483">Nascondi "<ph name="TITLE" />"</translation> <translation id="457292989631956153">{COUNT,plural, =1{Chiudere {COUNT} scheda non attiva?}other{Chiudere {COUNT} schede non attive?}}</translation> <translation id="457386861538956877">Altro...</translation> <translation id="4587589328781138893">Siti</translation> @@ -857,6 +860,7 @@ <translation id="555749644339804659">Controllo delle password…</translation> <translation id="5559567453458728487">Converti le unità di misura trovate sul web</translation> <translation id="556042886152191864">Pulsante</translation> +<translation id="5572648434713976849">Riceverai suggerimenti migliori nella barra degli indirizzi</translation> <translation id="5572684875078967866">Archiviazione delle informazioni</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Monitora questo pacchetto}other{Monitora tutti i pacchetti}}</translation> <translation id="5597915316964418992">Apri la griglia delle schede</translation> @@ -1083,6 +1087,7 @@ <translation id="6642362222295953972">Passa alla scheda esistente</translation> <translation id="6643016212128521049">Cancella</translation> <translation id="6645899968535965230">Codice QR: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Gli URL che visiti vengono inviati a Google per prevedere quali siti potresti visitare in futuro</translation> <translation id="6647480763136463714">Ultima esecuzione: <ph name="TIME" /></translation> <translation id="6656103420185847513">Modifica cartella</translation> <translation id="6657585470893396449">Password</translation> @@ -1260,6 +1265,7 @@ <translation id="7658239707568436148">Annulla</translation> <translation id="7666861622396822790">Puoi gestire questa preferenza nelle <ph name="BEGIN_LINK" />Impostazioni dei contenuti<ph name="END_LINK" />.</translation> <translation id="7671141431838911305">INSTALLA</translation> +<translation id="7673346542062368520">Puoi scorrere verso sinistra per navigare in incognito.</translation> <translation id="7679915578945954324">Indirizzi dei siti copiati</translation> <translation id="7687508192620387263">File del calendario disponibile</translation> <translation id="7701040980221191251">Nulla</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_iw.xtb b/ios/chrome/app/strings/resources/ios_strings_iw.xtb index d868ec0..d224139 100644 --- a/ios/chrome/app/strings/resources/ios_strings_iw.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_iw.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">לוחצים לחיצה ארוכה על תאריך.</translation> <translation id="1959679933317802873">בהמתנה לתוכן</translation> <translation id="1967461193809857427">{count,plural, =1{רוצה לחזור לכרטיסייה האחרונה שבה גלשת ב-Android?}one{רוצה לחזור לכרטיסיות האחרונות שבהן גלשת ב-Android?}two{רוצה לחזור לכרטיסיות האחרונות שבהן גלשת ב-Android?}other{רוצה לחזור לכרטיסיות האחרונות שבהן גלשת ב-Android?}}</translation> +<translation id="1972325230031091483">מהירות הגלישה תגבר כי התוכן ייטען באופן יזום, על סמך הביקור הנוכחי שלך בדף האינטרנט</translation> <translation id="1973912524893600642">שמירת הנתונים</translation> <translation id="1974060860693918893">מתקדם</translation> <translation id="1980417445547898121">{count,plural, =1{אפשר להעביר ל-iPhone הזה כרטיסייה ({count}) שגלשת בה לאחרונה במכשיר אחר}one{אפשר להעביר ל-iPhone הזה {count} כרטיסיות שגלשת בהן לאחרונה במכשיר אחר}two{אפשר להעביר ל-iPhone הזה {count} כרטיסיות שגלשת בהן לאחרונה במכשיר אחר}other{אפשר להעביר ל-iPhone הזה {count} כרטיסיות שגלשת בהן לאחרונה במכשיר אחר}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">עורכים את פרטי האירוע ומקישים על 'שמירה'.</translation> <translation id="3240426699337459095">הקישור הועתק</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">אם בנוסף ישותפו דוחות שימוש ב-Chrome, הדוחות האלה יכללו את כתובות ה-URL שבהן ביקרת</translation> <translation id="3245744387817103524">לא ניתן היה לשמור את השינוי.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> מתוך <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">מילוי אוטומטי של סיסמאות</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">לא פעיל</translation> <translation id="4375040482473363939">חיפוש של קוד QR</translation> <translation id="4378154925671717803">טלפון</translation> -<translation id="4388983683160515185">שותפה איתך סיסמה עבור <ph name="WEBSITE" /> על ידי <ph name="FULL_NAME" /></translation> <translation id="4389019817280890563">צריך להקיש לשינוי שפה</translation> <translation id="4405320213589929829">אפשר להיעזר בכתובות בדפי אינטרנט כדי לקבל מידע מקומי ומסלולים.</translation> <translation id="4420409367264901497">עריכת סימנייה</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">הסיסמאות נבדקות…</translation> <translation id="5559567453458728487">המרה של יחידות מידה שנמצאו באינטרנט</translation> <translation id="556042886152191864">לחצן</translation> +<translation id="5572648434713976849">בסרגל הכתובות יוצגו הצעות משופרות</translation> <translation id="5572684875078967866">אחסון מידע</translation> <translation id="5591792606924434384">{COUNT,plural, =1{מעקב אחר החבילה הזו}one{מעקב אחר כל החבילות}two{מעקב אחר כל החבילות}other{מעקב אחר כל החבילות}}</translation> <translation id="5597915316964418992">פתיחה של תצוגת הכרטיסיות</translation> @@ -924,6 +926,7 @@ <translation id="5922999516621365983">כדי להצמיד את הכרטיסייה, גוררים אותה לכאן.</translation> <translation id="5938160824633642847">המכשיר שלך כמעט מלא. צריך לפנות מקום ולנסות שוב.</translation> <translation id="5948291296578561264">מאפשר לך לשמור תמונות בספריית התמונות.</translation> +<translation id="5954562874938077107">מעבר אל Lens</translation> <translation id="5955891643922670672">מוצגת גרסה לא מקוונת</translation> <translation id="5957613098218939406">אפשרויות נוספות</translation> <translation id="595769230373966252">חיפוש ב-<ph name="SEARCH_PROVIDER" /></translation> @@ -1082,6 +1085,7 @@ <translation id="6642362222295953972">מעבר אל כרטיסייה קיימת</translation> <translation id="6643016212128521049">ניקוי</translation> <translation id="6645899968535965230">קוד QR: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">כתובות URL שבהן ביקרת יישלחו אל Google כדי לחזות את האתרים הבאים שאליהם תתבצע כניסה על ידך</translation> <translation id="6647480763136463714">הבדיקה האחרונה: <ph name="TIME" /></translation> <translation id="6656103420185847513">עריכת תיקייה</translation> <translation id="6657585470893396449">סיסמה</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ja.xtb b/ios/chrome/app/strings/resources/ios_strings_ja.xtb index 2c76781..b128e9b 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ja.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ja.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">日付を長押しします。</translation> <translation id="1959679933317802873">コンテンツの待機中</translation> <translation id="1967461193809857427">{count,plural, =1{Android で開いたタブを表示しますか?}other{Android で開いたタブを表示しますか?}}</translation> +<translation id="1972325230031091483">表示中のウェブページに基づいてコンテンツが事前に読み込まれるので、すばやくブラウジングできます</translation> <translation id="1973912524893600642">データを残す</translation> <translation id="1974060860693918893">詳細設定</translation> <translation id="1980417445547898121">{count,plural, =1{他のデバイスで最近開いた {count} 個のタブをこの iPhone で表示します}other{他のデバイスで最近開いた {count} 個のタブをこの iPhone で表示します}}</translation> @@ -291,6 +292,7 @@ <translation id="2547458583188611426">同期が機能していません。同期を開始するには、パスフレーズを入力してください。</translation> <translation id="2551153019974022505">アカウント エラー</translation> <translation id="2556092377360758201">保護なし(推奨されません)</translation> +<translation id="2561375093019333908">開く</translation> <translation id="2562041823070056534"><ph name="DEVICE_NAME" /> にタブを送信しています...</translation> <translation id="2576499762020411840">Google アカウントのパスワードの使用と保存</translation> <translation id="2577522251608256362">近隣住区(neighborhood)</translation> @@ -433,6 +435,7 @@ <translation id="3235242129752692527">予定の詳細を編集し、[保存] をタップします。</translation> <translation id="3240426699337459095">リンクをコピーしました</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Chrome の使用状況レポートを送信する場合は、アクセスした URL がこのレポートに含められます</translation> <translation id="3245744387817103524">変更を保存できませんでした。</translation> <translation id="3252394070589632019"><ph name="VALUE" />、<ph name="ADDITIONAL_INFO" />、<ph name="INDEX" /> / <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">パスワードの自動入力</translation> @@ -556,6 +559,7 @@ <translation id="3922310737605261887">コピーしたテキストを検索</translation> <translation id="3928666092801078803">データを統合する</translation> <translation id="3929457972718048006">住所</translation> +<translation id="3948600256434252210">右にスワイプすると、シークレット モードでブラウジングできます。</translation> <translation id="3955822496205734389">脆弱なパスワードがあります。</translation> <translation id="3959736869653157332">メニュー → 新しいシークレット タブ</translation> <translation id="3962326069546168954">保存</translation> @@ -632,7 +636,6 @@ <translation id="4371591986692297148">無効</translation> <translation id="4375040482473363939">QR コード検索</translation> <translation id="4378154925671717803">電話</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> さんが <ph name="WEBSITE" /> のパスワードをあなたと共有しました</translation> <translation id="4389019817280890563">タップして言語を変更できます。</translation> <translation id="4405320213589929829">ウェブページ上の住所を使用してローカル情報や経路を確認できます。</translation> <translation id="4420409367264901497">ブックマークを編集</translation> @@ -661,6 +664,7 @@ <translation id="4539187448429948815">{count,plural, =1{キーボードの上部に保存済みのオートコンプリートの候補が {count} 件表示されています。}other{キーボードの上部に保存済みのオートコンプリートの候補が {count} 件表示されています。}}</translation> <translation id="4540780316273593836">エラーが発生しました</translation> <translation id="4550040941166547650">このデバイスのみ</translation> +<translation id="4564893319561643483">「<ph name="TITLE" />」を非表示にします</translation> <translation id="457292989631956153">{COUNT,plural, =1{アクティブでない {COUNT} 個のタブを閉じますか?}other{アクティブでない {COUNT} 個のタブを閉じますか?}}</translation> <translation id="457386861538956877">その他...</translation> <translation id="4587589328781138893">ウェブサイト</translation> @@ -848,6 +852,7 @@ <translation id="5513681519188741830"><ph name="TIME" /> 時間前</translation> <translation id="5525269841082836315">パスフレーズの作成</translation> <translation id="553151287733286479">{COUNT,plural, =1{脆弱なパスワード: {COUNT} 件}other{脆弱なパスワード: {COUNT} 件}}</translation> +<translation id="5532545557415295622">アイドル タイムアウト ダイアログ</translation> <translation id="5542540507657872337"><ph name="COUNT" /> 件見つかりました</translation> <translation id="5548760955356983418">Handoffを使うと、このデバイスで見ているウェブサイトの続きをMacで見ることができます。現在開いているウェブサイトはMacのDockに表示されます。 @@ -857,6 +862,7 @@ <translation id="555749644339804659">パスワードを確認しています…</translation> <translation id="5559567453458728487">ウェブで見つかった測定単位を変換する</translation> <translation id="556042886152191864">ボタン</translation> +<translation id="5572648434713976849">より関連性の高い候補がアドレスバーに表示されます</translation> <translation id="5572684875078967866">情報容量</translation> <translation id="5591792606924434384">{COUNT,plural, =1{この荷物を追跡}other{すべての荷物を追跡}}</translation> <translation id="5597915316964418992">タブグリッドを開きます</translation> @@ -1083,6 +1089,7 @@ <translation id="6642362222295953972">既存のタブに切り替え</translation> <translation id="6643016212128521049">削除</translation> <translation id="6645899968535965230">QR コード: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">アクセスした URL が Google に送信され、次にアクセスするサイトの予測が行われます</translation> <translation id="6647480763136463714">前回の実行: <ph name="TIME" /></translation> <translation id="6656103420185847513">フォルダの編集</translation> <translation id="6657585470893396449">パスワード</translation> @@ -1260,6 +1267,7 @@ <translation id="7658239707568436148">キャンセル</translation> <translation id="7666861622396822790">これは [<ph name="BEGIN_LINK" />コンテンツの設定<ph name="END_LINK" />] で管理できます。</translation> <translation id="7671141431838911305">インストール</translation> +<translation id="7673346542062368520">左にスワイプすると、シークレット モードでブラウジングできます。</translation> <translation id="7679915578945954324">サイトのアドレスをコピーしました</translation> <translation id="7687508192620387263">カレンダー ファイルを使用できます</translation> <translation id="7701040980221191251">なし</translation> @@ -1288,6 +1296,7 @@ <translation id="7781829728241885113">昨日</translation> <translation id="7786246662347093005">{COUNT,plural, =1{1 日後}other{{COUNT} 日後}}</translation> <translation id="7791543448312431591">追加</translation> +<translation id="7792549458069452436">アプリをダウンロード</translation> <translation id="7807060072011926525">Google から提供</translation> <translation id="7812377703891978671">[<ph name="HISTORY_BUTTON_ACCESSIBILITY_LABEL" />] を選択すると、すべての閲覧履歴にアクセスできます。</translation> <translation id="78146569776629510">ダウンロード</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ka.xtb b/ios/chrome/app/strings/resources/ios_strings_ka.xtb index 0756ea2..62c53e8 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ka.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ka.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">ხანგრძლივად შეეხეთ თარიღს.</translation> <translation id="1959679933317802873">კონტენტის მოლოდინში</translation> <translation id="1967461193809857427">{count,plural, =1{გსურთ, გააგრძელოთ მუშაობა ჩანართთან, რომელზეც Android-ზე შეჩერდით?}other{გსურთ, გააგრძელოთ მუშაობა ჩანართებთან, რომლებზეც Android-ზე შეჩერდით?}}</translation> +<translation id="1972325230031091483">ვებს უფრო სწრაფად დაათვალიერებთ, რადგან კონტენტი პროაქტიურად ჩაიტვირთება იმ ვებსაიტის გათვალისწინებით, რომელსაც კონკრეტულ მომენტში ათვალიერებთ</translation> <translation id="1973912524893600642">მონაცემების შენარჩუნება</translation> <translation id="1974060860693918893">გაფართოებული</translation> <translation id="1980417445547898121">{count,plural, =1{ისარგებლეთ სხვა მოწყობილობაზე თქვენი {count} ბოლო დროს აქტიური ჩანართით ამ iPhone-ზე}other{ისარგებლეთ სხვა მოწყობილობაზე თქვენი {count} ბოლო დროს აქტიური ჩანართით ამ iPhone-ზე}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">დაარედაქტირეთ მოვლენის დეტალები და შეხებით აირჩიეთ „შენახვა“.</translation> <translation id="3240426699337459095">ბმული დაკოპირდა</translation> <translation id="3244271242291266297">თთ</translation> +<translation id="3245429137663807393">თუ თქვენ აზიარებთ Chrome-ის მოხმარების ანგარიშებსაც, ეს ანგარიშები ასევე მოიცავს თქვენ მიერ მონახულებულ URL-ებს</translation> <translation id="3245744387817103524">ცვლილების შენახვა ვერ მოხერხდა.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> / <ph name="NUM_SUGGESTIONS" />-დან</translation> <translation id="3264775633254836593">პაროლების ავტომატური შევსება</translation> @@ -557,6 +559,7 @@ <translation id="3922310737605261887">კოპირებული ტექსტის ძიება</translation> <translation id="3928666092801078803">ჩემი მონაცემების კომბინირება</translation> <translation id="3929457972718048006">მისამართები</translation> +<translation id="3948600256434252210">ვების ინკოგნიტო რეჟიმში დასათვალიერებლად შეგიძლიათ გადაფურცლოთ მარჯვნივ.</translation> <translation id="3955822496205734389">სუსტი პაროლები გაქვთ.</translation> <translation id="3959736869653157332">მენიუ → ახალი ინკოგნიტო ჩანართი</translation> <translation id="3962326069546168954">შენახვა</translation> @@ -633,7 +636,6 @@ <translation id="4371591986692297148">არააქტიური</translation> <translation id="4375040482473363939">QR კოდების ძიება</translation> <translation id="4378154925671717803">ტელეფონი</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" />-მა გაგიზიარათ <ph name="WEBSITE" />-ის პაროლი</translation> <translation id="4389019817280890563">შეეხეთ ენის შესაცვლელად.</translation> <translation id="4405320213589929829">ისარგებლეთ ვებგვერდებზე მოცემული მისამართებით ადგილობრივი ინფორმაციისა და მითითებების მისაღებად.</translation> <translation id="4420409367264901497">სანიშნის რედაქტირება</translation> @@ -662,6 +664,7 @@ <translation id="4539187448429948815">{count,plural, =1{თქვენი კლავიატურის ზემოთ ხელმისაწვდომია ავტომატური შევსების {count} შენახული შემოთავაზება.}other{თქვენი კლავიატურის ზემოთ ხელმისაწვდომია ავტომატური შევსების {count} შენახული შემოთავაზება.}}</translation> <translation id="4540780316273593836">წარმოიქმნა შეფერხება</translation> <translation id="4550040941166547650">მხოლოდ ამ მოწყობილობაზე</translation> +<translation id="4564893319561643483">დაიმალოს „<ph name="TITLE" />“</translation> <translation id="457292989631956153">{COUNT,plural, =1{გსურთ, დახუროთ {COUNT} არააქტიური ჩანართი?}other{გსურთ, დახუროთ {COUNT} არააქტიური ჩანართი?}}</translation> <translation id="457386861538956877">მეტი…</translation> <translation id="4587589328781138893">საიტები</translation> @@ -859,6 +862,7 @@ <translation id="555749644339804659">პაროლების მოწმდება…</translation> <translation id="5559567453458728487">ვებში ნაპოვნი საზომი ერთეულების გარდაქმნა</translation> <translation id="556042886152191864">ღილაკი</translation> +<translation id="5572648434713976849">მისამართთა ზოლში გაუმჯობესებული შემოთავაზებები დაგხვდებათ</translation> <translation id="5572684875078967866">მეხსიერება</translation> <translation id="5591792606924434384">{COUNT,plural, =1{ამ ამანათისთვის თვალის მიდევნება}other{ყველა ამანათისთვის თვალის მიდევნება}}</translation> <translation id="5597915316964418992">გახსენით ჩანართების ბადე</translation> @@ -1085,6 +1089,7 @@ <translation id="6642362222295953972">არსებულ ჩანართზე გადართვა</translation> <translation id="6643016212128521049">გასუფთავება</translation> <translation id="6645899968535965230">QR კოდი: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">თქვენ მიერ მონახულებული URL-ები ეგზავნება Google-ს იმის პროგნოზირებისთვის, თუ რომელი საიტების მონახულებას მოისურვებთ შემდგომში</translation> <translation id="6647480763136463714">ბოლო გაშვება: <ph name="TIME" /></translation> <translation id="6656103420185847513">საქაღალდის რედაქტირება</translation> <translation id="6657585470893396449">პაროლი</translation> @@ -1262,6 +1267,7 @@ <translation id="7658239707568436148">გაუქმება</translation> <translation id="7666861622396822790">აღნიშნულის მართვა შეგიძლიათ <ph name="BEGIN_LINK" />კონტენტის პარამეტრებიდან<ph name="END_LINK" />.</translation> <translation id="7671141431838911305">ინსტალაცია</translation> +<translation id="7673346542062368520">ვების ინკოგნიტო რეჟიმში დასათვალიერებლად შეგიძლიათ გადაფურცლოთ მარცხნივ.</translation> <translation id="7679915578945954324">საიტების მისამართები დაკოპირდა</translation> <translation id="7687508192620387263">ხელმისაწვდომია კალენდრის ფაილი</translation> <translation id="7701040980221191251">არცერთი</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kk.xtb b/ios/chrome/app/strings/resources/ios_strings_kk.xtb index 29abc8c..24bd4f0 100644 --- a/ios/chrome/app/strings/resources/ios_strings_kk.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_kk.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Күнді басып тұрыңыз.</translation> <translation id="1959679933317802873">Контенті дайын емес</translation> <translation id="1967461193809857427">{count,plural, =1{Сіз Android жүйесінде қалдырған қойындыны алып кету керек пе?}other{Сіз Android жүйесінде қалдырған қойындыларды алып кету керек пе?}}</translation> +<translation id="1972325230031091483">Кіріп отырған веб-бетке сәйкес контент алдын ала жүктелетіндіктен, шолу барысы жылдамдайды.</translation> <translation id="1973912524893600642">Деректерді сақтау</translation> <translation id="1974060860693918893">Қосымша</translation> <translation id="1980417445547898121">{count,plural, =1{Осы iPhone құрылғысында басқа құрылғыдан {count} соңғы белсенді қойындыны алыңыз.}other{Осы iPhone құрылғысында басқа құрылғыдан {count} соңғы белсенді қойындыны алыңыз.}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Оқиға мәліметтерін өзгертіп, "Сақтау" түймесін түртіңіз.</translation> <translation id="3240426699337459095">Сілтеме көшірілді</translation> <translation id="3244271242291266297">АА</translation> +<translation id="3245429137663807393">Chrome пайдалану есептерін де бөліссеңіз, бұл есептерде сіз кірген URL мекенжайлары қамтылады.</translation> <translation id="3245744387817103524">Өзгерісіңіз сақталмады.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="NUM_SUGGESTIONS" /> ішінен <ph name="INDEX" /></translation> <translation id="3264775633254836593">Құпия сөздерді автотолтыру</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">Өшірілген</translation> <translation id="4375040482473363939">QR кодын іздеу</translation> <translation id="4378154925671717803">Телефон</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> <ph name="WEBSITE" /> веб-сайтына арналған құпия сөзді сізбен бөлісті.</translation> <translation id="4389019817280890563">Тілді өзгерту үшін түртіңіз.</translation> <translation id="4405320213589929829">Жергілікті ақпарат пен бағыттарды алу үшін веб-беттердегі мекенжайларды пайдаланыңыз.</translation> <translation id="4420409367264901497">Бетбелгіні өзгерту</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Құпия сөздер тексерілуде…</translation> <translation id="5559567453458728487">Веб-беттердегі өлшем бірліктерді түрлендіру</translation> <translation id="556042886152191864">Түйме</translation> +<translation id="5572648434713976849">Мекенжай жолағында жақсартылған ұсыныстар аласыз.</translation> <translation id="5572684875078967866">Ақпарат сақтау</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Бұл пакетті бақылау}other{Барлық пакетті бақылау}}</translation> <translation id="5597915316964418992">Қойынды торын ашу</translation> @@ -1083,6 +1085,7 @@ <translation id="6642362222295953972">Бұрыннан бар қойындыға ауысу</translation> <translation id="6643016212128521049">Тазалау</translation> <translation id="6645899968535965230">QR коды: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Сіз кірген URL мекенжайлары Google-ға жіберіледі. Осылайша Google келесіде қандай сайтқа кіруіңіз мүмкін екендігін болжай алады.</translation> <translation id="6647480763136463714">Соңғы тексеріс жүргізілген уақыт: <ph name="TIME" /></translation> <translation id="6656103420185847513">Қалтаны өзгерту</translation> <translation id="6657585470893396449">Құпия сөз</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_km.xtb b/ios/chrome/app/strings/resources/ios_strings_km.xtb index 331a68f2..9ed2870 100644 --- a/ios/chrome/app/strings/resources/ios_strings_km.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_km.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">ចុចកាលបរិច្ឆេទឱ្យជាប់។</translation> <translation id="1959679933317802873">កំពុងរង់ចាំខ្លឹមសារ</translation> <translation id="1967461193809857427">{count,plural, =1{បន្តពីផ្ទាំងដែលអ្នកបានចាកចេញនៅលើ Android ឬ?}other{បន្តពីផ្ទាំងដែលអ្នកបានចាកចេញនៅលើ Android ឬ?}}</translation> +<translation id="1972325230031091483">អ្នកនឹងរុករកកាន់តែរហ័ស ដោយសារខ្លឹមសារត្រូវបានផ្ទុកយ៉ាងសកម្មជាមុន ដោយផ្អែកលើការចូលមើលទំព័របណ្ដាញបច្ចុប្បន្នរបស់អ្នក</translation> <translation id="1973912524893600642">រក្សាទុកទិន្នន័យ</translation> <translation id="1974060860693918893">កម្រិតខ្ពស់</translation> <translation id="1980417445547898121">{count,plural, =1{យកផ្ទាំងសកម្មថ្មីៗនេះរបស់អ្នកចំនួន {count} ពីឧបករណ៍ផ្សេងរបស់អ្នកនៅលើ iPhone នេះ}other{យកផ្ទាំងសកម្មថ្មីៗនេះរបស់អ្នកចំនួន {count} ពីឧបករណ៍ផ្សេងរបស់អ្នកនៅលើ iPhone នេះ}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">កែព័ត៌មានលម្អិតអំពីព្រឹត្តិការណ៍ រួចចុច "រក្សាទុក"។</translation> <translation id="3240426699337459095">បានចម្លងតំណ</translation> <translation id="3244271242291266297">ខែ</translation> +<translation id="3245429137663807393">ប្រសិនបើអ្នកចែករំលែករបាយការណ៍ប្រើប្រាស់ Chrome ផងដែររបាយការណ៍ទាំងនោះរួមបញ្ចូល URL ដែលអ្នកចូលមើល</translation> <translation id="3245744387817103524">មិនអាចរក្សាទុកការផ្លាស់ប្ដូររបស់អ្នកបានទេ។</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> នៃ <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">បំពេញពាក្យសម្ងាត់ដោយស្វ័យប្រវត្តិ</translation> @@ -634,7 +636,6 @@ <translation id="4371591986692297148">អសកម្ម</translation> <translation id="4375040482473363939">ស្វែងរកកូដ QR</translation> <translation id="4378154925671717803">ទូរស័ព្ទ</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> បានចែករំលែកពាក្យសម្ងាត់ជាមួយអ្នកសម្រាប់ <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">ចុចដើម្បីប្ដូរភាសា។</translation> <translation id="4405320213589929829">ប្រើអាសយដ្ឋាននៅលើទំព័របណ្ដាញ ដើម្បីទទួលបានព័ត៌មាន និងទិសដៅក្នុងតំបន់។</translation> <translation id="4420409367264901497">កែចំណាំ</translation> @@ -861,6 +862,7 @@ <translation id="555749644339804659">កំពុងពិនិត្យពាក្យសម្ងាត់…</translation> <translation id="5559567453458728487">បំប្លែងឯកតារង្វាស់ដែលបានរកឃើញនៅលើបណ្ដាញ</translation> <translation id="556042886152191864">ប៊ូតុង</translation> +<translation id="5572648434713976849">អ្នកនឹងទទួលបានការណែនាំកាន់តែប្រសើរនៅក្នុងរបារអាសយដ្ឋាន</translation> <translation id="5572684875078967866">ទំហំផ្ទុកព័ត៌មាន</translation> <translation id="5591792606924434384">{COUNT,plural, =1{តាមដានកញ្ចប់នេះ}other{តាមដានកញ្ចប់ទាំងអស់}}</translation> <translation id="5597915316964418992">បើកក្រឡាផ្ទាំង</translation> @@ -1087,6 +1089,7 @@ <translation id="6642362222295953972">ប្ដូរទៅផ្ទាំងដែលមានស្រាប់</translation> <translation id="6643016212128521049">ជម្រះ</translation> <translation id="6645899968535965230">កូដ QR៖ <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">URL ដែលអ្នកចូលមើលត្រូវបានផ្ញើទៅ Google ដើម្បីព្យាករគេហទំព័រដែលអ្នកប្រហែលជាចូលមើលបន្ទាប់</translation> <translation id="6647480763136463714">បានដំណើរការចុងក្រោយ <ph name="TIME" /></translation> <translation id="6656103420185847513">កែប្រែថតឯកសារ</translation> <translation id="6657585470893396449">ពាក្យសម្ងាត់</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kn.xtb b/ios/chrome/app/strings/resources/ios_strings_kn.xtb index 1de17c18..b0a288f 100644 --- a/ios/chrome/app/strings/resources/ios_strings_kn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_kn.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">ದಿನಾಂಕವನ್ನು ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹೋಲ್ಡ್ ಮಾಡಿ.</translation> <translation id="1959679933317802873">ವಿಷಯಕ್ಕಾಗಿ ಕಾಯಲಾಗುತ್ತಿದೆ</translation> <translation id="1967461193809857427">{count,plural, =1{ನೀವು Android ನಲ್ಲಿ ಬಿಟ್ಟಿರುವ ಟ್ಯಾಬ್ ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳಬೇಕೆ?}one{ನೀವು Android ನಲ್ಲಿ ಬಿಟ್ಟಿರುವ ಟ್ಯಾಬ್ಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಬೇಕೆ?}other{ನೀವು Android ನಲ್ಲಿ ಬಿಟ್ಟಿರುವ ಟ್ಯಾಬ್ಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಬೇಕೆ?}}</translation> +<translation id="1972325230031091483">ನಿಮ್ಮ ಪ್ರಸ್ತುತ ವೆಬ್ಪುಟದ ಭೇಟಿಯ ಆಧಾರದ ಮೇಲೆ ವಿಷಯವನ್ನು ಪೂರ್ವಭಾವಿಯಾಗಿ ಲೋಡ್ ಮಾಡಿರುವುದರಿಂದ ನೀವು ವೇಗವಾಗಿ ಬ್ರೌಸ್ ಮಾಡುತ್ತೀರಿ</translation> <translation id="1973912524893600642">ಡೇಟಾವನ್ನು ಇರಿಸಿಕೊಳ್ಳಿ</translation> <translation id="1974060860693918893">ಸುಧಾರಿತ</translation> <translation id="1980417445547898121">{count,plural, =1{ಈ iPhone ನಲ್ಲಿ ನಿಮ್ಮ ಇತರ ಸಾಧನದಿಂದ ನಿಮ್ಮ {count} ಇತ್ತೀಚೆಗೆ ಸಕ್ರಿಯವಾಗಿರುವ ಟ್ಯಾಬ್ ಅನ್ನು ಪಡೆಯಿರಿ}one{ಈ iPhone ನಲ್ಲಿ ನಿಮ್ಮ ಇತರ ಸಾಧನದಿಂದ ನಿಮ್ಮ {count} ಇತ್ತೀಚೆಗೆ ಸಕ್ರಿಯವಾಗಿರುವ ಟ್ಯಾಬ್ಗಳನ್ನು ಪಡೆಯಿರಿ}other{ಈ iPhone ನಲ್ಲಿ ನಿಮ್ಮ ಇತರ ಸಾಧನದಿಂದ ನಿಮ್ಮ {count} ಇತ್ತೀಚೆಗೆ ಸಕ್ರಿಯವಾಗಿರುವ ಟ್ಯಾಬ್ಗಳನ್ನು ಪಡೆಯಿರಿ}}</translation> @@ -291,6 +292,7 @@ <translation id="2547458583188611426">ಸಿಂಕ್ ಕೆಲಸ ಮಾಡುತ್ತಿಲ್ಲ. ಸಿಂಕ್ ಪ್ರಾರಂಭಿಸಲು, ನಿಮ್ಮ ಪಾಸ್ಫ್ರೇಸ್ ನಮೂದಿಸಿ.</translation> <translation id="2551153019974022505">ಖಾತೆ ದೋಷ</translation> <translation id="2556092377360758201">ಸುರಕ್ಷತೆ ಇಲ್ಲ (ಇದನ್ನು ನಾವು ಶಿಫಾರಸು ಮಾಡುವುದಿಲ್ಲ)</translation> +<translation id="2561375093019333908">ತೆರೆಯಿರಿ</translation> <translation id="2562041823070056534"><ph name="DEVICE_NAME" /> ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತಿದೆ...</translation> <translation id="2576499762020411840">ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿರುವ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಬಳಸಿ ಮತ್ತು ಉಳಿಸಿ</translation> <translation id="2577522251608256362">ನೆರೆಹೊರೆ</translation> @@ -433,6 +435,7 @@ <translation id="3235242129752692527">ಈವೆಂಟ್ ವಿವರಗಳನ್ನು ಎಡಿಟ್ ಮಾಡಿ ಮತ್ತು "ಸೇವ್ ಮಾಡಿ" ಟ್ಯಾಪ್ ಮಾಡಿ.</translation> <translation id="3240426699337459095">ಲಿಂಕ್ ನಕಲಿಸಲಾಗಿದೆ</translation> <translation id="3244271242291266297">ಮಿಮೀ</translation> +<translation id="3245429137663807393">ನೀವು Chrome ಬಳಕೆಯ ವರದಿಗಳನ್ನು ಸಹ ಹಂಚಿಕೊಂಡರೆ, ಆ ವರದಿಗಳು ನೀವು ಭೇಟಿ ನೀಡುವ URL ಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ</translation> <translation id="3245744387817103524">ನಿಮ್ಮ ಬದಲಾವಣೆಯನ್ನು ಉಳಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.</translation> <translation id="3252394070589632019"><ph name="NUM_SUGGESTIONS" /> ರಲ್ಲಿ <ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /></translation> <translation id="3264775633254836593">ಆಟೋಫಿಲ್ ಪಾಸ್ವರ್ಡ್ಗಳು</translation> @@ -632,7 +635,6 @@ <translation id="4371591986692297148">ನಿಷ್ಕ್ರಿಯವಾಗಿದೆ</translation> <translation id="4375040482473363939">QR ಕೋಡ್ ಅನ್ನು ಹುಡುಕಿ</translation> <translation id="4378154925671717803">ಫೋನ್</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> ಅವರು <ph name="WEBSITE" /> ಗೆ ಸಂಬಂಧಿಸಿದ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ನಿಮ್ಮೊಂದಿಗೆ ಹಂಚಿಕೊಂಡಿದ್ದಾರೆ</translation> <translation id="4389019817280890563">ಭಾಷೆಯನ್ನು ಬದಲಾಯಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ.</translation> <translation id="4405320213589929829">ಸ್ಥಳೀಯ ಮಾಹಿತಿ ಮತ್ತು ನಿರ್ದೇಶನಗಳನ್ನು ಪಡೆಯಲು ವೆಬ್ಪುಟಗಳಲ್ಲಿ ವಿಳಾಸಗಳನ್ನು ಬಳಸಿ.</translation> <translation id="4420409367264901497">ಬುಕ್ಮಾರ್ಕ್ ಎಡಿಟ್ ಮಾಡಿ</translation> @@ -848,6 +850,7 @@ <translation id="5513681519188741830"><ph name="TIME" /> ಗಂಟೆಯ ಹಿಂದೆ</translation> <translation id="5525269841082836315">ಪಾಸ್ಫ್ರೇಸ್ ರಚಿಸಿ</translation> <translation id="553151287733286479">{COUNT,plural, =1{{COUNT} ದುರ್ಬಲ ಪಾಸ್ವರ್ಡ್}one{{COUNT} ದುರ್ಬಲ ಪಾಸ್ವರ್ಡ್ಗಳು}other{{COUNT} ದುರ್ಬಲ ಪಾಸ್ವರ್ಡ್ಗಳು}}</translation> +<translation id="5532545557415295622">ಐಡಲ್ ಟೈಮ್ಔಟ್ ಡೈಲಾಗ್</translation> <translation id="5542540507657872337"><ph name="COUNT" /> ಕಂಡುಬಂದಿದೆ</translation> <translation id="5548760955356983418">ಹ್ಯಾಂಡ್ಆಫ್ ವೆಬ್ಸೈಟ್ ಈ ಸಾಧನದಲ್ಲಿ ಬ್ರೌಸ್ ಮಾಡುವುದನ್ನು ಪ್ರಾರಂಭಿಸಲು ನಂತರ ನಿಮ್ಮ Mac ನಲ್ಲಿ ಸುಲಭವಾಗಿ ಮುಂದುವರಿಸಲು ಅನುಮತಿಸುತ್ತದೆ. ಪ್ರಸ್ತುತ ತೆರೆದ ವೆಬ್ಸೈಟ್ ನಿಮ್ಮ Mac ನಲ್ಲಿನ ಡಾಕ್ನಲ್ಲಿ ಗೋಚರಿಸುತ್ತದೆ. @@ -857,6 +860,7 @@ <translation id="555749644339804659">ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ…</translation> <translation id="5559567453458728487">ವೆಬ್ನಲ್ಲಿ ಕಂಡುಬರುವ ಮಾಪನ ಯೂನಿಟ್ಗಳನ್ನು ಪರಿವರ್ತಿಸಿ</translation> <translation id="556042886152191864">ಬಟನ್</translation> +<translation id="5572648434713976849">ನೀವು ವಿಳಾಸ ಪಟ್ಟಿಯಲ್ಲಿ ಸುಧಾರಿತ ಸಲಹೆಗಳನ್ನು ಪಡೆಯುತ್ತೀರಿ</translation> <translation id="5572684875078967866">ಮಾಹಿತಿ ಸಂಗ್ರಹಣೆ</translation> <translation id="5591792606924434384">{COUNT,plural, =1{ಈ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಿ}one{ಎಲ್ಲಾ ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಿ}other{ಎಲ್ಲಾ ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಿ}}</translation> <translation id="5597915316964418992">ಟ್ಯಾಬ್ ಗ್ರಿಡ್ ಅನ್ನು ತೆರೆಯಿರಿ</translation> @@ -1083,6 +1087,7 @@ <translation id="6642362222295953972">ಪ್ರಸ್ತುತ ಟ್ಯಾಬ್ಗೆ ಬದಲಿಸಿ</translation> <translation id="6643016212128521049">ತೆರವುಗೊಳಿಸಿ</translation> <translation id="6645899968535965230">QR ಕೋಡ್: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">ನೀವು ಮುಂದೆ ಯಾವ ಸೈಟ್ಗಳಿಗೆ ಭೇಟಿ ನೀಡಬಹುದು ಎಂಬುದನ್ನು ಊಹಿಸಲು ನೀವು ಭೇಟಿ ನೀಡುವ URL ಗಳನ್ನು Google ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ</translation> <translation id="6647480763136463714"><ph name="TIME" /> ಕೊನೆಯದಾಗಿ ರನ್ ಮಾಡಿದ ಸಮಯ</translation> <translation id="6656103420185847513">ಫೋಲ್ಡರ್ ಎಡಿಟ್ ಮಾಡಿ</translation> <translation id="6657585470893396449">ಪಾಸ್ವರ್ಡ್</translation> @@ -1288,6 +1293,7 @@ <translation id="7781829728241885113">ನಿನ್ನೆ</translation> <translation id="7786246662347093005">{COUNT,plural, =1{1 ದಿನದ ನಂತರ}one{{COUNT} ದಿನಗಳ ನಂತರ}other{{COUNT} ದಿನಗಳ ನಂತರ}}</translation> <translation id="7791543448312431591">ಸೇರಿಸು</translation> +<translation id="7792549458069452436">ಆ್ಯಪ್ ಪಡೆಯಿರಿ</translation> <translation id="7807060072011926525">Google ಮೂಲಕ ಒದಗಿಸಲಾಗಿದೆ</translation> <translation id="7812377703891978671"><ph name="HISTORY_BUTTON_ACCESSIBILITY_LABEL" /> ಅನ್ನು ಆಯ್ಕೆ ಮಾಡುವ ಮೂಲಕ ನಿಮ್ಮ ಎಲ್ಲಾ ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸವನ್ನು ನೀವು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಬಹುದು.</translation> <translation id="78146569776629510">ಡೌನ್ಲೋಡ್ಗಳು</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ko.xtb b/ios/chrome/app/strings/resources/ios_strings_ko.xtb index 69421a6..e968afb 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ko.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ko.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">날짜를 길게 터치합니다.</translation> <translation id="1959679933317802873">콘텐츠 대기 중</translation> <translation id="1967461193809857427">{count,plural, =1{Android에서 중단한 탭을 다시 시작하시겠습니까?}other{Android에서 중단한 탭을 다시 시작하시겠습니까?}}</translation> +<translation id="1972325230031091483">현재 웹페이지 방문을 토대로 콘텐츠가 미리 로드되므로 더 빠르게 탐색할 수 있습니다.</translation> <translation id="1973912524893600642">데이터 보관</translation> <translation id="1974060860693918893">고급</translation> <translation id="1980417445547898121">{count,plural, =1{다른 기기의 최근 활성 탭 {count}개를 이 iPhone으로 가져오세요}other{다른 기기의 최근 활성 탭 {count}개를 이 iPhone으로 가져오세요}}</translation> @@ -291,6 +292,7 @@ <translation id="2547458583188611426">동기화가 작동하지 않습니다. 동기화를 시작하려면 암호를 입력하세요.</translation> <translation id="2551153019974022505">계정 오류</translation> <translation id="2556092377360758201">보호되지 않음(권장되지 않음)</translation> +<translation id="2561375093019333908">열기</translation> <translation id="2562041823070056534"><ph name="DEVICE_NAME" />에 보내는 중...</translation> <translation id="2576499762020411840">내 Google 계정에서 비밀번호 사용 및 저장</translation> <translation id="2577522251608256362">동/읍/면</translation> @@ -433,6 +435,7 @@ <translation id="3235242129752692527">일정 세부정보를 수정하고 '저장'을 탭합니다.</translation> <translation id="3240426699337459095">링크 복사됨</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Chrome 사용 보고서를 공유하면, 내가 방문한 URL이 이 보고서에 포함됩니다.</translation> <translation id="3245744387817103524">변경사항을 저장할 수 없습니다.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" />/<ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">비밀번호 자동 완성</translation> @@ -632,7 +635,6 @@ <translation id="4371591986692297148">비활성</translation> <translation id="4375040482473363939">QR 코드 검색</translation> <translation id="4378154925671717803">전화기</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" />님이 <ph name="WEBSITE" />의 비밀번호를 공유했습니다</translation> <translation id="4389019817280890563">언어를 변경하려면 탭하세요.</translation> <translation id="4405320213589929829">웹페이지의 주소를 사용하여 지역 정보와 경로를 찾습니다</translation> <translation id="4420409367264901497">북마크 수정</translation> @@ -848,6 +850,7 @@ <translation id="5513681519188741830"><ph name="TIME" />시간 전</translation> <translation id="5525269841082836315">암호 만들기</translation> <translation id="553151287733286479">{COUNT,plural, =1{취약한 비밀번호 {COUNT}개}other{취약한 비밀번호 {COUNT}개}}</translation> +<translation id="5532545557415295622">유휴 상태 제한 시간 대화상자</translation> <translation id="5542540507657872337"><ph name="COUNT" />개 탭 검색됨</translation> <translation id="5548760955356983418">Handoff를 이용하면 이 기기에서 웹사이트를 탐색하다가 Mac에서 간편하게 보던 페이지부터 계속할 수 있습니다. 현재 열어놓은 웹사이트가 Mac의 Dock에 표시됩니다. @@ -857,6 +860,7 @@ <translation id="555749644339804659">비밀번호 확인 중…</translation> <translation id="5559567453458728487">웹에서 찾은 측정 단위 변환</translation> <translation id="556042886152191864">버튼</translation> +<translation id="5572648434713976849">주소 표시줄에 더 개선된 추천 항목이 표시됩니다.</translation> <translation id="5572684875078967866">정보 저장소</translation> <translation id="5591792606924434384">{COUNT,plural, =1{이 택배 추적}other{모든 택배 추적}}</translation> <translation id="5597915316964418992">탭 그리드 열기</translation> @@ -1083,6 +1087,7 @@ <translation id="6642362222295953972">기존 탭으로 전환</translation> <translation id="6643016212128521049">삭제</translation> <translation id="6645899968535965230">QR 코드: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">다음에 방문할 사이트를 예측하기 위해 내가 방문한 URL이 Google에 전송됩니다.</translation> <translation id="6647480763136463714">마지막 실행일: <ph name="TIME" /></translation> <translation id="6656103420185847513">폴더 수정</translation> <translation id="6657585470893396449">비밀번호</translation> @@ -1288,6 +1293,7 @@ <translation id="7781829728241885113">어제</translation> <translation id="7786246662347093005">{COUNT,plural, =1{1일 후}other{{COUNT}일 후}}</translation> <translation id="7791543448312431591">추가</translation> +<translation id="7792549458069452436">앱 다운로드</translation> <translation id="7807060072011926525">Google 제공</translation> <translation id="7812377703891978671"><ph name="HISTORY_BUTTON_ACCESSIBILITY_LABEL" />을(를) 선택하여 모든 방문 기록에 액세스할 수 있습니다.</translation> <translation id="78146569776629510">다운로드</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ky.xtb b/ios/chrome/app/strings/resources/ios_strings_ky.xtb index 76e2faa..5070fc5 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ky.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ky.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Күндү коё бербей басып туруңуз.</translation> <translation id="1959679933317802873">Мазмун күтүлүүдө</translation> <translation id="1967461193809857427">{count,plural, =1{Android'де көргөн өтмөктү ачасызбы?}other{Android'де көргөн өтмөктү ачасызбы?}}</translation> +<translation id="1972325230031091483">Мазмун учурда ачылып турган веб-баракчанын негизинде жүктөлгөндүктөн, барактарды тезирээк карап чыгасыз</translation> <translation id="1973912524893600642">Дайындарды сактоо</translation> <translation id="1974060860693918893">Өркүндөтүлгөн</translation> <translation id="1980417445547898121">{count,plural, =1{Башка түзмөктө акыркы жолу ачылган {count} өтмөктү ушул iPhone'до көрүңүз}other{Башка түзмөктө акыркы жолу ачылган {count} өтмөктү ушул iPhone'до көрүңүз}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Иш-чаранын чоо-жайын түзөтүп, "Сактоо" дегенди таптаңыз.</translation> <translation id="3240426699337459095">Шилтеме көчүрүлдү</translation> <translation id="3244271242291266297">АА</translation> +<translation id="3245429137663807393">Chrome'дун колдонулушу тууралуу кабарларды да бөлүшсөңүз, ал кабарларда сиз баш баккан URL даректери камтылат</translation> <translation id="3245744387817103524">Өзгөртүүңүз сакталган жок.</translation> <translation id="3252394070589632019"><ph name="NUM_SUGGESTIONS" /> ичинен <ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /></translation> <translation id="3264775633254836593">Сырсөздөрдү автоматтык түрдө толтуруу</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">Жигерсиз</translation> <translation id="4375040482473363939">QR кодду издөө</translation> <translation id="4378154925671717803">Телефон</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> сиз менен <ph name="WEBSITE" /> үчүн сырсөздү бөлүштү</translation> <translation id="4389019817280890563">Тилди өзгөртүү үчүн таптап коюңуз.</translation> <translation id="4405320213589929829">Жергиликтүү маалыматты жана багыттарды веб беттердеги даректерден көрүңүз.</translation> <translation id="4420409367264901497">Кыстарманы түзөтүү</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Сырсөздөр текшерилүүдө…</translation> <translation id="5559567453458728487">Интернетте табылган конверсияны талдоо бирдиктери</translation> <translation id="556042886152191864">Баскыч</translation> +<translation id="5572648434713976849">Дарек тилкесинде жакшыртылган сунуштарды аласыз</translation> <translation id="5572684875078967866">Маалымат сактагыч</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Бул таңгакка көз салуу}other{Бардык таңгактарга көз салуу}}</translation> <translation id="5597915316964418992">Өтмөк торчосун ачуу</translation> @@ -1083,6 +1085,7 @@ <translation id="6642362222295953972">Учурдагы өтмөккө которулуу</translation> <translation id="6643016212128521049">Тазалоо</translation> <translation id="6645899968535965230">QR код: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Кийин кайсы сайттарга кирериңизди болжолдоо үчүн сиз баш баккан URL даректери Google'га жөнөтүлүп турат</translation> <translation id="6647480763136463714">Акыркы жолу иштетилген: <ph name="TIME" /></translation> <translation id="6656103420185847513">Куржунду түзөтүү</translation> <translation id="6657585470893396449">Сырсөз</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lo.xtb b/ios/chrome/app/strings/resources/ios_strings_lo.xtb index 0da8726..1d126df 100644 --- a/ios/chrome/app/strings/resources/ios_strings_lo.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_lo.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">ແຕະໃສ່ວັນທີໃດໜຶ່ງຄ້າງໄວ້.</translation> <translation id="1959679933317802873">ກຳລັງລໍຖ້າເນື້ອຫາ</translation> <translation id="1967461193809857427">{count,plural, =1{ເລືອກເອົາແຖບທີ່ທ່ານປະໄວ້ຢູ່ Android ບໍ່?}other{ເລືອກເອົາແຖບທີ່ທ່ານປະໄວ້ຢູ່ Android ບໍ່?}}</translation> +<translation id="1972325230031091483">ທ່ານຈະທ່ອງເວັບໄດ້ໄວຂຶ້ນເນື່ອງຈາກເນື້ອຫາມີການໂຫຼດໄວ້ກ່ອນໂດຍອ້າງອີງໃສ່ການເຂົ້າເບິ່ງໜ້າເວັບປັດຈຸບັນຂອງທ່ານ</translation> <translation id="1973912524893600642">ຮັກສາຂໍ້ມູນໄວ້</translation> <translation id="1974060860693918893">ຂັ້ນສູງ</translation> <translation id="1980417445547898121">{count,plural, =1{ຮັບເອົາ {count} ແຖບການເຄື່ອນໄຫວຫຼ້າສຸດຂອງທ່ານຈາກອຸປະກອນອື່ນຂອງທ່ານຢູ່ iPhone ນີ້}other{ຮັບເອົາ {count} ແຖບການເຄື່ອນໄຫວຫຼ້າສຸດຂອງທ່ານຈາກອຸປະກອນອື່ນຂອງທ່ານຢູ່ iPhone ນີ້}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">ແກ້ໄຂລາຍລະອຽດນັດໝາຍແລ້ວແຕະໃສ່ “ບັນທຶກ.“</translation> <translation id="3240426699337459095">ອັດສຳເນົາລິ້ງແລ້ວ</translation> <translation id="3244271242291266297">ດດ</translation> +<translation id="3245429137663807393">ຫາກທ່ານແບ່ງປັນລາຍງານການນຳໃຊ້ Chrome ນຳ, ລາຍງານເຫຼົ່ານັ້ນຈະຮວມເອົາ URL ທີ່ທ່ານເຂົ້າໄວ້ພ້ອມ</translation> <translation id="3245744387817103524">ບໍ່ສາມາດບັນທຶກການປ່ຽນແປງຂອງທ່ານໄດ້.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> ໃນ <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">ຕື່ມຂໍ້ມູນລະຫັດຜ່ານອັດຕະໂນມັດ</translation> @@ -634,7 +636,6 @@ <translation id="4371591986692297148">ບໍ່ໄດ້ນຳໃຊ້</translation> <translation id="4375040482473363939">ການຊອກຫາລະຫັດ QR</translation> <translation id="4378154925671717803">ໂທລະສັບ</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> ໄດ້ແບ່ງປັນລະຫັດຜ່ານກັບທ່ານສຳລັບ <ph name="WEBSITE" /> ແລ້ວ</translation> <translation id="4389019817280890563">ແຕະເພື່ອປ່ຽນພາສາ.</translation> <translation id="4405320213589929829">ໃຊ້ທີ່ຢູ່ຢູ່ໜ້າເວັບເພື່ອໂດຂໍ້ມູນ ແລະ ເສັ້ນທາງ.</translation> <translation id="4420409367264901497">ແກ້ໄຂບຸກມາກ</translation> @@ -861,6 +862,7 @@ <translation id="555749644339804659">ກຳລັງກວດສອບລະຫັດຜ່ານ…</translation> <translation id="5559567453458728487">ການວັດແທກການປ່ຽນຄ່າໜ່ວຍຖືກພົບຢູ່ເວັບ</translation> <translation id="556042886152191864">ປຸ່ມ</translation> +<translation id="5572648434713976849">ທ່ານຈະໄດ້ຮັບການແນະນຳທີ່ມີການປັບປຸງໃນແຖບທີ່ຢູ່</translation> <translation id="5572684875078967866">ບ່ອນຈັດເກັບຂໍ້ມູນ</translation> <translation id="5591792606924434384">{COUNT,plural, =1{ຕິດຕາມພັດສະດຸນີ້}other{ຕິດຕາມພັດສະດຸທັງໝົດ}}</translation> <translation id="5597915316964418992">ເປີດຊ່ອງແຖບ</translation> @@ -1087,6 +1089,7 @@ <translation id="6642362222295953972">ປ່ຽນເປັນແຖບທີ່ມີຢູ່</translation> <translation id="6643016212128521049">ລຶບ</translation> <translation id="6645899968535965230">ລະຫັດ QR: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">URL ທີ່ທ່ານເຂົ້າເບິ່ງຈະຖືກສົ່ງໄປໃຫ້ Google ເພື່ອຄາດເດົາເວັບໄຊທີ່ທ່ານອາດຈະເຂົ້າເບິ່ງເປັນລຳດັບຕໍ່ໄປ</translation> <translation id="6647480763136463714">ເອີ້ນໃຊ້ຫຼ້າສຸດ <ph name="TIME" /></translation> <translation id="6656103420185847513">ແກ້ໄຂໂຟລເດີ</translation> <translation id="6657585470893396449">ລະຫັດຜ່ານ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lt.xtb b/ios/chrome/app/strings/resources/ios_strings_lt.xtb index de06b3b..0b53887 100644 --- a/ios/chrome/app/strings/resources/ios_strings_lt.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_lt.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Palieskite ir palaikykite datą.</translation> <translation id="1959679933317802873">Laukiama turinio</translation> <translation id="1967461193809857427">{count,plural, =1{Pasirinkti skirtuką, iš kurio išėjote sistemoje „Android“?}one{Pasirinkti skirtukus, iš kurių išėjote sistemoje „Android“?}few{Pasirinkti skirtukus, iš kurių išėjote sistemoje „Android“?}many{Pasirinkti skirtukus, iš kurių išėjote sistemoje „Android“?}other{Pasirinkti skirtukus, iš kurių išėjote sistemoje „Android“?}}</translation> +<translation id="1972325230031091483">Naršysite sparčiau, nes turinys įkeliamas iš anksto atsižvelgiant į tinklalapį, kuriame šiuo metu lankotės</translation> <translation id="1973912524893600642">Palikti duomenis</translation> <translation id="1974060860693918893">Išplėstiniai</translation> <translation id="1980417445547898121">{count,plural, =1{Gaukite {count} neseniai aktyvų skirtuką iš kito įrenginio šiame „iPhone“ įrenginyje}one{Gaukite {count} neseniai aktyvų skirtuką iš kito įrenginio šiame „iPhone“ įrenginyje}few{Gaukite {count} neseniai aktyvius skirtukus iš kito įrenginio šiame „iPhone“ įrenginyje}many{Gaukite {count} neseniai aktyvaus skirtuko iš kito įrenginio šiame „iPhone“ įrenginyje}other{Gaukite {count} neseniai aktyvių skirtukų iš kito įrenginio šiame „iPhone“ įrenginyje}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">Redaguokite išsamią įvykio informaciją ir palieskite „Išsaugoti“.</translation> <translation id="3240426699337459095">Nuoroda nukopijuota</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Jei taip pat bendrinate „Chrome“ naudojimo ataskaitas, į tas ataskaitas įtraukiami URL, kuriais lankėtės</translation> <translation id="3245744387817103524">Pakeitimo nepavyko išsaugoti.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> iš <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Automatinis slaptažodžių pildymas</translation> @@ -634,7 +636,6 @@ <translation id="4371591986692297148">Neaktyvus</translation> <translation id="4375040482473363939">QR kodo paieška</translation> <translation id="4378154925671717803">Telefonas</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> bendrino su jumis <ph name="WEBSITE" /> slaptažodį</translation> <translation id="4389019817280890563">Palieskite, kad pakeistumėte kalbą.</translation> <translation id="4405320213589929829">Naudokite adresus tinklalapiuose, kad gautumėte vietos informacijos ir nuorodų.</translation> <translation id="4420409367264901497">Žymės redagavimas</translation> @@ -861,6 +862,7 @@ <translation id="555749644339804659">Tikrinami slaptažodžiai…</translation> <translation id="5559567453458728487">Konvertuoti žiniatinklyje rastus matavimo vienetus</translation> <translation id="556042886152191864">Mygtukas</translation> +<translation id="5572648434713976849">Gausite patobulintų pasiūlymų adreso juostoje</translation> <translation id="5572684875078967866">Informacijos saugykla</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Stebėti šį siuntinį}one{Stebėti visus siuntinius}few{Stebėti visus siuntinius}many{Stebėti visus siuntinius}other{Stebėti visus siuntinius}}</translation> <translation id="5597915316964418992">Atidarykite skirtuko tinklelį</translation> @@ -1087,6 +1089,7 @@ <translation id="6642362222295953972">Perjungti į esamą skirtuką</translation> <translation id="6643016212128521049">Išvalyti</translation> <translation id="6645899968535965230">QR kodas: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">URL, kuriais lankotės, siunčiami „Google“, kad numatytų, kokiose svetainėse galite vėliau apsilankyti</translation> <translation id="6647480763136463714">Paskutinį kartą paleista <ph name="TIME" /></translation> <translation id="6656103420185847513">Redaguoti aplanką</translation> <translation id="6657585470893396449">Slaptažodis</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lv.xtb b/ios/chrome/app/strings/resources/ios_strings_lv.xtb index fe315a6..4ba89d6 100644 --- a/ios/chrome/app/strings/resources/ios_strings_lv.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_lv.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Pieskarieties datumam un turiet to.</translation> <translation id="1959679933317802873">Gaida saturu</translation> <translation id="1967461193809857427">{count,plural, =1{Vai atvērt cilni, ko skatījāt Android ierīcē?}zero{Vai atvērt cilnes, ko skatījāt Android tālrunī?}one{Vai atvērt cilnes, ko skatījāt Android tālrunī?}other{Vai atvērt cilnes, ko skatījāt Android tālrunī?}}</translation> +<translation id="1972325230031091483">Pārlūkošana būs ātrāka, jo saturs tiks iepriekš ielādēts, pamatojoties uz jūsu pašlaik apmeklēto tīmekļa lapu.</translation> <translation id="1973912524893600642">Paturēt datus</translation> <translation id="1974060860693918893">Papildu</translation> <translation id="1980417445547898121">{count,plural, =1{Šajā iPhone tālrunī varat atvērt {count} cilni, ko nesen izmantojāt citā ierīcē}zero{Šajā iPhone tālrunī varat atvērt {count} cilnes, ko nesen izmantojāt citā ierīcē}one{Šajā iPhone tālrunī varat atvērt {count} cilni, ko nesen izmantojāt citā ierīcē}other{Šajā iPhone tālrunī varat atvērt {count} cilnes, ko nesen izmantojāt citā ierīcē}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Rediģējiet pasākuma informāciju un pieskarieties pogai Saglabāt.</translation> <translation id="3240426699337459095">Saite nokopēta</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Ja kopīgojat arī Chrome lietojuma pārskatus, šajos pārskatos tiek iekļauti jūsu apmeklētie vietrāži URL.</translation> <translation id="3245744387817103524">Jūsu veiktās izmaiņas nevarēja saglabāt.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" />. no <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Paroļu automātiskā aizpilde</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">neaktīva</translation> <translation id="4375040482473363939">Meklēšana ar kvadrātkodu</translation> <translation id="4378154925671717803">Tālrunis</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> kopīgoja ar jums paroli vietnei <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Pieskarieties, lai mainītu valodu.</translation> <translation id="4405320213589929829">Tīmekļa lapās varat izmantot adreses, lai iegūtu vietējo informāciju un norādes.</translation> <translation id="4420409367264901497">Rediģēt grāmatzīmi</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Notiek paroļu pārbaude…</translation> <translation id="5559567453458728487">Pārveidot tīmeklī atrastās mērvienības</translation> <translation id="556042886152191864">Poga</translation> +<translation id="5572648434713976849">Jūs saņemsiet uzlabotus ieteikumus adreses joslā.</translation> <translation id="5572684875078967866">Informācijas glabāšana</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Izsekot šim sūtījumam}zero{Izsekot visiem sūtījumiem}one{Izsekot visiem sūtījumiem}other{Izsekot visiem sūtījumiem}}</translation> <translation id="5597915316964418992">Atveriet ciļņu režģi.</translation> @@ -1083,6 +1085,7 @@ <translation id="6642362222295953972">Pāriet uz esošo cilni</translation> <translation id="6643016212128521049">Notīrīt</translation> <translation id="6645899968535965230">Kvadrātkods: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Uzņēmumam Google tiek sūtīti jūsu apmeklētie vietrāži URL, lai prognozētu, kuras vietnes jūs varētu apmeklēt turpmāk.</translation> <translation id="6647480763136463714">Pēdējoreiz palaista: <ph name="TIME" /></translation> <translation id="6656103420185847513">Mapes rediģēšana</translation> <translation id="6657585470893396449">Parole</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mk.xtb b/ios/chrome/app/strings/resources/ios_strings_mk.xtb index 6c75da6..989c6c41 100644 --- a/ios/chrome/app/strings/resources/ios_strings_mk.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_mk.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Допрете и задржете датум.</translation> <translation id="1959679933317802873">Се чекаат содржини</translation> <translation id="1967461193809857427">{count,plural, =1{Дали ќе ја прегледате картичката што ја оставивте на Android?}one{Дали ќе ги прегледате картичките што ги оставивте на Android?}other{Дали ќе ги прегледате картичките што ги оставивте на Android?}}</translation> +<translation id="1972325230031091483">Ќе прелистувате побрзо бидејќи содржините се вчитуваат проактивно според вашата тековна посета на веб-страницата</translation> <translation id="1973912524893600642">Задржи ги податоците</translation> <translation id="1974060860693918893">Напредни</translation> <translation id="1980417445547898121">{count,plural, =1{Префрлете ја вашата {count} последно активна картичка од другиот ваш уред на овој iPhone}one{Префрлете ги вашите {count} последно активна картичка од другиот ваш уред на овој iPhone}other{Префрлете ги вашите {count} последно активни картички од другиот ваш уред на овој iPhone}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Изменете ги деталите за настанот, па допрете „Зачувај“.</translation> <translation id="3240426699337459095">Врската е копирана</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Ако ги споделувате и извештаите за користењето на Chrome, тие ги содржат URL-адресите што ги посетувате</translation> <translation id="3245744387817103524">Промената не можеше да се зачува.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> од <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Автоматско пополнување лозинки</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">Неактивно</translation> <translation id="4375040482473363939">Пребарување QR-кодови</translation> <translation id="4378154925671717803">Телефон</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> сподели лозинка со вас за <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Допрете за да го смените јазикот.</translation> <translation id="4405320213589929829">Користете адреси на веб-страници за да добивате локални информации и насоки.</translation> <translation id="4420409367264901497">Измени го обележувачот</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Се проверуваат лозинките…</translation> <translation id="5559567453458728487">Конвертирање мерни единици на интернет</translation> <translation id="556042886152191864">Копче</translation> +<translation id="5572648434713976849">Ќе добивате подобрени предлози во лентата за адреси</translation> <translation id="5572684875078967866">Меморија</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Следи го пакетов}one{Следи ги сите пакети}other{Следи ги сите пакети}}</translation> <translation id="5597915316964418992">Отворете ја мрежата со апликации</translation> @@ -1083,6 +1085,7 @@ <translation id="6642362222295953972">Префрлете се на постојната картичка</translation> <translation id="6643016212128521049">Исчисти</translation> <translation id="6645899968535965230">QR-код: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">URL-адресите што ги посетувате се испраќаат во Google за да се предвидат сајтовите што можеби ќе ги посетите следно</translation> <translation id="6647480763136463714">Последна проверка: <ph name="TIME" /></translation> <translation id="6656103420185847513">Измени папка</translation> <translation id="6657585470893396449">Лозинка</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ml.xtb b/ios/chrome/app/strings/resources/ios_strings_ml.xtb index 929ac59c..da9fbfd 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ml.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ml.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">ഒരു തീയതിയിൽ സ്പർശിച്ച് പിടിക്കുക.</translation> <translation id="1959679933317802873">ഉള്ളടക്കത്തിനായി കാത്തിരിക്കുന്നു</translation> <translation id="1967461193809857427">{count,plural, =1{Android-ലെ ടാബ് നിർത്തിയിടത്ത് നിന്ന് വീണ്ടും ഉപയോഗിച്ച് തുടങ്ങണോ?}other{Android-ലെ ടാബുകൾ നിർത്തിയിടത്ത് നിന്ന് വീണ്ടും ഉപയോഗിച്ച് തുടങ്ങണോ?}}</translation> +<translation id="1972325230031091483">നിങ്ങളുടെ നിലവിലെ വെബ്പേജ് സന്ദർശനം അടിസ്ഥാനമാക്കി സമയോചിതമായി ഉള്ളടക്കം ലോഡ് ചെയ്യുന്നതിനാൽ നിങ്ങൾക്ക് കൂടുതൽ വേഗത്തിൽ ബ്രൗസ് ചെയ്യാം</translation> <translation id="1973912524893600642">ഡാറ്റ നിലനിർത്തുക</translation> <translation id="1974060860693918893">വിപുലമായത്</translation> <translation id="1980417445547898121">{count,plural, =1{ഈ iPhone-ലെ മറ്റ് ഉപകരണത്തിൽ നിന്ന്, അടുത്തിടെ സജീവമായ {count} ടാബ് നേടുക}other{ഈ iPhone-ലെ മറ്റ് ഉപകരണത്തിൽ നിന്ന്, അടുത്തിടെ സജീവമായ {count} ടാബുകൾ നേടുക}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">ഇവന്റ് വിശദാംശങ്ങൾ എഡിറ്റ് ചെയ്ത് “സംരക്ഷിക്കുക“ ടാപ്പ് ചെയ്യുക.</translation> <translation id="3240426699337459095">ലിങ്ക് പകർത്തി</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">നിങ്ങൾ Chrome ഉപയോഗ റിപ്പോർട്ടുകളും പങ്കിടുന്നുവെങ്കിൽ ആ റിപ്പോർട്ടുകളിൽ നിങ്ങൾ സന്ദർശിക്കുന്ന URL-കളും ഉൾപ്പെടും</translation> <translation id="3245744387817103524">നിങ്ങൾ വരുത്തിയ മാറ്റം സംരക്ഷിക്കാനായില്ല.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> / <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">പാസ്വേഡുകൾ സ്വയമേവ പൂരിപ്പിക്കുക</translation> @@ -633,7 +635,6 @@ <translation id="4371591986692297148">നിഷ്ക്രിയം</translation> <translation id="4375040482473363939">QR കോഡ് തിരയൽ</translation> <translation id="4378154925671717803">ഫോൺ</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> എന്നയാൾ <ph name="WEBSITE" /> എന്നതിന്റെ ഒരു പാസ്വേഡ് നിങ്ങളുമായി പങ്കിട്ടു</translation> <translation id="4389019817280890563">ഭാഷ മാറ്റാൻ ടാപ്പ് ചെയ്യുക.</translation> <translation id="4405320213589929829">പ്രാദേശിക വിവരങ്ങളും വഴികളും നേടാൻ വെബ് പേജുകളിലെ വിലാസങ്ങൾ ഉപയോഗിക്കുക.</translation> <translation id="4420409367264901497">ബുക്ക്മാർക്ക് എഡിറ്റ് ചെയ്യുക</translation> @@ -859,6 +860,7 @@ <translation id="555749644339804659">പാസ്വേഡ് പരിശോധന…</translation> <translation id="5559567453458728487">വെബിൽ കാണുന്ന മെഷർമെന്റ് യൂണിറ്റുകൾ കൺവേർട്ട് ചെയ്യുക</translation> <translation id="556042886152191864">ബട്ടൺ</translation> +<translation id="5572648434713976849">വിലാസ ബാറിൽ നിങ്ങൾക്ക്, മെച്ചപ്പെടുത്തിയ നിർദ്ദേശങ്ങൾ ലഭിക്കും</translation> <translation id="5572684875078967866">വിവര സ്റ്റോറേജ്</translation> <translation id="5591792606924434384">{COUNT,plural, =1{ഈ പാക്കേജ് ട്രാക്ക് ചെയ്യുക}other{എല്ലാ പാക്കേജുകളും ട്രാക്ക് ചെയ്യുക}}</translation> <translation id="5597915316964418992">ടാബ് ഗ്രിഡ് തുറക്കുക</translation> @@ -1085,6 +1087,7 @@ <translation id="6642362222295953972">നിലവിലുള്ള ടാബിലേക്ക് മാറുക</translation> <translation id="6643016212128521049">മായ്ക്കുക</translation> <translation id="6645899968535965230">QR കോഡ്: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">നിങ്ങൾ അടുത്തതായി ഏതൊക്കെ സൈറ്റുകളായിരിക്കും സന്ദർശിക്കുകയെന്ന് പ്രവചിക്കാൻ, നിങ്ങൾ സന്ദർശിക്കുന്ന URL-കൾ Google-ലേക്ക് അയയ്ക്കുന്നു</translation> <translation id="6647480763136463714">അവസാനം റൺ ചെയ്തത്: <ph name="TIME" /></translation> <translation id="6656103420185847513">ഫോൾഡർ എഡിറ്റ് ചെയ്യുക</translation> <translation id="6657585470893396449">പാസ്വേഡ്</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mn.xtb b/ios/chrome/app/strings/resources/ios_strings_mn.xtb index 58224fa9e..9a4a10d6 100644 --- a/ios/chrome/app/strings/resources/ios_strings_mn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_mn.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Огноог удаан дарна уу.</translation> <translation id="1959679933317802873">Контентыг хүлээж байна</translation> <translation id="1967461193809857427">{count,plural, =1{Android-д орхисон табаасаа үргэлжлүүлэх үү?}other{Android-д орхисон табуудаасаа үргэлжлүүлэх үү?}}</translation> +<translation id="1972325230031091483">Контентыг таны одоогийн веб хуудасны зочилсон байдалд тулгуурлан идэвхтэй ачаалсан тул та илүү хурдан үзнэ</translation> <translation id="1973912524893600642">Өгөгдлийг хадгалах</translation> <translation id="1974060860693918893">Боловсронгуй</translation> <translation id="1980417445547898121">{count,plural, =1{Энэ iPhone дээрх бусад төхөөрөмжөөсөө саяхан идэвхтэй байсан {count} табаа аваарай}other{Энэ iPhone дээрх бусад төхөөрөмжөөсөө саяхан идэвхтэй байсан {count} табаа аваарай}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">Үйл явдлын дэлгэрэнгүйг засаад “Хадгалах“-ыг товшино уу.</translation> <translation id="3240426699337459095">Холбоосыг хуулсан</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Хэрэв та мөн Chrome-н ашиглалтын тайланг хуваалцвал тэдгээр тайланд таны зочилсон URL багтана</translation> <translation id="3245744387817103524">Таны өөрчлөлтийг хадгалж чадсангүй.</translation> <translation id="3252394070589632019"><ph name="NUM_SUGGESTIONS" />-н <ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /></translation> <translation id="3264775633254836593">Автоматаар бөглөх хэсгийн нууц үгнүүд</translation> @@ -633,7 +635,6 @@ <translation id="4371591986692297148">Идэвхгүй</translation> <translation id="4375040482473363939">QR кодоор хайх</translation> <translation id="4378154925671717803">Утас</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> тантай <ph name="WEBSITE" />-н нууц үгийг хуваалцсан</translation> <translation id="4389019817280890563">Хэл солихын тулд товшино уу.</translation> <translation id="4405320213589929829">Орон нутгийн мэдээлэл болон чиглэл авахад веб хуудасны хаягуудыг ашиглана уу.</translation> <translation id="4420409367264901497">Хавчуургыг засах</translation> @@ -859,6 +860,7 @@ <translation id="555749644339804659">Нууц үгийг шалгаж байна…</translation> <translation id="5559567453458728487">Вебээс олдсон хэмжилтийн нэгжүүдийг хөрвүүлнэ</translation> <translation id="556042886152191864">Товч</translation> +<translation id="5572648434713976849">Та хаяг оруулах хэсэгт сайжруулсан зөвлөмжүүд авна</translation> <translation id="5572684875078967866">Мэдээллийн хадгалах сан</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Энэ илгээмжийг хянах}other{Бүх илгээмжийг хянах}}</translation> <translation id="5597915316964418992">Табын хүснэгтийг нээх</translation> @@ -1085,6 +1087,7 @@ <translation id="6642362222295953972">Аль хэдийн нээсэн таб руу сэлгэх</translation> <translation id="6643016212128521049">Цэвэрлэх</translation> <translation id="6645899968535965230">QR код: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Таны зочилсон URL-г Google рүү илгээж, дараа нь ямар сайтад зочилж болохыг таамаглах болно</translation> <translation id="6647480763136463714">Сүүлд <ph name="TIME" />-д ажиллуулсан</translation> <translation id="6656103420185847513">Хавтсыг засах</translation> <translation id="6657585470893396449">Нууц үг</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_strings_mr.xtb index ecabbbd7..79b0d5d 100644 --- a/ios/chrome/app/strings/resources/ios_strings_mr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">तारखेला स्पर्श करून धरून ठेवा.</translation> <translation id="1959679933317802873">आशयाची प्रतीक्षा करत आहे</translation> <translation id="1967461193809857427">{count,plural, =1{तुम्ही Android वर सोडलेला टॅब निवडायचा आहे का?}other{तुम्ही Android वर सोडलेले टॅब निवडायचे आहेत का?}}</translation> +<translation id="1972325230031091483">तुम्हाला आणखी जलद ब्राउझ करता येईल कारण तुमच्या सध्याच्या वेबपेज भेटीच्या आधारावर आशय प्रोॲक्टिव्हपणे लोड केला जातो</translation> <translation id="1973912524893600642">स्टोअर करायचा असलेला डेटा</translation> <translation id="1974060860693918893">प्रगत</translation> <translation id="1980417445547898121">{count,plural, =1{तुमच्या इतर डिव्हाइसवरून या iPhone वर तुमचा अलीकडे अॅक्टिव्ह असलेला {count} टॅब मिळवा}other{तुमच्या इतर डिव्हाइसवरून या iPhone वर तुमचा अलीकडे अॅक्टिव्ह असलेले {count} टॅब मिळवा}}</translation> @@ -291,6 +292,7 @@ <translation id="2547458583188611426">सिंक काम करत नाही. सिंक सुरू करण्यासाठी तुमचा पासफ्रेझ एंटर करा.</translation> <translation id="2551153019974022505">खात्यासंबंधी एरर</translation> <translation id="2556092377360758201">संरक्षण नाही (शिफारस केली जात नाही)</translation> +<translation id="2561375093019333908">उघडा</translation> <translation id="2562041823070056534"><ph name="DEVICE_NAME" /> ला पाठवत आहे…</translation> <translation id="2576499762020411840">तुमच्या Google खाते मधील पासवर्ड वापरा आणि त्यामध्ये ते सेव्ह करा</translation> <translation id="2577522251608256362">अतिपरिचित क्षेत्र</translation> @@ -433,6 +435,7 @@ <translation id="3235242129752692527">इव्हेंट तपशील संपादित करा आणि "सेव्ह करा" वर टॅप करा.</translation> <translation id="3240426699337459095">लिंक कॉपी केला</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">तुम्ही Chrome वापर अहवालदेखील शेअर केल्यास, त्या अहवालांमध्ये तुम्ही भेट दिलेल्या URLs चा समावेश होतो</translation> <translation id="3245744387817103524">तुमचा बदल सेव्ह करता आला नाही.</translation> <translation id="3252394070589632019"><ph name="NUM_SUGGESTIONS" /> पैकी <ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /></translation> <translation id="3264775633254836593">पासवर्ड ऑटोफिल करा</translation> @@ -632,7 +635,6 @@ <translation id="4371591986692297148">इनॅक्टिव्ह आहे</translation> <translation id="4375040482473363939">QR कोड शोध</translation> <translation id="4378154925671717803">फोन</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> यांनी <ph name="WEBSITE" /> साठी तुमच्यासोबत पासवर्ड शेअर केला आहे</translation> <translation id="4389019817280890563">भाषा बदलण्यासाठी टॅप करा.</translation> <translation id="4405320213589929829">स्थानिक माहिती आणि दिशानिर्देश मिळवण्यासाठी वेब पेजवरील पत्ते वापरा.</translation> <translation id="4420409367264901497">बुकमार्क संपादित करा</translation> @@ -848,6 +850,7 @@ <translation id="5513681519188741830"><ph name="TIME" /> तासांपूर्वी</translation> <translation id="5525269841082836315">सांकेतिक पासफ्रेझ तयार करा</translation> <translation id="553151287733286479">{COUNT,plural, =1{{COUNT} कमकुवत पासवर्ड}other{{COUNT} कमकुवत पासवर्ड}}</translation> +<translation id="5532545557415295622">आयडल टाइमआउट डायलॉग</translation> <translation id="5542540507657872337"><ph name="COUNT" /> आढळले</translation> <translation id="5548760955356983418">Handoff तुम्हाला या डिव्हाइसवर ब्राउझिंग सुरू करू आणि त्यानंतर आपल्या Mac वर सहजपणे सुरू ठेऊ देते. वर्तमान उघडलेली वेबसाइट आपल्या Mac च्या डॉकवर दिसून येईल. @@ -857,6 +860,7 @@ <translation id="555749644339804659">पासवर्ड तपासत आहे…</translation> <translation id="5559567453458728487">वेबवर आढळलेल्या मापनाच्या युनिटचे रूपांतर करा</translation> <translation id="556042886152191864">बटण</translation> +<translation id="5572648434713976849">तुम्हाला अॅड्रेस बारमध्ये सुधारित सूचना मिळतील</translation> <translation id="5572684875078967866">माहितीचे स्टोरेज</translation> <translation id="5591792606924434384">{COUNT,plural, =1{हे पॅकेज ट्रॅक करा}other{सर्व पॅकेज ट्रॅक करा}}</translation> <translation id="5597915316964418992">टॅब ग्रिड उघडा</translation> @@ -1084,6 +1088,7 @@ <translation id="6642362222295953972">विद्यमान टॅबवर स्विच करा</translation> <translation id="6643016212128521049">साफ करा</translation> <translation id="6645899968535965230">QR कोड: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">तुम्ही भेट देता त्या URLs तुम्ही पुढे कोणत्या साइटला भेट देऊ शकता याचा अंदाज घेण्यासाठी Google ला पाठवल्या जातात</translation> <translation id="6647480763136463714">शेवटचे <ph name="TIME" /> ला रन केले</translation> <translation id="6656103420185847513">फोल्डर संपादित करा</translation> <translation id="6657585470893396449">पासवर्ड</translation> @@ -1289,6 +1294,7 @@ <translation id="7781829728241885113">काल</translation> <translation id="7786246662347093005">{COUNT,plural, =1{एका दिवसानंतर}other{{COUNT} दिवसांनंतर}}</translation> <translation id="7791543448312431591">जोडा</translation> +<translation id="7792549458069452436">अॅप मिळवा</translation> <translation id="7807060072011926525">Google द्वारे पुरवलेली</translation> <translation id="7812377703891978671">तुम्ही <ph name="HISTORY_BUTTON_ACCESSIBILITY_LABEL" /> निवडून तुमचा सर्व ब्राउझिंग इतिहास अॅक्सेस करू शकता.</translation> <translation id="78146569776629510">डाउनलोड</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ms.xtb b/ios/chrome/app/strings/resources/ios_strings_ms.xtb index e210a0e..0e517ed 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ms.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ms.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Sentuh & tahan tarikh.</translation> <translation id="1959679933317802873">Menunggu kandungan</translation> <translation id="1967461193809857427">{count,plural, =1{Sambung semula daripada tab tempat anda berhenti pada Android?}other{Sambung semula daripada tab tempat anda berhenti pada Android?}}</translation> +<translation id="1972325230031091483">Anda akan menyemak imbas dengan lebih pantas kerana kandungan dimuatkan secara proaktif berdasarkan lawatan halaman web semasa anda</translation> <translation id="1973912524893600642">Kekalkan Data</translation> <translation id="1974060860693918893">Lanjutan</translation> <translation id="1980417445547898121">{count,plural, =1{Dapatkan {count} tab anda yang aktif baru-baru ini daripada peranti lain anda pada iPhone ini}other{Dapatkan {count} tab anda yang aktif baru-baru ini daripada peranti lain anda pada iPhone ini}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">Edit butiran peristiwa dan ketik “Simpan“.</translation> <translation id="3240426699337459095">Pautan disalin</translation> <translation id="3244271242291266297">BB</translation> +<translation id="3245429137663807393">Jika anda turut berkongsi laporan penggunaan Chrome, laporan tersebut menyertakan URL yang anda lawati</translation> <translation id="3245744387817103524">Perubahan anda tidak dapat disimpan.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> daripada <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">AutoLengkap Kata Laluan</translation> @@ -557,6 +559,7 @@ <translation id="3922310737605261887">Cari Teks yang Disalin</translation> <translation id="3928666092801078803">Gabungkan data saya</translation> <translation id="3929457972718048006">Alamat</translation> +<translation id="3948600256434252210">Anda boleh meleret ke kanan untuk menyemak imbas dalam Inkognito.</translation> <translation id="3955822496205734389">Anda mempunyai kata laluan lemah.</translation> <translation id="3959736869653157332">Menu → Tab Inkognito Baharu</translation> <translation id="3962326069546168954">Simpan</translation> @@ -633,7 +636,6 @@ <translation id="4371591986692297148">Tidak aktif</translation> <translation id="4375040482473363939">Carian kod QR</translation> <translation id="4378154925671717803">Telefon</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> telah berkongsi kata laluan dengan anda pada <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Ketik untuk menukar bahasa.</translation> <translation id="4405320213589929829">Gunakan alamat pada halaman web untuk mendapatkan maklumat dan arah setempat.</translation> <translation id="4420409367264901497">Edit Penanda Halaman</translation> @@ -662,6 +664,7 @@ <translation id="4539187448429948815">{count,plural, =1{{count} cadangan autolengkap yang disimpan tersedia pada sebelah atas papan kekunci anda.}other{{count} cadangan autolengkap yang disimpan tersedia pada sebelah atas papan kekunci anda.}}</translation> <translation id="4540780316273593836">Kesilapan Telah Berlaku</translation> <translation id="4550040941166547650">Hanya pada Peranti Ini</translation> +<translation id="4564893319561643483">Sembunyikan "<ph name="TITLE" />"</translation> <translation id="457292989631956153">{COUNT,plural, =1{Tutup {COUNT} Tab Tidak Aktif?}other{Tutup {COUNT} Tab Tidak Aktif?}}</translation> <translation id="457386861538956877">Lagi...</translation> <translation id="4587589328781138893">Tapak</translation> @@ -859,6 +862,7 @@ <translation id="555749644339804659">Menyemak kata laluan…</translation> <translation id="5559567453458728487">Tukar unit ukuran yang ditemukan pada web</translation> <translation id="556042886152191864">Butang</translation> +<translation id="5572648434713976849">Anda akan mendapat cadangan yang dipertingkatkan dalam bar alamat</translation> <translation id="5572684875078967866">Storan Maklumat</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Jejaki Pakej Ini}other{Jejaki Semua Pakej}}</translation> <translation id="5597915316964418992">Buka Grid Tab</translation> @@ -1085,6 +1089,7 @@ <translation id="6642362222295953972">Beralih ke tab yang sedia ada</translation> <translation id="6643016212128521049">Kosongkan</translation> <translation id="6645899968535965230">Kod QR: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">URL yang anda lawati dihantar kepada Google untuk meramal laman yang mungkin anda lawati seterusnya</translation> <translation id="6647480763136463714">Dijalankan kali terakhir <ph name="TIME" /></translation> <translation id="6656103420185847513">Edit Folder</translation> <translation id="6657585470893396449">Kata laluan</translation> @@ -1262,6 +1267,7 @@ <translation id="7658239707568436148">Batal</translation> <translation id="7666861622396822790">Anda boleh mengurus tetapan ini dalam <ph name="BEGIN_LINK" />Tetapan Kandungan<ph name="END_LINK" />.</translation> <translation id="7671141431838911305">PASANG</translation> +<translation id="7673346542062368520">Anda boleh meleret ke kiri untuk menyemak imbas dalam Inkognito.</translation> <translation id="7679915578945954324">Alamat laman disalin</translation> <translation id="7687508192620387263">Fail Kalendar Tersedia</translation> <translation id="7701040980221191251">Tiada</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_my.xtb b/ios/chrome/app/strings/resources/ios_strings_my.xtb index a2233dda0..3276888 100644 --- a/ios/chrome/app/strings/resources/ios_strings_my.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_my.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">ရက်စွဲတစ်ခုကို တို့ထိ၍ ဖိထားပါ။</translation> <translation id="1959679933317802873">အကြောင်းအရာကို စောင့်နေသည်</translation> <translation id="1967461193809857427">{count,plural, =1{Android တွင် သင်ဖွင့်ထားသော တဘ်ကို ယူမလား။}other{Android တွင် သင်ဖွင့်ထားသော တဘ်များကို ယူမလား။}}</translation> +<translation id="1972325230031091483">လက်ရှိဝဘ်စာမျက်နှာ ဝင်ကြည့်ခြင်းအပေါ် အခြေခံပြီး အကြောင်းအရာကို ကြိုတင်ဖန်တီးထားသောကြောင့် ကြည့်ရှုရာတွင် ပိုမြန်ပါမည်</translation> <translation id="1973912524893600642">ဒေတာများ ဆက်ထားရှိရန်</translation> <translation id="1974060860693918893">အဆင့်မြင့်</translation> <translation id="1980417445547898121">{count,plural, =1{ဤ iPhone တွင် အခြားစက်မှ လတ်တလော ဖွင့်ထားသောတဘ် {count} ခုကို ရယူပါ}other{ဤ iPhone တွင် အခြားစက်မှ လတ်တလော ဖွင့်ထားသောတဘ် {count} ခုကို ရယူပါ}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">အစီအစဉ် အသေးစိတ်ကို ပြင်ပြီး “သိမ်းရန်” ကို တို့ပါ။</translation> <translation id="3240426699337459095">လင့်ခ်ကူးယူပြီးပါပြီ</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Chrome အသုံးပြမှုအစီရင်ခံစာများ မျှဝေပါကလည်း ထိုအစီရင်ခံစာများတွင် သင်ဝင်ကြည့်သော URL များ ပါဝင်သည်</translation> <translation id="3245744387817103524">သင့်အပြောင်းအလဲကို သိမ်း၍မရပါ။</translation> <translation id="3252394070589632019"><ph name="NUM_SUGGESTIONS" /> ၏<ph name="VALUE" />၊ <ph name="ADDITIONAL_INFO" />၊ <ph name="INDEX" /></translation> <translation id="3264775633254836593">အော်တိုဖြည့် စကားဝှက်များ</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">သုံးမနေပါ</translation> <translation id="4375040482473363939">QR ကုဒ် ရှာဖွေရန်</translation> <translation id="4378154925671717803">ဖုန်း</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> သည် <ph name="WEBSITE" /> အတွက် စကားဝှက်ကို သင့်အားမျှဝေထားသည်</translation> <translation id="4389019817280890563">ဘာသာစကားပြောင်းရန်အတွက် တို့ပါ</translation> <translation id="4405320213589929829">ဒေသတွင်း အချက်အလက်နှင့် ခရီးလမ်းညွှန်ချက်များ ရယူရန် အင်တာနက်စာမျက်နှာများရှိ လိပ်စာများကို သုံးပါ။</translation> <translation id="4420409367264901497">လိပ်စာတည်းဖြတ်ရန်</translation> @@ -856,6 +857,7 @@ <translation id="555749644339804659">စကားဝှက်များကို စစ်နေသည်…</translation> <translation id="5559567453458728487">ဝဘ်ပေါ်တွင် တွေ့ရသော ရလဒ်ကောင်းတိုင်းတာမှု ယူနစ်များ</translation> <translation id="556042886152191864">ခလုတ်</translation> +<translation id="5572648434713976849">ပိုကောင်းမွန်လာသော အကြံပြုချက်များကို လိပ်စာဘားတွင် ရရှိပါမည်</translation> <translation id="5572684875078967866">အချက်အလက် သိုလှောင်ခန်း</translation> <translation id="5591792606924434384">{COUNT,plural, =1{ဤပက်ကေ့ဂျ်ကို ခြေရာခံရန်}other{ပက်ကေ့ဂျ်အားလုံးကို ခြေရာခံရန်}}</translation> <translation id="5597915316964418992">‘တဘ်ဇယားကွက်’ ဖွင့်ပါ</translation> @@ -1082,6 +1084,7 @@ <translation id="6642362222295953972">ရှိပြီးသား တဘ်သို့ ပြောင်းမည်</translation> <translation id="6643016212128521049">ရှင်းရန်</translation> <translation id="6645899968535965230">QR ကုဒ်- <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">နောက်တစ်ကြိမ် သင်ဝင်ကြည့်မည့် ဝဘ်ဆိုက်များကို ခန့်မှန်းရန် သင်ကြည့်ထားသော URL များကို Google သို့ ပို့သည်</translation> <translation id="6647480763136463714"><ph name="TIME" /> တွင် နောက်ဆုံး လုပ်ဆောင်ထားသည်</translation> <translation id="6656103420185847513">ဖိုလ်ဒါကို တည်းဖြတ်ရန်</translation> <translation id="6657585470893396449">စကားဝှက်</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ne.xtb b/ios/chrome/app/strings/resources/ios_strings_ne.xtb index 249adc5c..9d8f841 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ne.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ne.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">मितिमा टच एण्ड होल्ड गर्नुहोस्।</translation> <translation id="1959679933317802873">सामग्री लोड गरिँदै छ</translation> <translation id="1967461193809857427">{count,plural, =1{तपाईं आफूले Android मा खोलेको पछिल्लो ट्याब हेर्न चाहनुहुन्छ?}other{तपाईं आफूले Android मा खोलेका पछिल्ला ट्याबहरू हेर्न चाहनुहुन्छ?}}</translation> +<translation id="1972325230031091483">तपाईंले हालै खोलेको वेबपेजका आधारमा अग्रिम रूपमा सामग्री लोड गरिने भएकाले तपाईं अझ छिटो ब्राउज गर्न सक्नु हुने छ</translation> <translation id="1973912524893600642">डेटा राख्नुहोस्</translation> <translation id="1974060860693918893">उन्नत</translation> <translation id="1980417445547898121">{count,plural, =1{तपाईंको अर्को डिभाइसमा हालसालै खोलिएको {count} ट्याब यो iPhone मा इम्पोर्ट गर्नुहोस्}other{तपाईंको अर्को डिभाइसमा हालसालै खोलिएका {count} वटा ट्याब यो iPhone मा इम्पोर्ट गर्नुहोस्}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">कार्यक्रमका विवरणहरू सम्पादन गरी “सेभ गर्नुहोस“ मा ट्याप गर्नुहोस्।</translation> <translation id="3240426699337459095">लिंक कपी गरियो</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">तपाईंले Chrome को प्रयोगसम्बन्धी रिपोर्टहरू पनि सेयर गर्नुभयो भने ती रिपोर्टमा तपाईंले खोलेका URL हरू समावेश हुन्छन्</translation> <translation id="3245744387817103524">तपाईंले गरेको परिवर्तन सेभ गर्न सकिएन।</translation> <translation id="3252394070589632019"><ph name="NUM_SUGGESTIONS" /> को <ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /></translation> <translation id="3264775633254836593">पासवर्डहरू अटोफिल गर्नुहोस्</translation> @@ -633,7 +635,6 @@ <translation id="4371591986692297148">निष्क्रिय</translation> <translation id="4375040482473363939">QR कोड खोज्नुहोस्</translation> <translation id="4378154925671717803">फोन</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> ले तपाईंसँग <ph name="WEBSITE" /> को पासवर्ड सेयर गर्नुभएको छ</translation> <translation id="4389019817280890563">भाषा परिवर्तन गर्न ट्याप गर्नुहोस्।</translation> <translation id="4405320213589929829">स्थानीय जानकारी र जाने बाटो प्राप्त गर्न वेबपेजमा ठेगानाहरू प्रयोग गर्नुहोस्।</translation> <translation id="4420409367264901497">बुकमार्क सम्पादन गर्नुहोस्</translation> @@ -859,6 +860,7 @@ <translation id="555749644339804659">पासवर्डहरू जाँच गरिँदै छन्…</translation> <translation id="5559567453458728487">यसले वेबपेजहरूमा भेट्टिएका मापनका एकाइहरू रूपान्तरण गर्छ</translation> <translation id="556042886152191864">बटन</translation> +<translation id="5572648434713976849">तपाईं एड्रेस बारमा अझ राम्रा सुझावहरू प्राप्त गर्नु हुने छ</translation> <translation id="5572684875078967866">जानकारीको भण्डारण</translation> <translation id="5591792606924434384">{COUNT,plural, =1{यो प्याकेज ट्र्याक गर्नुहोस्}other{सबै प्याकेजहरू ट्र्याक गर्नुहोस्}}</translation> <translation id="5597915316964418992">ट्याब ग्रिड खोल्नुहोस्</translation> @@ -1085,6 +1087,7 @@ <translation id="6642362222295953972">विद्यमान ट्याबमा जानुहोस्</translation> <translation id="6643016212128521049">खालि गर्नुहोस्</translation> <translation id="6645899968535965230">QR कोड: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">तपाईंले यसपछि खोल्न सक्ने साइट पूर्वानुमान गर्ने प्रयोजनका लागि तपाईंले खोल्ने URL हरू Google मा पठाइन्छन्</translation> <translation id="6647480763136463714">अन्तिम पटक रन गरिएको समय: <ph name="TIME" /></translation> <translation id="6656103420185847513">फोल्डर सम्पादन गर्नुहोस्</translation> <translation id="6657585470893396449">पासवर्ड</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_nl.xtb b/ios/chrome/app/strings/resources/ios_strings_nl.xtb index 7be1bbe..2aa1e43 100644 --- a/ios/chrome/app/strings/resources/ios_strings_nl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_nl.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Houd je vinger op een datum.</translation> <translation id="1959679933317802873">Wachten op content</translation> <translation id="1967461193809857427">{count,plural, =1{Wil je het tabblad ophalen dat je had achtergelaten op Android?}other{Wil je de tabbladen ophalen die je had achtergelaten op Android?}}</translation> +<translation id="1972325230031091483">Je browst sneller, omdat content proactief wordt geladen op basis van je huidige webpagina</translation> <translation id="1973912524893600642">Gegevens behouden</translation> <translation id="1974060860693918893">Geavanceerd</translation> <translation id="1980417445547898121">{count,plural, =1{Krijg {count} recent actief tabblad van je andere apparaat op deze iPhone}other{Krijg {count} recent actieve tabbladen van je andere apparaat op deze iPhone}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">Bewerk de afspraakgegevens en tik op Opslaan.</translation> <translation id="3240426699337459095">Link gekopieerd</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Als je ook Chrome-gebruiksrapporten deelt, bevatten die rapporten de URL's die je bezoekt</translation> <translation id="3245744387817103524">De wijziging kan niet worden opgeslagen.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> van <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Wachtwoorden automatisch invullen</translation> @@ -557,6 +559,7 @@ <translation id="3922310737605261887">Zoeken naar gekopieerde tekst</translation> <translation id="3928666092801078803">Mijn gegevens combineren</translation> <translation id="3929457972718048006">Adressen</translation> +<translation id="3948600256434252210">Swipe naar rechts om in de incognitomodus te browsen.</translation> <translation id="3955822496205734389">Je hebt zwakke wachtwoorden.</translation> <translation id="3959736869653157332">Menu → Nieuw incognitotabblad</translation> <translation id="3962326069546168954">Opslaan</translation> @@ -633,7 +636,6 @@ <translation id="4371591986692297148">Inactief</translation> <translation id="4375040482473363939">Zoeken naar QR-code</translation> <translation id="4378154925671717803">Telefoon</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> heeft een wachtwoord met je gedeeld voor <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Tik om de taal te wijzigen.</translation> <translation id="4405320213589929829">Gebruik adressen op webpagina's om lokale informatie en routes te krijgen.</translation> <translation id="4420409367264901497">Bookmark bewerken</translation> @@ -662,6 +664,7 @@ <translation id="4539187448429948815">{count,plural, =1{{count} opgeslagen suggestie voor automatische aanvulling beschikbaar boven je toetsenbord.}other{{count} opgeslagen suggesties voor automatisch aanvullen beschikbaar boven je toetsenbord.}}</translation> <translation id="4540780316273593836">Er is iets misgegaan</translation> <translation id="4550040941166547650">Alleen op dit apparaat</translation> +<translation id="4564893319561643483"><ph name="TITLE" /> verbergen</translation> <translation id="457292989631956153">{COUNT,plural, =1{{COUNT} inactief tabblad sluiten?}other{{COUNT} inactieve tabbladen sluiten?}}</translation> <translation id="457386861538956877">Meer...</translation> <translation id="4587589328781138893">Sites</translation> @@ -859,6 +862,7 @@ <translation id="555749644339804659">Wachtwoorden checken…</translation> <translation id="5559567453458728487">Converteer meeteenheden die op internet zijn gevonden</translation> <translation id="556042886152191864">Knop</translation> +<translation id="5572648434713976849">Je krijgt verbeterde suggesties in de adresbalk</translation> <translation id="5572684875078967866">Informatieopslag</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Dit pakket volgen}other{Alle pakketten volgen}}</translation> <translation id="5597915316964418992">Open het tabbladraster</translation> @@ -1085,6 +1089,7 @@ <translation id="6642362222295953972">Overschakelen naar bestaand tabblad</translation> <translation id="6643016212128521049">Wissen</translation> <translation id="6645899968535965230">QR-code: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">URL's die je bezoekt, worden naar Google gestuurd om te voorspellen naar welke sites je misschien daarna gaat</translation> <translation id="6647480763136463714">Laatst uitgevoerd: <ph name="TIME" /></translation> <translation id="6656103420185847513">Map bewerken</translation> <translation id="6657585470893396449">Wachtwoord</translation> @@ -1262,6 +1267,7 @@ <translation id="7658239707568436148">Annuleren</translation> <translation id="7666861622396822790">Je kunt dit beheren in <ph name="BEGIN_LINK" />Contentinstellingen<ph name="END_LINK" />.</translation> <translation id="7671141431838911305">INSTALLEER</translation> +<translation id="7673346542062368520">Swipe naar links om in de incognitomodus te browsen.</translation> <translation id="7679915578945954324">Siteadressen gekopieerd</translation> <translation id="7687508192620387263">Agendabestand beschikbaar</translation> <translation id="7701040980221191251">Geen</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_no.xtb b/ios/chrome/app/strings/resources/ios_strings_no.xtb index d541a87e..e27f6872 100644 --- a/ios/chrome/app/strings/resources/ios_strings_no.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_no.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Trykk og hold på en dato.</translation> <translation id="1959679933317802873">Venter på innhold</translation> <translation id="1967461193809857427">{count,plural, =1{Vil du hente fanen du hadde på Android?}other{Vil du hente fanene du hadde på Android?}}</translation> +<translation id="1972325230031091483">Du kan surfe raskere, siden innholdet lastes inn proaktivt basert på nettsiden du er på for øyeblikket</translation> <translation id="1973912524893600642">Behold dataene</translation> <translation id="1974060860693918893">Avanserte</translation> <translation id="1980417445547898121">{count,plural, =1{Få {count} nylig aktiv fane fra den andre enheten din på denne iPhonen}other{Få {count} nylig aktive faner fra den andre enheten din på denne iPhonen}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">Rediger aktivitetsdetaljene, og trykk på «Lagre».</translation> <translation id="3240426699337459095">Linken er kopiert</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Hvis du også deler Chrome-bruksrapporter, inneholder disse rapportene nettadressene du besøker</translation> <translation id="3245744387817103524">Kunne ikke lagre endringen.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> av <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Autofyll passord</translation> @@ -634,7 +636,6 @@ <translation id="4371591986692297148">Inaktiv</translation> <translation id="4375040482473363939">QR-kodesøk</translation> <translation id="4378154925671717803">Telefon</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> har delt et passord med deg for <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Trykk for å bytte språk.</translation> <translation id="4405320213589929829">Bruk adresser på nettsider for å få lokal informasjon og veibeskrivelser.</translation> <translation id="4420409367264901497">Rediger bokmerke</translation> @@ -861,6 +862,7 @@ <translation id="555749644339804659">Sjekker passord …</translation> <translation id="5559567453458728487">Konverter måleenheter som blir funnet på nettet</translation> <translation id="556042886152191864">Knapp</translation> +<translation id="5572648434713976849">Du får bedre forslag i adressefeltet</translation> <translation id="5572684875078967866">Informasjonslagring</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Spor denne pakken}other{Spor alle pakker}}</translation> <translation id="5597915316964418992">Åpne fanerutenettet</translation> @@ -1087,6 +1089,7 @@ <translation id="6642362222295953972">Bytt til den eksisterende fanen</translation> <translation id="6643016212128521049">Tøm</translation> <translation id="6645899968535965230">QR-kode: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Nettadresser du besøker, sendes til Google for å forutsi hvilke nettsteder du kanskje kommer til å besøke etterpå</translation> <translation id="6647480763136463714">Sist kjørt <ph name="TIME" /></translation> <translation id="6656103420185847513">Mapperedigering</translation> <translation id="6657585470893396449">Passord</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_or.xtb b/ios/chrome/app/strings/resources/ios_strings_or.xtb index e2f5899..9cb8ca38 100644 --- a/ios/chrome/app/strings/resources/ios_strings_or.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_or.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">ଗୋଟିଏ ତାରିଖ ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ।</translation> <translation id="1959679933317802873">ବିଷୟବସ୍ତୁ ପାଇଁ ଅପେକ୍ଷାରତ</translation> <translation id="1967461193809857427">{count,plural, =1{ଆପଣ Androidରେ ଯେଉଁଠି ଛାଡ଼ିଥିଲେ ସେଠାରୁ ଟାବ ପୁଣି ଆରମ୍ଭ କରିବେ?}other{ଆପଣ Androidରେ ଯେଉଁଠି ଛାଡ଼ିଥିଲେ ସେଠାରୁ ଟାବଗୁଡ଼ିକ ପୁଣି ଆରମ୍ଭ କରିବେ?}}</translation> +<translation id="1972325230031091483">ଆପଣଙ୍କ ବର୍ତ୍ତମାନର ୱେବପୃଷ୍ଠା ଭିଜିଟ ଆଧାରରେ ବିଷୟବସ୍ତୁ ଅଧିକ ସକ୍ରିୟ ଭାବେ ଲୋଡ କରାଯାଉଥିବା ଯୋଗୁଁ ଆପଣ ଶୀଘ୍ର ବ୍ରାଉଜ କରିବେ</translation> <translation id="1973912524893600642">ଡାଟା ରଖନ୍ତୁ</translation> <translation id="1974060860693918893">ବିକଶିତ</translation> <translation id="1980417445547898121">{count,plural, =1{ଆପଣଙ୍କ ଅନ୍ୟ ଡିଭାଇସରୁ ବର୍ତ୍ତମାନ ସକ୍ରିୟ ଥିବା ଆପଣଙ୍କର {count}ଟି ଟାବ ଏହି iPhoneରେ ପାଆନ୍ତୁ}other{ଆପଣଙ୍କ ଅନ୍ୟ ଡିଭାଇସରୁ ବର୍ତ୍ତମାନ ସକ୍ରିୟ ଥିବା ଆପଣଙ୍କର {count}ଟି ଟାବ ଏହି iPhoneରେ ପାଆନ୍ତୁ}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">ଇଭେଣ୍ଟ ବିବରଣୀ ଏଡିଟ କରି "ସେଭ କରନ୍ତୁ"ରେ ଟାପ କରନ୍ତୁ।</translation> <translation id="3240426699337459095">ଲିଙ୍କ୍ କପି ହୋଇଛି</translation> <translation id="3244271242291266297">ମାସ</translation> +<translation id="3245429137663807393">ଯଦି ଆପଣ Chrome ବ୍ୟବହାର ରିପୋର୍ଟଗୁଡ଼ିକ ମଧ୍ୟ ସେୟାର କରନ୍ତି, ତେବେ ସେହି ରିପୋର୍ଟଗୁଡ଼ିକ ଆପଣ ଭିଜିଟ କରିଥିବା URLଗୁଡ଼ିକୁ ଅନ୍ତର୍ଭୁକ୍ତ କରିବ</translation> <translation id="3245744387817103524">ଆପଣଙ୍କ ପରିବର୍ତ୍ତଗୁଡ଼ିକ ସେଭ କରାଯାଇପାରିଲା ନାହିଁ</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="NUM_SUGGESTIONS" />ର <ph name="INDEX" /></translation> <translation id="3264775633254836593">AutoFill ପାସୱାର୍ଡଗୁଡ଼ିକ</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">ନିଷ୍କ୍ରିୟ</translation> <translation id="4375040482473363939">QR କୋଡ୍ ସର୍ଚ୍ଚ</translation> <translation id="4378154925671717803">ଫୋନ୍</translation> -<translation id="4388983683160515185"><ph name="WEBSITE" /> ପାଇଁ <ph name="FULL_NAME" /> ଆପଣଙ୍କ ସହ ଏକ ପାସୱାର୍ଡ ସେୟାର କରିଛନ୍ତି</translation> <translation id="4389019817280890563">ଭାଷା ପରିବର୍ତ୍ତନ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ।</translation> <translation id="4405320213589929829">ସ୍ଥାନୀୟ ସୂଚନା ଏବଂ ଦିଗନିର୍ଦ୍ଦେଶ ପାଇବାକୁ ୱେବ ପୃଷ୍ଠାଗୁଡ଼ିକରେ ଥିବା ଠିକଣାଗୁଡ଼ିକୁ ବ୍ୟବହାର କରନ୍ତୁ।</translation> <translation id="4420409367264901497">ବୁକମାର୍କକୁ ଏଡିଟ କରନ୍ତୁ</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">ପାସୱାର୍ଡ ଯାଞ୍ଚ କରାଯାଉଛି…</translation> <translation id="5559567453458728487">ୱେବରେ ମିଳୁଥିବା ପରିମାପ ୟୁନିଟଗୁଡ଼ିକୁ କନଭର୍ଟ କରନ୍ତୁ</translation> <translation id="556042886152191864">ବଟନ୍</translation> +<translation id="5572648434713976849">ଆପଣ ଠିକଣା ବାରରେ ଉନ୍ନତ ପରାମର୍ଶଗୁଡ଼ିକ ପାଇବେ</translation> <translation id="5572684875078967866">ସୂଚନା ଷ୍ଟୋରେଜ</translation> <translation id="5591792606924434384">{COUNT,plural, =1{ଏହି ପେକେଜକୁ ଟ୍ରାକ କରନ୍ତୁ}other{ସମସ୍ତ ପେକେଜକୁ ଟ୍ରାକ କରନ୍ତୁ}}</translation> <translation id="5597915316964418992">ଟାବ ଗ୍ରିଡ ଖୋଲନ୍ତୁ</translation> @@ -1083,6 +1085,7 @@ <translation id="6642362222295953972">ବିଦ୍ୟମାନ ଥିବା ଟାବ୍କୁ ସ୍ୱିଚ୍ କରନ୍ତୁ</translation> <translation id="6643016212128521049">ଖାଲି କରନ୍ତୁ</translation> <translation id="6645899968535965230">QR କୋଡ୍: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">ପରବର୍ତ୍ତୀ ସମୟରେ ଆପଣ କେଉଁ ସାଇଟଗୁଡ଼ିକୁ ଭିଜିଟ କରିପାରନ୍ତି ତାହାର ପୂର୍ବାନୁମାନ କରିବା ପାଇଁ ଆପଣ ଭିଜିଟ କରିଥିବା URLଗୁଡ଼ିକ Googleକୁ ପଠାଯାଏ</translation> <translation id="6647480763136463714"><ph name="TIME" />ରେ ଗତ ଥର ଚଲାଯାଇଛି</translation> <translation id="6656103420185847513">ଫୋଲ୍ଡର୍ ଏଡିଟ୍ କରନ୍ତୁ</translation> <translation id="6657585470893396449">ପାସ୍ୱର୍ଡ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pa.xtb b/ios/chrome/app/strings/resources/ios_strings_pa.xtb index 88e8b514..673a1e9 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pa.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pa.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">ਕਿਸੇ ਤਾਰੀਖ ਨੂੰ ਸਪਰਸ਼ ਕਰ ਕੇ ਰੱਖੋ।</translation> <translation id="1959679933317802873">ਸਮੱਗਰੀ ਲਈ ਉਡੀਕ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ</translation> <translation id="1967461193809857427">{count,plural, =1{ਕੀ Android ਤੋਂ ਟੈਬ ਨੂੰ ਉੱਥੋਂ ਖੋਲ੍ਹਣਾ ਹੈ ਜਿੱਥੇ ਤੁਸੀਂ ਛੱਡਿਆ ਸੀ?}one{ਕੀ Android ਤੋਂ ਟੈਬ ਨੂੰ ਉੱਥੋਂ ਖੋਲ੍ਹਣਾ ਹੈ ਜਿੱਥੇ ਤੁਸੀਂ ਛੱਡਿਆ ਸੀ?}other{ਕੀ Android ਤੋਂ ਟੈਬਾਂ ਨੂੰ ਉੱਥੋਂ ਖੋਲ੍ਹਣਾ ਹੈ ਜਿੱਥੇ ਤੁਸੀਂ ਛੱਡਿਆ ਸਨ?}}</translation> +<translation id="1972325230031091483">ਤੁਸੀਂ ਤੇਜ਼ੀ ਨਾਲ ਬ੍ਰਾਊਜ਼ ਕਰੋਗੇ ਕਿਉਂਕਿ ਤੁਹਾਡੇ ਵੱਲੋਂ ਦੇਖੇ ਗਏ ਮੌਜੂਦਾ ਵੈੱਬ-ਪੰਨੇ ਦੇ ਆਧਾਰ 'ਤੇ ਸਮੱਗਰੀ ਚੁਸਤੀ ਨਾਲ ਲੋਡ ਕੀਤੀ ਜਾਂਦੀ ਹੈ</translation> <translation id="1973912524893600642">ਡਾਟਾ ਰੱਖੋ</translation> <translation id="1974060860693918893">ਉੱਨਤ</translation> <translation id="1980417445547898121">{count,plural, =1{ਇਸ iPhone 'ਤੇ ਆਪਣੇ ਹੋਰ ਡੀਵਾਈਸ ਤੋਂ ਆਪਣੀ {count} ਹਾਲੀਆ ਕਿਰਿਆਸ਼ੀਲ ਟੈਬ ਪ੍ਰਾਪਤ ਕਰੋ}one{ਇਸ iPhone 'ਤੇ ਆਪਣੇ ਹੋਰ ਡੀਵਾਈਸ ਤੋਂ ਆਪਣੀ {count} ਹਾਲੀਆ ਕਿਰਿਆਸ਼ੀਲ ਟੈਬ ਪ੍ਰਾਪਤ ਕਰੋ}other{ਇਸ iPhone 'ਤੇ ਆਪਣੇ ਹੋਰ ਡੀਵਾਈਸ ਤੋਂ ਆਪਣੀਆਂ {count} ਹਾਲੀਆ ਕਿਰਿਆਸ਼ੀਲ ਟੈਬਾਂ ਪ੍ਰਾਪਤ ਕਰੋ}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">ਇਵੈਂਟ ਵੇਰਵਿਆਂ ਦਾ ਸੰਪਾਦਨ ਕਰੋ ਅਤੇ “ਰੱਖਿਅਤ ਕਰੋ“ 'ਤੇ ਟੈਪ ਕਰੋ।</translation> <translation id="3240426699337459095">ਲਿੰਕ ਕਾਪੀ ਕੀਤਾ</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">ਜੇ ਤੁਸੀਂ Chrome ਵਰਤੋਂ ਸੰਬੰਧੀ ਰਿਪੋਰਟਾਂ ਨੂੰ ਵੀ ਸਾਂਝਾ ਕਰਦੇ ਹੋ, ਤਾਂ ਇਨ੍ਹਾਂ ਰਿਪੋਰਟਾਂ ਵਿੱਚ ਤੁਹਾਡੇ ਵੱਲੋਂ ਖੋਲ੍ਹੇ ਜਾਣ ਵਾਲੇ URL ਵੀ ਸ਼ਾਮਲ ਹੁੰਦੇ ਹਨ</translation> <translation id="3245744387817103524">ਤੁਹਾਡੀ ਤਬਦੀਲੀ ਨੂੰ ਰੱਖਿਅਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="NUM_SUGGESTIONS" /> ਵਿੱਚੋਂ <ph name="INDEX" /></translation> <translation id="3264775633254836593">ਆਟੋਫਿਲ ਪਾਸਵਰਡ</translation> @@ -556,6 +558,7 @@ <translation id="3922310737605261887">ਕਾਪੀ ਕੀਤੀ ਲਿਖਤ ਖੋਜੋ</translation> <translation id="3928666092801078803">ਮੇਰੇ ਡਾਟੇ ਨੂੰ ਮਿਲਾਓ</translation> <translation id="3929457972718048006">ਪਤੇ</translation> +<translation id="3948600256434252210">ਤੁਸੀਂ ਇਨਕੋਗਨਿਟੋ ਵਿੱਚ ਬ੍ਰਾਊਜ਼ ਕਰਨ ਲਈ ਸੱਜੇ ਸਵਾਈਪ ਕਰ ਸਕਦੇ ਹੋ।</translation> <translation id="3955822496205734389">ਤੁਹਾਡੇ ਪਾਸਵਰਡ ਕਮਜ਼ੋਰ ਹਨ।</translation> <translation id="3959736869653157332">ਮੀਨੂ → ਨਵੀਂ ਇਨਕੋਗਨਿਟੋ ਟੈਬ</translation> <translation id="3962326069546168954">ਰੱਖਿਅਤ ਕਰੋ</translation> @@ -632,7 +635,6 @@ <translation id="4371591986692297148">ਅਕਿਰਿਆਸ਼ੀਲ</translation> <translation id="4375040482473363939">QR ਕੋਡ ਖੋਜ</translation> <translation id="4378154925671717803">ਫ਼ੋਨ</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> ਨੇ ਤੁਹਾਡੇ ਨਾਲ <ph name="WEBSITE" /> ਦਾ ਪਾਸਵਰਡ ਸਾਂਝਾ ਕੀਤਾ ਹੈ</translation> <translation id="4389019817280890563">ਭਾਸ਼ਾ ਬਦਲਣ ਲਈ ਟੈਪ ਕਰੋ।</translation> <translation id="4405320213589929829">ਸਥਾਨਕ ਜਾਣਕਾਰੀ ਅਤੇ ਦਿਸ਼ਾਵਾਂ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਵੈੱਬ-ਪੰਨਿਆਂ 'ਤੇ ਦਿੱਤੇ ਗਏ ਪਤਿਆਂ ਦੀ ਵਰਤੋਂ ਕਰੋ।</translation> <translation id="4420409367264901497">ਬੁੱਕਮਾਰਕ ਦਾ ਸੰਪਾਦਨ ਕਰੋ</translation> @@ -661,6 +663,7 @@ <translation id="4539187448429948815">{count,plural, =1{ਰੱਖਿਅਤ ਕੀਤਾ ਗਿਆ {count} ਸਵੈ-ਮੁਕੰਮਲ ਸੁਝਾਅ ਤੁਹਾਡੇ ਕੀ-ਬੋਰਡ ਦੇ ਉੱਪਰ ਉਪਲਬਧ ਹੈ।}one{ਰੱਖਿਅਤ ਕੀਤਾ ਗਿਆ {count} ਸਵੈ-ਮੁਕੰਮਲ ਸੁਝਾਅ ਤੁਹਾਡੇ ਕੀ-ਬੋਰਡ ਦੇ ਉੱਪਰ ਉਪਲਬਧ ਹੈ।}other{ਰੱਖਿਅਤ ਕੀਤੇ ਗਏ {count} ਸਵੈ-ਮੁਕੰਮਲ ਸੁਝਾਅ ਤੁਹਾਡੇ ਕੀ-ਬੋਰਡ ਦੇ ਉੱਪਰ ਉਪਲਬਧ ਹਨ।}}</translation> <translation id="4540780316273593836">ਕੋਈ ਗੜਬੜ ਹੋ ਗਈ</translation> <translation id="4550040941166547650">ਸਿਰਫ਼ ਇਸ ਡੀਵਾਈਸ 'ਤੇ</translation> +<translation id="4564893319561643483">"<ph name="TITLE" />" ਲੁਕਾਓ</translation> <translation id="457292989631956153">{COUNT,plural, =1{ਕੀ {COUNT} ਅਕਿਰਿਆਸ਼ੀਲ ਟੈਬ ਨੂੰ ਬੰਦ ਕਰਨਾ ਹੈ?}one{ਕੀ {COUNT} ਅਕਿਰਿਆਸ਼ੀਲ ਟੈਬ ਨੂੰ ਬੰਦ ਕਰਨਾ ਹੈ?}other{ਕੀ {COUNT} ਅਕਿਰਿਆਸ਼ੀਲ ਟੈਬਾਂ ਨੂੰ ਬੰਦ ਕਰਨਾ ਹੈ?}}</translation> <translation id="457386861538956877">ਹੋਰ...</translation> <translation id="4587589328781138893">ਸਾਈਟਾਂ</translation> @@ -857,6 +860,7 @@ <translation id="555749644339804659">ਪਾਸਵਰਡਾਂ ਦੀ ਜਾਂਚ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…</translation> <translation id="5559567453458728487">ਵੈੱਬ 'ਤੇ ਮਿਲੀਆਂ ਮਾਪ ਇਕਾਈਆਂ ਨੂੰ ਰੂਪਾਂਤਰਿਤ ਕਰੋ</translation> <translation id="556042886152191864">ਬਟਨ</translation> +<translation id="5572648434713976849">ਤੁਹਾਨੂੰ ਪਤਾ ਬਾਰ ਵਿੱਚ ਬਿਹਤਰ ਸੁਝਾਅ ਪ੍ਰਾਪਤ ਹੋਣਗੇ</translation> <translation id="5572684875078967866">ਜਾਣਕਾਰੀ ਦੀ ਸਟੋਰੇਜ</translation> <translation id="5591792606924434384">{COUNT,plural, =1{ਇਸ ਪੈਕੇਜ ਨੂੰ ਟਰੈਕ ਕਰੋ}one{ਪੈਕੇਜ ਨੂੰ ਟਰੈਕ ਕਰੋ}other{ਸਾਰੇ ਪੈਕੇਜਾਂ ਨੂੰ ਟਰੈਕ ਕਰੋ}}</translation> <translation id="5597915316964418992">ਟੈਬ GRid ਖੋਲ੍ਹੋ</translation> @@ -1083,6 +1087,7 @@ <translation id="6642362222295953972">ਮੌਜੂਦਾ ਟੈਬ 'ਤੇ ਜਾਓ</translation> <translation id="6643016212128521049">ਹਟਾਓ</translation> <translation id="6645899968535965230">QR ਕੋਡ: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">ਤੁਹਾਡੇ ਵੱਲੋਂ ਖੋਲ੍ਹੇ ਜਾਣ ਵਾਲੇ URL Google ਨੂੰ ਇਹ ਪੂਰਵ-ਅਨੁਮਾਨ ਲਗਾਉਣ ਲਈ ਭੇਜੇ ਜਾਂਦੇ ਹਨ ਕਿ ਤੁਸੀਂ ਅਗਲੀਆਂ ਕਿਹੜੀਆਂ ਸਾਈਟਾਂ 'ਤੇ ਜਾਉਗੇ</translation> <translation id="6647480763136463714">ਆਖਰੀ ਵਾਰ ਚਲਾਉਣ ਦਾ ਸਮਾਂ <ph name="TIME" /></translation> <translation id="6656103420185847513">ਫੋਲਡਰ ਸੰਪਾਦਿਤ ਕਰੋ</translation> <translation id="6657585470893396449">ਪਾਸਵਰਡ</translation> @@ -1260,6 +1265,7 @@ <translation id="7658239707568436148">ਰੱਦ ਕਰੋ</translation> <translation id="7666861622396822790">ਤੁਸੀਂ <ph name="BEGIN_LINK" />ਸਮੱਗਰੀ ਸੈਟਿੰਗਾਂ<ph name="END_LINK" /> ਵਿੱਚ ਜਾ ਕੇ ਇਸਦਾ ਪ੍ਰਬੰਧਨ ਕਰ ਸਕਦੇ ਹੋ।</translation> <translation id="7671141431838911305">ਸਥਾਪਤ ਕਰੋ</translation> +<translation id="7673346542062368520">ਤੁਸੀਂ ਇਨਕੋਗਨਿਟੋ ਵਿੱਚ ਬ੍ਰਾਊਜ਼ ਕਰਨ ਲਈ ਖੱਬੇ ਸਵਾਈਪ ਕਰ ਸਕਦੇ ਹੋ।</translation> <translation id="7679915578945954324">ਸਾਈਟ ਦੇ ਪਤੇ ਕਾਪੀ ਕੀਤੇ ਗਏ</translation> <translation id="7687508192620387263">ਕੈਲੰਡਰ ਫ਼ਾਈਲ ਉਪਲਬਧ ਹੈ</translation> <translation id="7701040980221191251">ਕੋਈ ਨਹੀਂ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pl.xtb b/ios/chrome/app/strings/resources/ios_strings_pl.xtb index 73623a2..dba7e50d 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pl.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Naciśnij i przytrzymaj datę.</translation> <translation id="1959679933317802873">Czekam na treść</translation> <translation id="1967461193809857427">{count,plural, =1{Czy chcesz wrócić na kartę ostatnio wyświetlaną na Androidzie?}few{Czy chcesz wrócić na karty ostatnio wyświetlane na Androidzie?}many{Czy chcesz wrócić na karty ostatnio wyświetlane na Androidzie?}other{Czy chcesz wrócić na karty ostatnio wyświetlane na Androidzie?}}</translation> +<translation id="1972325230031091483">Przeglądarka będzie działać szybciej dzięki proaktywnemu wczytywaniu stron na podstawie danych o bieżącej wizycie na stronie</translation> <translation id="1973912524893600642">Zachowaj dane</translation> <translation id="1974060860693918893">Zaawansowane</translation> <translation id="1980417445547898121">{count,plural, =1{Pobierz na tego iPhone'a {count} ostatnio aktywną kartę z innego urządzenia}few{Pobierz na tego iPhone'a {count} ostatnio aktywne karty z innego urządzenia}many{Pobierz na tego iPhone'a {count} ostatnio aktywnych kart z innego urządzenia}other{Pobierz na tego iPhone'a {count} ostatnio aktywnej karty z innego urządzenia}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">Zmień szczegóły wydarzenia i kliknij „Zapisz”.</translation> <translation id="3240426699337459095">Link skopiowany</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Jeśli udostępnisz także raporty o użytkowaniu Chrome, będą one zawierały odwiedzane przez Ciebie adresy URL.</translation> <translation id="3245744387817103524">Nie udało się zapisać zmiany.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> z <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Automatycznie uzupełniaj hasła</translation> @@ -557,6 +559,7 @@ <translation id="3922310737605261887">Wyszukaj skopiowany tekst</translation> <translation id="3928666092801078803">Połącz moje dane</translation> <translation id="3929457972718048006">Adresy</translation> +<translation id="3948600256434252210">Aby przeglądać treści w trybie incognito, możesz przesunąć palcem w prawo.</translation> <translation id="3955822496205734389">Masz słabe hasła.</translation> <translation id="3959736869653157332">Menu → Nowa karta incognito</translation> <translation id="3962326069546168954">Zapisz</translation> @@ -633,7 +636,6 @@ <translation id="4371591986692297148">Nieaktywna</translation> <translation id="4375040482473363939">Wyszukiwanie z użyciem kodu QR</translation> <translation id="4378154925671717803">Telefon</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> udostępnia Ci hasło do strony <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Kliknij, by zmienić język.</translation> <translation id="4405320213589929829">Używaj adresów na stronach internetowych, aby uzyskiwać informacje lokalne i wskazówki dojazdu.</translation> <translation id="4420409367264901497">Edytuj zakładkę</translation> @@ -662,6 +664,7 @@ <translation id="4539187448429948815">{count,plural, =1{{count} zapisana sugestia autouzupełniania dostępna nad klawiaturą.}few{{count} zapisane sugestie autouzupełniania dostępne nad klawiaturą.}many{{count} zapisanych sugestii autouzupełniania dostępnych nad klawiaturą.}other{{count} zapisanej sugestii autouzupełniania dostępne nad klawiaturą.}}</translation> <translation id="4540780316273593836">Coś poszło nie tak</translation> <translation id="4550040941166547650">Tylko na tym urządzeniu</translation> +<translation id="4564893319561643483">Ukryj: „<ph name="TITLE" />”</translation> <translation id="457292989631956153">{COUNT,plural, =1{Zamknąć {COUNT} nieaktywną kartę?}few{Zamknąć {COUNT} nieaktywne karty?}many{Zamknąć {COUNT} nieaktywnych kart?}other{Zamknąć {COUNT} nieaktywnej karty?}}</translation> <translation id="457386861538956877">Więcej</translation> <translation id="4587589328781138893">Witryny</translation> @@ -859,6 +862,7 @@ <translation id="555749644339804659">Sprawdzam hasła…</translation> <translation id="5559567453458728487">Przelicz jednostki miary znalezione w internecie</translation> <translation id="556042886152191864">Przycisk</translation> +<translation id="5572648434713976849">Będziesz otrzymywać ulepszone sugestie na pasku adresu</translation> <translation id="5572684875078967866">Przechowywanie informacji</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Śledź tę przesyłkę}few{Śledź wszystkie przesyłki}many{Śledź wszystkie przesyłki}other{Śledź wszystkie przesyłki}}</translation> <translation id="5597915316964418992">Otwieranie siatki kart</translation> @@ -1085,6 +1089,7 @@ <translation id="6642362222295953972">Przełącz na istniejącą kartę</translation> <translation id="6643016212128521049">Wyczyść</translation> <translation id="6645899968535965230">Kod QR: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Odwiedzane adresy URL są wysyłane do Google w celu prognozowania, jakie kolejne witryny możesz odwiedzić</translation> <translation id="6647480763136463714">Ostatnio uruchomiono: <ph name="TIME" /></translation> <translation id="6656103420185847513">Folder edytora</translation> <translation id="6657585470893396449">Hasło</translation> @@ -1262,6 +1267,7 @@ <translation id="7658239707568436148">Anuluj</translation> <translation id="7666861622396822790">Możesz to zmienić w <ph name="BEGIN_LINK" />Ustawieniach treści<ph name="END_LINK" />.</translation> <translation id="7671141431838911305">ZAINSTALUJ</translation> +<translation id="7673346542062368520">Aby przeglądać treści w trybie incognito, możesz przesunąć palcem w lewo.</translation> <translation id="7679915578945954324">Adresy witryn zostały skopiowane</translation> <translation id="7687508192620387263">Dostępny jest plik kalendarza</translation> <translation id="7701040980221191251">Brak</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb b/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb index 6027df1..0f3abec 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Toque em uma data e a mantenha pressionada.</translation> <translation id="1959679933317802873">Aguardando conteúdo</translation> <translation id="1967461193809857427">{count,plural, =1{Continuar usando a guia que você deixou no Android?}one{Continuar usando a guia que você deixou no Android?}other{Continuar usando as guias que você deixou no Android?}}</translation> +<translation id="1972325230031091483">Como o conteúdo é carregado proativamente com base na página da Web atual, você navega com mais rapidez</translation> <translation id="1973912524893600642">Manter dados</translation> <translation id="1974060860693918893">Avançado</translation> <translation id="1980417445547898121">{count,plural, =1{Acesse neste iPhone {count} guia ativa recentemente em outro dispositivo}one{Acesse neste iPhone {count} guia ativa recentemente em outro dispositivo}other{Acesse neste iPhone {count} guias ativas recentemente em outro dispositivo}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">Edite os detalhes do evento e toque em "Salvar".</translation> <translation id="3240426699337459095">Link copiado</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Se você também compartilhar os relatórios de uso do Chrome, eles vão incluir os URLs acessados</translation> <translation id="3245744387817103524">Não foi possível salvar a mudança.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> de <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Preenchimento automático de senhas</translation> @@ -633,7 +635,6 @@ <translation id="4371591986692297148">Inativos</translation> <translation id="4375040482473363939">Pesquisa por QR code</translation> <translation id="4378154925671717803">Telefone</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> compartilhou uma senha para <ph name="WEBSITE" /> com você</translation> <translation id="4389019817280890563">Toque para mudar o idioma.</translation> <translation id="4405320213589929829">Use endereços em páginas da Web para conferir informações locais e rotas.</translation> <translation id="4420409367264901497">Editar favorito</translation> @@ -859,6 +860,7 @@ <translation id="555749644339804659">Verificando senhas…</translation> <translation id="5559567453458728487">Converta unidades de medida encontradas na Web</translation> <translation id="556042886152191864">Botão</translation> +<translation id="5572648434713976849">Você vai receber sugestões melhores na barra de endereço</translation> <translation id="5572684875078967866">Armazenamento de informações</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Rastrear pacote}one{Rastrear todos os pacotes}other{Rastrear todos os pacotes}}</translation> <translation id="5597915316964418992">Abrir a grade de guias</translation> @@ -1085,6 +1087,7 @@ <translation id="6642362222295953972">Mudar para guia existente</translation> <translation id="6643016212128521049">Limpar</translation> <translation id="6645899968535965230">QR code: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Os URLs que você acessa são enviados ao Google para prever quais sites podem ser do seu interesse</translation> <translation id="6647480763136463714">Última execução: <ph name="TIME" /></translation> <translation id="6656103420185847513">Editar pasta</translation> <translation id="6657585470893396449">Senha</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb index c8845e5..de216ec 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Toque sem soltar numa data.</translation> <translation id="1959679933317802873">A aguardar pelo conteúdo</translation> <translation id="1967461193809857427">{count,plural, =1{Retomar o separador que deixou no Android?}other{Retomar os separadores que deixou no Android?}}</translation> +<translation id="1972325230031091483">Irá navegar mais depressa porque os conteúdos são carregados proativamente com base na página Web que está a visitar</translation> <translation id="1973912524893600642">Manter dados</translation> <translation id="1974060860693918893">Avançadas</translation> <translation id="1980417445547898121">{count,plural, =1{Obtenha {count} separador recentemente ativo do outro dispositivo neste iPhone}other{Obtenha {count} separadores recentemente ativos do outro dispositivo neste iPhone}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">Edite os detalhes do evento e toque em "Guardar".</translation> <translation id="3240426699337459095">Link copiado</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Se também partilhar relatórios de utilização do Chrome, esses relatórios incluem os URLs que visita</translation> <translation id="3245744387817103524">Não foi possível guardar a alteração.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> de <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Preencher palavras-passe automaticamente</translation> @@ -634,7 +636,6 @@ <translation id="4371591986692297148">Inativo</translation> <translation id="4375040482473363939">Pesquisa de códigos QR</translation> <translation id="4378154925671717803">Telemóvel</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> partilhou uma palavra-passe consigo para o Website <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Toque para alterar o idioma.</translation> <translation id="4405320213589929829">Use moradas em páginas Web para obter direções e informações locais.</translation> <translation id="4420409367264901497">Editar marcador</translation> @@ -861,6 +862,7 @@ <translation id="555749644339804659">A verificar palav.-passe…</translation> <translation id="5559567453458728487">Converta unidades de medida encontradas na Web</translation> <translation id="556042886152191864">Botão</translation> +<translation id="5572648434713976849">Receberá sugestões melhoradas na barra de endereço</translation> <translation id="5572684875078967866">Armazenamento de informações</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Acompanhar esta embalagem}other{Acompanhar todas as embalagens}}</translation> <translation id="5597915316964418992">Abra a grelha de separadores</translation> @@ -1087,6 +1089,7 @@ <translation id="6642362222295953972">Mudar para um separador existente</translation> <translation id="6643016212128521049">Limpar</translation> <translation id="6645899968535965230">Código QR: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Os URLs que visitar são enviados para a Google para prever os sites que pode visitar a seguir</translation> <translation id="6647480763136463714">Última execução: <ph name="TIME" /></translation> <translation id="6656103420185847513">Editar Pasta</translation> <translation id="6657585470893396449">Palavra-passe</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ro.xtb b/ios/chrome/app/strings/resources/ios_strings_ro.xtb index ccb7c326..8ced8ba 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ro.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ro.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Atinge lung o dată.</translation> <translation id="1959679933317802873">Se așteaptă conținutul</translation> <translation id="1967461193809857427">{count,plural, =1{Reiei fila lăsată pe Android?}few{Reiei filele lăsate pe Android?}other{Reiei filele lăsate pe Android?}}</translation> +<translation id="1972325230031091483">Vei naviga mai rapid deoarece conținutul se încarcă proactiv în funcție de pagina web accesată în acel moment</translation> <translation id="1973912524893600642">Păstrează datele</translation> <translation id="1974060860693918893">Avansate</translation> <translation id="1980417445547898121">{count,plural, =1{Accesează {count} filă activă recent de pe celălalt dispozitiv pe acest iPhone}few{Accesează {count} file active recent de pe celălalt dispozitiv pe acest iPhone}other{Accesează {count} de file active recent de pe celălalt dispozitiv pe acest iPhone}}</translation> @@ -291,6 +292,7 @@ <translation id="2547458583188611426">Sincronizarea nu funcționează. Pentru a porni sincronizarea, introdu expresia de acces.</translation> <translation id="2551153019974022505">Eroare de cont</translation> <translation id="2556092377360758201">Fără protecție (nu este recomandat)</translation> +<translation id="2561375093019333908">DESCHIDE</translation> <translation id="2562041823070056534">Se trimite la <ph name="DEVICE_NAME" />...</translation> <translation id="2576499762020411840">Folosește și salvează parole din Contul Google</translation> <translation id="2577522251608256362">Cartier</translation> @@ -433,6 +435,7 @@ <translation id="3235242129752692527">Editează detaliile evenimentului și atinge Salvează.</translation> <translation id="3240426699337459095">Linkul a fost copiat</translation> <translation id="3244271242291266297">LL</translation> +<translation id="3245429137663807393">Dacă trimiți rapoarte privind folosirea Chrome, acestea includ adresele URL pe care le accesezi</translation> <translation id="3245744387817103524">Modificarea nu a putut fi salvată.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> din <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Completează automat parolele</translation> @@ -632,7 +635,6 @@ <translation id="4371591986692297148">Inactiv</translation> <translation id="4375040482473363939">Căutare coduri QR</translation> <translation id="4378154925671717803">Telefon</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> ți-a permis accesul la o parolă pentru <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Atinge pentru a schimba limba.</translation> <translation id="4405320213589929829">Folosește adresele din paginile web pentru a obține informații și indicații de orientare locale.</translation> <translation id="4420409367264901497">Editează marcajul</translation> @@ -848,6 +850,7 @@ <translation id="5513681519188741830">acum <ph name="TIME" /> h</translation> <translation id="5525269841082836315">Creează o expresie de acces</translation> <translation id="553151287733286479">{COUNT,plural, =1{{COUNT} parolă slabă}few{{COUNT} parole slabe}other{{COUNT} de parole slabe}}</translation> +<translation id="5532545557415295622">Casetă de dialog cu limita de inactivitate</translation> <translation id="5542540507657872337">S-au găsit <ph name="COUNT" /></translation> <translation id="5548760955356983418">Cu Handoff, începi să navighezi pe un site de pe acest dispozitiv, apoi continui cu ușurință de pe Mac. Site-ul deschis actual va apărea în Dock pe Mac. @@ -857,6 +860,7 @@ <translation id="555749644339804659">Se verifică parolele…</translation> <translation id="5559567453458728487">Convertește unitățile de măsură găsite pe web</translation> <translation id="556042886152191864">Buton</translation> +<translation id="5572648434713976849">Vei primi sugestii îmbunătățite în bara de adrese</translation> <translation id="5572684875078967866">Stocarea informațiilor</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Urmărește coletul}few{Urmăriți toate pachetele}other{Urmăriți toate pachetele}}</translation> <translation id="5597915316964418992">Deschide grila cu file</translation> @@ -1083,6 +1087,7 @@ <translation id="6642362222295953972">Comută la o filă existentă</translation> <translation id="6643016212128521049">Șterge</translation> <translation id="6645899968535965230">Cod QR: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Adresele URL pe care le accesezi sunt trimise la Google pentru a anticipa site-urile pe care le-ai putea accesa pe viitor</translation> <translation id="6647480763136463714">Ultima rulare: <ph name="TIME" /></translation> <translation id="6656103420185847513">Modificați dosarul</translation> <translation id="6657585470893396449">Parolă</translation> @@ -1288,6 +1293,7 @@ <translation id="7781829728241885113">Ieri</translation> <translation id="7786246662347093005">{COUNT,plural, =1{După o zi}few{După {COUNT} zile}other{După {COUNT} de zile}}</translation> <translation id="7791543448312431591">Adaugă</translation> +<translation id="7792549458069452436">DESCARCĂ APLICAȚIA</translation> <translation id="7807060072011926525">Oferit de Google</translation> <translation id="7812377703891978671">Poți accesa întregul istoric de navigare dacă selectezi <ph name="HISTORY_BUTTON_ACCESSIBILITY_LABEL" />.</translation> <translation id="78146569776629510">Descărcări</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ru.xtb b/ios/chrome/app/strings/resources/ios_strings_ru.xtb index 5e75df25..f9d8c4b 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ru.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ru.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Нажмите на дату и удерживайте ее.</translation> <translation id="1959679933317802873">Ожидается контент</translation> <translation id="1967461193809857427">{count,plural, =1{Открыть вкладку, которую вы просматривали в Android?}one{Открыть вкладки, которые вы просматривали в Android?}few{Открыть вкладки, которые вы просматривали в Android?}many{Открыть вкладки, которые вы просматривали в Android?}other{Открыть вкладки, которые вы просматривали в Android?}}</translation> +<translation id="1972325230031091483">Работа браузера станет быстрее благодаря автоматической загрузке контента с учетом просматриваемой в настоящий момент страницы.</translation> <translation id="1973912524893600642">Не удалять данные</translation> <translation id="1974060860693918893">Дополнительные</translation> <translation id="1980417445547898121">{count,plural, =1{Откройте {count} вкладку, с которой вы недавно взаимодействовали на другом своем устройстве, на этом iPhone.}one{Откройте {count} вкладку, с которой вы недавно взаимодействовали на другом своем устройстве, на этом iPhone.}few{Откройте {count} вкладки, с которыми вы недавно взаимодействовали на другом своем устройстве, на этом iPhone.}many{Откройте {count} вкладок, с которыми вы недавно взаимодействовали на другом своем устройстве, на этом iPhone.}other{Откройте {count} вкладки, с которыми вы недавно взаимодействовали на другом своем устройстве, на этом iPhone.}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">Измените информацию о событии и нажмите "Сохранить".</translation> <translation id="3240426699337459095">Готово</translation> <translation id="3244271242291266297">ММ</translation> +<translation id="3245429137663807393">Если вы также отправляете отчеты об использовании Chrome, в них включаются URL посещенных вами страниц.</translation> <translation id="3245744387817103524">Не удалось сохранить изменения.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> из <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Автозаполнение паролей</translation> @@ -633,7 +635,6 @@ <translation id="4371591986692297148">неактивно</translation> <translation id="4375040482473363939">Поиск по QR-коду</translation> <translation id="4378154925671717803">Телефон</translation> -<translation id="4388983683160515185">От пользователя <ph name="FULL_NAME" /> получен пароль для сайта <ph name="WEBSITE" />.</translation> <translation id="4389019817280890563">Нажмите, чтобы изменить язык.</translation> <translation id="4405320213589929829">Просматривайте места на карте и маршруты, нажимая на адреса с веб-страниц.</translation> <translation id="4420409367264901497">Изменить закладку</translation> @@ -859,6 +860,7 @@ <translation id="555749644339804659">Проверка паролей…</translation> <translation id="5559567453458728487">Конвертировать единицы измерения в Сети.</translation> <translation id="556042886152191864">Кнопка</translation> +<translation id="5572648434713976849">В адресной строке появятся улучшенные подсказки.</translation> <translation id="5572684875078967866">Объем данных</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Отслеживать эту посылку}one{Отслеживать все посылки}few{Отслеживать все посылки}many{Отслеживать все посылки}other{Отслеживать все посылки}}</translation> <translation id="5597915316964418992">Откройте сетку таблицы.</translation> @@ -1085,6 +1087,7 @@ <translation id="6642362222295953972">Переключиться на открытую ранее вкладку</translation> <translation id="6643016212128521049">Удалить</translation> <translation id="6645899968535965230">QR-код: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Чтобы предсказать ваши дальнейшие запросы, URL посещенных вами страниц отправляются в Google.</translation> <translation id="6647480763136463714">Последний запуск: <ph name="TIME" /></translation> <translation id="6656103420185847513">Редактировать папку</translation> <translation id="6657585470893396449">Пароль</translation> @@ -1281,7 +1284,7 @@ <translation id="7752405526771734448">Визуальный поиск с помощью Объектива</translation> <translation id="7756478488453921771">Меню → Настройки → Способы оплаты</translation> <translation id="7760127703945531263">Блокировка вкладок инкогнито</translation> -<translation id="7765158879357617694">Переместить</translation> +<translation id="7765158879357617694">Перенести</translation> <translation id="7772032839648071052">Подтвердите кодовую фразу</translation> <translation id="777572173400717978">{count,plural, =1{Закладка добавлена.}one{Закладки добавлены.}few{Закладки добавлены.}many{Закладки добавлены.}other{Закладки добавлены.}}</translation> <translation id="777637629667389858">Если вы вошли в аккаунт, защищает вас во всех сервисах Google.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_si.xtb b/ios/chrome/app/strings/resources/ios_strings_si.xtb index 6bf3961b..f0e8faeb 100644 --- a/ios/chrome/app/strings/resources/ios_strings_si.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_si.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">දිනයක් ස්පර්ශ කර අල්ලා ගන්න.</translation> <translation id="1959679933317802873">අන්තර්ගතය සඳහා රැඳී සිටීම</translation> <translation id="1967461193809857427">{count,plural, =1{ඔබ Android මත හැර ගිය පටිත්ත ගන්නද?}one{ඔබ Android මත හැර ගිය පටිති ගන්නද?}other{ඔබ Android මත හැර ගිය පටිති ගන්නද?}}</translation> +<translation id="1972325230031091483">ඔබගේ වත්මන් වෙබ් පිටුවට පැමිණීම මත පදනම්ව අන්තර්ගතය ප්රගාමීව පූරණය කර ඇති නිසා ඔබ වේගයෙන් බ්රවුස් කරනු ඇත</translation> <translation id="1973912524893600642">දත්ත තබා ගන්න</translation> <translation id="1974060860693918893">උසස් කළ</translation> <translation id="1980417445547898121">{count,plural, =1{මෙම iPhone මත ඔබේ අනෙක් උපාංගයෙන් ඔබේ මෑතක දී සක්රිය {count} පටිත්ත ලබා ගන්න}one{මෙම iPhone මත ඔබේ අනෙක් උපාංගයෙන් ඔබේ මෑතක දී සක්රිය පටිති {count} ලබා ගන්න}other{මෙම iPhone මත ඔබේ අනෙක් උපාංගයෙන් ඔබේ මෑතක දී සක්රිය පටිති {count} ලබා ගන්න}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">සිදුවීම් විස්තර සංස්කරණ කර "සුරකින්න" වෙත තට්ටු කරන්න.</translation> <translation id="3240426699337459095">සබැඳිය පිටපත් කරන ලදි</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">ඔබ Chrome පරිශීලන වාර්තාද බෙදා ගතහොත්, එම වාර්තාවලට ඔබ පිවිසෙන URL ඇතුළත් වේ</translation> <translation id="3245744387817103524">ඔබේ වෙනස සුරැකිය නොහැකි විය.</translation> <translation id="3252394070589632019"><ph name="NUM_SUGGESTIONS" />කින් <ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /></translation> <translation id="3264775633254836593">මුරපද ස්වයං පුරවන්න</translation> @@ -633,7 +635,6 @@ <translation id="4371591986692297148">අක්රිය</translation> <translation id="4375040482473363939">QR කේතය සෙවීම</translation> <translation id="4378154925671717803">දුරකථනය</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> <ph name="WEBSITE" /> සඳහා මුරපදයක් ඔබ සමග බෙදා ගෙන ඇත</translation> <translation id="4389019817280890563">භාෂාව මාරු කිරීමට තට්ටු කරන්න.</translation> <translation id="4405320213589929829">දේශීය තොරතුරු සහ දිශා ලබා ගැනීමට වෙබ් පිටුවල ලිපින භාවිත කරන්න.</translation> <translation id="4420409367264901497">පිටුසන සංස්කරණය කරන්න</translation> @@ -859,6 +860,7 @@ <translation id="555749644339804659">මුරපද පරීක්ෂා කරමින්…</translation> <translation id="5559567453458728487">වෙබයෙහි හමු වූ මිනුම් ඒකක හරවන්න</translation> <translation id="556042886152191864">බොත්තම</translation> +<translation id="5572648434713976849">ලිපින තීරුව තුළ ඔබට වැඩිදියුණු කළ යෝජනා ලැබෙනු ඇත</translation> <translation id="5572684875078967866">තොරතුරු ගබඩා කිරීම</translation> <translation id="5591792606924434384">{COUNT,plural, =1{මෙම පැකේජය නිරීක්ෂණය කරන්න}one{සියලු පැකේජ නිරීක්ෂණය කරන්න}other{සියලු පැකේජ නිරීක්ෂණය කරන්න}}</translation> <translation id="5597915316964418992">පටිති ජාලකය විවෘත කරන්න</translation> @@ -1085,6 +1087,7 @@ <translation id="6642362222295953972">පවතින පටිත්තට මාරු වන්න</translation> <translation id="6643016212128521049">මකන්න</translation> <translation id="6645899968535965230">QR කේතය: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">ඔබ පිවිසෙන URL ඔබ මීළඟට පිවිසිය හැකි අඩවි මොනවාදැයි පුරෝකථනය කිරීමට Google වෙත යවනු ලැබේ</translation> <translation id="6647480763136463714">අවසන් ධාවනය <ph name="TIME" /></translation> <translation id="6656103420185847513">ෆෝල්ඩරය සංස්කරණය කරන්න</translation> <translation id="6657585470893396449">මුරපදය</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sk.xtb b/ios/chrome/app/strings/resources/ios_strings_sk.xtb index eb287639..bef998a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sk.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sk.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Pridržte nejaký dátum.</translation> <translation id="1959679933317802873">Čaká sa na obsah</translation> <translation id="1967461193809857427">{count,plural, =1{Chcete si zobraziť kartu, ktorú ste zavreli v Androide?}few{Chcete si zobraziť karty, ktoré ste zavreli v Androide?}many{Pick up the tabs you left on Android?}other{Chcete si zobraziť karty, ktoré ste zavreli v Androide?}}</translation> +<translation id="1972325230031091483">Prehliadanie sa zrýchli, pretože obsah bude proaktívne načítaný na základe vašej návštevy aktuálnej webovej stránky</translation> <translation id="1973912524893600642">Ponechať údaje</translation> <translation id="1974060860693918893">Rozšírené</translation> <translation id="1980417445547898121">{count,plural, =1{Zobrazte si {count} nedávno aktívnu kartu z druhého zariadenia v tomto iPhone}few{Zobrazte si {count} nedávno aktívne karty z druhého zariadenia v tomto iPhone}many{Get your {count} recently active tabs from your other device on this iPhone}other{Zobrazte si {count} nedávno aktívnych kariet z druhého zariadenia v tomto iPhone}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Upravte podrobnosti o udalosti a klepnite na Uložiť.</translation> <translation id="3240426699337459095">Odkaz bol skopírovaný</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Ak zdieľate aj prehľady používania Chromu, tieto prehľady zahŕňajú webové adresy, ktoré navštívite</translation> <translation id="3245744387817103524">Zmenu sa nepodarilo uložiť.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> z <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Automatické dopĺňanie hesiel</translation> @@ -556,6 +558,7 @@ <translation id="3922310737605261887">Vyhľadať skopírovaný text</translation> <translation id="3928666092801078803">Spojiť moje údaje</translation> <translation id="3929457972718048006">Adresy</translation> +<translation id="3948600256434252210">Ak chcete prehliadať v režime inkognito, potiahnite doprava.</translation> <translation id="3955822496205734389">Máte slabé heslá.</translation> <translation id="3959736869653157332">Ponuka → Nová karta inkognito</translation> <translation id="3962326069546168954">Uložiť</translation> @@ -632,7 +635,6 @@ <translation id="4371591986692297148">Neaktívne</translation> <translation id="4375040482473363939">Vyhľadávanie QR kódov</translation> <translation id="4378154925671717803">Telefón</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> s vami zdieľal(a) heslo webu <ph name="WEBSITE" />.</translation> <translation id="4389019817280890563">Klepnutím zmeníte jazyk.</translation> <translation id="4405320213589929829">Pomocou adries na webových stránkach môžete získať miestne informácie a trasy.</translation> <translation id="4420409367264901497">Upraviť záložku</translation> @@ -661,6 +663,7 @@ <translation id="4539187448429948815">{count,plural, =1{Nad klávesnicou je k dispozícii {count} uložený návrh automatického dopĺňania.}few{Nad klávesnicou sú k dispozícii {count} uložené návrhy automatického dopĺňania.}many{{count} saved autocomplete suggestions available above your keyboard.}other{Nad klávesnicou je k dispozícii {count} uložených návrhov automatického dopĺňania.}}</translation> <translation id="4540780316273593836">Vyskytol sa problém</translation> <translation id="4550040941166547650">Iba v tomto zariadení</translation> +<translation id="4564893319561643483">Skryť <ph name="TITLE" /></translation> <translation id="457292989631956153">{COUNT,plural, =1{Chcete zavrieť {COUNT} neaktívnu kartu?}few{Chcete zavrieť {COUNT} neaktívne karty?}many{Close {COUNT} Inactive Tabs?}other{Chcete zavrieť {COUNT} neaktívnych kariet?}}</translation> <translation id="457386861538956877">Viac...</translation> <translation id="4587589328781138893">Weby</translation> @@ -857,6 +860,7 @@ <translation id="555749644339804659">Kontrolujú sa heslá…</translation> <translation id="5559567453458728487">Konvertovať merné jednotky nájdené na internete</translation> <translation id="556042886152191864">Tlačidlo</translation> +<translation id="5572648434713976849">V paneli s adresou budete dostávať zlepšené návrhy</translation> <translation id="5572684875078967866">Úložisko informácií</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Sledovať túto zásielku}few{Sledovať všetky zásielky}many{Sledovať všetky zásielky}other{Sledovať všetky zásielky}}</translation> <translation id="5597915316964418992">Otvorte mriežku kariet</translation> @@ -1083,6 +1087,7 @@ <translation id="6642362222295953972">Prepnúť na existujúcu kartu</translation> <translation id="6643016212128521049">Vymazať</translation> <translation id="6645899968535965230">QR kód: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Webové adresy, ktoré navštevujete, sa odosielajú Googlu, aby mohol vytvárať predpokladané dopyty webov, ktoré pravdepodobne navštívite</translation> <translation id="6647480763136463714">Naposledy spustená <ph name="TIME" /></translation> <translation id="6656103420185847513">Upraviť priečinok</translation> <translation id="6657585470893396449">Heslo</translation> @@ -1260,6 +1265,7 @@ <translation id="7658239707568436148">Zrušiť</translation> <translation id="7666861622396822790">Môžete to spravovať v sekcii <ph name="BEGIN_LINK" />Nastavenia obsahu<ph name="END_LINK" />.</translation> <translation id="7671141431838911305">INŠTALOVAŤ</translation> +<translation id="7673346542062368520">Ak chcete prehliadať v režime inkognito, potiahnite doľava.</translation> <translation id="7679915578945954324">Adresy webových stránok boli skopírované</translation> <translation id="7687508192620387263">K dispozícii je súbor kalendára</translation> <translation id="7701040980221191251">Žiadne</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sl.xtb b/ios/chrome/app/strings/resources/ios_strings_sl.xtb index 766cfc1..55c4ba8 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sl.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Dotaknite se datuma in ga pridržite.</translation> <translation id="1959679933317802873">Čakanje na vsebino</translation> <translation id="1967461193809857427">{count,plural, =1{Želite nadaljevati na zavihku, na katerem ste končali v Androidu?}one{Želite nadaljevati na zavihkih, na katerih ste končali v Androidu?}two{Želite nadaljevati na zavihkih, na katerih ste končali v Androidu?}few{Želite nadaljevati na zavihkih, na katerih ste končali v Androidu?}other{Želite nadaljevati na zavihkih, na katerih ste končali v Androidu?}}</translation> +<translation id="1972325230031091483">Brskali boste hitreje, ker se vsebina proaktivno naloži glede na trenutni obisk spletne strani.</translation> <translation id="1973912524893600642">Ohrani podatke</translation> <translation id="1974060860693918893">Dodatno</translation> <translation id="1980417445547898121">{count,plural, =1{Dobite {count} nedavno aktivni zavihek iz druge naprave v tem iPhonu}one{Dobite {count} nedavno aktivni zavihek iz druge naprave v tem iPhonu}two{Dobite {count} nedavno aktivna zavihka iz druge naprave v tem iPhonu}few{Dobite {count} nedavno aktivne zavihke iz druge naprave v tem iPhonu}other{Dobite {count} nedavno aktivnih zavihkov iz druge naprave v tem iPhonu}}</translation> @@ -291,6 +292,7 @@ <translation id="2547458583188611426">Sinhronizacija ne deluje. Če želite začeti sinhronizacijo, vnesite geslo.</translation> <translation id="2551153019974022505">Napaka računa</translation> <translation id="2556092377360758201">Brez zaščite (ni priporočljivo)</translation> +<translation id="2561375093019333908">ODPRI</translation> <translation id="2562041823070056534">Pošiljanje v napravo <ph name="DEVICE_NAME" /> …</translation> <translation id="2576499762020411840">Uporaba in shranjevanje gesel v računu Google</translation> <translation id="2577522251608256362">Soseska</translation> @@ -433,6 +435,7 @@ <translation id="3235242129752692527">Uredite podrobnosti o dogodku in se dotaknite možnosti »Save« (Shrani).</translation> <translation id="3240426699337459095">Povezava kopirana</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Če delite tudi poročila o uporabi Chroma, so v teh poročilih vključeni URL-ji, ki jih obiščete.</translation> <translation id="3245744387817103524">Spremembe ni bilo mogoče shraniti.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> od <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Samodejno izpolnjevanje gesel</translation> @@ -632,7 +635,6 @@ <translation id="4371591986692297148">Neaktivno</translation> <translation id="4375040482473363939">Iskanje kod QR</translation> <translation id="4378154925671717803">Telefon</translation> -<translation id="4388983683160515185">Oseba <ph name="FULL_NAME" /> je z vami delila geslo za spletno mesto <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Dotaknite se, če želite spremeniti jezik.</translation> <translation id="4405320213589929829">Uporabite naslove na spletnih straneh za pridobivanje lokalnih informacij in navodil za pot.</translation> <translation id="4420409367264901497">Urejanje zaznamka</translation> @@ -848,6 +850,7 @@ <translation id="5513681519188741830">Pred <ph name="TIME" /> h</translation> <translation id="5525269841082836315">Ustvarjanje gesla</translation> <translation id="553151287733286479">{COUNT,plural, =1{{COUNT} šibko geslo}one{{COUNT} šibko geslo}two{{COUNT} šibki gesli}few{{COUNT} šibka gesla}other{{COUNT} šibkih gesel}}</translation> +<translation id="5532545557415295622">Pogovorno okno za časovno omejitev nedejavnosti</translation> <translation id="5542540507657872337">Št. najdenih: <ph name="COUNT" /></translation> <translation id="5548760955356983418">Handoff lets you start browsing a website on this device and then easily continue on your Mac. The current open website will appear in the Dock of your Mac. @@ -857,6 +860,7 @@ <translation id="555749644339804659">Preverjanje gesel …</translation> <translation id="5559567453458728487">Pretvorba merskih enot, najdenih v spletu</translation> <translation id="556042886152191864">Gumb</translation> +<translation id="5572648434713976849">V naslovni vrstici boste prejemali izboljšane predloge.</translation> <translation id="5572684875078967866">Količina podatkov</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Sledi temu paketu}one{Sledi vsem paketom}two{Sledi vsem paketom}few{Sledi vsem paketom}other{Sledi vsem paketom}}</translation> <translation id="5597915316964418992">Odprite mrežo zavihkov</translation> @@ -1083,6 +1087,7 @@ <translation id="6642362222295953972">Preklop na obstoječi zavihek</translation> <translation id="6643016212128521049">Izbriši</translation> <translation id="6645899968535965230">Koda QR: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">URL-ji, ki jih obiščete, se pošljejo Googlu zaradi predvidevanja, katera spletna mesta boste morda obiskali.</translation> <translation id="6647480763136463714">Zadnje izvajanje: <ph name="TIME" /></translation> <translation id="6656103420185847513">Urejanje mape</translation> <translation id="6657585470893396449">Geslo</translation> @@ -1288,6 +1293,7 @@ <translation id="7781829728241885113">Včeraj</translation> <translation id="7786246662347093005">{COUNT,plural, =1{Po 1 dnevu}one{Po {COUNT} dnevu}two{Po {COUNT} dnevih}few{Po {COUNT} dnevih}other{Po {COUNT} dnevih}}</translation> <translation id="7791543448312431591">Dodaj</translation> +<translation id="7792549458069452436">PRENESI APLIKACIJO</translation> <translation id="7807060072011926525">Zagotavlja Google</translation> <translation id="7812377703891978671">Do celotne zgodovine brskanja lahko dostopate tako, da izberete <ph name="HISTORY_BUTTON_ACCESSIBILITY_LABEL" />.</translation> <translation id="78146569776629510">Prenosi</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sq.xtb b/ios/chrome/app/strings/resources/ios_strings_sq.xtb index 7da370be..860a4231 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sq.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sq.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Prek dhe mbaj të shtypur një datë.</translation> <translation id="1959679933317802873">Në pritje të përmbajtjes</translation> <translation id="1967461193809857427">{count,plural, =1{Të vazhdohet me skedën ku e ke lënë në Android?}other{Të vazhdohet me skedat ku e ke lënë në Android?}}</translation> +<translation id="1972325230031091483">Do të shfletosh më shpejt sepse përmbajtja ngarkohet në mënyrë proaktive bazuar në vizitën aktuale në faqen e uebit</translation> <translation id="1973912524893600642">Mbaj të dhënat</translation> <translation id="1974060860693918893">Të përparuara</translation> <translation id="1980417445547898121">{count,plural, =1{Merr {count} skedë aktive së fundi nga pajisja jote tjetër në këtë iPhone}other{Merr {count} skeda aktive së fundi nga pajisja jote tjetër në këtë iPhone}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Modifiko detajet e ngjarjes dhe trokit te "Ruaj".</translation> <translation id="3240426699337459095">Lidhja u kopjua</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Nëse ndan edhe raportet e përdorimit të Chrome, ato raporte përfshijnë URL-të që viziton</translation> <translation id="3245744387817103524">Ndryshimi yt nuk mund të ruhej.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> nga <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Plotëso automatikisht fjalëkalimet</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">Joaktiv</translation> <translation id="4375040482473363939">Kërkim me kod QR</translation> <translation id="4378154925671717803">Telefoni</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> ka ndarë një fjalëkalim me ty për <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Trokit për ta ndryshuar gjuhën.</translation> <translation id="4405320213589929829">Përdor adresat në faqet e uebit për të marrë informacione dhe udhëzime lokale.</translation> <translation id="4420409367264901497">Redakto faqeshënuesin</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Po kontrollon fjalëkalimet…</translation> <translation id="5559567453458728487">Konverto njësitë matëse të gjetura në ueb</translation> <translation id="556042886152191864">Buton</translation> +<translation id="5572648434713976849">Do të marrësh sugjerime të përmirësuara në shiritin e adresave</translation> <translation id="5572684875078967866">Hapësira ruajtëse e informacioneve</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Gjurmo këtë pako}other{Gjurmo të gjitha pakot}}</translation> <translation id="5597915316964418992">Hap rrjetën e skedave</translation> @@ -1083,6 +1085,7 @@ <translation id="6642362222295953972">Kalo te skeda ekzistuese</translation> <translation id="6643016212128521049">Pastro</translation> <translation id="6645899968535965230">Kodi QR: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">URL-të që viziton dërgohen te Google për të parashikuar sajtet që mund të vizitosh në vijim</translation> <translation id="6647480763136463714">Ekzekutimi i fundit <ph name="TIME" /></translation> <translation id="6656103420185847513">Redakto dosjen</translation> <translation id="6657585470893396449">Fjalëkalimi</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb index c6272db..e69b0e6 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Dodirnite i zadržite datum.</translation> <translation id="1959679933317802873">Čeka se sadržaj</translation> <translation id="1967461193809857427">{count,plural, =1{Želite li da nastavite na kartici na kojoj ste stali na Android-u?}one{Želite li da nastavite na karticama na kojima ste stali na Android-u?}few{Želite li da nastavite na karticama na kojima ste stali na Android-u?}other{Želite li da nastavite na karticama na kojima ste stali na Android-u?}}</translation> +<translation id="1972325230031091483">Pregledaćete brže jer se sadržaj proaktivno učitava na osnovu aktuelne posete veb-stranici</translation> <translation id="1973912524893600642">Zadrži podatke</translation> <translation id="1974060860693918893">Napredne opcije</translation> <translation id="1980417445547898121">{count,plural, =1{Preuzmite {count} nedavno aktivnu karticu sa drugog uređaja na ovom iPhone-u}one{Preuzmite {count} nedavno aktivnu karticu sa drugog uređaja na ovom iPhone-u}few{Preuzmite {count} nedavno aktivne kartice sa drugog uređaja na ovom iPhone-u}other{Preuzmite {count} nedavno aktivnih kartica sa drugog uređaja na ovom iPhone-u}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">Izmenite detalje događaja i dodirnite Sačuvaj.</translation> <translation id="3240426699337459095">Link je kopiran</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Ako delite i Chrome izveštaje o korišćenju, ti izveštaji obuhvataju URL-ove koje posećujete</translation> <translation id="3245744387817103524">Čuvanje promene nije uspelo.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> od <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Automatski popuni lozinke</translation> @@ -633,7 +635,6 @@ <translation id="4371591986692297148">Neaktivno</translation> <translation id="4375040482473363939">Pretraga QR kodova</translation> <translation id="4378154925671717803">Telefon</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> deli sa vama lozinku za <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Dodirnite da biste promenili jezik</translation> <translation id="4405320213589929829">Koristite adrese na veb-stranicama da biste dobijali lokalne informacije i putanju.</translation> <translation id="4420409367264901497">Izmenite obeleživač</translation> @@ -859,6 +860,7 @@ <translation id="555749644339804659">Proveravaju se lozinke…</translation> <translation id="5559567453458728487">Konvertuj merne jedinice koje se nalaze na vebu</translation> <translation id="556042886152191864">Dugme</translation> +<translation id="5572648434713976849">Dobijaćete poboljšane predloge na traci za adresu</translation> <translation id="5572684875078967866">Memorijski prostor za podatke</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Prati ovaj paket}one{Prati sve pakete}few{Prati sve pakete}other{Prati sve pakete}}</translation> <translation id="5597915316964418992">Otvorite mrežu za kartice</translation> @@ -1085,6 +1087,7 @@ <translation id="6642362222295953972">Pređite na postojeću karticu</translation> <translation id="6643016212128521049">Obriši</translation> <translation id="6645899968535965230">QR kôd: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">URL-ovi koje posećujete se šalju Google-u da bi se predvideli sajtovi koje ćete možda sledeće posetiti</translation> <translation id="6647480763136463714">Poslednje pokretanje <ph name="TIME" /></translation> <translation id="6656103420185847513">Izmena direktorijuma</translation> <translation id="6657585470893396449">Lozinka</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr.xtb b/ios/chrome/app/strings/resources/ios_strings_sr.xtb index 361d0d5..3710eaa 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sr.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Додирните и задржите датум.</translation> <translation id="1959679933317802873">Чека се садржај</translation> <translation id="1967461193809857427">{count,plural, =1{Желите ли да наставите на картици на којој сте стали на Android-у?}one{Желите ли да наставите на картицама на којима сте стали на Android-у?}few{Желите ли да наставите на картицама на којима сте стали на Android-у?}other{Желите ли да наставите на картицама на којима сте стали на Android-у?}}</translation> +<translation id="1972325230031091483">Прегледаћете брже јер се садржај проактивно учитава на основу актуелне посете веб-страници</translation> <translation id="1973912524893600642">Задржи податке</translation> <translation id="1974060860693918893">Напредне опције</translation> <translation id="1980417445547898121">{count,plural, =1{Преузмите {count} недавно активну картицу са другог уређаја на овом iPhone-у}one{Преузмите {count} недавно активну картицу са другог уређаја на овом iPhone-у}few{Преузмите {count} недавно активне картице са другог уређаја на овом iPhone-у}other{Преузмите {count} недавно активних картица са другог уређаја на овом iPhone-у}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">Измените детаље догађаја и додирните Сачувај.</translation> <translation id="3240426699337459095">Линк је копиран</translation> <translation id="3244271242291266297">ММ</translation> +<translation id="3245429137663807393">Ако делите и Chrome извештаје о коришћењу, ти извештаји обухватају URL-ове које посећујете</translation> <translation id="3245744387817103524">Чување промене није успело.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> од <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Аутоматски попуни лозинке</translation> @@ -633,7 +635,6 @@ <translation id="4371591986692297148">Неактивно</translation> <translation id="4375040482473363939">Претрага QR кодова</translation> <translation id="4378154925671717803">Телефон</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> дели са вама лозинку за <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Додирните да бисте променили језик</translation> <translation id="4405320213589929829">Користите адресе на веб-страницама да бисте добијали локалне информације и путању.</translation> <translation id="4420409367264901497">Измените обележивач</translation> @@ -859,6 +860,7 @@ <translation id="555749644339804659">Проверавају се лозинке…</translation> <translation id="5559567453458728487">Конвертуј мерне јединице које се налазе на вебу</translation> <translation id="556042886152191864">Дугме</translation> +<translation id="5572648434713976849">Добијаћете побољшане предлоге на траци за адресу</translation> <translation id="5572684875078967866">Меморијски простор за податке</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Прати овај пакет}one{Прати све пакете}few{Прати све пакете}other{Прати све пакете}}</translation> <translation id="5597915316964418992">Отворите мрежу за картице</translation> @@ -1085,6 +1087,7 @@ <translation id="6642362222295953972">Пређите на постојећу картицу</translation> <translation id="6643016212128521049">Обриши</translation> <translation id="6645899968535965230">QR кôд: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">URL-ови које посећујете се шаљу Google-у да би се предвидели сајтови које ћете можда следеће посетити</translation> <translation id="6647480763136463714">Последње покретање <ph name="TIME" /></translation> <translation id="6656103420185847513">Измена директоријума</translation> <translation id="6657585470893396449">Лозинка</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sv.xtb b/ios/chrome/app/strings/resources/ios_strings_sv.xtb index c928e0b..bb0a285 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sv.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sv.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Tryck länge på ett datum.</translation> <translation id="1959679933317802873">Väntar på innehåll</translation> <translation id="1967461193809857427">{count,plural, =1{Vill du fortsätta med fliken du använde på Android?}other{Vill du fortsätta med flikarna du använde på Android?}}</translation> +<translation id="1972325230031091483">Du surfar snabbare eftersom innehåll läses in proaktivt baserat på den webbsida du besöker för tillfället</translation> <translation id="1973912524893600642">Behåll data</translation> <translation id="1974060860693918893">Avancerat</translation> <translation id="1980417445547898121">{count,plural, =1{Flytta {count} flik som du använde nyligen på din andra enhet till denna iPhone}other{Flytta {count} flikar som du använde nyligen på din andra enhet till denna iPhone}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Redigera informationen om händelsen och tryck på Spara.</translation> <translation id="3240426699337459095">Länken har kopierats</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Om du även delar Chrome-användningsrapporter ingår webbadresserna du besöker i dessa rapporter</translation> <translation id="3245744387817103524">Det gick inte att spara ändringen.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> av <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Fyll i lösenord automatiskt</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">Inaktiv</translation> <translation id="4375040482473363939">Sök med QR-koder</translation> <translation id="4378154925671717803">Mobil</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> har delat ett lösenord med dig för <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Tryck för att byta språk.</translation> <translation id="4405320213589929829">Använd adresser på webbsidor för att få lokal information och vägbeskrivningar.</translation> <translation id="4420409367264901497">Redigera bokmärke</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Kontrollerar lösenord …</translation> <translation id="5559567453458728487">Konvertera måttenheter som hittas på webben</translation> <translation id="556042886152191864">Knapp</translation> +<translation id="5572648434713976849">Du får bättre förslag i adressfältet</translation> <translation id="5572684875078967866">Informationslagring</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Spåra den här försändelsen}other{Spåra alla försändelser}}</translation> <translation id="5597915316964418992">Öppna rutnätet med flikar</translation> @@ -1083,6 +1085,7 @@ <translation id="6642362222295953972">Byt till befintlig flik</translation> <translation id="6643016212128521049">Rensa</translation> <translation id="6645899968535965230">QR-kod: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Webbadresser som du besöker skickas till Google för att förutse vilka webbplatser du kanske vill besöka härnäst</translation> <translation id="6647480763136463714">Kördes senast <ph name="TIME" /></translation> <translation id="6656103420185847513">Redigera mapp</translation> <translation id="6657585470893396449">Lösenord</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sw.xtb b/ios/chrome/app/strings/resources/ios_strings_sw.xtb index df02393..f6858c81 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sw.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sw.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Gusa na ushikilie tarehe.</translation> <translation id="1959679933317802873">Inasubiri maudhui</translation> <translation id="1967461193809857427">{count,plural, =1{Ungependa kuendelea kutumia kichupo ulipoachia katika Android?}other{Ungependa kuendelea kutumia vichupo ulipoachia katika Android?}}</translation> +<translation id="1972325230031091483">Utavinjari kwa haraka zaidi kwa sababu maudhui hupakiwa kabla hujayaomba, kulingana na jinsi unavyotembelea ukurasa wa wavuti ulioufungua</translation> <translation id="1973912524893600642">Hifadhi data</translation> <translation id="1974060860693918893">Mipangilio ya kina</translation> <translation id="1980417445547898121">{count,plural, =1{Pata kichupo {count} ulichotumia hivi karibuni kwenye kifaa chako kingine katika iPhone hii}other{Pata vichupo {count} ulivyotumia hivi karibuni kwenye kifaa chako kingine katika iPhone hii}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Badilisha maelezo ya tukio kisha uguse “Hifadhi.“</translation> <translation id="3240426699337459095">Kiungo kimenakiliwa</translation> <translation id="3244271242291266297">MW</translation> +<translation id="3245429137663807393">Ikiwa pia unashiriki ripoti za matumizi ya Chrome, ripoti hizo zinajumuisha URL unazotembelea</translation> <translation id="3245744387817103524">Imeshindwa kuhifadhi mabadiliko uliyofanya.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> kati ya <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Jaza Manenosiri Kiotomatiki</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">Haitumiki</translation> <translation id="4375040482473363939">Tafuta msimbo wa QR</translation> <translation id="4378154925671717803">Simu</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> ameshiriki nawe nenosiri la <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Gusa ili ubadilishe lugha.</translation> <translation id="4405320213589929829">Tumia anwani zilizo kwenye kurasa za wavuti ili upate maelekezo na maelezo ya mahali ulipo.</translation> <translation id="4420409367264901497">Badilisha Alamisho</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Inakagua manenosiri…</translation> <translation id="5559567453458728487">Geuza vipimo vinavyopatikana kwenye wavuti</translation> <translation id="556042886152191864">Kitufe</translation> +<translation id="5572648434713976849">Utapata mapendekezo yaliyoboreshwa katika sehemu ya anwani</translation> <translation id="5572684875078967866">Nafasi ya Hifadhi ya Data</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Fuatilia Kifurushi Hiki}other{Fuatilia Vifurushi Vyote}}</translation> <translation id="5597915316964418992">Fungua Gridi ya Kichupo</translation> @@ -1083,6 +1085,7 @@ <translation id="6642362222295953972">Badilisha utumie kichupo kilichopo</translation> <translation id="6643016212128521049">Futa</translation> <translation id="6645899968535965230">Msimbo wa QR: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">URL unazotembelea hutumwa kwa Google ili kutabiri tovuti ambazo huenda ukazitembelea baadaye</translation> <translation id="6647480763136463714">Ulitekelezwa mara ya mwisho <ph name="TIME" /></translation> <translation id="6656103420185847513">Badilisha Folda</translation> <translation id="6657585470893396449">Nenosiri</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_strings_ta.xtb index 6a518d2..4beff2a4 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ta.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">தேதியைத் தொட்டுப் பிடிக்கவும்.</translation> <translation id="1959679933317802873">உள்ளடக்கத்தைப் பெறக் காத்திருக்கிறது</translation> <translation id="1967461193809857427">{count,plural, =1{Androidல் சமீபத்தில் செயலில் இருந்த பக்கத்தைப் பார்க்க வேண்டுமா?}other{Androidல் சமீபத்தில் செயலில் இருந்த பக்கங்களைப் பார்க்க வேண்டுமா?}}</translation> +<translation id="1972325230031091483">நீங்கள் தற்போது பார்க்கும் இணையப் பக்கத்தின் அடிப்படையில் உள்ளடக்கம் முன்கூட்டியே ஏற்றப்படுவதால் விரைவாக உலாவலாம்</translation> <translation id="1973912524893600642">தரவை அழிக்காதே</translation> <translation id="1974060860693918893">மேம்பட்டவை</translation> <translation id="1980417445547898121">{count,plural, =1{வேறொரு சாதனத்தில் சமீபத்தில் செயலில் இருந்த {count} பக்கத்தை இந்த iPhoneனில் பார்க்கலாம்}other{வேறொரு சாதனத்தில் சமீபத்தில் செயலில் இருந்த {count} பக்கங்களை இந்த iPhoneனில் பார்க்கலாம்}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">நிகழ்வு குறித்த விவரங்களை மாற்றிய பின்னர், “சேமி“ என்பதைத் தட்டவும்.</translation> <translation id="3240426699337459095">இணைப்பு நகலெடுக்கப்பட்டது</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Chrome உபயோக அறிக்கைகளைப் பகிர்ந்தாலும் நீங்கள் பார்வையிட்ட URLகள் அவற்றில் இருக்கும்</translation> <translation id="3245744387817103524">நீங்கள் செய்த மாற்றத்தைச் சேமிக்க முடியவில்லை.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> / <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">கடவுச்சொற்களைத் தானாக நிரப்பு</translation> @@ -633,7 +635,6 @@ <translation id="4371591986692297148">செயலில் இல்லை</translation> <translation id="4375040482473363939">QR குறியீட்டுத் தேடல்</translation> <translation id="4378154925671717803">மொபைல்</translation> -<translation id="4388983683160515185"><ph name="WEBSITE" /> தளத்திற்கான கடவுச்சொல்லை <ph name="FULL_NAME" /> உங்களுடன் பகிர்ந்துள்ளார்</translation> <translation id="4389019817280890563">மொழியை மாற்ற தட்டவும்.</translation> <translation id="4405320213589929829">உள்ளூர் தகவல்களையும் வழிகளையும் பெறுவதற்கு இணையப் பக்கங்களில் உள்ள முகவரிகளைப் பயன்படுத்தலாம்.</translation> <translation id="4420409367264901497">புக்மார்க்கை மாற்று</translation> @@ -859,6 +860,7 @@ <translation id="555749644339804659">சரிபார்க்கிறது…</translation> <translation id="5559567453458728487">இணையத்தில் கண்டறிந்த அளவீட்டு யூனிட்களை மாற்றும்</translation> <translation id="556042886152191864">பட்டன்</translation> +<translation id="5572648434713976849">முகவரிப் பட்டியில் இன்னும் துல்லியமான பரிந்துரைகள் காட்டப்படும்</translation> <translation id="5572684875078967866">தகவல் சேமிப்பகம்</translation> <translation id="5591792606924434384">{COUNT,plural, =1{இந்தப் பேக்கேஜைக் கண்காணி}other{அனைத்து பேக்கேஜ்களையும் கண்காணி}}</translation> <translation id="5597915316964418992">பக்கத்தின் கட்டக் கட்சியைத் திறக்கவும்</translation> @@ -1085,6 +1087,7 @@ <translation id="6642362222295953972">ஏற்கனவே திறந்துள்ள தாவலுக்கு மாறு</translation> <translation id="6643016212128521049">அழி</translation> <translation id="6645899968535965230">QR குறியீடு: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">நீங்கள் அடுத்து பார்வையிடக்கூடிய தளங்களைக் கணிப்பதற்காக, நீங்கள் பார்வையிடும் URLகள் Googleளுக்கு அனுப்பப்படும்</translation> <translation id="6647480763136463714">கடைசியாகச் சரிபார்த்தது: <ph name="TIME" /></translation> <translation id="6656103420185847513">ஃபோல்டரைத் திருத்து</translation> <translation id="6657585470893396449">கடவுச்சொல்</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_te.xtb b/ios/chrome/app/strings/resources/ios_strings_te.xtb index f4e37cd..fc1bf3e 100644 --- a/ios/chrome/app/strings/resources/ios_strings_te.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_te.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">తేదీని తాకి, నొక్కి ఉంచండి.</translation> <translation id="1959679933317802873">కంటెంట్ కోసం వేచి ఉంది</translation> <translation id="1967461193809857427">{count,plural, =1{Androidలో మీరు చివరిగా ఉపయోగించిన ట్యాబ్ను తెరవాలనుకుంటున్నారా?}other{Androidలో మీరు చివరిగా ఉపయోగించిన ట్యాబ్లను తెరవాలనుకుంటున్నారా?}}</translation> +<translation id="1972325230031091483">మీరు ప్రస్తుతం సందర్శించిన వెబ్పేజీ ఆధారంగా కంటెంట్ ముందస్తుగా లోడ్ చేయబడింది, కాబట్టి మీరు వేగంగా బ్రౌజ్ చేయగలరు</translation> <translation id="1973912524893600642">డేటాను అలాగే ఉంచు</translation> <translation id="1974060860693918893">అధునాతన సెట్టింగ్లు</translation> <translation id="1980417445547898121">{count,plural, =1{ఈ iPhoneలోని మీ ఇతర పరికరం నుండి ఇటీవల యాక్టివ్గా ఉన్న {count} ట్యాబ్ను పొందండి}other{ఈ iPhoneలోని మీ ఇతర పరికరం నుండి ఇటీవల యాక్టివ్గా ఉన్న {count} ట్యాబ్లను పొందండి}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">ఈవెంట్ వివరాలను ఎడిట్ చేసి, "సేవ్"ను ట్యాప్ చేయండి.</translation> <translation id="3240426699337459095">లింక్ కాపీ చేయబడింది</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">మీరు Chrome వినియోగ రిపోర్ట్లను కూడా షేర్ చేస్తున్నట్లయితే, ఆ రిపోర్ట్లలో మీరు సందర్శించే URLలు ఉంటాయి</translation> <translation id="3245744387817103524">మీ మార్పు సేవ్ చేయడం సాధ్యపడలేదు.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="NUM_SUGGESTIONS" />లో <ph name="INDEX" /></translation> <translation id="3264775633254836593">పాస్వర్డ్లను ఆటోఫిల్ చేయండి</translation> @@ -634,7 +636,6 @@ <translation id="4371591986692297148">ఇన్యాక్టివ్</translation> <translation id="4375040482473363939">QR కోడ్ శోధన</translation> <translation id="4378154925671717803">ఫోన్</translation> -<translation id="4388983683160515185"><ph name="WEBSITE" />కు సంబంధించిన పాస్వర్డ్ను <ph name="FULL_NAME" /> మీకు షేర్ చేశారు</translation> <translation id="4389019817280890563">భాషను మార్చడానికి నొక్కండి.</translation> <translation id="4405320213589929829">లోకల్ సమాచారం, దిశలను పొందడానికి వెబ్ పేజీలలో అడ్రస్లను ఉపయోగించండి.</translation> <translation id="4420409367264901497">బుక్మార్క్ను ఎడిట్ చేయండి</translation> @@ -861,6 +862,7 @@ <translation id="555749644339804659">పాస్వర్డ్ల చెకింగ్…</translation> <translation id="5559567453458728487">వెబ్లో కనుగొనబడిన మెజర్మెంట్ యూనిట్లను మార్చండి</translation> <translation id="556042886152191864">బటన్</translation> +<translation id="5572648434713976849">మీరు అడ్రస్ బార్లో మెరుగైన సూచనలను పొందుతారు</translation> <translation id="5572684875078967866">సమాచార స్టోరేజ్</translation> <translation id="5591792606924434384">{COUNT,plural, =1{ఈ ప్యాకేజీని ట్రాక్ చేయండి}other{ప్యాకేజీలన్నింటినీ ట్రాక్ చేయండి}}</translation> <translation id="5597915316964418992">ట్యాబ్ గ్రిడ్ను తెరవండి</translation> @@ -1087,6 +1089,7 @@ <translation id="6642362222295953972">ప్రస్తుత ట్యాబ్కు మారు</translation> <translation id="6643016212128521049">క్లియర్ చేయండి</translation> <translation id="6645899968535965230">QR కోడ్: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">మీరు తర్వాత ఏ సైట్లను సందర్శించవచ్చు అనే దానిని అంచనా వేయడానికి మీరు సందర్శించే URLలు Googleకు పంపబడతాయి</translation> <translation id="6647480763136463714">చివరిసారిగా చెక్ చేసిన సమయం <ph name="TIME" /></translation> <translation id="6656103420185847513">ఫోల్డర్ను ఎడిట్ చేయండి</translation> <translation id="6657585470893396449">పాస్వర్డ్</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_th.xtb b/ios/chrome/app/strings/resources/ios_strings_th.xtb index e26d956..ffd9f9d 100644 --- a/ios/chrome/app/strings/resources/ios_strings_th.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_th.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">แตะวันที่ค้างไว้</translation> <translation id="1959679933317802873">กำลังรอเนื้อหา</translation> <translation id="1967461193809857427">{count,plural, =1{ดูแท็บที่ค้างไว้จาก Android ต่อไหม}other{ดูแท็บที่ค้างไว้จาก Android ต่อไหม}}</translation> +<translation id="1972325230031091483">คุณจะท่องเว็บได้เร็วขึ้นเนื่องจากมีการโหลดเนื้อหาโดยอิงจากหน้าเว็บที่กำลังเข้าชมโดยที่คุณไม่ต้องขอ</translation> <translation id="1973912524893600642">เก็บข้อมูลไว้</translation> <translation id="1974060860693918893">ขั้นสูง</translation> <translation id="1980417445547898121">{count,plural, =1{รับแท็บที่เพิ่งใช้งาน {count} แท็บจากอุปกรณ์อื่นบน iPhone เครื่องนี้}other{รับแท็บที่เพิ่งใช้งาน {count} แท็บจากอุปกรณ์อื่นบน iPhone เครื่องนี้}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">แก้ไขรายละเอียดกิจกรรม แล้วแตะ "บันทึก"</translation> <translation id="3240426699337459095">คัดลอกลิงก์แล้ว</translation> <translation id="3244271242291266297">ดด</translation> +<translation id="3245429137663807393">หากคุณแชร์รายงานการใช้งาน Chrome ด้วย รายงานดังกล่าวจะรวม URL ที่คุณเข้าชม</translation> <translation id="3245744387817103524">บันทึกการเปลี่ยนแปลงไม่ได้</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> จาก <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">ป้อนรหัสผ่านอัตโนมัติ</translation> @@ -557,6 +559,7 @@ <translation id="3922310737605261887">ค้นหาข้อความที่คัดลอก</translation> <translation id="3928666092801078803">รวมข้อมูลของฉัน</translation> <translation id="3929457972718048006">ที่อยู่</translation> +<translation id="3948600256434252210">คุณสามารถปัดไปทางขวาเพื่อท่องเว็บในโหมดไม่ระบุตัวตน</translation> <translation id="3955822496205734389">คุณมีรหัสผ่านที่ไม่รัดกุม</translation> <translation id="3959736869653157332">เมนู → แท็บใหม่ที่ไม่ระบุตัวตน</translation> <translation id="3962326069546168954">บันทึก</translation> @@ -633,7 +636,6 @@ <translation id="4371591986692297148">ไม่ได้ใช้งาน</translation> <translation id="4375040482473363939">ค้นหาโค้ด QR</translation> <translation id="4378154925671717803">โทรศัพท์</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> ได้แชร์รหัสผ่านกับคุณสำหรับ <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">แตะเพื่อเปลี่ยนภาษา</translation> <translation id="4405320213589929829">ใช้ที่อยู่บนหน้าเว็บเพื่อรับข้อมูลและเส้นทางในพื้นที่</translation> <translation id="4420409367264901497">แก้ไขบุ๊กมาร์ก</translation> @@ -662,6 +664,7 @@ <translation id="4539187448429948815">{count,plural, =1{คำแนะนำที่เติมข้อความอัตโนมัติที่บันทึกไว้ {count} รายการพร้อมให้ใช้งานอยู่เหนือแป้นพิมพ์}other{คำแนะนำที่เติมข้อความอัตโนมัติที่บันทึกไว้ {count} รายการพร้อมให้ใช้งานอยู่เหนือแป้นพิมพ์}}</translation> <translation id="4540780316273593836">เกิดข้อผิดพลาด</translation> <translation id="4550040941166547650">เฉพาะในอุปกรณ์นี้</translation> +<translation id="4564893319561643483">ซ่อน "<ph name="TITLE" />"</translation> <translation id="457292989631956153">{COUNT,plural, =1{ปิดแท็บที่ไม่ได้ใช้งาน {COUNT} แท็บใช่ไหม}other{ปิดแท็บที่ไม่ได้ใช้งาน {COUNT} แท็บใช่ไหม}}</translation> <translation id="457386861538956877">เพิ่มเติม...</translation> <translation id="4587589328781138893">เว็บไซต์</translation> @@ -859,6 +862,7 @@ <translation id="555749644339804659">กำลังตรวจสอบรหัสผ่าน…</translation> <translation id="5559567453458728487">แปลงหน่วยวัดที่พบในเว็บ</translation> <translation id="556042886152191864">ปุ่ม</translation> +<translation id="5572648434713976849">คุณจะได้รับคำแนะนำที่ดีขึ้นในแถบที่อยู่</translation> <translation id="5572684875078967866">พื้นที่เก็บข้อมูล</translation> <translation id="5591792606924434384">{COUNT,plural, =1{ติดตามพัสดุนี้}other{ติดตามพัสดุทั้งหมด}}</translation> <translation id="5597915316964418992">เปิดตารางกริดของแท็บ</translation> @@ -1085,6 +1089,7 @@ <translation id="6642362222295953972">เปลี่ยนไปใช้แท็บที่มีอยู่</translation> <translation id="6643016212128521049">ล้าง</translation> <translation id="6645899968535965230">คิวอาร์โค้ด: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">ระบบจะส่ง URL ที่คุณเข้าชมไปยัง Google เพื่อคาดคะเนเว็บไซต์ต่อไปที่คุณอาจเข้าชม</translation> <translation id="6647480763136463714">เรียกใช้ล่าสุด <ph name="TIME" /></translation> <translation id="6656103420185847513">แก้ไขโฟลเดอร์</translation> <translation id="6657585470893396449">รหัสผ่าน</translation> @@ -1262,6 +1267,7 @@ <translation id="7658239707568436148">ยกเลิก</translation> <translation id="7666861622396822790">คุณจัดการตัวเลือกนี้ได้ใน<ph name="BEGIN_LINK" />การตั้งค่าเนื้อหา<ph name="END_LINK" /></translation> <translation id="7671141431838911305">ติดตั้ง</translation> +<translation id="7673346542062368520">คุณสามารถปัดไปทางซ้ายเพื่อท่องเว็บในโหมดไม่ระบุตัวตน</translation> <translation id="7679915578945954324">คัดลอกที่อยู่เว็บไซต์แล้ว</translation> <translation id="7687508192620387263">ไฟล์ปฏิทินพร้อมให้ใช้งานแล้ว</translation> <translation id="7701040980221191251">ไม่มี</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_strings_tr.xtb index 2fd9a85..ad01389 100644 --- a/ios/chrome/app/strings/resources/ios_strings_tr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Bir tarihe dokunup basılı tutun.</translation> <translation id="1959679933317802873">İçerik bekleniyor</translation> <translation id="1967461193809857427">{count,plural, =1{Android'de açık bıraktığınız sekme getirilsin mi?}other{Android'de açık bıraktığınız sekmeler getirilsin mi?}}</translation> +<translation id="1972325230031091483">İçerik, mevcut web sayfası ziyaretinize göre proaktif olarak yüklendiğinden internette daha hızlı gezinebilirsiniz</translation> <translation id="1973912524893600642">Verileri Koru</translation> <translation id="1974060860693918893">Gelişmiş</translation> <translation id="1980417445547898121">{count,plural, =1{Yakın zamanda diğer cihazınızda etkin olan {count} sekmeyi bu iPhone'a aktarın}other{Yakın zamanda diğer cihazınızda etkin olan {count} sekmeyi bu iPhone'a aktarın}}</translation> @@ -433,6 +434,7 @@ <translation id="3235242129752692527">Etkinlik ayrıntılarını düzenleyip "Kaydet"e dokunun.</translation> <translation id="3240426699337459095">Bağlantı kopyalandı</translation> <translation id="3244271242291266297">AA</translation> +<translation id="3245429137663807393">Chrome kullanım raporlarını da paylaşıyorsanız, ziyaret ettiğiniz URL'ler de bu raporlar kapsamında paylaşılır</translation> <translation id="3245744387817103524">Yaptığınız değişiklik kaydedilemedi.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> / <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Şifreleri Otomatik Olarak Doldurun</translation> @@ -632,7 +634,6 @@ <translation id="4371591986692297148">Etkin değil</translation> <translation id="4375040482473363939">QR kodu Arama</translation> <translation id="4378154925671717803">Telefon</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> sizinle <ph name="WEBSITE" /> için bir şifre paylaştı</translation> <translation id="4389019817280890563">Dili değiştirmek için dokunun.</translation> <translation id="4405320213589929829">Yerel bilgileri ve yol tariflerini görmek için web sayfalarındaki adresleri kullanın.</translation> <translation id="4420409367264901497">Yer İşaretini Düzenle</translation> @@ -857,6 +858,7 @@ <translation id="555749644339804659">Şifre kontrol ediliyor…</translation> <translation id="5559567453458728487">Web'de bulunan ölçüm birimlerini dönüştürün</translation> <translation id="556042886152191864">Düğme</translation> +<translation id="5572648434713976849">Adres çubuğunda daha iyi öneriler görürsünüz</translation> <translation id="5572684875078967866">Bilgi Depolama</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Bu Paketi Takip Et}other{Tüm Paketleri Takip Et}}</translation> <translation id="5597915316964418992">Sekme Izgarasını Açın</translation> @@ -1083,6 +1085,7 @@ <translation id="6642362222295953972">Mevcut sekmeye geçiş yapın</translation> <translation id="6643016212128521049">Temizle</translation> <translation id="6645899968535965230">QR Kodu: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Ziyaret ettiğiniz URL'ler, daha sonra hangi siteleri ziyaret edebileceğinizi tahmin etmek için Google'a gönderilir</translation> <translation id="6647480763136463714">Son çalıştırma: <ph name="TIME" /></translation> <translation id="6656103420185847513">Klasörü Düzenleyin</translation> <translation id="6657585470893396449">Şifre</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uk.xtb b/ios/chrome/app/strings/resources/ios_strings_uk.xtb index 395c77d..efcae69 100644 --- a/ios/chrome/app/strings/resources/ios_strings_uk.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_uk.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Натисніть і утримуйте дату.</translation> <translation id="1959679933317802873">Очікується контент</translation> <translation id="1967461193809857427">{count,plural, =1{Відкрити вкладку, яку ви нещодавно переглядали на пристрої Android?}one{Відкрити вкладки, які ви нещодавно переглядали на пристрої Android?}few{Відкрити вкладки, які ви нещодавно переглядали на пристрої Android?}many{Відкрити вкладки, які ви нещодавно переглядали на пристрої Android?}other{Відкрити вкладки, які ви нещодавно переглядали на пристрої Android?}}</translation> +<translation id="1972325230031091483">Ви будете швидше переглядати веб-сторінки, оскільки контент попередньо завантажується на основі поточної відкритої веб-сторінки</translation> <translation id="1973912524893600642">Зберігати дані</translation> <translation id="1974060860693918893">Розширені</translation> <translation id="1980417445547898121">{count,plural, =1{Перегляньте на цьому пристрої iPhone {count} вкладку, яку ви нещодавно відкривали на своєму іншому пристрої}one{Перегляньте на цьому пристрої iPhone {count} вкладку, яку ви нещодавно відкривали на своєму іншому пристрої}few{Перегляньте на цьому пристрої iPhone {count} вкладки, які ви нещодавно відкривали на своєму іншому пристрої}many{Перегляньте на цьому пристрої iPhone {count} вкладок, які ви нещодавно відкривали на своєму іншому пристрої}other{Перегляньте на цьому пристрої iPhone {count} вкладки, які ви нещодавно відкривали на своєму іншому пристрої}}</translation> @@ -291,6 +292,7 @@ <translation id="2547458583188611426">Синхронізація не працює. Щоб почати синхронізацію, введіть парольну фразу.</translation> <translation id="2551153019974022505">Помилка облікового запису</translation> <translation id="2556092377360758201">Захист вимкнено (не рекомендовано)</translation> +<translation id="2561375093019333908">ВІДКРИТИ</translation> <translation id="2562041823070056534">Надсилання на пристрій <ph name="DEVICE_NAME" />…</translation> <translation id="2576499762020411840">Зберігати паролі в обліковому записі Google і використовувати їх</translation> <translation id="2577522251608256362">Околиці</translation> @@ -433,6 +435,7 @@ <translation id="3235242129752692527">Змініть деталі події і натисніть "Зберегти".</translation> <translation id="3240426699337459095">Посилання скопійовано</translation> <translation id="3244271242291266297">ММ</translation> +<translation id="3245429137663807393">Якщо ви також будете надсилати звіти про використання Chrome, у них буде включено дані про відвідані URL-адреси</translation> <translation id="3245744387817103524">Не вдалося зберегти зміну.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> з <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Автозаповнення паролів</translation> @@ -632,7 +635,6 @@ <translation id="4371591986692297148">неактивна</translation> <translation id="4375040482473363939">Шукати за QR-кодом</translation> <translation id="4378154925671717803">Телефон</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> надає вам доступ до пароля для сайту <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Натисніть, щоб змінити мову.</translation> <translation id="4405320213589929829">Використовуйте адреси на веб-сторінках, щоб отримувати місцеву інформацію і прокладати маршрути.</translation> <translation id="4420409367264901497">Редагувати закладку</translation> @@ -848,6 +850,7 @@ <translation id="5513681519188741830"><ph name="TIME" /> год тому</translation> <translation id="5525269841082836315">Створити парол.фразу</translation> <translation id="553151287733286479">{COUNT,plural, =1{{COUNT} ненадійний пароль}one{{COUNT} ненадійний пароль}few{{COUNT} ненадійні паролі}many{{COUNT} ненадійних паролів}other{{COUNT} ненадійного пароля}}</translation> +<translation id="5532545557415295622">Вікно часу бездіяльності</translation> <translation id="5542540507657872337">Знайдено <ph name="COUNT" /></translation> <translation id="5548760955356983418">За допомогою Handoff можна почати переглядати веб-сайт на цьому пристрої, а потім легко продовжити на пристрої Mac. Відкритий веб-сайт з’явиться на панелі Dock на пристрої Mac. @@ -857,6 +860,7 @@ <translation id="555749644339804659">Перевірка паролів…</translation> <translation id="5559567453458728487">Конвертувати одиниці вимірювання на веб-сторінках</translation> <translation id="556042886152191864">Кнопка</translation> +<translation id="5572648434713976849">В адресному рядку з’являтимуться покращені підказки</translation> <translation id="5572684875078967866">Обсяг даних</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Відстежувати це відправлення}one{Відстежувати всі відправлення}few{Відстежувати всі відправлення}many{Відстежувати всі відправлення}other{Відстежувати всі відправлення}}</translation> <translation id="5597915316964418992">Відкрийте сітку вкладок</translation> @@ -1083,6 +1087,7 @@ <translation id="6642362222295953972">Перейти на наявну вкладку</translation> <translation id="6643016212128521049">Очистити</translation> <translation id="6645899968535965230">QR-код: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">URL-адреси сторінок, які ви відвідуєте, надсилаються в Google, щоб ми могли передбачити, які сайти ви можете відвідати наступними</translation> <translation id="6647480763136463714">Востаннє запущено <ph name="TIME" /></translation> <translation id="6656103420185847513">Редагувати папку</translation> <translation id="6657585470893396449">Пароль</translation> @@ -1288,6 +1293,7 @@ <translation id="7781829728241885113">Учора</translation> <translation id="7786246662347093005">{COUNT,plural, =1{Через 1 день}one{Через {COUNT} день}few{Через {COUNT} дні}many{Через {COUNT} днів}other{Через {COUNT} дня}}</translation> <translation id="7791543448312431591">Додати</translation> +<translation id="7792549458069452436">ЗАВАНТАЖИТИ ДОДАТОК</translation> <translation id="7807060072011926525">Надано компанією Google</translation> <translation id="7812377703891978671">Щоб відкрити всю історію веб-перегляду, натисніть кнопку "<ph name="HISTORY_BUTTON_ACCESSIBILITY_LABEL" />".</translation> <translation id="78146569776629510">Завантаження</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ur.xtb b/ios/chrome/app/strings/resources/ios_strings_ur.xtb index 74249e6..978ec34 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ur.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ur.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">کسی تاریخ کو ٹچ کریں اور دبائے رکھیں۔</translation> <translation id="1959679933317802873">مواد کے منتظر</translation> <translation id="1967461193809857427">{count,plural, =1{وہ ٹیب منتخب کریں جو آپ نے Android پر چھوڑا تھا؟}other{وہ ٹیبز منتخب کریں جنہیں آپ نے Android پر چھوڑا تھا؟}}</translation> +<translation id="1972325230031091483">آپ تیزی سے براؤز کریں گے کیونکہ مواد آپ کے موجودہ ویب صفحہ کے ملاحظہ کی بنیاد پر فعال طور پر لوڈ ہوتا ہے</translation> <translation id="1973912524893600642">ڈیٹا باقی رکھیں</translation> <translation id="1974060860693918893">جدید ترین</translation> <translation id="1980417445547898121">{count,plural, =1{اس iPhone پر اپنے دوسرے آلے سے حال ہی میں فعال اپنے {count} ٹیب حاصل کریں}other{اس iPhone پر اپنے دوسرے آلے سے حال ہی میں فعال اپنے {count} ٹیبز حاصل کریں}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">ایونٹ کی تفصیلات میں ترمیم کریں اور "محفوظ کریں" پر تھپتھپائیں۔</translation> <translation id="3240426699337459095">لنک کاپی ہوگیا</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">اگر آپ Chrome کے استعمال کی رپورٹس کا بھی اشتراک کرتے ہیں تو ان رپورٹس میں آپ کے ملاحظہ کردہ URLs شامل ہوں گے</translation> <translation id="3245744387817103524">آپ کی تبدیلی محفوظ نہیں ہو سکی۔</translation> <translation id="3252394070589632019"><ph name="VALUE" />، <ph name="ADDITIONAL_INFO" />، <ph name="INDEX" /> از <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">آٹو فل پاس ورڈز</translation> @@ -634,7 +636,6 @@ <translation id="4371591986692297148">غیر فعال ہے</translation> <translation id="4375040482473363939">QR کوڈ کی تلاش</translation> <translation id="4378154925671717803">فون</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> نے <ph name="WEBSITE" /> کے لیے آپ کے ساتھ پاس ورڈ کا اشتراک کیا ہے</translation> <translation id="4389019817280890563">زبان تبدیل کرنے کے لیے تھپتھپائیں۔</translation> <translation id="4405320213589929829">مقامی معلومات اور ڈائریکشنز حاصل کرنے کے لیے ویب صفحات پر پتے استعمال کریں۔</translation> <translation id="4420409367264901497">بُک مارک میں ترمیم کریں</translation> @@ -861,6 +862,7 @@ <translation id="555749644339804659">پاس ورڈز چیک ہو رہے ہیں…</translation> <translation id="5559567453458728487">ویب پر تبدیلی کی پیمائش کے یونٹس ملے</translation> <translation id="556042886152191864">بٹن</translation> +<translation id="5572648434713976849">آپ کو ایڈریس بار میں بہتر کردہ تجاویز حاصل ہوں گی</translation> <translation id="5572684875078967866">معلوماتی اسٹوریج</translation> <translation id="5591792606924434384">{COUNT,plural, =1{اس پیکیج کو ٹریک کریں}other{تمام پیکیجز کو ٹریک کریں}}</translation> <translation id="5597915316964418992">ٹیب گرڈ کھولیں</translation> @@ -1087,6 +1089,7 @@ <translation id="6642362222295953972">موجودہ ٹیب پر سوئچ کریں</translation> <translation id="6643016212128521049">صاف کریں</translation> <translation id="6645899968535965230">QR کوڈ: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">آپ کے ملاحظہ کردہ URLs اس بات کی پیشنگوئی کرنے کے لیے Google کو بھیجے جاتے ہیں کہ آپ اگلی بار کون سی سائٹس ملاحظہ کر سکتے ہیں</translation> <translation id="6647480763136463714">آخری بار <ph name="TIME" /> کو چلایا گیا</translation> <translation id="6656103420185847513">فولڈر میں ترمیم کریں</translation> <translation id="6657585470893396449">پاس ورڈ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uz.xtb b/ios/chrome/app/strings/resources/ios_strings_uz.xtb index 1601d958..6bfee2c 100644 --- a/ios/chrome/app/strings/resources/ios_strings_uz.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_uz.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Sanani bosib turing.</translation> <translation id="1959679933317802873">Kontent kutilmoqda</translation> <translation id="1967461193809857427">{count,plural, =1{Androidda koʻrilgan varaq ochilsinmi?}other{Androidda koʻrilgan varaqlar ochilsinmi?}}</translation> +<translation id="1972325230031091483">Sahifalar joriy tashrifi asosida oldindan yuklanadi va tezroq ochiladi</translation> <translation id="1973912524893600642">Maʼlumotlar joyida qolsin</translation> <translation id="1974060860693918893">Qo‘shimcha</translation> <translation id="1980417445547898121">{count,plural, =1{Bu iPhoneda boshqa qurilmada yaqinda ochilgan {count} ta varaqni olish}other{Bu iPhoneda boshqa qurilmada yaqinda ochilgan {count} ta varaqni olish}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">Tadbir tafsilotlarini tahrirlab, “Saqlash” tugmasini bosing.</translation> <translation id="3240426699337459095">Nusxalandi</translation> <translation id="3244271242291266297">OO</translation> +<translation id="3245429137663807393">Shuningdek, Chrome foydalanish statistikasini ham ulashsangiz, bu hisobotlarga siz tashrif qilgan URL manzillar ham kiradi</translation> <translation id="3245744387817103524">Oʻzgarish saqlanmadi.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> / <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Parollarni avtomatik kiritish</translation> @@ -633,7 +635,6 @@ <translation id="4371591986692297148">Nofaol</translation> <translation id="4375040482473363939">QR kod asosida qidirish</translation> <translation id="4378154925671717803">Telefon</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> <ph name="WEBSITE" /> uchun parolni ulashdi</translation> <translation id="4389019817280890563">Tilni almashtirish uchun bosing.</translation> <translation id="4405320213589929829">Mahalliy maʼlumotlar va marshrutlarni olish uchun veb-sahifalarda manzillardan foydalaning.</translation> <translation id="4420409367264901497">Bukmarkni tahrirlash</translation> @@ -859,6 +860,7 @@ <translation id="555749644339804659">Parollar tekshirilmoqda…</translation> <translation id="5559567453458728487">Internetda topilgan oʻlchov birliklarini oʻgirish</translation> <translation id="556042886152191864">Tugma</translation> +<translation id="5572648434713976849">Manzillar qatorida yanada yaxshi takliflar olasiz</translation> <translation id="5572684875078967866">Axborot hajmi</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Bu paketni kuzatish}other{Barcha paketlarni kuzatish}}</translation> <translation id="5597915316964418992">Varaqlar jadvalida ochish</translation> @@ -1085,6 +1087,7 @@ <translation id="6642362222295953972">Oldin ochilgan varaqqa oʻtish</translation> <translation id="6643016212128521049">Tozalash</translation> <translation id="6645899968535965230">QR-kod: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Kelgusida qaysi saytlarga tashrif buyurishingizni bashorat qilish maqsadida siz tashrif qilgan URL manzillar Googlega yuborildi</translation> <translation id="6647480763136463714">Oxirgi tekshiruv: <ph name="TIME" /></translation> <translation id="6656103420185847513">Jildni o‘zgartirish</translation> <translation id="6657585470893396449">Parol</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_vi.xtb b/ios/chrome/app/strings/resources/ios_strings_vi.xtb index 73590b8..a26369a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_vi.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_vi.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Chạm và giữ ngày bạn muốn tạo sự kiện.</translation> <translation id="1959679933317802873">Đang chờ nội dung</translation> <translation id="1967461193809857427">{count,plural, =1{Xem tiếp thẻ bạn đang xem dở trên Android?}other{Xem tiếp các thẻ bạn đang xem dở trên Android?}}</translation> +<translation id="1972325230031091483">Bạn sẽ duyệt web nhanh hơn vì nội dung được tải chủ động dựa trên trang web bạn đang truy cập</translation> <translation id="1973912524893600642">Giữ lại dữ liệu</translation> <translation id="1974060860693918893">Nâng cao</translation> <translation id="1980417445547898121">{count,plural, =1{Mở {count} thẻ hoạt động gần đây trên thiết bị khác của bạn bằng iPhone này}other{Mở {count} thẻ hoạt động gần đây trên thiết bị khác của bạn bằng iPhone này}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">Chỉnh sửa chi tiết sự kiện rồi nhấn vào "Lưu".</translation> <translation id="3240426699337459095">Đã sao chép đường liên kết</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Nếu bạn cũng chia sẻ báo cáo sử dụng của Chrome, các báo cáo đó sẽ bao gồm cả những URL bạn truy cập</translation> <translation id="3245744387817103524">Không thể lưu thay đổi của bạn.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> trong số <ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Tự động điền mật khẩu</translation> @@ -633,7 +635,6 @@ <translation id="4371591986692297148">Không hoạt động</translation> <translation id="4375040482473363939">Tìm kiếm mã QR</translation> <translation id="4378154925671717803">Điện thoại</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> đã chia sẻ với bạn một mật khẩu cho <ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Nhấn để thay đổi ngôn ngữ.</translation> <translation id="4405320213589929829">Sử dụng địa chỉ trên các trang web để xem thông tin địa phương và đường đi.</translation> <translation id="4420409367264901497">Chỉnh sửa dấu trang</translation> @@ -859,6 +860,7 @@ <translation id="555749644339804659">Đang kiểm tra mật khẩu…</translation> <translation id="5559567453458728487">Chuyển đổi đơn vị đo lường có trên web</translation> <translation id="556042886152191864">Nút</translation> +<translation id="5572648434713976849">Bạn sẽ nhận được nội dung đề xuất cải tiến trên thanh địa chỉ</translation> <translation id="5572684875078967866">Lưu trữ thông tin</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Theo dõi gói hàng này}other{Theo dõi tất cả các gói hàng}}</translation> <translation id="5597915316964418992">Mở lưới thẻ</translation> @@ -1085,6 +1087,7 @@ <translation id="6642362222295953972">Chuyển sang thẻ đang mở</translation> <translation id="6643016212128521049">Xóa</translation> <translation id="6645899968535965230">Mã QR: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Các URL bạn truy cập sẽ được gửi cho Google nhằm dự đoán những trang web có thể sắp tới bạn sẽ truy cập</translation> <translation id="6647480763136463714">Lần chạy gần nhất: <ph name="TIME" /></translation> <translation id="6656103420185847513">Chỉnh sửa thư mục</translation> <translation id="6657585470893396449">Mật khẩu</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb index f83c7a6..f15c263 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">轻触并按住某个日期。</translation> <translation id="1959679933317802873">正在等待内容</translation> <translation id="1967461193809857427">{count,plural, =1{要继续使用之前在 Android 设备上打开的标签页吗?}other{要继续使用之前在 Android 设备上打开的标签页吗?}}</translation> +<translation id="1972325230031091483">您的浏览速度会更快,因为系统会根据您当前访问的网页主动加载内容</translation> <translation id="1973912524893600642">保留数据</translation> <translation id="1974060860693918893">高级</translation> <translation id="1980417445547898121">{count,plural, =1{在这部 iPhone 上打开最近在其他设备上使用的 {count} 个标签页}other{在这部 iPhone 上打开最近在其他设备上使用的 {count} 个标签页}}</translation> @@ -291,6 +292,7 @@ <translation id="2547458583188611426">同步功能无法正常运行。若要开始同步,请输入您的口令。</translation> <translation id="2551153019974022505">账号错误</translation> <translation id="2556092377360758201">不保护(不建议)</translation> +<translation id="2561375093019333908">打开</translation> <translation id="2562041823070056534">正在发送到“<ph name="DEVICE_NAME" />”…</translation> <translation id="2576499762020411840">将密码保存到您的 Google 账号并自动填充</translation> <translation id="2577522251608256362">街区</translation> @@ -433,6 +435,7 @@ <translation id="3235242129752692527">修改活动详细信息,然后点按“保存”。</translation> <translation id="3240426699337459095">已复制链接</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">如果您还共享了 Chrome 使用情况报告,这些报告会包含您访问过的网址</translation> <translation id="3245744387817103524">无法保存您的更改。</translation> <translation id="3252394070589632019"><ph name="VALUE" />,<ph name="ADDITIONAL_INFO" />,第 <ph name="INDEX" /> 项建议(共 <ph name="NUM_SUGGESTIONS" /> 项)</translation> <translation id="3264775633254836593">自动填充密码</translation> @@ -632,7 +635,6 @@ <translation id="4371591986692297148">已停用</translation> <translation id="4375040482473363939">QR 码搜索</translation> <translation id="4378154925671717803">电话</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" />与您分享了一个用于登录 <ph name="WEBSITE" /> 的密码</translation> <translation id="4389019817280890563">点按此行即可更改语言。</translation> <translation id="4405320213589929829">使用网页上的地址来获取本地信息和路线。</translation> <translation id="4420409367264901497">修改书签</translation> @@ -848,6 +850,7 @@ <translation id="5513681519188741830"><ph name="TIME" /> 小时前</translation> <translation id="5525269841082836315">创建密码</translation> <translation id="553151287733286479">{COUNT,plural, =1{有 {COUNT} 个安全系数低的密码}other{有 {COUNT} 个安全系数低的密码}}</translation> +<translation id="5532545557415295622">空闲超时对话框</translation> <translation id="5542540507657872337">找到了 <ph name="COUNT" /> 个</translation> <translation id="5548760955356983418">借助 Handoff 功能,您在此设备上浏览网站时,可轻松改用 Mac 继续浏览。当前打开的网站将显示在 Mac 的 Dock 中。 @@ -857,6 +860,7 @@ <translation id="555749644339804659">正在检查密码…</translation> <translation id="5559567453458728487">转换在网上找到的计量单位</translation> <translation id="556042886152191864">按钮</translation> +<translation id="5572648434713976849">您会在地址栏中获得经过改进的建议</translation> <translation id="5572684875078967866">信息存储空间</translation> <translation id="5591792606924434384">{COUNT,plural, =1{跟踪此包裹}other{跟踪所有包裹}}</translation> <translation id="5597915316964418992">打开标签页网格</translation> @@ -1083,6 +1087,7 @@ <translation id="6642362222295953972">切换到已打开的标签页</translation> <translation id="6643016212128521049">清除</translation> <translation id="6645899968535965230">二维码:<ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">系统会将您访问过的网址发送给 Google,以预测您接下来可能会访问的网站</translation> <translation id="6647480763136463714">上次运行时间:<ph name="TIME" /></translation> <translation id="6656103420185847513">修改文件夹</translation> <translation id="6657585470893396449">密码</translation> @@ -1288,6 +1293,7 @@ <translation id="7781829728241885113">昨天</translation> <translation id="7786246662347093005">{COUNT,plural, =1{1 天后}other{{COUNT} 天后}}</translation> <translation id="7791543448312431591">添加</translation> +<translation id="7792549458069452436">获取应用</translation> <translation id="7807060072011926525">由 Google 提供</translation> <translation id="7812377703891978671">您可选择“<ph name="HISTORY_BUTTON_ACCESSIBILITY_LABEL" />”来访问您的所有浏览记录。</translation> <translation id="78146569776629510">下载</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb index e269a1c..b0c9100 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">輕觸並按住所需日期。</translation> <translation id="1959679933317802873">正在等待內容</translation> <translation id="1967461193809857427">{count,plural, =1{要繼續使用先前在 Android 上開啟的分頁嗎?}other{要繼續使用先前在 Android 上開啟的分頁嗎?}}</translation> +<translation id="1972325230031091483">系統會根據您目前瀏覽的網頁主動載入內容,助您加快瀏覽速度</translation> <translation id="1973912524893600642">保留資料</translation> <translation id="1974060860693918893">進階選項</translation> <translation id="1980417445547898121">{count,plural, =1{在此 iPhone 上開啟最近在其他裝置使用的 {count} 個分頁}other{在此 iPhone 上開啟最近在其他裝置使用的 {count} 個分頁}}</translation> @@ -291,6 +292,7 @@ <translation id="2547458583188611426">同步處理無法運作。如要開始同步處理,請輸入密碼短語。</translation> <translation id="2551153019974022505">帳戶錯誤</translation> <translation id="2556092377360758201">無保護功能 (不建議)</translation> +<translation id="2561375093019333908">開啟</translation> <translation id="2562041823070056534">正在傳送至 <ph name="DEVICE_NAME" />…</translation> <translation id="2576499762020411840">將密碼儲存至 Google 帳戶中並自動填入</translation> <translation id="2577522251608256362">社區</translation> @@ -433,6 +435,7 @@ <translation id="3235242129752692527">編輯活動詳情,然後輕按 [儲存]。</translation> <translation id="3240426699337459095">已複製連結</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">如果您同時分享 Chrome 使用情況報告,這些報告將會包含您瀏覽的網址</translation> <translation id="3245744387817103524">無法儲存您的變更。</translation> <translation id="3252394070589632019"><ph name="VALUE" />,<ph name="ADDITIONAL_INFO" /> (第 <ph name="INDEX" /> 項建議,共 <ph name="NUM_SUGGESTIONS" /> 項)</translation> <translation id="3264775633254836593">自動填入密碼</translation> @@ -632,7 +635,6 @@ <translation id="4371591986692297148">未啟用</translation> <translation id="4375040482473363939">二維條碼搜尋</translation> <translation id="4378154925671717803">電話號碼</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" />已與你分享 <ph name="WEBSITE" /> 的密碼</translation> <translation id="4389019817280890563">輕按即可變更語言。</translation> <translation id="4405320213589929829">使用網頁上的地址,取得當地資訊和路線。</translation> <translation id="4420409367264901497">編輯書籤</translation> @@ -848,6 +850,7 @@ <translation id="5513681519188741830"><ph name="TIME" /> 小時前</translation> <translation id="5525269841082836315">建立密碼短語</translation> <translation id="553151287733286479">{COUNT,plural, =1{{COUNT} 個安全度低的密碼}other{{COUNT} 個安全度低的密碼}}</translation> +<translation id="5532545557415295622">閒置逾時對話框</translation> <translation id="5542540507657872337">找到 <ph name="COUNT" /> 個已開啟的分頁</translation> <translation id="5548760955356983418">「Handoff」讓您可在此裝置上開始瀏覽網站,然後輕易在 Mac 上繼續瀏覽。目前開啟的網站將會在 Mac 的 Dock 中顯示。 @@ -857,6 +860,7 @@ <translation id="555749644339804659">正在檢查密碼…</translation> <translation id="5559567453458728487">轉換在網上找到的量度單位</translation> <translation id="556042886152191864">按鈕</translation> +<translation id="5572648434713976849">您會在網址列取得更貼近需求的建議</translation> <translation id="5572684875078967866">資料儲存空間</translation> <translation id="5591792606924434384">{COUNT,plural, =1{追蹤此包裹}other{追蹤所有包裹}}</translation> <translation id="5597915316964418992">開啟「分頁網格」</translation> @@ -1083,6 +1087,7 @@ <translation id="6642362222295953972">切換至現有的分頁</translation> <translation id="6643016212128521049">清除</translation> <translation id="6645899968535965230">二維條碼:<ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">系統會將您瀏覽的網址傳送至 Google,以便預測您接下來可能會瀏覽的網站</translation> <translation id="6647480763136463714">上次執行時間:<ph name="TIME" /></translation> <translation id="6656103420185847513">編輯資料夾</translation> <translation id="6657585470893396449">密碼</translation> @@ -1288,6 +1293,7 @@ <translation id="7781829728241885113">昨天</translation> <translation id="7786246662347093005">{COUNT,plural, =1{1 天後}other{{COUNT} 天後}}</translation> <translation id="7791543448312431591">新增</translation> +<translation id="7792549458069452436">下載應用程式</translation> <translation id="7807060072011926525">由 Google 提供</translation> <translation id="7812377703891978671">揀「<ph name="HISTORY_BUTTON_ACCESSIBILITY_LABEL" />」就可以存取所有瀏覽記錄。</translation> <translation id="78146569776629510">下載</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb index 35099c9..f39f4823 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">按住所需日期。</translation> <translation id="1959679933317802873">正在等候內容</translation> <translation id="1967461193809857427">{count,plural, =1{要接續使用先前在 Android 上開啟的分頁嗎?}other{要接續使用先前在 Android 上開啟的分頁嗎?}}</translation> +<translation id="1972325230031091483">系統會根據你目前造訪的網頁主動載入內容,幫助你加快瀏覽速度</translation> <translation id="1973912524893600642">保留資料</translation> <translation id="1974060860693918893">進階</translation> <translation id="1980417445547898121">{count,plural, =1{在這支 iPhone 上開啟最近在其他裝置使用的 {count} 個分頁}other{在這支 iPhone 上開啟最近在其他裝置使用的 {count} 個分頁}}</translation> @@ -291,6 +292,7 @@ <translation id="2547458583188611426">目前未同步資料。如要開始同步,請輸入通關密語。</translation> <translation id="2551153019974022505">帳戶錯誤</translation> <translation id="2556092377360758201">無保護功能 (不建議)</translation> +<translation id="2561375093019333908">開啟</translation> <translation id="2562041823070056534">正在傳送到「<ph name="DEVICE_NAME" />」...</translation> <translation id="2576499762020411840">將密碼儲存到 Google 帳戶並自動填入</translation> <translation id="2577522251608256362">鄰</translation> @@ -433,6 +435,7 @@ <translation id="3235242129752692527">編輯活動詳細資料,然後輕觸「儲存」。</translation> <translation id="3240426699337459095">連結已複製</translation> <translation id="3244271242291266297">月</translation> +<translation id="3245429137663807393">如果你一併提供 Chrome 使用報告,這些報告中會包含你造訪的網址</translation> <translation id="3245744387817103524">無法儲存變更。</translation> <translation id="3252394070589632019"><ph name="VALUE" />,<ph name="ADDITIONAL_INFO" /> (第 <ph name="INDEX" /> 項建議,共 <ph name="NUM_SUGGESTIONS" /> 項)</translation> <translation id="3264775633254836593">自動填寫密碼</translation> @@ -632,7 +635,6 @@ <translation id="4371591986692297148">未啟用</translation> <translation id="4375040482473363939">QR 圖碼搜尋</translation> <translation id="4378154925671717803">電話</translation> -<translation id="4388983683160515185"><ph name="FULL_NAME" /> 已將「<ph name="WEBSITE" />」的密碼分享給你</translation> <translation id="4389019817280890563">輕觸即可變更語言。</translation> <translation id="4405320213589929829">使用網頁上的地址取得當地資訊和路線。</translation> <translation id="4420409367264901497">編輯書籤</translation> @@ -848,6 +850,7 @@ <translation id="5513681519188741830"><ph name="TIME" /> 小時前</translation> <translation id="5525269841082836315">建立通關密語</translation> <translation id="553151287733286479">{COUNT,plural, =1{有 {COUNT} 組低強度密碼}other{有 {COUNT} 組低強度密碼}}</translation> +<translation id="5532545557415295622">閒置逾時對話方塊</translation> <translation id="5542540507657872337">找到 <ph name="COUNT" /> 個已開啟的分頁</translation> <translation id="5548760955356983418">有了 Handoff,您使用這個裝置開始瀏覽網站後,可輕鬆改用 Mac 繼續瀏覽。目前開啟的網站會自動顯示在 Mac 的 Dock 中。 @@ -857,6 +860,7 @@ <translation id="555749644339804659">正在檢查密碼…</translation> <translation id="5559567453458728487">轉換在網頁上偵測到的計量單位</translation> <translation id="556042886152191864">按鈕</translation> +<translation id="5572648434713976849">你會在網址列取得更貼近需求的建議</translation> <translation id="5572684875078967866">資訊儲存空間</translation> <translation id="5591792606924434384">{COUNT,plural, =1{追蹤這個包裹}other{追蹤所有包裹}}</translation> <translation id="5597915316964418992">開啟分頁方格</translation> @@ -1083,6 +1087,7 @@ <translation id="6642362222295953972">切換至現有分頁</translation> <translation id="6643016212128521049">清除</translation> <translation id="6645899968535965230">QR 圖碼:<ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">系統會將你造訪的網址傳送給 Google,預測你接下來可能會前往的網站</translation> <translation id="6647480763136463714">上次執行時間:<ph name="TIME" /></translation> <translation id="6656103420185847513">編輯資料夾</translation> <translation id="6657585470893396449">密碼</translation> @@ -1288,6 +1293,7 @@ <translation id="7781829728241885113">昨天</translation> <translation id="7786246662347093005">{COUNT,plural, =1{1 天後}other{{COUNT} 天後}}</translation> <translation id="7791543448312431591">新增</translation> +<translation id="7792549458069452436">取得應用程式</translation> <translation id="7807060072011926525">由 Google 提供</translation> <translation id="7812377703891978671">選取「<ph name="HISTORY_BUTTON_ACCESSIBILITY_LABEL" />」可存取所有瀏覽記錄。</translation> <translation id="78146569776629510">下載</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zu.xtb b/ios/chrome/app/strings/resources/ios_strings_zu.xtb index ebdaa4ada..df85dff 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zu.xtb
@@ -183,6 +183,7 @@ <translation id="1959441496380398824">Thinta futhi ubambe usuku.</translation> <translation id="1959679933317802873">Ilinde okuqukethwe</translation> <translation id="1967461193809857427">{count,plural, =1{Khetha ithebhu oyishiye ku-Android?}one{Khetha amathebhu owashiye ku-Android?}other{Khetha amathebhu owashiye ku-Android?}}</translation> +<translation id="1972325230031091483">Uzobhrawuza ngokushesha ngoba okuqukethwe kulayishwa ngokuqhubekayo ngokusekelwe ekuvakasheni kwakho kwamanje kwekhasi lewebhu</translation> <translation id="1973912524893600642">Gcina idatha</translation> <translation id="1974060860693918893">Okuthuthukisiwe</translation> <translation id="1980417445547898121">{count,plural, =1{Thola ithebhu yakho engu-{count} esanda kusebenza kwenye idivayisi yakho kule iPhone}one{Thola amathebhu akho angu-{count} asanda kusebenza kwenye idivayisi yakho kule iPhone}other{Thola amathebhu akho angu-{count} asanda kusebenza kwenye idivayisi yakho kule iPhone}}</translation> @@ -434,6 +435,7 @@ <translation id="3235242129752692527">Hlela imininingwane yomcimbi bese ucindezela okuthi “Londoloza.”</translation> <translation id="3240426699337459095">Isixhumanisi sikopishiwe</translation> <translation id="3244271242291266297">MM</translation> +<translation id="3245429137663807393">Uma futhi wabelana ngemibiko yokusetshenziswa kwe-Chrome, leyo mibiko ihlanganisa nama-URL owavakashelayo</translation> <translation id="3245744387817103524">Ushintsho lwakho alukwazanga ukulondolozwa.</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> kokungu-<ph name="NUM_SUGGESTIONS" /></translation> <translation id="3264775633254836593">Gcwalisa Ngokuzenzakalelayo Amaphasiwedi</translation> @@ -633,7 +635,6 @@ <translation id="4371591986692297148">Akusebenzi</translation> <translation id="4375040482473363939">Usesho lwekhodi ye-QR</translation> <translation id="4378154925671717803">Ifoni</translation> -<translation id="4388983683160515185">U-<ph name="FULL_NAME" /> wabelane nawe ngephasiwedi ye-<ph name="WEBSITE" /></translation> <translation id="4389019817280890563">Thepha ukuze ushintshe ulimi.</translation> <translation id="4405320213589929829">Sebenzisa amakheli emakhasini wewebhu ukuze uthole ulwazi lwendawo nezinkomba.</translation> <translation id="4420409367264901497">Hlela ibhukhimakhi</translation> @@ -859,6 +860,7 @@ <translation id="555749644339804659">Ihlola amaphasiwedi…</translation> <translation id="5559567453458728487">Ukukalwa koshintsho lwamayunithi atholakala kuwebhu</translation> <translation id="556042886152191864">Inkinobho</translation> +<translation id="5572648434713976849">Uzothola iziphakamiso ezithuthukisiwe kwibha yekheli</translation> <translation id="5572684875078967866">Isitoreji Solwazi</translation> <translation id="5591792606924434384">{COUNT,plural, =1{Landelela Le Phakheji}one{Landelela Wonke Amaphakheji}other{Landelela Wonke Amaphakheji}}</translation> <translation id="5597915316964418992">Vula Igridi Yethebhu</translation> @@ -1085,6 +1087,7 @@ <translation id="6642362222295953972">Shintshela kuthebhu ekhona</translation> <translation id="6643016212128521049">Sula</translation> <translation id="6645899968535965230">Ikhodi ye-QR: <ph name="PAGE_TITLE" /></translation> +<translation id="6647441008198474441">Ama-URL owavakashelayo athunyelwa ku-Google ukuze ibikezele ukuthi yimaphi amasayithi ongase uwavakashele ngokulandelayo</translation> <translation id="6647480763136463714">Ukusebenzisa kokugcina <ph name="TIME" /></translation> <translation id="6656103420185847513">Hlela ifolda</translation> <translation id="6657585470893396449">Igama lokungena</translation>
diff --git a/ios/chrome/browser/docking_promo/OWNERS b/ios/chrome/browser/docking_promo/OWNERS new file mode 100644 index 0000000..4e50bf2 --- /dev/null +++ b/ios/chrome/browser/docking_promo/OWNERS
@@ -0,0 +1,2 @@ +bwwilliams@google.com +hiramahmood@google.com
diff --git a/ios/chrome/browser/history/model/history_tab_helper.mm b/ios/chrome/browser/history/model/history_tab_helper.mm index a1f8a014..8fba075 100644 --- a/ios/chrome/browser/history/model/history_tab_helper.mm +++ b/ios/chrome/browser/history/model/history_tab_helper.mm
@@ -162,6 +162,7 @@ /*top_level_url=*/std::nullopt, /*opener=*/std::nullopt, /*bookmark_id=*/std::nullopt, + /*app_id=*/std::nullopt, /*context_annotations=*/std::move(context_annotations)); }
diff --git a/ios/chrome/browser/promos_manager/constants.cc b/ios/chrome/browser/promos_manager/constants.cc index 55238c78..2e6173b 100644 --- a/ios/chrome/browser/promos_manager/constants.cc +++ b/ios/chrome/browser/promos_manager/constants.cc
@@ -60,6 +60,17 @@ return promos_manager::Promo::DockingPromoRemindMeLater; } + if (promo == "promos_manager::Promo::AllTabsDefaultBrowser") { + return promos_manager::Promo::AllTabsDefaultBrowser; + } + + if (promo == "promos_manager::Promo::MadeForIOSDefaultBrowser") { + return promos_manager::Promo::MadeForIOSDefaultBrowser; + } + + if (promo == "promos_manager::Promo::StaySafeDefaultBrowser") { + return promos_manager::Promo::StaySafeDefaultBrowser; + } return std::nullopt; } @@ -93,6 +104,12 @@ return "DockingPromo"; case promos_manager::Promo::DockingPromoRemindMeLater: return "DockingPromoRemindMeLater"; + case promos_manager::Promo::AllTabsDefaultBrowser: + return "AllTabsDefaultBrowser"; + case promos_manager::Promo::MadeForIOSDefaultBrowser: + return "MadeForIOSDefaultBrowser"; + case promos_manager::Promo::StaySafeDefaultBrowser: + return "StaySafeDefaultBrowser"; } }
diff --git a/ios/chrome/browser/promos_manager/constants.h b/ios/chrome/browser/promos_manager/constants.h index 391831c..86a6c77 100644 --- a/ios/chrome/browser/promos_manager/constants.h +++ b/ios/chrome/browser/promos_manager/constants.h
@@ -40,7 +40,10 @@ OmniboxPosition = 10, // Choose between top and bottom omnibox. DockingPromo = 11, // Docking Promo. DockingPromoRemindMeLater = 12, // Docking Promo (Remind Me Later version). - kMaxValue = DockingPromoRemindMeLater, + AllTabsDefaultBrowser = 13, // "All Tabs" default browser promo. + MadeForIOSDefaultBrowser = 14, // "Made For iOS" default browser promo. + StaySafeDefaultBrowser = 15, // "Stay Safe" default browser promo. + kMaxValue = StaySafeDefaultBrowser, }; // LINT.ThenChange(/ios/chrome/browser/promos_manager/constants.cc) // Also update IOSPromosManagerPromo in
diff --git a/ios/chrome/browser/shared/coordinator/scene/BUILD.gn b/ios/chrome/browser/shared/coordinator/scene/BUILD.gn index 8504ace..7adc05a 100644 --- a/ios/chrome/browser/shared/coordinator/scene/BUILD.gn +++ b/ios/chrome/browser/shared/coordinator/scene/BUILD.gn
@@ -162,6 +162,7 @@ "//ios/chrome/browser/url_loading/model", "//ios/chrome/browser/web/model:page_placeholder", "//ios/chrome/browser/web_state_list/model:session_metrics", + "//ios/chrome/browser/web_state_list/model/web_usage_enabler", "//ios/chrome/browser/window_activities/model", "//ios/chrome/common/ui/reauthentication", "//ios/chrome/common/ui/util",
diff --git a/ios/chrome/browser/shared/coordinator/scene/scene_controller.mm b/ios/chrome/browser/shared/coordinator/scene/scene_controller.mm index a6dc204..1e1b576 100644 --- a/ios/chrome/browser/shared/coordinator/scene/scene_controller.mm +++ b/ios/chrome/browser/shared/coordinator/scene/scene_controller.mm
@@ -165,6 +165,7 @@ #import "ios/chrome/browser/url_loading/model/url_loading_params.h" #import "ios/chrome/browser/web/model/page_placeholder_browser_agent.h" #import "ios/chrome/browser/web_state_list/model/session_metrics.h" +#import "ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent.h" #import "ios/chrome/browser/window_activities/model/window_activity_helpers.h" #import "ios/chrome/common/ui/reauthentication/reauthentication_module.h" #import "ios/chrome/grit/ios_strings.h" @@ -3660,8 +3661,10 @@ return; } - self.mainInterface.userInteractionEnabled = YES; - self.incognitoInterface.userInteractionEnabled = YES; + WebUsageEnablerBrowserAgent::FromBrowser(self.mainInterface.browser) + ->SetWebUsageEnabled(true); + WebUsageEnablerBrowserAgent::FromBrowser(self.incognitoInterface.browser) + ->SetWebUsageEnabled(true); [self.currentInterface setPrimary:YES]; }
diff --git a/ios/chrome/browser/shared/coordinator/scene/test/stub_browser_provider.mm b/ios/chrome/browser/shared/coordinator/scene/test/stub_browser_provider.mm index 790f46d5..2861eb1b 100644 --- a/ios/chrome/browser/shared/coordinator/scene/test/stub_browser_provider.mm +++ b/ios/chrome/browser/shared/coordinator/scene/test/stub_browser_provider.mm
@@ -6,7 +6,6 @@ @implementation StubBrowserProvider -@synthesize userInteractionEnabled = _userInteractionEnabled; @synthesize inactiveBrowser = _inactiveBrowser; - (void)setPrimary:(BOOL)primary {
diff --git a/ios/chrome/browser/shared/model/browser/browser_provider.h b/ios/chrome/browser/shared/model/browser/browser_provider.h index 8e37fc2..724bb07 100644 --- a/ios/chrome/browser/shared/model/browser/browser_provider.h +++ b/ios/chrome/browser/shared/model/browser/browser_provider.h
@@ -32,9 +32,6 @@ @property(nonatomic, readonly) UIViewController* viewController; // Only used once by MainController when clearing browsing data. - (void)setPrimary:(BOOL)primary; -// Only used by MainController when clearing browsing data AND by app state on -// shutdown. -@property(nonatomic) BOOL userInteractionEnabled; @end
diff --git a/ios/chrome/browser/shared/model/browser_state/browser_state_info_cache.cc b/ios/chrome/browser/shared/model/browser_state/browser_state_info_cache.cc index acff8c5..7c292a6 100644 --- a/ios/chrome/browser/shared/model/browser_state/browser_state_info_cache.cc +++ b/ios/chrome/browser/shared/model/browser_state/browser_state_info_cache.cc
@@ -49,6 +49,10 @@ ScopedDictPrefUpdate update(prefs_, prefs::kBrowserStateInfoCache); base::Value::Dict& cache = update.Get(); + const int browser_states_count = + prefs_->GetInteger(prefs::kBrowserStatesNumCreated); + prefs_->SetInteger(prefs::kBrowserStatesNumCreated, browser_states_count + 1); + base::Value::Dict info; info.Set(kGAIAIdKey, gaia_id); info.Set(kUserNameKey, user_name); @@ -80,6 +84,12 @@ } ScopedDictPrefUpdate update(prefs_, prefs::kBrowserStateInfoCache); base::Value::Dict& cache = update.Get(); + + const int browser_states_count = + prefs_->GetInteger(prefs::kBrowserStatesNumCreated); + DCHECK_GE(browser_states_count, 1); + prefs_->SetInteger(prefs::kBrowserStatesNumCreated, browser_states_count - 1); + std::string key = CacheKeyFromBrowserStatePath(browser_state_path); cache.Remove(key); sorted_keys_.erase(base::ranges::find(sorted_keys_, key));
diff --git a/ios/chrome/browser/shared/model/prefs/browser_prefs.mm b/ios/chrome/browser/shared/model/prefs/browser_prefs.mm index 21b87f7..393c8280 100644 --- a/ios/chrome/browser/shared/model/prefs/browser_prefs.mm +++ b/ios/chrome/browser/shared/model/prefs/browser_prefs.mm
@@ -334,7 +334,7 @@ // Preferences related to the browser state manager. registry->RegisterStringPref(prefs::kBrowserStateLastUsed, std::string()); - registry->RegisterIntegerPref(prefs::kBrowserStatesNumCreated, 1); + registry->RegisterIntegerPref(prefs::kBrowserStatesNumCreated, 0); registry->RegisterListPref(prefs::kBrowserStatesLastActive); [MemoryDebuggerManager registerLocalState:registry];
diff --git a/ios/chrome/browser/shared/ui/elements/instruction_view.h b/ios/chrome/browser/shared/ui/elements/instruction_view.h index 9eda93c..21dc73f 100644 --- a/ios/chrome/browser/shared/ui/elements/instruction_view.h +++ b/ios/chrome/browser/shared/ui/elements/instruction_view.h
@@ -11,6 +11,7 @@ typedef NS_ENUM(NSInteger, InstructionViewStyle) { InstructionViewStyleDefault = 0, InstructionViewStyleGrayscale, + InstructionViewStyleBold, }; // View containing an instruction list with their step number.
diff --git a/ios/chrome/browser/shared/ui/elements/instruction_view.mm b/ios/chrome/browser/shared/ui/elements/instruction_view.mm index e48a3ada..9180fa0 100644 --- a/ios/chrome/browser/shared/ui/elements/instruction_view.mm +++ b/ios/chrome/browser/shared/ui/elements/instruction_view.mm
@@ -93,6 +93,7 @@ self.backgroundColor = [UIColor colorNamed:kGroupedSecondaryBackgroundColor]; break; + case InstructionViewStyleBold: case InstructionViewStyleDefault: self.backgroundColor = [UIColor colorNamed:kSecondaryBackgroundColor]; break; @@ -283,6 +284,11 @@ // initialization and when entering or exiting dark mode. - (void)updateColorForStepNumberLabel:(UILabel*)stepNumberLabel { switch (self.style) { + case InstructionViewStyleBold: + stepNumberLabel.textColor = [UIColor colorNamed:kBlue600Color]; + stepNumberLabel.layer.backgroundColor = + [UIColor colorNamed:kBlueHaloColor].CGColor; + break; case InstructionViewStyleGrayscale: stepNumberLabel.textColor = [UIColor colorNamed:kGrey600Color]; stepNumberLabel.layer.backgroundColor =
diff --git a/ios/chrome/browser/ui/autofill/branding/branding_view_controller_egtest.mm b/ios/chrome/browser/ui/autofill/branding/branding_view_controller_egtest.mm index afc0f4b..c90755e 100644 --- a/ios/chrome/browser/ui/autofill/branding/branding_view_controller_egtest.mm +++ b/ios/chrome/browser/ui/autofill/branding/branding_view_controller_egtest.mm
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#import "base/ios/ios_util.h" #import "base/test/ios/wait_util.h" #import "ios/chrome/browser/shared/model/prefs/pref_names.h" #import "ios/chrome/browser/ui/autofill/autofill_app_interface.h" @@ -140,6 +141,13 @@ CheckBrandingHasVisiblity(YES); [[EarlGrey selectElementWithMatcher:ManualFallbackPasswordIconMatcher()] performAction:grey_tap()]; + + if (!base::ios::IsRunningOnIOS16OrLater()) { + [ChromeEarlGreyUI + dismissByTappingOnTheWindowOfPopover: + chrome_test_util::ManualFallbackPasswordTableViewMatcher()]; + } + DismissKeyboard(); // Second time: branding is still visible after user interacts with a keyboard // accessory element.
diff --git a/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_view_controller.mm b/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_view_controller.mm index 2b36ab3..1819ae3d 100644 --- a/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_view_controller.mm +++ b/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_view_controller.mm
@@ -371,6 +371,8 @@ - (void)formSuggestionViewShouldResetFromPull: (FormSuggestionView*)formSuggestionView { + DCHECK(!IsKeyboardAccessoryUpgradeEnabled()); + base::RecordAction(base::UserMetricsAction("ManualFallback_ClosePull")); // The pull gesture has the same effect as when the keyboard button is // pressed.
diff --git a/ios/chrome/browser/ui/autofill/form_input_accessory/form_suggestion_view.mm b/ios/chrome/browser/ui/autofill/form_input_accessory/form_suggestion_view.mm index 37cc5e4..a166339 100644 --- a/ios/chrome/browser/ui/autofill/form_input_accessory/form_suggestion_view.mm +++ b/ios/chrome/browser/ui/autofill/form_input_accessory/form_suggestion_view.mm
@@ -11,6 +11,7 @@ #import "components/autofill/ios/browser/form_suggestion.h" #import "ios/chrome/browser/autofill/model/form_suggestion_client.h" #import "ios/chrome/browser/autofill/model/form_suggestion_constants.h" +#import "ios/chrome/browser/shared/public/features/features.h" #import "ios/chrome/browser/shared/ui/util/layout_guide_names.h" #import "ios/chrome/browser/shared/ui/util/rtl_geometry.h" #import "ios/chrome/browser/shared/ui/util/util_swift.h" @@ -83,7 +84,9 @@ self.contentInset = lockedContentInsets; } completion:^(BOOL finished) { - self.delegate = self; + if (!IsKeyboardAccessoryUpgradeEnabled()) { + self.delegate = self; + } }]; } @@ -175,7 +178,11 @@ } } +#pragma mark - UIScrollViewDelegate + - (void)scrollViewDidScroll:(UIScrollView*)scrollView { + DCHECK(!IsKeyboardAccessoryUpgradeEnabled()); + CGFloat offset = self.contentOffset.x; CGFloat inset = self.contentInset.left; // Inset is negative when locked. CGFloat diff = offset + inset;
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/BUILD.gn b/ios/chrome/browser/ui/autofill/manual_fill/BUILD.gn index 0f5a7c7..b66ebfe 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/BUILD.gn +++ b/ios/chrome/browser/ui/autofill/manual_fill/BUILD.gn
@@ -132,6 +132,7 @@ "//ios/chrome/browser/shared/ui/symbols", "//ios/chrome/browser/shared/ui/table_view:styler", "//ios/chrome/browser/shared/ui/table_view:table_view", + "//ios/chrome/browser/shared/ui/table_view:utils", "//ios/chrome/browser/ui/settings/password:title_view", "//ios/chrome/common:button_config", "//ios/chrome/common:string_util",
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/card_view_controller_egtest.mm b/ios/chrome/browser/ui/autofill/manual_fill/card_view_controller_egtest.mm index 76647975..a0eb496 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/card_view_controller_egtest.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/card_view_controller_egtest.mm
@@ -10,6 +10,7 @@ #import "ios/chrome/grit/ios_strings.h" #import "ios/chrome/test/earl_grey/chrome_actions.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey.h" +#import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h" #import "ios/chrome/test/earl_grey/chrome_matchers.h" #import "ios/chrome/test/earl_grey/chrome_test_case.h" #import "ios/testing/earl_grey/app_launch_configuration.h" @@ -528,6 +529,8 @@ // Dismiss the warning alert. [[EarlGrey selectElementWithMatcher:chrome_test_util::OKButton()] performAction:grey_tap()]; + + [ChromeEarlGreyUI cleanupAfterShowingAlert]; } // Tests an alert is shown warning the user when trying to fill a credit card @@ -542,6 +545,8 @@ // Dismiss the alert. [[EarlGrey selectElementWithMatcher:chrome_test_util::OKButton()] performAction:grey_tap()]; + + [ChromeEarlGreyUI cleanupAfterShowingAlert]; } // Tests that credit card cardholder is injected.
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/fallback_view_controller.mm b/ios/chrome/browser/ui/autofill/manual_fill/fallback_view_controller.mm index dbcb9c93..a4dbf5f 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/fallback_view_controller.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/fallback_view_controller.mm
@@ -9,7 +9,9 @@ #import "base/ios/ios_util.h" #import "base/task/sequenced_task_runner.h" #import "base/time/time.h" +#import "ios/chrome/browser/shared/public/features/features.h" #import "ios/chrome/browser/shared/ui/table_view/legacy_chrome_table_view_styler.h" +#import "ios/chrome/browser/shared/ui/table_view/table_view_utils.h" #import "ios/chrome/browser/shared/ui/util/uikit_ui_util.h" #import "ios/chrome/browser/ui/autofill/manual_fill/manual_fill_action_cell.h" #import "ios/chrome/common/ui/colors/semantic_color_names.h" @@ -47,6 +49,9 @@ // Height of the section footer. constexpr CGFloat kSectionFooterHeight = 8; +// Left inset of the table view's section separators. +constexpr CGFloat kSectionSepatatorLeftInset = 16; + } // namespace @interface FallbackViewController () @@ -67,7 +72,9 @@ } - (instancetype)init { - self = [super initWithStyle:UITableViewStylePlain]; + self = [super initWithStyle:IsKeyboardAccessoryUpgradeEnabled() + ? ChromeTableViewStyle() + : UITableViewStylePlain]; if (self) { _loadingIndicatorStartingTime = base::Time::Min(); @@ -79,20 +86,26 @@ - (void)viewDidLoad { // Super's `viewDidLoad` uses `styler.tableViewBackgroundColor` so it needs to // be set before. - self.styler.tableViewBackgroundColor = [UIColor colorNamed:kBackgroundColor]; + self.styler.tableViewBackgroundColor = + [UIColor colorNamed:IsKeyboardAccessoryUpgradeEnabled() + ? kGroupedPrimaryBackgroundColor + : kBackgroundColor]; [super viewDidLoad]; // Remove extra spacing on top of sections. - if (@available(iOS 15, *)) { - self.tableView.sectionHeaderTopPadding = 0; - } + self.tableView.sectionHeaderTopPadding = 0; - self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + if (IsKeyboardAccessoryUpgradeEnabled()) { + self.tableView.separatorInset = + UIEdgeInsetsMake(0, kSectionSepatatorLeftInset, 0, 0); + } else { + self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + self.tableView.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0); + } self.tableView.sectionHeaderHeight = kSectionHeaderHeight; self.tableView.sectionFooterHeight = kSectionFooterHeight; self.tableView.estimatedRowHeight = 1; - self.tableView.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0); self.tableView.allowsSelection = NO; self.definesPresentationContext = YES; if (!self.tableViewModel) {
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/password_view_controller_egtest.mm b/ios/chrome/browser/ui/autofill/manual_fill/password_view_controller_egtest.mm index b9ff211..2843027 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/password_view_controller_egtest.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/password_view_controller_egtest.mm
@@ -42,7 +42,6 @@ using chrome_test_util::ManualFallbackPasswordIconMatcher; using chrome_test_util::ManualFallbackPasswordSearchBarMatcher; using chrome_test_util::ManualFallbackPasswordTableViewMatcher; -using chrome_test_util::ManualFallbackPasswordTableViewWindowMatcher; using chrome_test_util::ManualFallbackSuggestPasswordMatcher; using chrome_test_util::NavigationBarCancelButton; using chrome_test_util::NavigationBarDoneButton; @@ -625,12 +624,9 @@ [[EarlGrey selectElementWithMatcher:ManualFallbackPasswordTableViewMatcher()] assertWithMatcher:grey_sufficientlyVisible()]; - // Tap on a point outside of the popover. - // The way EarlGrey taps doesn't go through the window hierarchy. Because of - // this, the tap needs to be done in the same window as the popover. - [[EarlGrey - selectElementWithMatcher:ManualFallbackPasswordTableViewWindowMatcher()] - performAction:grey_tapAtPoint(CGPointMake(0, 0))]; + [ChromeEarlGreyUI + dismissByTappingOnTheWindowOfPopover: + chrome_test_util::ManualFallbackPasswordTableViewMatcher()]; // Verify the password controller table view is not visible and the password // icon is visible. @@ -772,6 +768,8 @@ // Dismiss the alert. [[EarlGrey selectElementWithMatcher:chrome_test_util::OKButton()] performAction:grey_tap()]; + + [ChromeEarlGreyUI cleanupAfterShowingAlert]; } // Tests that the password icon is not present when no passwords are available.
diff --git a/ios/chrome/browser/ui/browser_view/browser_coordinator.h b/ios/chrome/browser/ui/browser_view/browser_coordinator.h index 9826dd2..d7b8256e 100644 --- a/ios/chrome/browser/ui/browser_view/browser_coordinator.h +++ b/ios/chrome/browser/ui/browser_view/browser_coordinator.h
@@ -17,12 +17,6 @@ // The main view controller. @property(nonatomic, strong, readonly) BrowserViewController* viewController; -// Activates/deactivates the object. This will enable/disable the ability for -// this object to browse, and to have live UIWebViews associated with it. While -// not active, the UI will not react to changes in the tab model, so generally -// an inactive BVC should not be visible. -@property(nonatomic, assign, getter=isActive) BOOL active; - // Returns whether or not text to speech is playing. @property(nonatomic, assign, readonly, getter=isPlayingTTS) BOOL playingTTS;
diff --git a/ios/chrome/browser/ui/browser_view/browser_coordinator.mm b/ios/chrome/browser/ui/browser_view/browser_coordinator.mm index 7a280c4..d852514e 100644 --- a/ios/chrome/browser/ui/browser_view/browser_coordinator.mm +++ b/ios/chrome/browser/ui/browser_view/browser_coordinator.mm
@@ -229,6 +229,7 @@ #import "ios/chrome/browser/web/model/web_navigation_ntp_delegate.h" #import "ios/chrome/browser/web/model/web_state_delegate_browser_agent.h" #import "ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent.h" +#import "ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent_observer_bridge.h" #import "ios/chrome/browser/webui/model/net_export_tab_helper_delegate.h" #import "ios/chrome/grit/ios_branded_strings.h" #import "ios/chrome/grit/ios_strings.h" @@ -273,6 +274,7 @@ OverscrollActionsControllerDelegate, PageInfoCommands, PageInfoPresentation, + ParcelTrackingOptInCommands, PasswordBreachCommands, PasswordControllerDelegate, PasswordProtectionCommands, @@ -301,11 +303,17 @@ URLLoadingDelegate, WebContentCommands, WebNavigationNTPDelegate, - ParcelTrackingOptInCommands> + WebUsageEnablerBrowserAgentObserving> // Whether the coordinator is started. @property(nonatomic, assign, getter=isStarted) BOOL started; +// Activates/deactivates the object. This will enable/disable the ability for +// this object to browse, and to have live UIWebViews associated with it. While +// not active, the UI will not react to changes in the tab model, so generally +// an inactive BVC should not be visible. +@property(nonatomic, assign, getter=isActive) BOOL active; + // Whether web usage is enabled for the WebStates in `self.browser`. @property(nonatomic, assign, getter=isWebUsageEnabled) BOOL webUsageEnabled; @@ -543,6 +551,8 @@ UrlLoadingBrowserAgent* _urlLoadingBrowserAgent; AddContactsCoordinator* _addContactsCoordinator; OmniboxPositionChoiceCoordinator* _omniboxPositionChoiceCoordinator; + std::unique_ptr<WebUsageEnablerBrowserAgentObserverBridge> + _webUsageEnablerObserver; } #pragma mark - ChromeCoordinator @@ -553,6 +563,10 @@ DCHECK(!self.viewController); + _webUsageEnablerObserver = + std::make_unique<WebUsageEnablerBrowserAgentObserverBridge>( + WebUsageEnablerBrowserAgent::FromBrowser(self.browser), self); + // TabLifeCycleMediator should start before createViewController because it // needs to register itself as a WebStateListObserver before the rest of the // UI in order to be able to install the tab helper delegate before the UI is @@ -602,6 +616,7 @@ [self stopChildCoordinators]; [self destroyViewController]; [self destroyViewControllerDependencies]; + _webUsageEnablerObserver.reset(); } - (void)dealloc { @@ -772,8 +787,6 @@ if (!self.browser->GetBrowserState() || !self.started) { return; } - WebUsageEnablerBrowserAgent::FromBrowser(self.browser) - ->SetWebUsageEnabled(webUsageEnabled); _webUsageEnabled = webUsageEnabled; self.viewController.webUsageEnabled = webUsageEnabled; } @@ -3290,4 +3303,12 @@ return self.viewController.presentedViewController != nil; } +#pragma mark - WebUsageEnablerBrowserAgentObserving + +- (void)webUsageEnablerValueChanged: + (WebUsageEnablerBrowserAgent*)webUsageEnabler { + self.active = WebUsageEnablerBrowserAgent::FromBrowser(self.browser) + ->IsWebUsageEnabled(); +} + @end
diff --git a/ios/chrome/browser/ui/browser_view/browser_coordinator_unittest.mm b/ios/chrome/browser/ui/browser_view/browser_coordinator_unittest.mm index 45d79da..8d911f08 100644 --- a/ios/chrome/browser/ui/browser_view/browser_coordinator_unittest.mm +++ b/ios/chrome/browser/ui/browser_view/browser_coordinator_unittest.mm
@@ -51,6 +51,7 @@ #import "ios/chrome/browser/url_loading/model/url_loading_params.h" #import "ios/chrome/browser/web/model/web_navigation_browser_agent.h" #import "ios/chrome/browser/web/model/web_state_delegate_browser_agent.h" +#import "ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent.h" #import "ios/chrome/common/ui/reauthentication/reauthentication_module.h" #import "ios/chrome/test/ios_chrome_scoped_testing_local_state.h" #import "ios/web/public/test/fakes/fake_navigation_context.h" @@ -109,11 +110,16 @@ UrlLoadingBrowserAgent::CreateForBrowser(browser_.get()); LensBrowserAgent::CreateForBrowser(browser_.get()); WebNavigationBrowserAgent::CreateForBrowser(browser_.get()); + WebUsageEnablerBrowserAgent::CreateForBrowser(browser_.get()); TabInsertionBrowserAgent::CreateForBrowser(browser_.get()); WebStateDelegateBrowserAgent::CreateForBrowser( browser_.get(), TabInsertionBrowserAgent::FromBrowser(browser_.get())); SyncErrorBrowserAgent::CreateForBrowser(browser_.get()); + WebUsageEnablerBrowserAgent* enabler = + WebUsageEnablerBrowserAgent::FromBrowser(browser_.get()); + enabler->SetWebUsageEnabled(true); + AuthenticationServiceFactory::CreateAndInitializeForBrowserState( chrome_browser_state_.get(), std::make_unique<FakeAuthenticationServiceDelegate>());
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_constants.h b/ios/chrome/browser/ui/content_suggestions/content_suggestions_constants.h index fb1e364..48e5fb1 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_constants.h +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_constants.h
@@ -76,7 +76,7 @@ extern NSString* const kMagicStackEditHalfSheetDoneButtonAccessibilityIdentifier; -// Represents the "Continue Browsing" module in the magic stack. +// Represents the "Continue with This Tab" module in the magic stack. extern NSString* const kMagicStackContentSuggestionsModuleTabResumptionAccessibilityIdentifier;
diff --git a/ios/chrome/browser/ui/default_promo/default_browser_feature_engagement_unittest.mm b/ios/chrome/browser/ui/default_promo/default_browser_feature_engagement_unittest.mm index 0fc1348..cf5d9e1 100644 --- a/ios/chrome/browser/ui/default_promo/default_browser_feature_engagement_unittest.mm +++ b/ios/chrome/browser/ui/default_promo/default_browser_feature_engagement_unittest.mm
@@ -74,3 +74,194 @@ EXPECT_FALSE(tracker->ShouldTriggerHelpUI( feature_engagement::kIPHiOSPromoDefaultBrowserReminderFeature)); } + +// Basic test for the generic default browser promo. +TEST_F(DefaultBrowserFeatureEngagementTest, DefaultBrowserBasicTest) { + std::unique_ptr<feature_engagement::Tracker> tracker = + feature_engagement::CreateTestTracker(); + base::Time initial_time = test_clock_.Now(); + tracker->SetClockForTesting(test_clock_, initial_time); + + // Make sure tracker is initialized. + tracker->AddOnInitializedCallback(BoolArgumentQuitClosure()); + run_loop_.Run(); + + // Promo shouldn't trigger because the preconditions are not satistfied. + EXPECT_FALSE(tracker->ShouldTriggerHelpUI( + feature_engagement::kIPHiOSPromoDefaultBrowserFeature)); + + // Promos can be displayed only after Chrome opened 7 times. + for (int i = 0; i < 7; i++) { + tracker->NotifyEvent(feature_engagement::events::kChromeOpened); + } + + // The promo should trigger because all the preconditions are now satisfied. + EXPECT_TRUE(tracker->ShouldTriggerHelpUI( + feature_engagement::kIPHiOSPromoDefaultBrowserFeature)); + tracker->Dismissed(feature_engagement::kIPHiOSPromoDefaultBrowserFeature); + + // It shouldn't trigger the second time. + EXPECT_FALSE(tracker->ShouldTriggerHelpUI( + feature_engagement::kIPHiOSPromoDefaultBrowserFeature)); +} + +// Basic test for the All Tabs default browser promo. +TEST_F(DefaultBrowserFeatureEngagementTest, AllTabsPromoBasicTest) { + feature_engagement::test::ScopedIphFeatureList list; + list.InitAndEnableFeatures({feature_engagement::kIPHiOSPromoAllTabsFeature}); + std::unique_ptr<feature_engagement::Tracker> tracker = + feature_engagement::CreateTestTracker(); + base::Time initial_time = test_clock_.Now(); + tracker->SetClockForTesting(test_clock_, initial_time); + + // Make sure tracker is initialized. + tracker->AddOnInitializedCallback(BoolArgumentQuitClosure()); + run_loop_.Run(); + + // Promo shouldn't trigger because the preconditions are not satistfied. + EXPECT_FALSE(tracker->ShouldTriggerHelpUI( + feature_engagement::kIPHiOSPromoAllTabsFeature)); + + // Make sure the preconditions are satisfied. + tracker->NotifyEvent("all_tabs_promo_conditions_met"); + + // Promos can be displayed only after Chrome opened 7 times. + for (int i = 0; i < 7; i++) { + tracker->NotifyEvent(feature_engagement::events::kChromeOpened); + } + + // The promo should trigger because all the preconditions are now satisfied. + EXPECT_TRUE(tracker->ShouldTriggerHelpUI( + feature_engagement::kIPHiOSPromoAllTabsFeature)); + tracker->Dismissed(feature_engagement::kIPHiOSPromoAllTabsFeature); + + // It shouldn't trigger the second time. + EXPECT_FALSE(tracker->ShouldTriggerHelpUI( + feature_engagement::kIPHiOSPromoAllTabsFeature)); + + // After a month is still shouldn't trigger + test_clock_.Advance(base::Days(30)); + EXPECT_FALSE(tracker->ShouldTriggerHelpUI( + feature_engagement::kIPHiOSPromoAllTabsFeature)); +} + +// Basic test for the Made for iOS default browser promo. +TEST_F(DefaultBrowserFeatureEngagementTest, MadeForIOSPromoBasicTest) { + feature_engagement::test::ScopedIphFeatureList list; + list.InitAndEnableFeatures( + {feature_engagement::kIPHiOSPromoMadeForIOSFeature}); + std::unique_ptr<feature_engagement::Tracker> tracker = + feature_engagement::CreateTestTracker(); + base::Time initial_time = test_clock_.Now(); + tracker->SetClockForTesting(test_clock_, initial_time); + + // Make sure tracker is initialized. + tracker->AddOnInitializedCallback(BoolArgumentQuitClosure()); + run_loop_.Run(); + + // Promo shouldn't trigger because the preconditions are not satistfied. + EXPECT_FALSE(tracker->ShouldTriggerHelpUI( + feature_engagement::kIPHiOSPromoMadeForIOSFeature)); + + // Make sure the preconditions are satisfied. + tracker->NotifyEvent("made_for_ios_promo_conditions_met"); + + // Promos can be displayed only after Chrome opened 7 times. + for (int i = 0; i < 7; i++) { + tracker->NotifyEvent(feature_engagement::events::kChromeOpened); + } + + // The promo should trigger because all the preconditions are now satisfied. + EXPECT_TRUE(tracker->ShouldTriggerHelpUI( + feature_engagement::kIPHiOSPromoMadeForIOSFeature)); + tracker->Dismissed(feature_engagement::kIPHiOSPromoMadeForIOSFeature); + + // It shouldn't trigger the second time. + EXPECT_FALSE(tracker->ShouldTriggerHelpUI( + feature_engagement::kIPHiOSPromoMadeForIOSFeature)); + + // After a month is still shouldn't trigger + test_clock_.Advance(base::Days(30)); + EXPECT_FALSE(tracker->ShouldTriggerHelpUI( + feature_engagement::kIPHiOSPromoMadeForIOSFeature)); +} + +// Basic test for the Stay Safe default browser promo. +TEST_F(DefaultBrowserFeatureEngagementTest, StaySafePromoBasicTest) { + feature_engagement::test::ScopedIphFeatureList list; + list.InitAndEnableFeatures({feature_engagement::kIPHiOSPromoStaySafeFeature}); + std::unique_ptr<feature_engagement::Tracker> tracker = + feature_engagement::CreateTestTracker(); + base::Time initial_time = test_clock_.Now(); + tracker->SetClockForTesting(test_clock_, initial_time); + + // Make sure tracker is initialized. + tracker->AddOnInitializedCallback(BoolArgumentQuitClosure()); + run_loop_.Run(); + + // Promo shouldn't trigger because the preconditions are not satistfied. + EXPECT_FALSE(tracker->ShouldTriggerHelpUI( + feature_engagement::kIPHiOSPromoStaySafeFeature)); + + // Make sure the preconditions are satisfied. + tracker->NotifyEvent("stay_safe_promo_conditions_met"); + + // Promos can be displayed only after Chrome opened 7 times. + for (int i = 0; i < 7; i++) { + tracker->NotifyEvent(feature_engagement::events::kChromeOpened); + } + + // The promo should trigger because all the preconditions are now satisfied. + EXPECT_TRUE(tracker->ShouldTriggerHelpUI( + feature_engagement::kIPHiOSPromoStaySafeFeature)); + tracker->Dismissed(feature_engagement::kIPHiOSPromoStaySafeFeature); + + // It shouldn't trigger the second time. + EXPECT_FALSE(tracker->ShouldTriggerHelpUI( + feature_engagement::kIPHiOSPromoStaySafeFeature)); + + // After a month is still shouldn't trigger + test_clock_.Advance(base::Days(30)); + EXPECT_FALSE(tracker->ShouldTriggerHelpUI( + feature_engagement::kIPHiOSPromoStaySafeFeature)); +} + +// Test for default browser group configuration. +TEST_F(DefaultBrowserFeatureEngagementTest, DefaultBrowserGroupTest) { + feature_engagement::test::ScopedIphFeatureList list; + list.InitAndEnableFeatures({feature_engagement::kIPHiOSPromoStaySafeFeature}); + std::unique_ptr<feature_engagement::Tracker> tracker = + feature_engagement::CreateTestTracker(); + base::Time initial_time = test_clock_.Now(); + tracker->SetClockForTesting(test_clock_, initial_time); + + // Make sure tracker is initialized. + tracker->AddOnInitializedCallback(BoolArgumentQuitClosure()); + run_loop_.Run(); + + // Promo shouldn't trigger because the preconditions are not satistfied. + EXPECT_FALSE(tracker->ShouldTriggerHelpUI( + feature_engagement::kIPHiOSPromoDefaultBrowserFeature)); + + // Make sure the preconditions are satisfied for the Stay Safe promo. + tracker->NotifyEvent("stay_safe_promo_conditions_met"); + + // Promos can be displayed only after Chrome opened 7 times. + for (int i = 0; i < 7; i++) { + tracker->NotifyEvent(feature_engagement::events::kChromeOpened); + } + + // Mark one of the group promos as displayed. + tracker->NotifyEvent("default_browser_promos_group_trigger"); + + // The promo cannot be triggered because after one default browser promo we + // need to wait 14 days. + EXPECT_FALSE(tracker->ShouldTriggerHelpUI( + feature_engagement::kIPHiOSPromoStaySafeFeature)); + + // After 14 days it should trigger another promo. + test_clock_.Advance(base::Days(14)); + EXPECT_TRUE(tracker->ShouldTriggerHelpUI( + feature_engagement::kIPHiOSPromoStaySafeFeature)); + tracker->Dismissed(feature_engagement::kIPHiOSPromoStaySafeFeature); +}
diff --git a/ios/chrome/browser/ui/main/wrangled_browser.h b/ios/chrome/browser/ui/main/wrangled_browser.h index c4627b1c..56254f1 100644 --- a/ios/chrome/browser/ui/main/wrangled_browser.h +++ b/ios/chrome/browser/ui/main/wrangled_browser.h
@@ -36,8 +36,6 @@ @property(nonatomic) Browser* inactiveBrowser; // The browser state for this interface. This can never be nullptr. @property(nonatomic, readonly) ChromeBrowserState* browserState; -// YES if the tab view is available for user interaction. -@property(nonatomic) BOOL userInteractionEnabled; // YES if this interface is incognito. @property(nonatomic, readonly) BOOL incognito; // YES if TTS audio is playing.
diff --git a/ios/chrome/browser/ui/main/wrangled_browser.mm b/ios/chrome/browser/ui/main/wrangled_browser.mm index 774e4bc..87c9430 100644 --- a/ios/chrome/browser/ui/main/wrangled_browser.mm +++ b/ios/chrome/browser/ui/main/wrangled_browser.mm
@@ -48,14 +48,6 @@ return self.browser->GetBrowserState(); } -- (BOOL)userInteractionEnabled { - return self.coordinator.active; -} - -- (void)setUserInteractionEnabled:(BOOL)userInteractionEnabled { - self.coordinator.active = userInteractionEnabled; -} - - (BOOL)incognito { return self.browserState->IsOffTheRecord(); }
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.mm b/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.mm index beea774..12ac9d1b 100644 --- a/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.mm +++ b/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.mm
@@ -787,6 +787,11 @@ if (!self.feedWrapperViewController) { return; } + // Scroll events might still be queued for a previous scroll view which was + // now replaced. In these cases, ignore the scroll event. + if (scrollView != self.collectionView) { + return; + } [self.overscrollActionsController scrollViewDidScroll:scrollView]; [self updateFakeOmniboxForScrollPosition]; @@ -803,6 +808,11 @@ } - (void)scrollViewWillBeginDragging:(UIScrollView*)scrollView { + // Scroll events might still be queued for a previous scroll view which was + // now replaced. In these cases, ignore the scroll event. + if (scrollView != self.collectionView) { + return; + } // User has interacted with the surface, so it is safe to assume that a saved // scroll position can now be overriden. self.hasSavedOffsetFromPreviousScrollState = NO; @@ -813,6 +823,11 @@ - (void)scrollViewWillEndDragging:(UIScrollView*)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint*)targetContentOffset { + // Scroll events might still be queued for a previous scroll view which was + // now replaced. In these cases, ignore the scroll event. + if (scrollView != self.collectionView) { + return; + } [self.overscrollActionsController scrollViewWillEndDragging:scrollView withVelocity:velocity @@ -821,6 +836,11 @@ - (void)scrollViewDidEndDragging:(UIScrollView*)scrollView willDecelerate:(BOOL)decelerate { + // Scroll events might still be queued for a previous scroll view which was + // now replaced. In these cases, ignore the scroll event. + if (scrollView != self.collectionView) { + return; + } [self.overscrollActionsController scrollViewDidEndDragging:scrollView willDecelerate:decelerate]; if (self.isFeedVisible) { @@ -846,6 +866,11 @@ } - (BOOL)scrollViewShouldScrollToTop:(UIScrollView*)scrollView { + // Scroll events might still be queued for a previous scroll view which was + // now replaced. In these cases, ignore the scroll event. + if (scrollView != self.collectionView) { + return YES; + } // User has tapped the status bar to scroll to the top. // Prevent scrolling back to pre-focus state, making sure we don't have // two scrolling animations running at the same time.
diff --git a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_view_controller.mm b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_view_controller.mm index e33781d..6280d55 100644 --- a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_view_controller.mm +++ b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_view_controller.mm
@@ -641,12 +641,29 @@ didTapTrailingButtonAtIndexPath:(NSIndexPath*)indexPath { id<AutocompleteSuggestion> suggestion = [self suggestionAtIndexPath:indexPath]; - CHECK(suggestion); + if (suggestion != configuration.suggestion) { + return; + } [self.delegate autocompleteResultConsumer:self didTapTrailingButtonOnSuggestion:suggestion inRow:indexPath.row]; } +- (void)omniboxPopupRowWithConfiguration: + (OmniboxPopupRowContentConfiguration*)configuration + didUpdateAccessibilityActionsAtIndexPath:(NSIndexPath*)indexPath { + id<AutocompleteSuggestion> suggestion = + [self suggestionAtIndexPath:indexPath]; + if (suggestion != configuration.suggestion) { + return; + } + // Actions reference the configuration that created them. When applying a + // new configuration to the content view, also update the actions to avoid + // retaining the old configuration. + UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:indexPath]; + cell.accessibilityCustomActions = configuration.accessibilityCustomActions; +} + #pragma mark - OmniboxReturnDelegate - (void)omniboxReturnPressed:(id)sender { @@ -881,8 +898,8 @@ forIndexPath:indexPath]; OmniboxPopupRowContentConfiguration* configuration = - [OmniboxPopupRowContentConfiguration - configurationWithAutocompleteSuggestion:suggestion]; + [OmniboxPopupRowContentConfiguration cellConfiguration]; + configuration.suggestion = suggestion; configuration.delegate = self; configuration.indexPath = indexPath; configuration.showSeparator = @@ -894,8 +911,6 @@ configuration.imageRetriever = self.imageRetriever; [cell setContentConfiguration:configuration]; - cell.accessibilityCustomActions = - configuration.accessibilityCustomActions; cell.backgroundConfiguration = [UIBackgroundConfiguration clearConfiguration]; return cell;
diff --git a/ios/chrome/browser/ui/omnibox/popup/row/BUILD.gn b/ios/chrome/browser/ui/omnibox/popup/row/BUILD.gn index de5878c..f0c5c90 100644 --- a/ios/chrome/browser/ui/omnibox/popup/row/BUILD.gn +++ b/ios/chrome/browser/ui/omnibox/popup/row/BUILD.gn
@@ -8,7 +8,6 @@ "omnibox_popup_row_cell.mm", "omnibox_popup_row_cell_experimental.h", "omnibox_popup_row_cell_experimental.mm", - "omnibox_popup_row_content_configuration+view.h", "omnibox_popup_row_content_configuration.h", "omnibox_popup_row_content_configuration.mm", "omnibox_popup_row_content_view.h",
diff --git a/ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_content_configuration+view.h b/ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_content_configuration+view.h deleted file mode 100644 index 1d510bb97..0000000 --- a/ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_content_configuration+view.h +++ /dev/null
@@ -1,44 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef IOS_CHROME_BROWSER_UI_OMNIBOX_POPUP_ROW_OMNIBOX_POPUP_ROW_CONTENT_CONFIGURATION_VIEW_H_ -#define IOS_CHROME_BROWSER_UI_OMNIBOX_POPUP_ROW_OMNIBOX_POPUP_ROW_CONTENT_CONFIGURATION_VIEW_H_ - -#import "ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_content_configuration.h" - -@protocol OmniboxIcon; - -/// OmniboxPopupRow content configuration interface for the content view. -@interface OmniboxPopupRowContentConfiguration () - -// Background. -@property(nonatomic, assign, readonly) BOOL showSelectedBackgroundView; - -// Leading Icon. -@property(nonatomic, strong, readonly) id<OmniboxIcon> leadingIcon; -@property(nonatomic, assign, readonly) BOOL leadingIconHighlighted; - -// Primary text. -@property(nonatomic, strong, readonly) NSAttributedString* primaryText; -@property(nonatomic, assign, readonly) NSInteger primaryTextNumberOfLines; - -// Secondary Text. -@property(nonatomic, strong, readonly) NSAttributedString* secondaryText; -@property(nonatomic, assign, readonly) NSInteger secondaryTextNumberOfLines; -@property(nonatomic, assign, readonly) BOOL secondaryTextFading; -@property(nonatomic, assign, readonly) BOOL secondaryTextDisplayAsURL; - -// Trailing Icon. -@property(nonatomic, strong, readonly) UIImage* trailingIcon; -@property(nonatomic, strong, readonly) UIColor* trailingIconTintColor; -@property(nonatomic, strong, readonly) - NSString* trailingButtonAccessibilityIdentifier; - -// Margins. -@property(nonatomic, assign, readonly) - NSDirectionalEdgeInsets directionalLayoutMargin; - -@end - -#endif // IOS_CHROME_BROWSER_UI_OMNIBOX_POPUP_ROW_OMNIBOX_POPUP_ROW_CONTENT_CONFIGURATION_VIEW_H_
diff --git a/ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_content_configuration.h b/ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_content_configuration.h index f7a9100..c10e8e5 100644 --- a/ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_content_configuration.h +++ b/ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_content_configuration.h
@@ -12,9 +12,7 @@ @protocol AutocompleteSuggestion; @protocol FaviconRetriever; @protocol ImageRetriever; -@class LayoutGuideCenter; -@class OmniboxIconView; -@class OmniboxPopupRowCell; +@protocol OmniboxIcon; @protocol OmniboxPopupRowDelegate; /// Content configuration of the omnibox popup row, contains the logic of the @@ -22,6 +20,8 @@ @interface OmniboxPopupRowContentConfiguration : NSObject <UIContentConfiguration> +/// Autocomplete suggestion. +@property(nonatomic, strong) id<AutocompleteSuggestion> suggestion; /// Delegate for events in OmniboxPopupRow. @property(nonatomic, weak) id<OmniboxPopupRowDelegate> delegate; /// Index path of the row. @@ -38,13 +38,40 @@ /// Image retriever for `OmniboxIconView`. @property(nonatomic, weak) id<ImageRetriever> imageRetriever; -/// Returns a omnibox popup row content configuration with the specified -/// autocomplete `suggestion`. -+ (instancetype)configurationWithAutocompleteSuggestion: - (id<AutocompleteSuggestion>)suggestion; +/// Returns the default configuration for a list cell. ++ (instancetype)cellConfiguration; - (instancetype)init NS_UNAVAILABLE; +#pragma mark - Content View interface + +// Background. +@property(nonatomic, assign, readonly) BOOL showSelectedBackgroundView; + +// Leading Icon. +@property(nonatomic, strong, readonly) id<OmniboxIcon> leadingIcon; +@property(nonatomic, assign, readonly) BOOL leadingIconHighlighted; + +// Primary text. +@property(nonatomic, strong, readonly) NSAttributedString* primaryText; +@property(nonatomic, assign, readonly) NSInteger primaryTextNumberOfLines; + +// Secondary Text. +@property(nonatomic, strong, readonly) NSAttributedString* secondaryText; +@property(nonatomic, assign, readonly) NSInteger secondaryTextNumberOfLines; +@property(nonatomic, assign, readonly) BOOL secondaryTextFading; +@property(nonatomic, assign, readonly) BOOL secondaryTextDisplayAsURL; + +// Trailing Icon. +@property(nonatomic, strong, readonly) UIImage* trailingIcon; +@property(nonatomic, strong, readonly) UIColor* trailingIconTintColor; +@property(nonatomic, strong, readonly) + NSString* trailingButtonAccessibilityIdentifier; + +// Margins. +@property(nonatomic, assign, readonly) + NSDirectionalEdgeInsets directionalLayoutMargin; + @end #endif // IOS_CHROME_BROWSER_UI_OMNIBOX_POPUP_ROW_OMNIBOX_POPUP_ROW_CONTENT_CONFIGURATION_H_
diff --git a/ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_content_configuration.mm b/ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_content_configuration.mm index 5deb36e..e6b18fd1 100644 --- a/ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_content_configuration.mm +++ b/ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_content_configuration.mm
@@ -14,7 +14,6 @@ #import "ios/chrome/browser/shared/ui/util/util_swift.h" #import "ios/chrome/browser/ui/omnibox/popup/autocomplete_suggestion.h" #import "ios/chrome/browser/ui/omnibox/popup/omnibox_popup_accessibility_identifier_constants.h" -#import "ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_content_configuration+view.h" #import "ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_content_view.h" #import "ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_delegate.h" #import "ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_util.h" @@ -35,91 +34,130 @@ } // namespace -@implementation OmniboxPopupRowContentConfiguration { - /// Autocomplete suggestion displayed in the view. - id<AutocompleteSuggestion> _suggestion; -} +/// Redefines "Content View interface" as readwrite. +@interface OmniboxPopupRowContentConfiguration () -- (instancetype)initWithAutocompleteSuggestion: - (id<AutocompleteSuggestion>)suggestion { - self = [super init]; - if (self) { - _suggestion = suggestion; +// Background. +@property(nonatomic, assign, readwrite) BOOL showSelectedBackgroundView; - // Leading Icon. - _leadingIcon = _suggestion.icon; +// Leading Icon. +@property(nonatomic, strong, readwrite) id<OmniboxIcon> leadingIcon; +@property(nonatomic, assign, readwrite) BOOL leadingIconHighlighted; - // Primary Text. - _primaryText = _suggestion.text; - if (_suggestion.isWrapping) { - _primaryTextNumberOfLines = kWrappingSuggestNumberOfLines; - } else { - _primaryTextNumberOfLines = 1; - } +// Primary text. +@property(nonatomic, strong, readwrite) NSAttributedString* primaryText; +@property(nonatomic, assign, readwrite) NSInteger primaryTextNumberOfLines; - // Secondary Text. - _secondaryText = _suggestion.detailText; - _secondaryTextNumberOfLines = - _suggestion.hasAnswer ? _suggestion.numberOfLines : 1; - _secondaryTextFading = !_suggestion.hasAnswer; - _secondaryTextDisplayAsURL = _suggestion.isURL; +// Secondary Text. +@property(nonatomic, strong, readwrite) NSAttributedString* secondaryText; +@property(nonatomic, assign, readwrite) NSInteger secondaryTextNumberOfLines; +@property(nonatomic, assign, readwrite) BOOL secondaryTextFading; +@property(nonatomic, assign, readwrite) BOOL secondaryTextDisplayAsURL; - // Trailing Button. - NSString* trailingButtonActionName = nil; - if (_suggestion.isTabMatch) { - _trailingIcon = DefaultSymbolWithPointSize(kNavigateToTabSymbol, - kTrailingButtonPointSize); - _trailingButtonAccessibilityIdentifier = - kOmniboxPopupRowSwitchTabAccessibilityIdentifier; - trailingButtonActionName = - l10n_util::GetNSString(IDS_IOS_OMNIBOX_POPUP_SWITCH_TO_OPEN_TAB); +// Trailing Icon. +@property(nonatomic, strong, readwrite) UIImage* trailingIcon; +@property(nonatomic, strong, readwrite) UIColor* trailingIconTintColor; +@property(nonatomic, strong, readwrite) + NSString* trailingButtonAccessibilityIdentifier; - } else if (_suggestion.isAppendable) { - _trailingIcon = DefaultSymbolWithPointSize(kRefineQuerySymbol, - kTrailingButtonPointSize); - _trailingButtonAccessibilityIdentifier = - kOmniboxPopupRowAppendAccessibilityIdentifier; - trailingButtonActionName = - l10n_util::GetNSString(IDS_IOS_OMNIBOX_POPUP_APPEND); - } +// Margins. +@property(nonatomic, assign, readwrite) + NSDirectionalEdgeInsets directionalLayoutMargin; - if (_trailingIcon) { - // Starting from iOS 16 `imageWithHorizontallyFlippedOrientation` is - // flipping the icon automatically when the UI is RTL/LTR. - if (@available(iOS 16, *)) { - _trailingIcon = [_trailingIcon imageWithHorizontallyFlippedOrientation]; - } - _trailingIcon = [_trailingIcon - imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; - } +@end - // Accessibility actions. - NSMutableArray<UIAccessibilityCustomAction*>* customActions = - [[NSMutableArray alloc] init]; - if (trailingButtonActionName) { - [customActions - addObject:[[UIAccessibilityCustomAction alloc] - initWithName:trailingButtonActionName - target:self - selector:@selector(trailingButtonTapped)]]; - } - self.accessibilityCustomActions = customActions; - } - return self; -} +@implementation OmniboxPopupRowContentConfiguration /// Layout this cell with the given data before displaying. -+ (instancetype)configurationWithAutocompleteSuggestion: - (id<AutocompleteSuggestion>)suggestion { - return [[OmniboxPopupRowContentConfiguration alloc] - initWithAutocompleteSuggestion:suggestion]; ++ (instancetype)cellConfiguration { + return [[OmniboxPopupRowContentConfiguration alloc] init]; +} + +- (void)setSuggestion:(id<AutocompleteSuggestion>)suggestion { + _suggestion = suggestion; + + // Leading Icon. + _leadingIcon = _suggestion.icon; + + // Primary Text. + _primaryText = _suggestion.text; + if (_suggestion.isWrapping) { + _primaryTextNumberOfLines = kWrappingSuggestNumberOfLines; + } else { + _primaryTextNumberOfLines = 1; + } + + // Secondary Text. + _secondaryText = _suggestion.detailText; + _secondaryTextNumberOfLines = + _suggestion.hasAnswer ? _suggestion.numberOfLines : 1; + _secondaryTextFading = !_suggestion.hasAnswer; + _secondaryTextDisplayAsURL = _suggestion.isURL; + + // Trailing Button. + NSString* trailingButtonActionName = nil; + if (_suggestion.isTabMatch) { + _trailingIcon = DefaultSymbolWithPointSize(kNavigateToTabSymbol, + kTrailingButtonPointSize); + _trailingButtonAccessibilityIdentifier = + kOmniboxPopupRowSwitchTabAccessibilityIdentifier; + trailingButtonActionName = + l10n_util::GetNSString(IDS_IOS_OMNIBOX_POPUP_SWITCH_TO_OPEN_TAB); + + } else if (_suggestion.isAppendable) { + _trailingIcon = DefaultSymbolWithPointSize(kRefineQuerySymbol, + kTrailingButtonPointSize); + _trailingButtonAccessibilityIdentifier = + kOmniboxPopupRowAppendAccessibilityIdentifier; + trailingButtonActionName = + l10n_util::GetNSString(IDS_IOS_OMNIBOX_POPUP_APPEND); + } + + if (_trailingIcon) { + // Starting from iOS 16 `imageWithHorizontallyFlippedOrientation` is + // flipping the icon automatically when the UI is RTL/LTR. + if (@available(iOS 16, *)) { + _trailingIcon = [_trailingIcon imageWithHorizontallyFlippedOrientation]; + } + _trailingIcon = [_trailingIcon + imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; + } + + // Accessibility actions. + NSMutableArray<UIAccessibilityCustomAction*>* customActions = + [[NSMutableArray alloc] init]; + if (trailingButtonActionName) { + [customActions addObject:[[UIAccessibilityCustomAction alloc] + initWithName:trailingButtonActionName + target:self + selector:@selector(trailingButtonTapped)]]; + } + self.accessibilityCustomActions = customActions; } #pragma mark - UIContentConfiguration - (id)copyWithZone:(NSZone*)zone { - // The configuration is immutable. - return self; + __typeof__(self) configuration = [[self.class alloc] init]; + configuration.suggestion = self.suggestion; + configuration.delegate = self.delegate; + configuration.indexPath = self.indexPath; + configuration.showSeparator = self.showSeparator; + configuration.semanticContentAttribute = self.semanticContentAttribute; + configuration.omniboxLayoutGuide = self.omniboxLayoutGuide; + configuration.faviconRetriever = self.faviconRetriever; + configuration.imageRetriever = self.imageRetriever; + + // Setting `suggestion` already sets some properties in "Content View + // interface". Update the properties that can change with + // `updatedConfigurationForState`. + configuration.showSelectedBackgroundView = self.showSelectedBackgroundView; + configuration.leadingIconHighlighted = self.leadingIconHighlighted; + configuration.primaryText = self.primaryText; + configuration.secondaryText = self.secondaryText; + configuration.trailingIconTintColor = self.trailingIconTintColor; + configuration.directionalLayoutMargin = self.directionalLayoutMargin; + return configuration; } - (UIView<UIContentView>*)makeContentView { @@ -132,32 +170,33 @@ if (![state isKindOfClass:[UIViewConfigurationState class]]) { return self; } + OmniboxPopupRowContentConfiguration* configuration = [self copy]; UIViewConfigurationState* viewState = state; // Highlight. const BOOL allowHighlight = viewState.highlighted || viewState.selected; - _showSelectedBackgroundView = allowHighlight; - _leadingIconHighlighted = allowHighlight; - _primaryText = + configuration.showSelectedBackgroundView = allowHighlight; + configuration.leadingIconHighlighted = allowHighlight; + configuration.primaryText = allowHighlight ? [self highlightedAttributedStringWithString:_suggestion.text] : _suggestion.text; - _secondaryText = + configuration.secondaryText = allowHighlight ? [self highlightedAttributedStringWithString:_suggestion.detailText] : _suggestion.detailText; - _trailingIconTintColor = + configuration.trailingIconTintColor = allowHighlight ? UIColor.whiteColor : [UIColor colorNamed:kBlueColor]; // Constraint to omnibox layout guide. - if (self.omniboxLayoutGuide && CanUseOmniboxLayoutGuide()) { + if (_omniboxLayoutGuide && CanUseOmniboxLayoutGuide()) { if (!ShouldApplyOmniboxLayoutGuide(state.traitCollection)) { - _directionalLayoutMargin = NSDirectionalEdgeInsetsZero; + configuration.directionalLayoutMargin = NSDirectionalEdgeInsetsZero; } else { - CGRect omniboxFrame = self.omniboxLayoutGuide.layoutFrame; - CGRect popupFrame = self.omniboxLayoutGuide.owningView.bounds; + CGRect omniboxFrame = _omniboxLayoutGuide.layoutFrame; + CGRect popupFrame = _omniboxLayoutGuide.owningView.bounds; UIEdgeInsets safeAreaInsets = - self.omniboxLayoutGuide.owningView.safeAreaInsets; + _omniboxLayoutGuide.owningView.safeAreaInsets; CGFloat leftSpace = CGRectGetMinX(omniboxFrame) - CGRectGetMinX(popupFrame) - safeAreaInsets.left; CGFloat rightSpace = CGRectGetMaxX(popupFrame) - @@ -168,12 +207,12 @@ UIUserInterfaceLayoutDirectionRightToLeft; CGFloat spacing = omniboxIsRTL ? rightSpace : leftSpace; CGFloat leadingMargin = spacing + kOmniboxLayoutGuideLeadingOffset; - _directionalLayoutMargin = + configuration.directionalLayoutMargin = NSDirectionalEdgeInsetsMake(0, leadingMargin, 0, 0); } } - return self; + return configuration; } #pragma mark - Private
diff --git a/ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_content_view.mm b/ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_content_view.mm index d42a52b..16ce8b4 100644 --- a/ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_content_view.mm +++ b/ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_content_view.mm
@@ -8,7 +8,6 @@ #import "ios/chrome/browser/shared/ui/elements/extended_touch_target_button.h" #import "ios/chrome/browser/shared/ui/elements/fade_truncating_label.h" #import "ios/chrome/browser/ui/omnibox/popup/omnibox_icon_view.h" -#import "ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_content_configuration+view.h" #import "ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_delegate.h" #import "ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_util.h" #import "ios/chrome/common/ui/colors/semantic_color_names.h" @@ -326,6 +325,9 @@ self.directionalLayoutMargins = configuration.directionalLayoutMargin; self.semanticContentAttribute = configuration.semanticContentAttribute; + [configuration.delegate + omniboxPopupRowWithConfiguration:configuration + didUpdateAccessibilityActionsAtIndexPath:configuration.indexPath]; } /// Handles tap on trailing button.
diff --git a/ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_delegate.h b/ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_delegate.h index cde6496..bb8af3ba 100644 --- a/ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_delegate.h +++ b/ios/chrome/browser/ui/omnibox/popup/row/omnibox_popup_row_delegate.h
@@ -17,6 +17,11 @@ (OmniboxPopupRowContentConfiguration*)configuration didTapTrailingButtonAtIndexPath:(NSIndexPath*)indexPath; +/// Accessibility actions updated. +- (void)omniboxPopupRowWithConfiguration: + (OmniboxPopupRowContentConfiguration*)configuration + didUpdateAccessibilityActionsAtIndexPath:(NSIndexPath*)indexPath; + @end #endif // IOS_CHROME_BROWSER_UI_OMNIBOX_POPUP_ROW_OMNIBOX_POPUP_ROW_DELEGATE_H_
diff --git a/ios/chrome/browser/ui/policy/idle/idle_timeout_policy_scene_agent.mm b/ios/chrome/browser/ui/policy/idle/idle_timeout_policy_scene_agent.mm index b1ed7648..27a39ae2 100644 --- a/ios/chrome/browser/ui/policy/idle/idle_timeout_policy_scene_agent.mm +++ b/ios/chrome/browser/ui/policy/idle/idle_timeout_policy_scene_agent.mm
@@ -16,6 +16,9 @@ #import "ios/chrome/browser/enterprise/model/idle/idle_service_observer_bridge.h" #import "ios/chrome/browser/shared/coordinator/scene/scene_ui_provider.h" #import "ios/chrome/browser/shared/model/browser/browser.h" +#import "ios/chrome/browser/shared/model/browser/browser_provider.h" +#import "ios/chrome/browser/shared/model/browser/browser_provider_interface.h" +#import "ios/chrome/browser/shared/model/web_state_list/web_state_list.h" #import "ios/chrome/browser/shared/public/commands/application_commands.h" #import "ios/chrome/browser/shared/public/commands/command_dispatcher.h" #import "ios/chrome/browser/shared/public/commands/snackbar_commands.h" @@ -28,6 +31,7 @@ #import "ios/chrome/browser/ui/policy/idle/idle_timeout_policy_utils.h" #import "ios/chrome/browser/ui/scoped_ui_blocker/scoped_ui_blocker.h" #import "ios/chrome/grit/ios_strings.h" +#import "ios/web/public/web_state.h" #import "ui/base/l10n/l10n_util.h" @interface IdleTimeoutPolicySceneAgent () < @@ -329,6 +333,7 @@ // Shows the notification dialog for the account on the `viewController` - (void)showIdleTimeoutConfirmation { + [self closeMediaPresentationsIfFullScreenMode]; _idleTimeoutConfirmationCoordinator = [[IdleTimeoutConfirmationCoordinator alloc] initWithBaseViewController:[_sceneUIProvider activeViewController] @@ -443,4 +448,17 @@ base::Seconds(5)); } +// Closes the media presentations to avoid having the fullscreen video on top of +// the dialog so the user does not miss the dialog if they are watching a video. +- (void)closeMediaPresentationsIfFullScreenMode { + Browser* currentBrowser = + self.sceneState.browserProviderInterface.currentBrowserProvider.browser; + CHECK(currentBrowser); + web::WebState* activeWebState = + currentBrowser->GetWebStateList()->GetActiveWebState(); + if (activeWebState) { + activeWebState->CloseMediaPresentations(); + } +} + @end
diff --git a/ios/chrome/browser/ui/save_to_drive/BUILD.gn b/ios/chrome/browser/ui/save_to_drive/BUILD.gn index 59d35a0..dc1c68f 100644 --- a/ios/chrome/browser/ui/save_to_drive/BUILD.gn +++ b/ios/chrome/browser/ui/save_to_drive/BUILD.gn
@@ -10,6 +10,7 @@ "save_to_drive_mediator.mm", ] deps = [ + ":file_destination_picker", ":util", "//base", "//ios/chrome/app/strings:ios_strings_grit", @@ -21,12 +22,40 @@ "//ios/chrome/browser/signin/model:system_identity", "//ios/chrome/browser/ui/account_picker", "//ios/chrome/browser/ui/account_picker:account_picker_configuration", + "//ios/chrome/browser/ui/account_picker:account_picker_consumer", "//ios/chrome/browser/ui/authentication/signin:signin_headers", "//ui/base", ] frameworks = [ "UIKit.framework" ] } +source_set("file_destination_picker_constants") { + sources = [ + "file_destination_picker_constants.h", + "file_destination_picker_constants.mm", + ] +} + +source_set("file_destination_picker") { + sources = [ + "file_destination.h", + "file_destination_picker_action_delegate.h", + "file_destination_picker_consumer.h", + "file_destination_picker_view_controller.h", + "file_destination_picker_view_controller.mm", + ] + deps = [ + ":file_destination_picker_constants", + "//ios/chrome/app/strings:ios_strings_grit", + "//ios/chrome/browser/shared/ui/symbols", + "//ios/chrome/browser/shared/ui/table_view:utils", + "//ios/chrome/common/ui/colors", + "//ui/base", + ] + public_deps = [ "//ios/chrome/browser/shared/ui/table_view" ] + frameworks = [ "UIKit.framework" ] +} + source_set("util") { sources = [ "save_to_drive_util.h", @@ -78,6 +107,7 @@ testonly = true sources = [ "save_to_drive_egtest.mm" ] deps = [ + ":file_destination_picker_constants", "//ios/chrome/browser/drive/model:test_constants", "//ios/chrome/browser/shared/public/features", "//ios/chrome/browser/signin/model:fake_system_identity",
diff --git a/ios/chrome/browser/ui/save_to_drive/file_destination.h b/ios/chrome/browser/ui/save_to_drive/file_destination.h new file mode 100644 index 0000000..6f5401b --- /dev/null +++ b/ios/chrome/browser/ui/save_to_drive/file_destination.h
@@ -0,0 +1,14 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_UI_SAVE_TO_DRIVE_FILE_DESTINATION_H_ +#define IOS_CHROME_BROWSER_UI_SAVE_TO_DRIVE_FILE_DESTINATION_H_ + +// Available destinations for downloads in the file destination picker. +enum class FileDestination { + kFiles, + kDrive, +}; + +#endif // IOS_CHROME_BROWSER_UI_SAVE_TO_DRIVE_FILE_DESTINATION_H_
diff --git a/ios/chrome/browser/ui/save_to_drive/file_destination_picker_action_delegate.h b/ios/chrome/browser/ui/save_to_drive/file_destination_picker_action_delegate.h new file mode 100644 index 0000000..8d7116d --- /dev/null +++ b/ios/chrome/browser/ui/save_to_drive/file_destination_picker_action_delegate.h
@@ -0,0 +1,21 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_UI_SAVE_TO_DRIVE_FILE_DESTINATION_PICKER_ACTION_DELEGATE_H_ +#define IOS_CHROME_BROWSER_UI_SAVE_TO_DRIVE_FILE_DESTINATION_PICKER_ACTION_DELEGATE_H_ + +#import <UIKit/UIKit.h> + +#import "ios/chrome/browser/ui/save_to_drive/file_destination.h" + +// Delegate for actions performed through the file picker. +@protocol FileDestinationPickerActionDelegate + +// Called when the user selects a destination in the file picker. +- (void)fileDestinationPicker:(UIViewController*)picker + didSelectDestination:(FileDestination)destination; + +@end + +#endif // IOS_CHROME_BROWSER_UI_SAVE_TO_DRIVE_FILE_DESTINATION_PICKER_ACTION_DELEGATE_H_
diff --git a/ios/chrome/browser/ui/save_to_drive/file_destination_picker_constants.h b/ios/chrome/browser/ui/save_to_drive/file_destination_picker_constants.h new file mode 100644 index 0000000..39ae4f1 --- /dev/null +++ b/ios/chrome/browser/ui/save_to_drive/file_destination_picker_constants.h
@@ -0,0 +1,14 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_UI_SAVE_TO_DRIVE_FILE_DESTINATION_PICKER_CONSTANTS_H_ +#define IOS_CHROME_BROWSER_UI_SAVE_TO_DRIVE_FILE_DESTINATION_PICKER_CONSTANTS_H_ + +#import <Foundation/Foundation.h> + +// Accessibility identifiers for file destination picker table view cells. +extern NSString* const kFileDestinationPickerFilesAccessibilityIdentifier; +extern NSString* const kFileDestinationPickerDriveAccessibilityIdentifier; + +#endif // IOS_CHROME_BROWSER_UI_SAVE_TO_DRIVE_FILE_DESTINATION_PICKER_CONSTANTS_H_
diff --git a/ios/chrome/browser/ui/save_to_drive/file_destination_picker_constants.mm b/ios/chrome/browser/ui/save_to_drive/file_destination_picker_constants.mm new file mode 100644 index 0000000..e2545d7 --- /dev/null +++ b/ios/chrome/browser/ui/save_to_drive/file_destination_picker_constants.mm
@@ -0,0 +1,10 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/browser/ui/save_to_drive/file_destination_picker_constants.h" + +NSString* const kFileDestinationPickerFilesAccessibilityIdentifier = + @"kFileDestinationPickerFilesAccessibilityIdentifier"; +NSString* const kFileDestinationPickerDriveAccessibilityIdentifier = + @"kFileDestinationPickerDriveAccessibilityIdentifier";
diff --git a/ios/chrome/browser/ui/save_to_drive/file_destination_picker_consumer.h b/ios/chrome/browser/ui/save_to_drive/file_destination_picker_consumer.h new file mode 100644 index 0000000..ad6ad57 --- /dev/null +++ b/ios/chrome/browser/ui/save_to_drive/file_destination_picker_consumer.h
@@ -0,0 +1,16 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_UI_SAVE_TO_DRIVE_FILE_DESTINATION_PICKER_CONSUMER_H_ +#define IOS_CHROME_BROWSER_UI_SAVE_TO_DRIVE_FILE_DESTINATION_PICKER_CONSUMER_H_ + +#import "ios/chrome/browser/ui/save_to_drive/file_destination.h" + +@protocol FileDestinationPickerConsumer + +- (void)setSelectedDestination:(FileDestination)destination; + +@end + +#endif // IOS_CHROME_BROWSER_UI_SAVE_TO_DRIVE_FILE_DESTINATION_PICKER_CONSUMER_H_
diff --git a/ios/chrome/browser/ui/save_to_drive/file_destination_picker_view_controller.h b/ios/chrome/browser/ui/save_to_drive/file_destination_picker_view_controller.h new file mode 100644 index 0000000..00b2957 --- /dev/null +++ b/ios/chrome/browser/ui/save_to_drive/file_destination_picker_view_controller.h
@@ -0,0 +1,29 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_UI_SAVE_TO_DRIVE_FILE_DESTINATION_PICKER_VIEW_CONTROLLER_H_ +#define IOS_CHROME_BROWSER_UI_SAVE_TO_DRIVE_FILE_DESTINATION_PICKER_VIEW_CONTROLLER_H_ + +#import <UIKit/UIKit.h> + +#import "ios/chrome/browser/shared/ui/table_view/chrome_table_view_controller.h" +#import "ios/chrome/browser/ui/save_to_drive/file_destination_picker_consumer.h" + +@protocol FileDestinationPickerActionDelegate; + +@interface FileDestinationPickerViewController + : ChromeTableViewController <FileDestinationPickerConsumer> + +- (instancetype)init NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithStyle:(UITableViewStyle)style NS_UNAVAILABLE; +- (instancetype)initWithCoder:(NSCoder*)coder NS_UNAVAILABLE; +- (instancetype)initWithNibName:(NSString*)nibNameOrNil + bundle:(NSBundle*)nibBundleOrNil NS_UNAVAILABLE; + +@property(nonatomic, weak) id<FileDestinationPickerActionDelegate> + actionDelegate; + +@end + +#endif // IOS_CHROME_BROWSER_UI_SAVE_TO_DRIVE_FILE_DESTINATION_PICKER_VIEW_CONTROLLER_H_
diff --git a/ios/chrome/browser/ui/save_to_drive/file_destination_picker_view_controller.mm b/ios/chrome/browser/ui/save_to_drive/file_destination_picker_view_controller.mm new file mode 100644 index 0000000..c514f08 --- /dev/null +++ b/ios/chrome/browser/ui/save_to_drive/file_destination_picker_view_controller.mm
@@ -0,0 +1,199 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/browser/ui/save_to_drive/file_destination_picker_view_controller.h" + +#import "ios/chrome/browser/shared/ui/symbols/symbols.h" +#import "ios/chrome/browser/shared/ui/table_view/cells/table_view_image_item.h" +#import "ios/chrome/browser/shared/ui/table_view/table_view_utils.h" +#import "ios/chrome/browser/ui/save_to_drive/file_destination_picker_action_delegate.h" +#import "ios/chrome/browser/ui/save_to_drive/file_destination_picker_constants.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" +#import "ios/chrome/grit/ios_strings.h" +#import "ui/base/l10n/l10n_util_mac.h" + +namespace { + +#if BUILDFLAG(IOS_USE_BRANDED_SYMBOLS) +// Names of icons used for items in the file destination picker. +NSString* const kFilesAppWithBackgroundImage = + @"apple_files_app_with_background"; +NSString* const kDriveAppWithBackgroundImage = + @"google_drive_app_with_background"; +#endif + +// Bottom inset to compensate for empty space at the bottom of the table view. +constexpr CGFloat kContentInsetBottom = -16.; + +// Identifier to table view sections. +typedef NS_ENUM(NSInteger, SectionIdentifier) { + SectionIdentifierDestination, +}; + +// Identifiers for table view items. +typedef NS_ENUM(NSInteger, ItemIdentifier) { + ItemIdentifierFiles, + ItemIdentifierDrive, + ItemIdentifierFilesSelected, + ItemIdentifierDriveSelected, +}; + +// Returns selection state (selected or not) associated with `identifier`. +bool ItemIsSelected(ItemIdentifier identifier) { + switch (identifier) { + case ItemIdentifierFiles: + case ItemIdentifierDrive: + return false; + case ItemIdentifierFilesSelected: + case ItemIdentifierDriveSelected: + return true; + } +} + +// Returns the `FileDestination` associated with `identifier`. +FileDestination ItemFileDestination(ItemIdentifier identifier) { + switch (identifier) { + case ItemIdentifierFiles: + case ItemIdentifierFilesSelected: + return FileDestination::kFiles; + case ItemIdentifierDrive: + case ItemIdentifierDriveSelected: + return FileDestination::kDrive; + } +} + +using FileDestinationPickerDataSource = + UITableViewDiffableDataSource<NSNumber*, NSNumber*>; +using FileDestinationPickerDataSourceSnapshot = + NSDiffableDataSourceSnapshot<NSNumber*, NSNumber*>; + +} // namespace + +@interface FileDestinationPickerViewController () <UITableViewDelegate> + +@end + +@implementation FileDestinationPickerViewController { + FileDestinationPickerDataSource* _dataSource; + FileDestination _selectedDestination; + NSLayoutConstraint* _tableViewHeightConstraint; +} + +#pragma mark - UITableViewController + +- (instancetype)init { + return [super initWithStyle:UITableViewStyleInsetGrouped]; +} + +#pragma mark - UIViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Set up table view. + self.tableView.scrollEnabled = NO; + self.tableView.alwaysBounceVertical = NO; + self.tableView.backgroundColor = UIColor.clearColor; + self.tableView.directionalLayoutMargins = + NSDirectionalEdgeInsetsMake(0, CGFLOAT_MIN, 0, CGFLOAT_MIN); + self.tableView.contentInsetAdjustmentBehavior = + UIScrollViewContentInsetAdjustmentNever; + self.tableView.tableHeaderView = + [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, CGFLOAT_MIN)]; + self.tableView.tableFooterView = + [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, CGFLOAT_MIN)]; + self.tableView.showsVerticalScrollIndicator = NO; + self.tableView.showsHorizontalScrollIndicator = NO; + RegisterTableViewCell<TableViewImageCell>(self.tableView); + // Constrain table view height to its content height. + _tableViewHeightConstraint = [self.tableView.heightAnchor + constraintEqualToConstant:self.tableView.contentSize.height + + kContentInsetBottom]; + _tableViewHeightConstraint.active = YES; + // Set up data source. + __weak __typeof(self) weakSelf = self; + _dataSource = [[FileDestinationPickerDataSource alloc] + initWithTableView:self.tableView + cellProvider:^UITableViewCell*(UITableView* tableView, + NSIndexPath* indexPath, + NSNumber* itemIdentifier) { + return + [weakSelf cellForTableView:tableView + indexPath:indexPath + itemIdentifier:static_cast<ItemIdentifier>( + itemIdentifier.integerValue)]; + }]; + [self updateDataSource]; +} + +- (void)viewWillLayoutSubviews { + [super viewWillLayoutSubviews]; + _tableViewHeightConstraint.constant = + self.tableView.contentSize.height + kContentInsetBottom; +} + +#pragma mark - UITableViewDelegate + +- (void)tableView:(UITableView*)tableView + didSelectRowAtIndexPath:(NSIndexPath*)indexPath { + const ItemIdentifier selectedIdentifier = static_cast<ItemIdentifier>( + [_dataSource itemIdentifierForIndexPath:indexPath].integerValue); + const FileDestination destination = ItemFileDestination(selectedIdentifier); + [self.actionDelegate fileDestinationPicker:self + didSelectDestination:destination]; +} + +#pragma mark - FileDestinationPickerConsumer + +- (void)setSelectedDestination:(FileDestination)destination { + _selectedDestination = destination; + [self updateDataSource]; +} + +#pragma mark - Private + +// Returns a cell. +- (UITableViewCell*)cellForTableView:(UITableView*)tableView + indexPath:(NSIndexPath*)indexPath + itemIdentifier:(ItemIdentifier)itemIdentifier { + TableViewImageCell* cell = + DequeueTableViewCell<TableViewImageCell>(tableView); + const bool selected = ItemIsSelected(itemIdentifier); + FileDestination destination = ItemFileDestination(itemIdentifier); +#if BUILDFLAG(IOS_USE_BRANDED_SYMBOLS) + cell.imageView.image = + destination == FileDestination::kFiles + ? [UIImage imageNamed:kFilesAppWithBackgroundImage] + : [UIImage imageNamed:kDriveAppWithBackgroundImage]; +#endif + cell.textLabel.text = + destination == FileDestination::kFiles + ? l10n_util::GetNSString(IDS_IOS_DOWNLOAD_MANAGER_DOWNLOAD_TO_FILES) + : l10n_util::GetNSString(IDS_IOS_DOWNLOAD_MANAGER_DOWNLOAD_TO_DRIVE); + cell.accessoryType = selected ? UITableViewCellAccessoryCheckmark + : UITableViewCellAccessoryNone; + cell.backgroundColor = [UIColor colorNamed:kGroupedSecondaryBackgroundColor]; + cell.selectionStyle = UITableViewCellSelectionStyleNone; + cell.accessibilityIdentifier = + destination == FileDestination::kFiles + ? kFileDestinationPickerFilesAccessibilityIdentifier + : kFileDestinationPickerDriveAccessibilityIdentifier; + return cell; +} + +// Updates data source as a function of `_selectedDestination`. +- (void)updateDataSource { + FileDestinationPickerDataSourceSnapshot* snapshot = + [[FileDestinationPickerDataSourceSnapshot alloc] init]; + [snapshot appendSectionsWithIdentifiers:@[ @(SectionIdentifierDestination) ]]; + ItemIdentifier fileItem = _selectedDestination == FileDestination::kFiles + ? ItemIdentifierFilesSelected + : ItemIdentifierFiles; + ItemIdentifier driveItem = _selectedDestination == FileDestination::kDrive + ? ItemIdentifierDriveSelected + : ItemIdentifierDrive; + [snapshot appendItemsWithIdentifiers:@[ @(fileItem), @(driveItem) ]]; + [_dataSource applySnapshot:snapshot animatingDifferences:NO]; +} + +@end
diff --git a/ios/chrome/browser/ui/save_to_drive/save_to_drive_coordinator.mm b/ios/chrome/browser/ui/save_to_drive/save_to_drive_coordinator.mm index 6af1fb2..9c11742 100644 --- a/ios/chrome/browser/ui/save_to_drive/save_to_drive_coordinator.mm +++ b/ios/chrome/browser/ui/save_to_drive/save_to_drive_coordinator.mm
@@ -16,6 +16,7 @@ #import "ios/chrome/browser/ui/account_picker/account_picker_coordinator.h" #import "ios/chrome/browser/ui/account_picker/account_picker_coordinator_delegate.h" #import "ios/chrome/browser/ui/authentication/signin/signin_completion_info.h" +#import "ios/chrome/browser/ui/save_to_drive/file_destination_picker_view_controller.h" #import "ios/chrome/browser/ui/save_to_drive/save_to_drive_mediator.h" #import "ios/chrome/browser/ui/save_to_drive/save_to_drive_util.h" #import "ios/web/public/download/download_task.h" @@ -30,6 +31,7 @@ SaveToDriveMediator* _mediator; AccountPickerCoordinator* _accountPickerCoordinator; id<SystemIdentity> _selectedIdentity; + FileDestinationPickerViewController* _destinationPicker; } - (instancetype)initWithBaseViewController:(UIViewController*)viewController @@ -58,13 +60,22 @@ browser:self.browser configuration:accountPickerConfiguration]; _accountPickerCoordinator.delegate = self; + _destinationPicker = [[FileDestinationPickerViewController alloc] init]; + _accountPickerCoordinator.accountConfirmationChildViewController = + _destinationPicker; [_accountPickerCoordinator start]; + + _destinationPicker.actionDelegate = _mediator; + _mediator.accountPickerConsumer = _accountPickerCoordinator; + _mediator.destinationPickerConsumer = _destinationPicker; } - (void)stop { [_mediator disconnect]; _mediator = nil; - + [_destinationPicker willMoveToParentViewController:nil]; + [_destinationPicker removeFromParentViewController]; + _destinationPicker = nil; [_accountPickerCoordinator stop]; _accountPickerCoordinator = nil; } @@ -119,7 +130,7 @@ // If an identity was selected, start the download and save to Drive. if (_selectedIdentity) { - [_mediator startDownloadAndSaveToDriveWithIdentity:_selectedIdentity]; + [_mediator startDownloadWithIdentity:_selectedIdentity]; } id<SaveToDriveCommands> saveToDriveCommandsHandler = HandlerForProtocol(
diff --git a/ios/chrome/browser/ui/save_to_drive/save_to_drive_egtest.mm b/ios/chrome/browser/ui/save_to_drive/save_to_drive_egtest.mm index 36c9b64a..6fa32e2 100644 --- a/ios/chrome/browser/ui/save_to_drive/save_to_drive_egtest.mm +++ b/ios/chrome/browser/ui/save_to_drive/save_to_drive_egtest.mm
@@ -11,6 +11,7 @@ #import "ios/chrome/browser/ui/authentication/signin_earl_grey.h" #import "ios/chrome/browser/ui/authentication/signin_earl_grey_ui_test_util.h" #import "ios/chrome/browser/ui/download/download_manager_constants.h" +#import "ios/chrome/browser/ui/save_to_drive/file_destination_picker_constants.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey.h" #import "ios/chrome/test/earl_grey/chrome_matchers.h" #import "ios/chrome/test/earl_grey/chrome_test_case.h" @@ -21,11 +22,26 @@ namespace { -// Matcher for "Download" button on Download Manager UI. -id<GREYMatcher> DownloadToDriveButton() { - return grey_allOf(grey_accessibilityID( - kDownloadManagerDownloadToDriveAccessibilityIdentifier), - grey_interactable(), nil); +// Matcher for "Drive" button on Download Manager UI. +// TODO(crbug.com/1495352): When "Drive" button is removed, change the +// accessibility identifier to that of the "SAVE..." button. +id<GREYMatcher> DownloadButton() { + return grey_accessibilityID( + kDownloadManagerDownloadToDriveAccessibilityIdentifier); +} + +// Matcher for "Files" destination button in File destination picker UI. +id<GREYMatcher> FileDestinationFilesButton() { + return grey_allOf( + grey_accessibilityID(kFileDestinationPickerFilesAccessibilityIdentifier), + grey_interactable(), nil); +} + +// Matcher for "Drive" destination button in File destination picker UI. +id<GREYMatcher> FileDestinationDriveButton() { + return grey_allOf( + grey_accessibilityID(kFileDestinationPickerDriveAccessibilityIdentifier), + grey_interactable(), nil); } // Matcher for "GET THE APP" button on Download Manager UI. @@ -102,10 +118,43 @@ return configuration; } -// Tests that when the user is signed-in, they can choose Drive as destination -// for their download, tap "Save" in the account picker. Tests that after a few -// seconds, the file has been uploaded successfully and a "GET THE APP" button -// is displayed. +// Tests that when the user is signed-in, they can choose "Files" as destination +// for their download in the file destination picker, tap "Save" in the account +// picker. Tests that after a few seconds, the file has been downloaded +// successfully and a "OPEN IN..." button is displayed. +- (void)testCanDownloadToFiles { + // Sign-in. + FakeSystemIdentity* fakeIdentity = [FakeSystemIdentity fakeIdentity1]; + [SigninEarlGreyUI signinWithFakeIdentity:fakeIdentity]; + // Load a page with a download button and tap the download button. + [ChromeEarlGrey loadURL:self.testServer->GetURL("/")]; + [ChromeEarlGrey waitForWebStateContainingText:"Download"]; + [ChromeEarlGrey tapWebStateElementWithID:@"download"]; + // Check that the "Drive" button is presented and tap it. + [ChromeEarlGrey waitForUIElementToAppearWithMatcher:DownloadButton()]; + [[EarlGrey selectElementWithMatcher:DownloadButton()] + performAction:grey_tap()]; + // Wait for the account picker to appear, select "Files" and tap "Save". + [ChromeEarlGrey waitForUIElementToAppearWithMatcher:AccountPicker()]; + [ChromeEarlGrey + waitForUIElementToAppearWithMatcher:FileDestinationFilesButton()]; + [[EarlGrey selectElementWithMatcher:FileDestinationFilesButton()] + performAction:grey_tap()]; + [[EarlGrey selectElementWithMatcher:AccountPickerPrimaryButton()] + performAction:grey_tap()]; + // Wait for the account picker to disappear. + [ChromeEarlGrey waitForUIElementToDisappearWithMatcher:AccountPicker()]; + // Check that after a few seconds, the "OPEN IN..." button appears. + [ChromeEarlGrey + waitForUIElementToAppearWithMatcher:chrome_test_util::OpenInButton() + timeout:base::test::ios:: + kWaitForDownloadTimeout]; +} + +// Tests that when the user is signed-in, they can choose "Drive" as destination +// for their download in the file destination picker, tap "Save" in the account +// picker. Tests that after a few seconds, the file has been downloaded +// successfully and a "GET THE APP" button is displayed. - (void)testCanDownloadToDrive { // Sign-in. FakeSystemIdentity* fakeIdentity = [FakeSystemIdentity fakeIdentity1]; @@ -115,11 +164,15 @@ [ChromeEarlGrey waitForWebStateContainingText:"Download"]; [ChromeEarlGrey tapWebStateElementWithID:@"download"]; // Check that the "Drive" button is presented and tap it. - [ChromeEarlGrey waitForUIElementToAppearWithMatcher:DownloadToDriveButton()]; - [[EarlGrey selectElementWithMatcher:DownloadToDriveButton()] + [ChromeEarlGrey waitForUIElementToAppearWithMatcher:DownloadButton()]; + [[EarlGrey selectElementWithMatcher:DownloadButton()] performAction:grey_tap()]; - // Wait for the account picker to appear and tap "Save". + // Wait for the account picker to appear, select "Drive" and tap "Save". [ChromeEarlGrey waitForUIElementToAppearWithMatcher:AccountPicker()]; + [ChromeEarlGrey + waitForUIElementToAppearWithMatcher:FileDestinationDriveButton()]; + [[EarlGrey selectElementWithMatcher:FileDestinationDriveButton()] + performAction:grey_tap()]; [[EarlGrey selectElementWithMatcher:AccountPickerPrimaryButton()] performAction:grey_tap()]; // Wait for the account picker to disappear. @@ -133,7 +186,7 @@ // Tests that when the user is signed-in, they can choose Drive as destination // for their download, tap "Save" in the account picker. Tests that after a few -// seconds, if the file upload fails, the user can tap "Try Again..." in the +// seconds, if the file upload fails, the user can tap "TRY AGAIN..." in the // download manager, and after a few seconds, when the upload succeeds, an "GET // THE APP" button is displayed. - (void)testCanRetryDownloadToDrive { @@ -148,11 +201,15 @@ [ChromeEarlGrey waitForWebStateContainingText:"Download"]; [ChromeEarlGrey tapWebStateElementWithID:@"download"]; // Check that the "Drive" button is presented and tap it. - [ChromeEarlGrey waitForUIElementToAppearWithMatcher:DownloadToDriveButton()]; - [[EarlGrey selectElementWithMatcher:DownloadToDriveButton()] + [ChromeEarlGrey waitForUIElementToAppearWithMatcher:DownloadButton()]; + [[EarlGrey selectElementWithMatcher:DownloadButton()] performAction:grey_tap()]; - // Wait for the account picker to appear and tap "Save". + // Wait for the account picker to appear, select "Drive" and tap "Save". [ChromeEarlGrey waitForUIElementToAppearWithMatcher:AccountPicker()]; + [ChromeEarlGrey + waitForUIElementToAppearWithMatcher:FileDestinationDriveButton()]; + [[EarlGrey selectElementWithMatcher:FileDestinationDriveButton()] + performAction:grey_tap()]; [[EarlGrey selectElementWithMatcher:AccountPickerPrimaryButton()] performAction:grey_tap()]; // Wait for the account picker to disappear.
diff --git a/ios/chrome/browser/ui/save_to_drive/save_to_drive_mediator.h b/ios/chrome/browser/ui/save_to_drive/save_to_drive_mediator.h index 0ee5d482..d174e21 100644 --- a/ios/chrome/browser/ui/save_to_drive/save_to_drive_mediator.h +++ b/ios/chrome/browser/ui/save_to_drive/save_to_drive_mediator.h
@@ -7,6 +7,10 @@ #import <Foundation/Foundation.h> +#import "ios/chrome/browser/ui/save_to_drive/file_destination_picker_action_delegate.h" + +@protocol AccountPickerConsumer; +@protocol FileDestinationPickerConsumer; @protocol SaveToDriveCommands; @protocol SystemIdentity; @@ -15,7 +19,11 @@ } // Mediator for the Save to Drive feature. -@interface SaveToDriveMediator : NSObject +@interface SaveToDriveMediator : NSObject <FileDestinationPickerActionDelegate> + +@property(nonatomic, weak) id<AccountPickerConsumer> accountPickerConsumer; +@property(nonatomic, weak) id<FileDestinationPickerConsumer> + destinationPickerConsumer; // Initialization - (instancetype)initWithDownloadTask:(web::DownloadTask*)downloadTask @@ -28,7 +36,7 @@ // Starts the current download task and prepare to save the downloaded file to // Drive. -- (void)startDownloadAndSaveToDriveWithIdentity:(id<SystemIdentity>)identity; +- (void)startDownloadWithIdentity:(id<SystemIdentity>)identity; @end
diff --git a/ios/chrome/browser/ui/save_to_drive/save_to_drive_mediator.mm b/ios/chrome/browser/ui/save_to_drive/save_to_drive_mediator.mm index 90104e80..0f09f7b 100644 --- a/ios/chrome/browser/ui/save_to_drive/save_to_drive_mediator.mm +++ b/ios/chrome/browser/ui/save_to_drive/save_to_drive_mediator.mm
@@ -8,6 +8,10 @@ #import "ios/chrome/browser/drive/model/drive_tab_helper.h" #import "ios/chrome/browser/shared/public/commands/save_to_drive_commands.h" #import "ios/chrome/browser/signin/model/system_identity.h" +// TODO(crbug.com/1495352): Depend on account_picker_consumer.h directly. +#import "ios/chrome/browser/ui/account_picker/account_picker_coordinator.h" +#import "ios/chrome/browser/ui/save_to_drive/file_destination.h" +#import "ios/chrome/browser/ui/save_to_drive/file_destination_picker_consumer.h" #import "ios/web/public/download/download_task.h" #import "ios/web/public/download/download_task_observer_bridge.h" #import "ios/web/public/web_state_observer_bridge.h" @@ -22,6 +26,7 @@ raw_ptr<web::WebState> _webState; std::unique_ptr<web::WebStateObserverBridge> _webStateObserverBridge; id<SaveToDriveCommands> _saveToDriveCommandsHandler; + FileDestination _fileDestination; } - (instancetype)initWithDownloadTask:(web::DownloadTask*)downloadTask @@ -38,6 +43,7 @@ std::make_unique<web::WebStateObserverBridge>(self); _webState->AddObserver(_webStateObserverBridge.get()); _saveToDriveCommandsHandler = saveToDriveCommandsHandler; + _fileDestination = FileDestination::kFiles; } return self; } @@ -56,17 +62,32 @@ _saveToDriveCommandsHandler = nil; } -- (void)startDownloadAndSaveToDriveWithIdentity:(id<SystemIdentity>)identity { +- (void)startDownloadWithIdentity:(id<SystemIdentity>)identity { if (!_downloadTask || !_webState) { return; } - DriveTabHelper* driveTabHelper = DriveTabHelper::FromWebState(_webState); + if (_fileDestination == FileDestination::kDrive) { + DriveTabHelper* driveTabHelper = DriveTabHelper::FromWebState(_webState); + driveTabHelper->AddDownloadToSaveToDrive(_downloadTask, identity); + } DownloadManagerTabHelper* downloadManagerTabHelper = DownloadManagerTabHelper::FromWebState(_webState); - driveTabHelper->AddDownloadToSaveToDrive(_downloadTask, identity); downloadManagerTabHelper->StartDownload(_downloadTask); } +#pragma mark - Properties getters/setters + +- (void)setAccountPickerConsumer:(id<AccountPickerConsumer>)consumer { + _accountPickerConsumer = consumer; + [self updateConsumersAnimated:NO]; +} + +- (void)setDestinationPickerConsumer: + (id<FileDestinationPickerConsumer>)consumer { + _destinationPickerConsumer = consumer; + [self updateConsumersAnimated:NO]; +} + #pragma mark - CRWDownloadTaskObserver - (void)downloadDestroyed:(web::DownloadTask*)task { @@ -91,4 +112,21 @@ [_saveToDriveCommandsHandler hideSaveToDrive]; } +#pragma mark - FileDestinationPickerActionDelegate + +- (void)fileDestinationPicker:(UIViewController*)picker + didSelectDestination:(FileDestination)destination { + _fileDestination = destination; + [self updateConsumersAnimated:YES]; +} + +#pragma mark - Private + +- (void)updateConsumersAnimated:(BOOL)animated { + bool destinationIsFiles = _fileDestination == FileDestination::kFiles; + [self.accountPickerConsumer setIdentityButtonHidden:destinationIsFiles + animated:animated]; + [self.destinationPickerConsumer setSelectedDestination:_fileDestination]; +} + @end
diff --git a/ios/chrome/browser/ui/save_to_drive/save_to_drive_mediator_unittest.mm b/ios/chrome/browser/ui/save_to_drive/save_to_drive_mediator_unittest.mm index b84e6ef..a82ed9f 100644 --- a/ios/chrome/browser/ui/save_to_drive/save_to_drive_mediator_unittest.mm +++ b/ios/chrome/browser/ui/save_to_drive/save_to_drive_mediator_unittest.mm
@@ -142,19 +142,42 @@ } // Tests that the `DownloadManagerTabHelper` is informed and that the -// `DownloadTask` and the selected identity are sent to the `DriveTabHelper` -// when `startDownloadAndSaveToDriveWithIdentity:` is invoked. -TEST_F(SaveToDriveMediatorTest, AddsDownloadToSaveToDrive) { +// `DownloadTask` and the selected identity are not sent to the `DriveTabHelper` +// when `startDownloadWithIdentity:` is invoked if the selected destination is +// `FileDestination::kFiles`. +TEST_F(SaveToDriveMediatorTest, DoesNotSaveToDriveIfDestinationIsFiles) { id<SystemIdentity> identity = [FakeSystemIdentity fakeIdentity1]; FakeDownloadManagerTabHelper* download_helper = GetDownloadManagerTabHelper(); DriveTabHelper* drive_helper = GetDriveTabHelper(); EXPECT_EQ(nullptr, download_helper->download_task_started_); EXPECT_EQ(nullptr, drive_helper->GetUploadTaskForDownload(download_task_.get())); - [mediator_ startDownloadAndSaveToDriveWithIdentity:identity]; + [mediator_ fileDestinationPicker:nil + didSelectDestination:FileDestination::kFiles]; + [mediator_ startDownloadWithIdentity:identity]; EXPECT_EQ(download_task_.get(), download_helper->download_task_started_); UploadTask* upload_task = drive_helper->GetUploadTaskForDownload(download_task_.get()); - EXPECT_NE(nullptr, upload_task); + ASSERT_EQ(nullptr, upload_task); +} + +// Tests that the `DownloadManagerTabHelper` is informed and that the +// `DownloadTask` and the selected identity are sent to the `DriveTabHelper` +// when `startDownloadWithIdentity:` is invoked if the selected destination is +// `FileDestination::kDrive`. +TEST_F(SaveToDriveMediatorTest, SavesToDriveIfDestinationIsDrive) { + id<SystemIdentity> identity = [FakeSystemIdentity fakeIdentity1]; + FakeDownloadManagerTabHelper* download_helper = GetDownloadManagerTabHelper(); + DriveTabHelper* drive_helper = GetDriveTabHelper(); + EXPECT_EQ(nullptr, download_helper->download_task_started_); + EXPECT_EQ(nullptr, + drive_helper->GetUploadTaskForDownload(download_task_.get())); + [mediator_ fileDestinationPicker:nil + didSelectDestination:FileDestination::kDrive]; + [mediator_ startDownloadWithIdentity:identity]; + EXPECT_EQ(download_task_.get(), download_helper->download_task_started_); + UploadTask* upload_task = + drive_helper->GetUploadTaskForDownload(download_task_.get()); + ASSERT_NE(nullptr, upload_task); EXPECT_EQ(identity, upload_task->GetIdentity()); }
diff --git a/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_view_controller.mm b/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_view_controller.mm index a4e6b48..5ce1f5a 100644 --- a/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_view_controller.mm +++ b/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_view_controller.mm
@@ -32,12 +32,9 @@ constexpr CGFloat kHorizontalInsets = -48.; // Space between the Chrome logo and the top of the screen. constexpr CGFloat kTopSpacing = 40.; -// Spacing between the elements of the top stack view. -constexpr CGFloat kTopStackViewSpacing = 16.; -// Space above and below the primary button. -constexpr CGFloat kPrimaryButtonPadding = 14.; -// Primary button height. -constexpr CGFloat kPrimaryButtonHeight = 50.; +// Space between the elements of the top stack view and around the primary +// button. +constexpr CGFloat kDefaultMargin = 16.; // Logo dimensions. constexpr CGFloat kLogoSize = 50.; // The minimum height of the search engines table. @@ -119,7 +116,7 @@ _topZoneStackView = [[UIStackView alloc] init]; [_scrollContentView addSubview:_topZoneStackView]; _topZoneStackView.axis = UILayoutConstraintAxisVertical; - _topZoneStackView.spacing = kTopStackViewSpacing; + _topZoneStackView.spacing = kDefaultMargin; _topZoneStackView.distribution = UIStackViewDistributionEqualSpacing; _topZoneStackView.alignment = UIStackViewAlignmentCenter; _topZoneStackView.translatesAutoresizingMaskIntoConstraints = NO; @@ -266,17 +263,15 @@ [_primaryButton.bottomAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.bottomAnchor - constant:-kPrimaryButtonPadding], + constant:-kDefaultMargin], [_primaryButton.widthAnchor constraintEqualToAnchor:self.view.widthAnchor constant:kHorizontalInsets], - [_primaryButton.heightAnchor - constraintEqualToConstant:kPrimaryButtonHeight], [_separatorView.widthAnchor constraintEqualToAnchor:self.view.widthAnchor], [_separatorView.heightAnchor constraintEqualToConstant:kLineWidth], [_separatorView.bottomAnchor constraintEqualToAnchor:_primaryButton.topAnchor - constant:-kPrimaryButtonPadding], + constant:-kDefaultMargin], [searchEngineTableView.widthAnchor constraintEqualToAnchor:_scrollContentView.widthAnchor],
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_egtest.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_egtest.mm index 4b176601..75c32e7 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_egtest.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_egtest.mm
@@ -351,7 +351,7 @@ // See https://crbug.com/1448618. // Should be removed after TODO(crbug.com/1451733). if ([self isRunningTest:@selector - (testSyncSpinnerDismissedInRecentlyClosedTabs)]) { + (DISABLE_testSyncSpinnerDismissedInRecentlyClosedTabs)]) { [ChromeEarlGrey signOutAndClearIdentitiesAndWaitForCompletion]; } @@ -2790,7 +2790,7 @@ // Tests that once an account is signed in, the syncing spinner is eventually // dismissed: https://crbug.com/1422634. -- (void)testSyncSpinnerDismissedInRecentlyClosedTabs { +- (void)DISABLE_testSyncSpinnerDismissedInRecentlyClosedTabs { // Clear browsing history to reduce delay during sign-in and fix this test's // flakiness on iOS 16. [ChromeEarlGrey clearBrowsingHistory];
diff --git a/ios/chrome/browser/ui/whats_new/data_source/resources/whats_new_entries.plist b/ios/chrome/browser/ui/whats_new/data_source/resources/whats_new_entries.plist index c5cf9d2..f09ebd6 100644 --- a/ios/chrome/browser/ui/whats_new/data_source/resources/whats_new_entries.plist +++ b/ios/chrome/browser/ui/whats_new/data_source/resources/whats_new_entries.plist
@@ -26,6 +26,8 @@ <true/> <key>IsSystemSymbol</key> <true/> + <key>IsIphoneOnly</key> + <true/> <key>InstructionSteps</key> <array> <string>IDS_IOS_WHATS_NEW_LENSSEARCH_INSTRUCTIONS_STEP_1</string> @@ -61,6 +63,8 @@ <true/> <key>IsSystemSymbol</key> <true/> + <key>IsIphoneOnly</key> + <true/> <key>InstructionSteps</key> <array> <string>IDS_IOS_WHATS_NEW_BOTTOMOMNIBOX_INSTRUCTIONS_STEP_1</string>
diff --git a/ios/chrome/browser/ui/whats_new/data_source/whats_new_data_source.mm b/ios/chrome/browser/ui/whats_new/data_source/whats_new_data_source.mm index 798841f..1201bde 100644 --- a/ios/chrome/browser/ui/whats_new/data_source/whats_new_data_source.mm +++ b/ios/chrome/browser/ui/whats_new/data_source/whats_new_data_source.mm
@@ -43,6 +43,7 @@ NSString* const kDictionaryInstructionsKey = @"InstructionSteps"; NSString* const kDictionaryPrimaryActionKey = @"PrimaryAction"; NSString* const kDictionaryLearnMoreURLKey = @"LearnMoreUrlString"; +NSString* const kDictionaryIsIphoneOnlyKey = @"IsIphoneOnly"; // Returns the UIColor corresponding to `color`. UIColor* GenerateColor(NSString* color) { @@ -296,6 +297,10 @@ } whats_new_item.screenshotTextProvider = screenshot_text_provider; + // Load whether or not the feature is iPhone-only. + BOOL is_iphone_only = [entry[kDictionaryIsIphoneOnlyKey] boolValue]; + whats_new_item.isIphoneOnly = is_iphone_only; + return whats_new_item; }
diff --git a/ios/chrome/browser/ui/whats_new/data_source/whats_new_item.h b/ios/chrome/browser/ui/whats_new/data_source/whats_new_item.h index f663457e..e214ff8 100644 --- a/ios/chrome/browser/ui/whats_new/data_source/whats_new_item.h +++ b/ios/chrome/browser/ui/whats_new/data_source/whats_new_item.h
@@ -72,6 +72,8 @@ @property(nonatomic, copy) NSString* screenshotName; // What's New entry screenshot text provier for localization. @property(nonatomic, copy) NSDictionary* screenshotTextProvider; +// Whether or not the feature or Chrome tip is exclusively available on iPhone. +@property(nonatomic, assign) BOOL isIphoneOnly; @end
diff --git a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_ar.xtb b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_ar.xtb index c40d69ad..3842502 100644 --- a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_ar.xtb +++ b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_ar.xtb
@@ -1,11 +1,24 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="ar"> +<translation id="1490261980219759295">النقر على "نقل شريط العناوين إلى الأسفل" أو "نقل شريط العناوين إلى الأعلى"</translation> +<translation id="2137165884805511788">نقل شريط العناوين</translation> +<translation id="2761788987260570878">التقاط صورة لنتيجة البحث</translation> +<translation id="2831471248037735974">غير متوفِّرة</translation> +<translation id="2922210239002704889">الانتقال إلى الصفحة الرئيسية أو لوحة المفاتيح</translation> +<translation id="3213807041830307252">يمكنك التسوُّق وترجمة النصوص والتعرُّف على العناصر التي تراها باستخدام الكاميرا ومعرض الصور.</translation> <translation id="3575234738189584619">البحث باستخدام "عدسة Google"</translation> +<translation id="407946894978745303">النقر مع الاستمرار على شريط العناوين</translation> <translation id="4133265950310064865">حماية مُحسّنة</translation> +<translation id="4930518928386526946">شريط العناوين السفلي</translation> +<translation id="5916880837791732435">اختيار "الحماية المحسَّنة"</translation> +<translation id="624407319061517182">أعلى مستويات الأمان في Chrome</translation> <translation id="6277426346321820595">بلا حماية</translation> <translation id="6366190659675876144">الحماية العادية</translation> +<translation id="8160552050894850653">النقر على "رمز العدسة"</translation> <translation id="8717864919010420084">نسخ الرابط</translation> <translation id="880967149107462122">الانتقال إلى إعدادات Chrome</translation> +<translation id="8819155700324279105">يمكنك إضافة طبقة حماية إضافية من التهديدات على الإنترنت.</translation> <translation id="9203951165704618409">يمكنك نقل شريط العناوين من أعلى الشاشة إلى أسفلها لتخصيص تجربة التصفُّح.</translation> +<translation id="9222996962165162291">النقر على "الخصوصية والأمان" ثم على "التصفّح الآمن"</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_cs.xtb b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_cs.xtb index 8f2d782..8f8ac9b 100644 --- a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_cs.xtb +++ b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_cs.xtb
@@ -1,11 +1,24 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="cs"> +<translation id="1490261980219759295">Vyberte Přesunout adresní řádek dolů nebo Přesunout adresní řádek nahoru.</translation> +<translation id="2137165884805511788">Přesunutí adresního řádku</translation> +<translation id="2761788987260570878">Vyfoťte, co chcete vyhledat.</translation> +<translation id="2831471248037735974">není k dispozici</translation> +<translation id="2922210239002704889">Přejděte na svou domovskou stránku nebo klávesnici.</translation> +<translation id="3213807041830307252">Nakupujte, překládejte a identifikujte různé věci pomocí fotoaparátu a galerie fotek.</translation> <translation id="3575234738189584619">Vyhledat pomocí Lens</translation> +<translation id="407946894978745303">Klepněte na adresní řádek a podržte ho.</translation> <translation id="4133265950310064865">Vylepšená ochrana</translation> +<translation id="4930518928386526946">Adresní řádek dole</translation> +<translation id="5916880837791732435">Vyberte možnost Vylepšená ochrana.</translation> +<translation id="624407319061517182">Nejsilnější zabezpečení Chromu</translation> <translation id="6277426346321820595">Bez ochrany</translation> <translation id="6366190659675876144">Standardní ochrana</translation> +<translation id="8160552050894850653">Klepněte na ikonu funkce Lens.</translation> <translation id="8717864919010420084">Kopírovat odkaz</translation> <translation id="880967149107462122">Přejděte do nastavení Chromu</translation> +<translation id="8819155700324279105">Využijte další vrstvu ochrany proti online hrozbám</translation> <translation id="9203951165704618409">Prostředí při procházení si můžete přizpůsobit přesunutím adresního řádku shora dolů.</translation> +<translation id="9222996962165162291">Klepněte na Ochrana soukromí a zabezpečení a poté na Bezpečné prohlížení.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_en-GB.xtb b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_en-GB.xtb index b7991c16..0043212d 100644 --- a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_en-GB.xtb +++ b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_en-GB.xtb
@@ -1,11 +1,24 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="en-GB"> +<translation id="1490261980219759295">Select 'Move address bar to bottom' or 'Move address bar to top'</translation> +<translation id="2137165884805511788">Move address bar</translation> +<translation id="2761788987260570878">Take a photo of your search</translation> +<translation id="2831471248037735974">N/A</translation> +<translation id="2922210239002704889">Go to your homepage or keyboard</translation> +<translation id="3213807041830307252">Shop, translate and identify what you see using your camera and photo gallery.</translation> <translation id="3575234738189584619">Search with Lens</translation> +<translation id="407946894978745303">Tap and hold the address bar</translation> <translation id="4133265950310064865">Enhanced protection</translation> +<translation id="4930518928386526946">Bottom address bar</translation> +<translation id="5916880837791732435">Choose 'Enhanced protection'</translation> +<translation id="624407319061517182">Chrome’s strongest security</translation> <translation id="6277426346321820595">No protection</translation> <translation id="6366190659675876144">Standard protection</translation> +<translation id="8160552050894850653">Tap the 'Lens icon'</translation> <translation id="8717864919010420084">Copy link</translation> <translation id="880967149107462122">Go to Chrome settings</translation> +<translation id="8819155700324279105">Add an extra layer of protection against online threats</translation> <translation id="9203951165704618409">Switch your address bar from the top to the bottom for a customised browsing experience.</translation> +<translation id="9222996962165162291">Tap 'Privacy and security' and then 'Safe Browsing'</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_fi.xtb b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_fi.xtb index 2891311..73c2aec 100644 --- a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_fi.xtb +++ b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_fi.xtb
@@ -1,11 +1,24 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="fi"> +<translation id="1490261980219759295">Valitse "Siirrä osoitepalkki alareunaan" tai "Siirrä osoitepalkki yläreunaan".</translation> +<translation id="2137165884805511788">Siirrä osoitepalkki</translation> +<translation id="2761788987260570878">Ota kuva haustasi</translation> +<translation id="2831471248037735974">–</translation> +<translation id="2922210239002704889">Siirry etusivulle tai näppäimistölle</translation> +<translation id="3213807041830307252">Tee ostoksia, käännä ja tunnista näkemiäsi asioita kameran ja kuvagallerian avulla.</translation> <translation id="3575234738189584619">Hae Lensilla</translation> +<translation id="407946894978745303">Kosketa osoitepalkkia pitkään</translation> <translation id="4133265950310064865">Parannettu suojaus</translation> +<translation id="4930518928386526946">Alaosan osoitepalkki</translation> +<translation id="5916880837791732435">Valitse Parannettu suojaus</translation> +<translation id="624407319061517182">Chromen tehokkain suojaus</translation> <translation id="6277426346321820595">Ei suojausta</translation> <translation id="6366190659675876144">Perustason suojaus</translation> +<translation id="8160552050894850653">Napauta Lens-kuvaketta</translation> <translation id="8717864919010420084">Kopioi linkki</translation> <translation id="880967149107462122">Siirry Chromen asetuksiin</translation> +<translation id="8819155700324279105">Lisäsuojaus verkkouhkia vastaan</translation> <translation id="9203951165704618409">Personoi selauskokemuksesi vaihtamalla osoitepalkin sijainti yläosasta alaosaan.</translation> +<translation id="9222996962165162291">Valitse "Yksityisyys ja turvallisuus" ja sitten "Selaussuoja"</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_ja.xtb b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_ja.xtb index db7dfae4..c70e6f3 100644 --- a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_ja.xtb +++ b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_ja.xtb
@@ -1,11 +1,24 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="ja"> +<translation id="1490261980219759295">[アドレスバーを一番下に移動] または [アドレスバーを一番上に移動] を選択します</translation> +<translation id="2137165884805511788">アドレスバーを移動する</translation> +<translation id="2761788987260570878">検索するものの写真を撮影します</translation> +<translation id="2831471248037735974">なし</translation> +<translation id="2922210239002704889">ホームページまたはキーボードに移動します</translation> +<translation id="3213807041830307252">カメラとフォト ギャラリーを使って、見たものを購入、翻訳、特定できます。</translation> <translation id="3575234738189584619">レンズで検索</translation> +<translation id="407946894978745303">アドレスバーを長押しします</translation> <translation id="4133265950310064865">保護強化機能</translation> +<translation id="4930518928386526946">下部のアドレスバー</translation> +<translation id="5916880837791732435">[保護強化機能] を選択します</translation> +<translation id="624407319061517182">Chrome の最高水準のセキュリティ</translation> <translation id="6277426346321820595">保護なし</translation> <translation id="6366190659675876144">標準保護機能</translation> +<translation id="8160552050894850653">「レンズアイコン」をタップします</translation> <translation id="8717864919010420084">リンクをコピー</translation> <translation id="880967149107462122">Chrome 設定に移動します</translation> +<translation id="8819155700324279105">オンラインの脅威に対する保護を強化</translation> <translation id="9203951165704618409">アドレスバーの位置を上から下に変更して、ブラウジング環境をカスタマイズできます。</translation> +<translation id="9222996962165162291">[プライバシーとセキュリティ]、[セーフ ブラウジング] をタップします</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_kn.xtb b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_kn.xtb index 8f7cbfa..fa678738 100644 --- a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_kn.xtb +++ b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_kn.xtb
@@ -1,11 +1,24 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="kn"> +<translation id="1490261980219759295">"ವಿಳಾಸ ಪಟ್ಟಿಯನ್ನು ಕೆಳಕ್ಕೆ ಸರಿಸಿ" ಅಥವಾ "ವಿಳಾಸ ಪಟ್ಟಿಯನ್ನು ಮೇಲಕ್ಕೆ ಸರಿಸಿ" ಎಂಬುದನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation> +<translation id="2137165884805511788">ವಿಳಾಸ ಪಟ್ಟಿಯನ್ನು ಸರಿಸಿ</translation> +<translation id="2761788987260570878">ನಿಮ್ಮ ಹುಡುಕಾಟದ ಫೋಟೋವನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ</translation> +<translation id="2831471248037735974">ಅನ್ವಯವಾಗುವುದಿಲ್ಲ</translation> +<translation id="2922210239002704889">ನಿಮ್ಮ ಹೋಮ್ ಪೇಜ್ ಅಥವಾ ಕೀಬೋರ್ಡ್ಗೆ ಹೋಗಿ</translation> +<translation id="3213807041830307252">ನಿಮ್ಮ ಕ್ಯಾಮರಾ ಮತ್ತು ಫೋಟೋ ಗ್ಯಾಲರಿಯನ್ನು ಬಳಸಿಕೊಂಡು ನೀವು ಏನನ್ನು ನೋಡುತ್ತೀರಿ ಎಂಬುದನ್ನು ಶಾಪಿಂಗ್ ಮಾಡಿ, ಅನುವಾದಿಸಿ ಮತ್ತು ಗುರುತಿಸಿ.</translation> <translation id="3575234738189584619">Lens ಮೂಲಕ ಹುಡುಕಿ</translation> +<translation id="407946894978745303">ವಿಳಾಸ ಪಟ್ಟಿಯನ್ನು ಒತ್ತಿಹಿಡಿದುಕೊಳ್ಳಿ</translation> <translation id="4133265950310064865">ವರ್ಧಿತ ಸುರಕ್ಷತೆ</translation> +<translation id="4930518928386526946">ಕೆಳಗಿನ ವಿಳಾಸ ಪಟ್ಟಿ</translation> +<translation id="5916880837791732435">"ವರ್ಧಿತ ಸುರಕ್ಷತೆ" ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation> +<translation id="624407319061517182">Chrome ನ ಪ್ರಬಲ ಭದ್ರತೆ</translation> <translation id="6277426346321820595">ಯಾವುದೇ ರಕ್ಷಣೆಯಿಲ್ಲ</translation> <translation id="6366190659675876144">ಪ್ರಮಾಣಿತ ಸುರಕ್ಷತೆ</translation> +<translation id="8160552050894850653">“Lens ಐಕಾನ್” ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ</translation> <translation id="8717864919010420084">ಲಿಂಕ್ ನಕಲಿಸಿ</translation> <translation id="880967149107462122">Go to Chrome ಸೆಟ್ಟಿಂಗ್ಗಳಿಗೆ ಹೋಗಿ</translation> +<translation id="8819155700324279105">ಆನ್ಲೈನ್ ಬೆದರಿಕೆಗಳ ವಿರುದ್ಧ ಸುರಕ್ಷತೆಯ ಹೆಚ್ಚುವರಿ ಲೇಯರ್ ಅನ್ನು ಸೇರಿಸಿ</translation> <translation id="9203951165704618409">ಕಸ್ಟಮೈಸ್ ಮಾಡಿದ ಬ್ರೌಸಿಂಗ್ ಅನುಭವವನ್ನು ಪಡೆಯಲು, ನಿಮ್ಮ ವಿಳಾಸ ಪಟ್ಟಿಯನ್ನು ಮೇಲಿನಿಂದ ಕೆಳಕ್ಕೆ ಬದಲಾಯಿಸಿ.</translation> +<translation id="9222996962165162291">"ಗೌಪ್ಯತೆ ಮತ್ತು ಭದ್ರತೆ" ಮತ್ತು ನಂತರ "ಸುರಕ್ಷಿತ ಬ್ರೌಸಿಂಗ್" ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_ko.xtb b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_ko.xtb index 83a005a..331039ce 100644 --- a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_ko.xtb +++ b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_ko.xtb
@@ -1,11 +1,24 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="ko"> +<translation id="1490261980219759295">'주소 표시줄을 하단으로 이동' 또는 '주소 표시줄을 상단으로 이동'을 선택합니다.</translation> +<translation id="2137165884805511788">주소 표시줄 이동</translation> +<translation id="2761788987260570878">검색 항목의 사진을 찍습니다.</translation> +<translation id="2831471248037735974">해당 사항 없음</translation> +<translation id="2922210239002704889">홈페이지 또는 키보드로 이동합니다.</translation> +<translation id="3213807041830307252">카메라와 사진 갤러리를 사용하여 지금 보고 있는 항목을 쇼핑하고, 번역하고, 식별하세요</translation> <translation id="3575234738189584619">렌즈로 검색</translation> +<translation id="407946894978745303">주소 표시줄을 길게 탭합니다.</translation> <translation id="4133265950310064865">향상된 보호 모드</translation> +<translation id="4930518928386526946">하단 주소 표시줄</translation> +<translation id="5916880837791732435">'향상된 보호 모드'를 선택합니다.</translation> +<translation id="624407319061517182">Chrome의 가장 강력한 보안</translation> <translation id="6277426346321820595">보호되지 않음</translation> <translation id="6366190659675876144">표준 보호 모드</translation> +<translation id="8160552050894850653">'렌즈 아이콘'을 탭합니다.</translation> <translation id="8717864919010420084">링크 복사</translation> <translation id="880967149107462122">Chrome 설정으로 이동합니다.</translation> +<translation id="8819155700324279105">온라인 위협에 대비한 보호 단계 추가</translation> <translation id="9203951165704618409">주소 표시줄을 상단에서 하단으로 전환하여 탐색 환경을 맞춤설정하세요</translation> +<translation id="9222996962165162291">'개인 정보 보호 및 보안'을 탭한 다음 '세이프 브라우징'을 탭합니다.</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_mr.xtb b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_mr.xtb index cc217f4..24ce9f43 100644 --- a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_mr.xtb +++ b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_mr.xtb
@@ -1,11 +1,24 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="mr"> +<translation id="1490261980219759295">"अॅड्रेस बारला तळाशी हलवा" किंवा "अॅड्रेस बारला सर्वात वर हलवा" निवडा</translation> +<translation id="2137165884805511788">अॅड्रेस बार हलवा</translation> +<translation id="2761788987260570878">तुमच्या शोधाचा फोटो घ्या</translation> +<translation id="2831471248037735974">N/A</translation> +<translation id="2922210239002704889">तुमच्या होमपेजवर किंवा कीबोर्डवर जा</translation> +<translation id="3213807041830307252">तुम्ही पाहता त्या गोष्टींना तुमचा कॅमेरा आणि फोटो गॅलरी वापरून खरेदी करा, त्याचे भाषांतर करा व ओळखा.</translation> <translation id="3575234738189584619">Lens वापरून शोधा</translation> +<translation id="407946894978745303">अॅड्रेस बारवर टॅप करून धरून ठेवा</translation> <translation id="4133265950310064865">वर्धित संरक्षण</translation> +<translation id="4930518928386526946">तळाशी असलेला अॅड्रेस बार</translation> +<translation id="5916880837791732435">“वर्धित संरक्षण” निवडा</translation> +<translation id="624407319061517182">Chrome ची सर्वात मजबूत सुरक्षा</translation> <translation id="6277426346321820595">संरक्षण नाही</translation> <translation id="6366190659675876144">साधारण संरक्षण</translation> +<translation id="8160552050894850653">"Lens आयकन" वर टॅप करा</translation> <translation id="8717864919010420084">लिंक कॉपी करा</translation> <translation id="880967149107462122">Chrome सेटिंग्ज वर जा</translation> +<translation id="8819155700324279105">ऑनलाइन धोक्यांपासून वाचण्यासाठी संरक्षणाचा अतिरिक्त स्तर जोडा</translation> <translation id="9203951165704618409">कस्टमाइझ केलेल्या ब्राउझिंग अनुभवासाठी तुमचा ॲड्रेस बार वरपासून खालपर्यंत स्विच करा.</translation> +<translation id="9222996962165162291">“गोपनीयता आणि सुरक्षा” व त्यानंतर “सुरक्षित ब्राउझिंग” वर टॅप करा</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_ro.xtb b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_ro.xtb index 38957070..90cdcbf1 100644 --- a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_ro.xtb +++ b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_ro.xtb
@@ -1,11 +1,24 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="ro"> +<translation id="1490261980219759295">Selectează Mută bara de adrese în partea de jos sau Mută bara de adrese în partea de sus</translation> +<translation id="2137165884805511788">Mută bara de adrese</translation> +<translation id="2761788987260570878">Fotografiază ceea ce vrei să cauți</translation> +<translation id="2831471248037735974">Nu este cazul</translation> +<translation id="2922210239002704889">Accesează pagina de pornire sau tastatura</translation> +<translation id="3213807041830307252">Cumpără, tradu și identifică ceea ce vezi cu ajutorul camerei foto și al galeriei foto.</translation> <translation id="3575234738189584619">Caută cu Lens</translation> +<translation id="407946894978745303">Atinge lung bara de adrese</translation> <translation id="4133265950310064865">Protecție îmbunătățită</translation> +<translation id="4930518928386526946">Bara de adrese din partea de jos</translation> +<translation id="5916880837791732435">Alege Protecție îmbunătățită</translation> +<translation id="624407319061517182">Cel mai înalt nivel de securitate de la Chrome</translation> <translation id="6277426346321820595">Fără protecție</translation> <translation id="6366190659675876144">Protecție standard</translation> +<translation id="8160552050894850653">Atinge pictograma Lens</translation> <translation id="8717864919010420084">Copiază linkul</translation> <translation id="880967149107462122">Accesează setările Chrome</translation> +<translation id="8819155700324279105">Adaugă un nivel suplimentar de protecție împotriva amenințărilor online</translation> <translation id="9203951165704618409">Mută bara de adrese din partea de sus în partea de jos pentru o experiență de navigare personalizată.</translation> +<translation id="9222996962165162291">Atinge Confidențialitate și securitate, apoi Navigare sigură</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_sl.xtb b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_sl.xtb index 75a2d82..c15d295a 100644 --- a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_sl.xtb +++ b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_sl.xtb
@@ -1,11 +1,24 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="sl"> +<translation id="1490261980219759295">Izbira možnosti »Premakni naslovno vrstico na dno« ali »Premakni naslovno vrstico na vrh«</translation> +<translation id="2137165884805511788">Premik naslovne vrstice</translation> +<translation id="2761788987260570878">Fotografiranje iskanja</translation> +<translation id="2831471248037735974">/</translation> +<translation id="2922210239002704889">Odpiranje domače strani ali tipkovnice</translation> +<translation id="3213807041830307252">Uporabite fotoaparat in fotogalerijo, da boste lahko nakupovali, prevajali in prepoznavali, kaj je prikazano.</translation> <translation id="3575234738189584619">Iskanje z Googlom Lens</translation> +<translation id="407946894978745303">Pridržanje naslovne vrstice</translation> <translation id="4133265950310064865">Izboljšana zaščita</translation> +<translation id="4930518928386526946">Spodnja naslovna vrstica</translation> +<translation id="5916880837791732435">Izberite »Izboljšana zaščita«</translation> +<translation id="624407319061517182">Chromova najmočnejša varnost</translation> <translation id="6277426346321820595">Brez zaščite</translation> <translation id="6366190659675876144">Standardna zaščita</translation> +<translation id="8160552050894850653">Dotik ikone »Lens«</translation> <translation id="8717864919010420084">Kopiraj povezavo</translation> <translation id="880967149107462122">Odprite nastavitve Chroma</translation> +<translation id="8819155700324279105">Dodajte še eno raven zaščite pred spletnimi grožnjami</translation> <translation id="9203951165704618409">Za prilagojeno izkušnjo brskanja preklopite naslovno vrstico z vrha na dno.</translation> +<translation id="9222996962165162291">Dotik možnosti »Zasebnost in varnost« in nato »Varno brskanje«</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_uk.xtb b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_uk.xtb index d87f34c..9b4cd42e 100644 --- a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_uk.xtb +++ b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_uk.xtb
@@ -1,11 +1,24 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="uk"> +<translation id="1490261980219759295">Виберіть "Перемістити адресний рядок униз" або "Перемістити адресний рядок угору"</translation> +<translation id="2137165884805511788">Перемістити адресний рядок</translation> +<translation id="2761788987260570878">Сфотографуйте свій пошуковий запит</translation> +<translation id="2831471248037735974">н/д</translation> +<translation id="2922210239002704889">Перейдіть на головну сторінку або клавіатуру</translation> +<translation id="3213807041830307252">Здійснюйте покупки, перекладайте тексти й визначайте об’єкти навколо за допомогою камери й фотогалереї.</translation> <translation id="3575234738189584619">Шукати через Об’єктив</translation> +<translation id="407946894978745303">Натисніть і утримуйте адресний рядок</translation> <translation id="4133265950310064865">Покращений захист</translation> +<translation id="4930518928386526946">Нижній адресний рядок</translation> +<translation id="5916880837791732435">Виберіть "Покращений захист"</translation> +<translation id="624407319061517182">Найвищий рівень безпеки в Chrome</translation> <translation id="6277426346321820595">Захист вимкнено</translation> <translation id="6366190659675876144">Стандартний захист</translation> +<translation id="8160552050894850653">Натисніть значок Об’єктива</translation> <translation id="8717864919010420084">Скопіювати посилання</translation> <translation id="880967149107462122">Перейдіть у налаштування Chrome</translation> +<translation id="8819155700324279105">Додайте ще один рівень захисту від загроз в Інтернеті</translation> <translation id="9203951165704618409">Щоб налаштувати веб-перегляд, ви можете перемістити адресний рядок згори вниз.</translation> +<translation id="9222996962165162291">Натисніть "Конфіденційність і безпека", а потім – "Безпечний перегляд"</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_zh-CN.xtb b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_zh-CN.xtb index aed1d05..edd7a551 100644 --- a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_zh-CN.xtb +++ b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_zh-CN.xtb
@@ -1,11 +1,24 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="zh-CN"> +<translation id="1490261980219759295">选择“将地址栏移到底部”或“将地址栏移到顶部”</translation> +<translation id="2137165884805511788">移动地址栏</translation> +<translation id="2761788987260570878">拍摄要搜索的内容</translation> +<translation id="2831471248037735974">不适用</translation> +<translation id="2922210239002704889">打开首页或键盘</translation> +<translation id="3213807041830307252">使用相机和图库购买、翻译和识别所见内容。</translation> <translation id="3575234738189584619">使用智能镜头搜索</translation> +<translation id="407946894978745303">点按并按住地址栏</translation> <translation id="4133265950310064865">增强型保护</translation> +<translation id="4930518928386526946">底部地址栏</translation> +<translation id="5916880837791732435">选择“增强型保护”</translation> +<translation id="624407319061517182">Chrome 的最强安全保护</translation> <translation id="6277426346321820595">无保护</translation> <translation id="6366190659675876144">标准保护</translation> +<translation id="8160552050894850653">点按“智能镜头图标”</translation> <translation id="8717864919010420084">复制链接</translation> <translation id="880967149107462122">前往 Chrome 设置</translation> +<translation id="8819155700324279105">增添一层额外的安全保障,防范在线威胁</translation> <translation id="9203951165704618409">您可以将地址栏从顶部移至底部,获享个性化的浏览体验。</translation> +<translation id="9222996962165162291">依次点按“隐私保护和安全性”与“安全浏览”</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_zh-HK.xtb b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_zh-HK.xtb index 07bc112c..404441e 100644 --- a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_zh-HK.xtb +++ b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_zh-HK.xtb
@@ -1,11 +1,24 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="zh-HK"> +<translation id="1490261980219759295">選取 [將網址列移至底部] 或 [將網址列移至頂部]</translation> +<translation id="2137165884805511788">移動網址列</translation> +<translation id="2761788987260570878">拍下搜尋內容</translation> +<translation id="2831471248037735974">不適用</translation> +<translation id="2922210239002704889">開啟首頁或鍵盤</translation> +<translation id="3213807041830307252">使用相機和相片購物、翻譯及識別所見內容。</translation> <translation id="3575234738189584619">用「智能鏡頭」搜尋</translation> +<translation id="407946894978745303">按住網址列</translation> <translation id="4133265950310064865">強化保護功能</translation> +<translation id="4930518928386526946">底部網址列</translation> +<translation id="5916880837791732435">選取 [強化保護]</translation> +<translation id="624407319061517182">Chrome 最強大的安全防護</translation> <translation id="6277426346321820595">沒有保護</translation> <translation id="6366190659675876144">標準保護功能</translation> +<translation id="8160552050894850653">輕按「智能鏡頭」圖示。</translation> <translation id="8717864919010420084">複製連結</translation> <translation id="880967149107462122">前往 Chrome 設定</translation> +<translation id="8819155700324279105">為對抗網上威脅增添多一重安全保障</translation> <translation id="9203951165704618409">你可將網址列從頂端移至底部,享受自訂瀏覽體驗。</translation> +<translation id="9222996962165162291">輕按 [私隱權和安全性],然後輕按 [安全瀏覽]</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_zh-TW.xtb b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_zh-TW.xtb index 0e08a987..832ca74c 100644 --- a/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_zh-TW.xtb +++ b/ios/chrome/browser/ui/whats_new/strings/resources/ios_whats_new_strings_zh-TW.xtb
@@ -1,11 +1,24 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="zh-TW"> +<translation id="1490261980219759295">選取「將網址列移至底部」或「將網址列移至頂端」</translation> +<translation id="2137165884805511788">移動網址列</translation> +<translation id="2761788987260570878">拍下搜尋內容</translation> +<translation id="2831471248037735974">不適用</translation> +<translation id="2922210239002704889">開啟首頁或鍵盤</translation> +<translation id="3213807041830307252">使用相機和相片購物、翻譯及辨識所見內容。</translation> <translation id="3575234738189584619">使用智慧鏡頭搜尋</translation> +<translation id="407946894978745303">按住網址列</translation> <translation id="4133265950310064865">強化防護</translation> +<translation id="4930518928386526946">底部網址列</translation> +<translation id="5916880837791732435">選擇「強化防護」</translation> +<translation id="624407319061517182">Chrome 最強大的安全防護機制</translation> <translation id="6277426346321820595">無防護</translation> <translation id="6366190659675876144">標準防護</translation> +<translation id="8160552050894850653">輕觸「智慧鏡頭」圖示</translation> <translation id="8717864919010420084">複製連結</translation> <translation id="880967149107462122">前往 Chrome 設定</translation> +<translation id="8819155700324279105">多添一層防護,有效防範線上威脅</translation> <translation id="9203951165704618409">你可以將網址列從頂端移至底部,享受量身打造的瀏覽體驗。</translation> +<translation id="9222996962165162291">依序輕觸「隱私權和安全性」和「安全瀏覽」</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/browser/ui/whats_new/whats_new_screenshot_view_controller.mm b/ios/chrome/browser/ui/whats_new/whats_new_screenshot_view_controller.mm index 72d07df4..a1c4684 100644 --- a/ios/chrome/browser/ui/whats_new/whats_new_screenshot_view_controller.mm +++ b/ios/chrome/browser/ui/whats_new/whats_new_screenshot_view_controller.mm
@@ -17,7 +17,11 @@ namespace { constexpr CGFloat kSpacingBeforeImageIfNoNavigationBar = 24; +constexpr CGFloat kLabelBottomMargin = -40; +constexpr CGFloat kLabelFontSize = 15; NSString* const kDarkModeAnimationSuffix = @"_darkmode"; +BOOL isIPad = + UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad; } // namespace @interface WhatsNewScreenshotViewController () @@ -28,6 +32,9 @@ @property(nonatomic, strong) id<LottieAnimation> screenshotViewWrapperDarkMode; // Child view controller used to display the alert full-screen. @property(nonatomic, strong) ConfirmationAlertViewController* alertScreen; +// Label displayed indicating that the What's New feature is only available on +// iPhone. +@property(nonatomic, strong) UILabel* iPhoneOnlyLabel; // What's New item. @property(nonatomic, strong) WhatsNewItem* item; @@ -73,6 +80,9 @@ [self configureAnimationView]; [self configureAlertScreen]; + if (self.item.isIphoneOnly && isIPad) { + [self configureLabelView]; + } [self layoutAlertScreen]; } @@ -101,8 +111,10 @@ [[ConfirmationAlertViewController alloc] init]; alertScreen.titleString = titleString; alertScreen.subtitleString = subtitleString; - alertScreen.primaryActionString = primaryActionString; - alertScreen.secondaryActionString = secondaryActionString; + if (!self.item.isIphoneOnly || !isIPad) { + alertScreen.primaryActionString = primaryActionString; + alertScreen.secondaryActionString = secondaryActionString; + } alertScreen.actionHandler = self.actionHandler; self.alertScreen = alertScreen; } @@ -132,6 +144,27 @@ [self.alertScreen didMoveToParentViewController:self]; } +// Configures the iPhoneOnlyLabel view. +- (void)configureLabelView { + self.iPhoneOnlyLabel = [[UILabel alloc] init]; + self.iPhoneOnlyLabel.translatesAutoresizingMaskIntoConstraints = NO; + self.iPhoneOnlyLabel.font = [UIFont systemFontOfSize:kLabelFontSize + weight:UIFontWeightRegular]; + self.iPhoneOnlyLabel.text = + l10n_util::GetNSString(IDS_IOS_WHATS_NEW_IPHONE_ONLY_TITLE); + self.iPhoneOnlyLabel.textColor = [UIColor blackColor]; + self.iPhoneOnlyLabel.userInteractionEnabled = NO; + [self.view addSubview:self.iPhoneOnlyLabel]; + + [NSLayoutConstraint activateConstraints:@[ + [self.iPhoneOnlyLabel.bottomAnchor + constraintEqualToAnchor:self.view.bottomAnchor + constant:kLabelBottomMargin], + [self.iPhoneOnlyLabel.centerXAnchor + constraintEqualToAnchor:self.view.centerXAnchor], + ]]; +} + // Sets the layout of the alertScreen view. - (void)layoutAlertScreen { self.alertScreen.view.translatesAutoresizingMaskIntoConstraints = NO;
diff --git a/ios/chrome/browser/web_state_list/model/web_usage_enabler/BUILD.gn b/ios/chrome/browser/web_state_list/model/web_usage_enabler/BUILD.gn index f86f7d2..7558029f 100644 --- a/ios/chrome/browser/web_state_list/model/web_usage_enabler/BUILD.gn +++ b/ios/chrome/browser/web_state_list/model/web_usage_enabler/BUILD.gn
@@ -6,6 +6,9 @@ sources = [ "web_usage_enabler_browser_agent.h", "web_usage_enabler_browser_agent.mm", + "web_usage_enabler_browser_agent_observer.h", + "web_usage_enabler_browser_agent_observer_bridge.h", + "web_usage_enabler_browser_agent_observer_bridge.mm", ] deps = [
diff --git a/ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent.h b/ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent.h index cb450076..820d69f3 100644 --- a/ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent.h +++ b/ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent.h
@@ -5,6 +5,7 @@ #ifndef IOS_CHROME_BROWSER_WEB_STATE_LIST_MODEL_WEB_USAGE_ENABLER_WEB_USAGE_ENABLER_BROWSER_AGENT_H_ #define IOS_CHROME_BROWSER_WEB_STATE_LIST_MODEL_WEB_USAGE_ENABLER_WEB_USAGE_ENABLER_BROWSER_AGENT_H_ +#include "base/observer_list.h" #import "base/scoped_multi_source_observation.h" #import "base/scoped_observation.h" #import "ios/chrome/browser/shared/model/browser/browser_observer.h" @@ -14,6 +15,8 @@ #import "ios/web/public/web_state.h" #import "ios/web/public/web_state_observer.h" +class WebUsageEnablerBrowserAgentObserver; + // An agent that observes the browser's WebStateList and enables or disables web // usage for WebStates that are added or removed. This can be used to easily // enable or disable web usage for all the WebStates in a WebStateList. @@ -38,6 +41,10 @@ // The current value set with `SetWebUsageEnabled`. bool IsWebUsageEnabled() const; + // Adds and removes observers. + void AddObserver(WebUsageEnablerBrowserAgentObserver* observer); + void RemoveObserver(WebUsageEnablerBrowserAgentObserver* observer); + private: friend class BrowserUserData<WebUsageEnablerBrowserAgent>; BROWSER_USER_DATA_KEY_DECL(); @@ -78,6 +85,10 @@ base::ScopedMultiSourceObservation<web::WebState, web::WebStateObserver> web_state_observations_{this}; + + // The list of observers. + base::ObserverList<WebUsageEnablerBrowserAgentObserver, /*check_empty=*/true> + observers_; }; #endif // IOS_CHROME_BROWSER_WEB_STATE_LIST_MODEL_WEB_USAGE_ENABLER_WEB_USAGE_ENABLER_BROWSER_AGENT_H_
diff --git a/ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent.mm b/ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent.mm index dbb478d..5919b99 100644 --- a/ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent.mm +++ b/ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent.mm
@@ -4,6 +4,7 @@ #import "ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent.h" +#import "ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent_observer.h" #import "ios/web/public/navigation/navigation_manager.h" BROWSER_USER_DATA_KEY_IMPL(WebUsageEnablerBrowserAgent) @@ -34,6 +35,19 @@ web_usage_enabled_ = web_usage_enabled; UpdateWebUsageForAllWebStates(); + for (auto& observer : observers_) { + observer.WebUsageEnablerValueChanged(this); + } +} + +void WebUsageEnablerBrowserAgent::AddObserver( + WebUsageEnablerBrowserAgentObserver* observer) { + observers_.AddObserver(observer); +} + +void WebUsageEnablerBrowserAgent::RemoveObserver( + WebUsageEnablerBrowserAgentObserver* observer) { + observers_.RemoveObserver(observer); } void WebUsageEnablerBrowserAgent::UpdateWebUsageForAllWebStates() {
diff --git a/ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent_observer.h b/ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent_observer.h new file mode 100644 index 0000000..04bc3669 --- /dev/null +++ b/ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent_observer.h
@@ -0,0 +1,27 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_WEB_STATE_LIST_MODEL_WEB_USAGE_ENABLER_WEB_USAGE_ENABLER_BROWSER_AGENT_OBSERVER_H_ +#define IOS_CHROME_BROWSER_WEB_STATE_LIST_MODEL_WEB_USAGE_ENABLER_WEB_USAGE_ENABLER_BROWSER_AGENT_OBSERVER_H_ + +#include "base/observer_list_types.h" + +class WebUsageEnablerBrowserAgent; + +// Observer interface for objects interested in WebUsageEnabler events. +class WebUsageEnablerBrowserAgentObserver : public base::CheckedObserver { + public: + WebUsageEnablerBrowserAgentObserver( + const WebUsageEnablerBrowserAgentObserver&) = delete; + WebUsageEnablerBrowserAgentObserver& operator=( + const WebUsageEnablerBrowserAgentObserver&) = delete; + + virtual void WebUsageEnablerValueChanged( + WebUsageEnablerBrowserAgent* web_usage_enabler) {} + + protected: + WebUsageEnablerBrowserAgentObserver() = default; +}; + +#endif // IOS_CHROME_BROWSER_WEB_STATE_LIST_MODEL_WEB_USAGE_ENABLER_WEB_USAGE_ENABLER_BROWSER_AGENT_OBSERVER_H_
diff --git a/ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent_observer_bridge.h b/ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent_observer_bridge.h new file mode 100644 index 0000000..5953e58 --- /dev/null +++ b/ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent_observer_bridge.h
@@ -0,0 +1,52 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_WEB_STATE_LIST_MODEL_WEB_USAGE_ENABLER_WEB_USAGE_ENABLER_BROWSER_AGENT_OBSERVER_BRIDGE_H_ +#define IOS_CHROME_BROWSER_WEB_STATE_LIST_MODEL_WEB_USAGE_ENABLER_WEB_USAGE_ENABLER_BROWSER_AGENT_OBSERVER_BRIDGE_H_ + +#import <Foundation/Foundation.h> + +#include "base/scoped_observation.h" +#import "ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent.h" +#import "ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent_observer.h" + +// Protocol that corresponds to the WebUsageEnablerBrowserAgentObserver API. +// Allows registering Objective-C objects to listen to +// WebUsageEnablerBrowserAgent events. +@protocol WebUsageEnablerBrowserAgentObserving +- (void)webUsageEnablerValueChanged: + (WebUsageEnablerBrowserAgent*)webUsageEnabler; +@end + +// Observer that bridges WebUsageEnablerBrowserAgent events to an Objective-C +// observer that implements the WebUsageEnablerBrowserAgentObserver protocol +// (the observer is *not* owned). +class WebUsageEnablerBrowserAgentObserverBridge final + : public WebUsageEnablerBrowserAgentObserver { + public: + // Creates a bridge which observes `WebUsageEnablerBrowserAgent`, forwarding + // events to `observer`. + WebUsageEnablerBrowserAgentObserverBridge( + WebUsageEnablerBrowserAgent* WebUsageEnablerBrowserAgent, + id<WebUsageEnablerBrowserAgentObserving> observer); + ~WebUsageEnablerBrowserAgentObserverBridge() final; + + // Not copyable or moveable. + WebUsageEnablerBrowserAgentObserverBridge( + const WebUsageEnablerBrowserAgentObserverBridge&) = delete; + WebUsageEnablerBrowserAgentObserverBridge& operator=( + const WebUsageEnablerBrowserAgentObserverBridge&) = delete; + + // WebUsageEnablerBrowserAgentObserver. + void WebUsageEnablerValueChanged( + WebUsageEnablerBrowserAgent* web_usage_enabler) override; + + private: + __weak id<WebUsageEnablerBrowserAgentObserving> observer_ = nil; + base::ScopedObservation<WebUsageEnablerBrowserAgent, + WebUsageEnablerBrowserAgentObserver> + scoped_observation_{this}; +}; + +#endif // IOS_CHROME_BROWSER_WEB_STATE_LIST_MODEL_WEB_USAGE_ENABLER_WEB_USAGE_ENABLER_BROWSER_AGENT_OBSERVER_BRIDGE_H_
diff --git a/ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent_observer_bridge.mm b/ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent_observer_bridge.mm new file mode 100644 index 0000000..3a96a94 --- /dev/null +++ b/ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent_observer_bridge.mm
@@ -0,0 +1,23 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/browser/web_state_list/model/web_usage_enabler/web_usage_enabler_browser_agent_observer_bridge.h" + +WebUsageEnablerBrowserAgentObserverBridge:: + WebUsageEnablerBrowserAgentObserverBridge( + WebUsageEnablerBrowserAgent* web_usage_enabler, + id<WebUsageEnablerBrowserAgentObserving> observer) + : observer_(observer) { + scoped_observation_.Observe(web_usage_enabler); +} + +WebUsageEnablerBrowserAgentObserverBridge:: + ~WebUsageEnablerBrowserAgentObserverBridge() {} + +void WebUsageEnablerBrowserAgentObserverBridge::WebUsageEnablerValueChanged( + WebUsageEnablerBrowserAgent* web_usage_enabler) { + CHECK(scoped_observation_.IsObservingSource(web_usage_enabler)); + + [observer_ webUsageEnablerValueChanged:web_usage_enabler]; +}
diff --git a/ios/chrome/test/earl_grey/chrome_earl_grey_ui.h b/ios/chrome/test/earl_grey/chrome_earl_grey_ui.h index 01dfd28..925951c 100644 --- a/ios/chrome/test/earl_grey/chrome_earl_grey_ui.h +++ b/ios/chrome/test/earl_grey/chrome_earl_grey_ui.h
@@ -163,11 +163,20 @@ // Returns `YES` if a context menu was dismissed, otherwise returns `NO`. - (BOOL)dismissContextMenuIfPresent; +// Cleans up the view hierarchy after showing the system alert on certain OS +// versions. +- (void)cleanupAfterShowingAlert; + // Type `text` in Omnibox and optionally press Enter if `shouldPressEnter` is // YES. - (void)typeTextInOmnibox:(std::string const&)text andPressEnter:(BOOL)shouldPressEnter; +// Dismisses the window of the popover by tapping on the original point. +// `matcher` can be any view in the popover. Throws if the window is not +// dismissable by tapping. +- (void)dismissByTappingOnTheWindowOfPopover:(id<GREYMatcher>)matcher; + @end #endif // IOS_CHROME_TEST_EARL_GREY_CHROME_EARL_GREY_UI_H_
diff --git a/ios/chrome/test/earl_grey/chrome_earl_grey_ui.mm b/ios/chrome/test/earl_grey/chrome_earl_grey_ui.mm index f1dfa40..cf7ea1b8 100644 --- a/ios/chrome/test/earl_grey/chrome_earl_grey_ui.mm +++ b/ios/chrome/test/earl_grey/chrome_earl_grey_ui.mm
@@ -4,6 +4,7 @@ #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h" +#import "base/ios/ios_util.h" #import "base/strings/sys_string_conversions.h" #import "base/test/ios/wait_util.h" #import "components/strings/grit/components_strings.h" @@ -14,6 +15,7 @@ #import "ios/chrome/test/earl_grey/chrome_matchers.h" #import "ios/chrome/test/earl_grey/scoped_disable_timer_tracking.h" #import "ios/chrome/test/scoped_eg_synchronization_disabler.h" +#import "ios/testing/earl_grey/app_launch_manager.h" #import "ios/testing/earl_grey/earl_grey_test.h" #import "ui/base/l10n/l10n_util.h" @@ -457,6 +459,33 @@ return err == nil; } +- (void)cleanupAfterShowingAlert { + // Workaround for an Earl Grey crash in iOS 15.5 on iPad when traversing the + // view hierarchy with accessibility. Likely due to the system alert view, the + // traversal will crash because some system view cannot provide the correct + // accessibility result. Background and Foreground the app removes the system + // alert view's residues from the view hierarchy. + if (!base::ios::IsRunningOnIOS16OrLater()) { + [[AppLaunchManager sharedManager] backgroundAndForegroundApp]; + } +} + +- (void)dismissByTappingOnTheWindowOfPopover:(id<GREYMatcher>)matcher { + id<GREYMatcher> classMatcher = grey_kindOfClass([UIWindow class]); + id<GREYMatcher> parentMatcher = grey_descendant(matcher); + id<GREYMatcher> windowMatcher = grey_allOf(classMatcher, parentMatcher, nil); + + // Tap on a point outside of the popover. + // The way EarlGrey taps doesn't go through the window hierarchy. Because of + // this, the tap needs to be done in the same window as the popover. + [[EarlGrey selectElementWithMatcher:windowMatcher] + performAction:grey_tapAtPoint(CGPointMake(0, 0))]; + + // Verify the window is not visible. + [[EarlGrey selectElementWithMatcher:windowMatcher] + assertWithMatcher:grey_notVisible()]; +} + #pragma mark - Private // Clears all browsing data from the device. This method needs to be called when
diff --git a/ios/chrome/test/earl_grey/chrome_matchers.h b/ios/chrome/test/earl_grey/chrome_matchers.h index 819a878..f75e4c558 100644 --- a/ios/chrome/test/earl_grey/chrome_matchers.h +++ b/ios/chrome/test/earl_grey/chrome_matchers.h
@@ -687,9 +687,6 @@ // Returns a matcher for the a password in the manual fallback list. id<GREYMatcher> ManualFallbackPasswordButtonMatcher(); -// Returns a matcher for the PasswordTableView window. -id<GREYMatcher> ManualFallbackPasswordTableViewWindowMatcher(); - // Returns a matcher for the profiles icon in the keyboard accessory bar. id<GREYMatcher> ManualFallbackProfilesIconMatcher();
diff --git a/ios/chrome/test/earl_grey/chrome_matchers.mm b/ios/chrome/test/earl_grey/chrome_matchers.mm index a0571cbb..c0760a6c 100644 --- a/ios/chrome/test/earl_grey/chrome_matchers.mm +++ b/ios/chrome/test/earl_grey/chrome_matchers.mm
@@ -896,11 +896,6 @@ return [ChromeMatchersAppInterface manualFallbackPasswordButtonMatcher]; } -id<GREYMatcher> ManualFallbackPasswordTableViewWindowMatcher() { - return - [ChromeMatchersAppInterface manualFallbackPasswordTableViewWindowMatcher]; -} - id<GREYMatcher> ManualFallbackProfilesIconMatcher() { return [ChromeMatchersAppInterface manualFallbackProfilesIconMatcher]; }
diff --git a/ios/chrome/test/earl_grey/chrome_matchers_app_interface.h b/ios/chrome/test/earl_grey/chrome_matchers_app_interface.h index 2f00c25..31f9c99 100644 --- a/ios/chrome/test/earl_grey/chrome_matchers_app_interface.h +++ b/ios/chrome/test/earl_grey/chrome_matchers_app_interface.h
@@ -697,9 +697,6 @@ // Returns a matcher for the a password in the manual fallback list. + (id<GREYMatcher>)manualFallbackPasswordButtonMatcher; -// Returns a matcher for the PasswordTableView window. -+ (id<GREYMatcher>)manualFallbackPasswordTableViewWindowMatcher; - // Returns a matcher for the profiles icon in the keyboard accessory bar. + (id<GREYMatcher>)manualFallbackProfilesIconMatcher;
diff --git a/ios/chrome/test/earl_grey/chrome_matchers_app_interface.mm b/ios/chrome/test/earl_grey/chrome_matchers_app_interface.mm index 6877405..5f282cf 100644 --- a/ios/chrome/test/earl_grey/chrome_matchers_app_interface.mm +++ b/ios/chrome/test/earl_grey/chrome_matchers_app_interface.mm
@@ -977,7 +977,9 @@ } + (id<GREYMatcher>)openInButton { - return grey_accessibilityID(kDownloadManagerOpenInAccessibilityIdentifier); + return grey_allOf( + grey_accessibilityID(kDownloadManagerOpenInAccessibilityIdentifier), + grey_interactable(), nil); } + (id<GREYMatcher>)tabGridCellAtIndex:(unsigned int)index { @@ -1348,13 +1350,6 @@ return grey_buttonTitle(kMaskedPasswordTitle); } -+ (id<GREYMatcher>)manualFallbackPasswordTableViewWindowMatcher { - id<GREYMatcher> classMatcher = grey_kindOfClass([UIWindow class]); - id<GREYMatcher> parentMatcher = - grey_descendant([self manualFallbackPasswordTableViewMatcher]); - return grey_allOf(classMatcher, parentMatcher, nil); -} - + (id<GREYMatcher>)manualFallbackProfilesIconMatcher { return grey_accessibilityID( manual_fill::AccessoryAddressAccessibilityIdentifier);
diff --git a/ios/chrome/test/earl_grey/chrome_test_case.mm b/ios/chrome/test/earl_grey/chrome_test_case.mm index b7e2154..b09963b 100644 --- a/ios/chrome/test/earl_grey/chrome_test_case.mm +++ b/ios/chrome/test/earl_grey/chrome_test_case.mm
@@ -22,6 +22,7 @@ #import "ios/chrome/test/earl_grey/chrome_earl_grey.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h" +#import "ios/chrome/test/earl_grey/chrome_matchers.h" #import "ios/chrome/test/earl_grey/chrome_test_case_app_interface.h" #import "ios/chrome/test/earl_grey/scoped_allow_crash_on_startup.h" #import "ios/testing/earl_grey/app_launch_manager.h"
diff --git a/ios_internal b/ios_internal index e0312db..90b0f3a 160000 --- a/ios_internal +++ b/ios_internal
@@ -1 +1 @@ -Subproject commit e0312dbf4d16d483662226c982fafc3165f1aecb +Subproject commit 90b0f3af09097f927b40df7c795276e629892140
diff --git a/media/audio/android/aaudio_stream_wrapper.cc b/media/audio/android/aaudio_stream_wrapper.cc index a36bf79..3e8d595 100644 --- a/media/audio/android/aaudio_stream_wrapper.cc +++ b/media/audio/android/aaudio_stream_wrapper.cc
@@ -131,16 +131,18 @@ // On Android S+, |destruction_helper_| can be destroyed as part of the // normal class teardown. if (__builtin_available(android 31, *)) { - // In R and earlier, it is possible for callbacks to still be running even - // after calling AAudioStream_close(). The code below is a mitigation to - // work around this issue. See crbug.com/1183255. - - // Keep |destruction_helper_| alive longer than |this|, so the |user_data| - // bound to the callback stays valid, until the callbacks stop. - base::SequencedTaskRunner::GetCurrentDefault()->PostDelayedTask( - FROM_HERE, base::DoNothingWithBoundArgs(std::move(destruction_helper_)), - base::Seconds(1)); + return; } + + // In R and earlier, it is possible for callbacks to still be running even + // after calling AAudioStream_close(). The code below is a mitigation to + // work around this issue. See crbug.com/1183255. + + // Keep |destruction_helper_| alive longer than |this|, so the |user_data| + // bound to the callback stays valid, until the callbacks stop. + base::SequencedTaskRunner::GetCurrentDefault()->PostDelayedTask( + FROM_HERE, base::DoNothingWithBoundArgs(std::move(destruction_helper_)), + base::Seconds(1)); } bool AAudioStreamWrapper::Open() {
diff --git a/net/http/transport_security_state_static.pins b/net/http/transport_security_state_static.pins index 1f8ac64..300ed3af 100644 --- a/net/http/transport_security_state_static.pins +++ b/net/http/transport_security_state_static.pins
@@ -43,9 +43,9 @@ # hash function for preloaded entries again (we have already done so once). # -# Last updated: 2024-01-21 12:53 UTC +# Last updated: 2024-01-22 12:55 UTC PinsListTimestamp -1705841638 +1705928142 TestSPKI sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
diff --git a/net/http/transport_security_state_static_pins.json b/net/http/transport_security_state_static_pins.json index 46674b8..2d127be7 100644 --- a/net/http/transport_security_state_static_pins.json +++ b/net/http/transport_security_state_static_pins.json
@@ -31,7 +31,7 @@ // the 'static_spki_hashes' and 'bad_static_spki_hashes' fields in 'pinsets' // refer to, and the timestamp at which the pins list was last updated. // -// Last updated: 2024-01-21 12:53 UTC +// Last updated: 2024-01-22 12:55 UTC // { "pinsets": [
diff --git a/services/audio/input_controller.h b/services/audio/input_controller.h index 49ab902..2c6bc0b 100644 --- a/services/audio/input_controller.h +++ b/services/audio/input_controller.h
@@ -35,7 +35,6 @@ class AudioBus; class AudioInputStream; class AudioManager; -class Snoopable; class UserInputMonitor; struct AudioGlitchInfo; } // namespace media @@ -43,9 +42,13 @@ namespace audio { class AudioProcessorHandler; class AudioCallback; -class OutputTapper; class DeviceOutputListener; +class OutputTapper; +class Snoopable; + +#if BUILDFLAG(CHROME_WIDE_ECHO_CANCELLATION) class ProcessingAudioFifo; +#endif // Only do power monitoring for non-mobile platforms to save resources. #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS)
diff --git a/services/audio/public/cpp/debug_recording_session.h b/services/audio/public/cpp/debug_recording_session.h index 2641e2f8..7ebd7714 100644 --- a/services/audio/public/cpp/debug_recording_session.h +++ b/services/audio/public/cpp/debug_recording_session.h
@@ -22,8 +22,6 @@ namespace audio { -class DebugRecordingFileProvider; - // Client class for using mojom::DebugRecording interface. This class owns // mojom::DebugRecordingFileProvider implementation, therefore owners of this // class' instances need permission to create files in |file_name_base| path
diff --git a/services/media_session/public/cpp/media_session_service.h b/services/media_session/public/cpp/media_session_service.h index b3bec9c5..ce81b73b 100644 --- a/services/media_session/public/cpp/media_session_service.h +++ b/services/media_session/public/cpp/media_session_service.h
@@ -12,7 +12,9 @@ namespace media_session { +namespace mojom { class AudioFocusManager; +} // namespace mojom class COMPONENT_EXPORT(MEDIA_SESSION_CPP) MediaSessionService { public:
diff --git a/services/network/trust_tokens/trust_token_key_commitment_controller.h b/services/network/trust_tokens/trust_token_key_commitment_controller.h index ef9e60d..4779fe8 100644 --- a/services/network/trust_tokens/trust_token_key_commitment_controller.h +++ b/services/network/trust_tokens/trust_token_key_commitment_controller.h
@@ -15,11 +15,6 @@ #include "services/network/public/mojom/trust_tokens.mojom-forward.h" #include "url/gurl.h" -namespace mojom { -class URLLoaderFactory; -class URLResponseHead; -} // namespace mojom - namespace net { struct NetworkTrafficAnnotationTag; struct RedirectInfo; @@ -32,6 +27,11 @@ namespace network { +namespace mojom { +class URLLoaderFactory; +class URLResponseHead; +} // namespace mojom + namespace internal { // Creates a key commitment request for the given issuance
diff --git a/services/network/url_loader.h b/services/network/url_loader.h index 2403422..a156819 100644 --- a/services/network/url_loader.h +++ b/services/network/url_loader.h
@@ -83,7 +83,6 @@ class NetToMojoPendingBuffer; class ScopedThrottlingToken; class SlopBucket; -class URLLoaderFactory; class COMPONENT_EXPORT(NETWORK_SERVICE) URLLoader : public mojom::URLLoader,
diff --git a/services/network/url_loader_factory.h b/services/network/url_loader_factory.h index 1ead5c02..33fc926a 100644 --- a/services/network/url_loader_factory.h +++ b/services/network/url_loader_factory.h
@@ -24,12 +24,15 @@ class NetworkContext; class ResourceSchedulerClient; -class URLLoader; namespace cors { class CorsURLLoaderFactory; } // namespace cors +namespace mojom { +class URLLoader; +} // namespace mojom + // This class is an implementation of mojom::URLLoaderFactory that // creates a mojom::URLLoader. // A URLLoaderFactory has a pointer to ResourceSchedulerClient. A
diff --git a/services/service_manager/public/cpp/test/test_connector_factory.h b/services/service_manager/public/cpp/test/test_connector_factory.h index 690ed74..37617b7 100644 --- a/services/service_manager/public/cpp/test/test_connector_factory.h +++ b/services/service_manager/public/cpp/test/test_connector_factory.h
@@ -20,7 +20,9 @@ namespace service_manager { +namespace mojom { class Service; +} // namespace mojom // Creates Connector instances which route BindInterface requests directly to // manually registered Service implementations. Useful for testing production
diff --git a/testing/buildbot/chromium.chromiumos.json b/testing/buildbot/chromium.chromiumos.json index da2e6a4f..5fef4778 100644 --- a/testing/buildbot/chromium.chromiumos.json +++ b/testing/buildbot/chromium.chromiumos.json
@@ -5327,9 +5327,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6258.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6259.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 122.0.6258.0", + "description": "Run with ash-chrome version 122.0.6259.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -5339,8 +5339,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6258.0", - "revision": "version:122.0.6258.0" + "location": "lacros_version_skew_tests_v122.0.6259.0", + "revision": "version:122.0.6259.0" } ], "dimensions": { @@ -5357,9 +5357,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6226.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6241.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 122.0.6226.0", + "description": "Run with ash-chrome version 122.0.6241.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -5369,8 +5369,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6226.0", - "revision": "version:122.0.6226.0" + "location": "lacros_version_skew_tests_v122.0.6241.0", + "revision": "version:122.0.6241.0" } ], "dimensions": { @@ -5483,9 +5483,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6258.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6259.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 122.0.6258.0", + "description": "Run with ash-chrome version 122.0.6259.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -5495,8 +5495,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6258.0", - "revision": "version:122.0.6258.0" + "location": "lacros_version_skew_tests_v122.0.6259.0", + "revision": "version:122.0.6259.0" } ], "dimensions": { @@ -5513,9 +5513,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6226.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6241.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 122.0.6226.0", + "description": "Run with ash-chrome version 122.0.6241.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -5525,8 +5525,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6226.0", - "revision": "version:122.0.6226.0" + "location": "lacros_version_skew_tests_v122.0.6241.0", + "revision": "version:122.0.6241.0" } ], "dimensions": {
diff --git a/testing/buildbot/chromium.coverage.json b/testing/buildbot/chromium.coverage.json index cdcb756d..69fc100a 100644 --- a/testing/buildbot/chromium.coverage.json +++ b/testing/buildbot/chromium.coverage.json
@@ -20445,9 +20445,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6258.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6259.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 122.0.6258.0", + "description": "Run with ash-chrome version 122.0.6259.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -20457,8 +20457,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6258.0", - "revision": "version:122.0.6258.0" + "location": "lacros_version_skew_tests_v122.0.6259.0", + "revision": "version:122.0.6259.0" } ], "dimensions": { @@ -20474,9 +20474,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6226.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6241.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 122.0.6226.0", + "description": "Run with ash-chrome version 122.0.6241.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -20486,8 +20486,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6226.0", - "revision": "version:122.0.6226.0" + "location": "lacros_version_skew_tests_v122.0.6241.0", + "revision": "version:122.0.6241.0" } ], "dimensions": { @@ -20595,9 +20595,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6258.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6259.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 122.0.6258.0", + "description": "Run with ash-chrome version 122.0.6259.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -20607,8 +20607,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6258.0", - "revision": "version:122.0.6258.0" + "location": "lacros_version_skew_tests_v122.0.6259.0", + "revision": "version:122.0.6259.0" } ], "dimensions": { @@ -20624,9 +20624,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6226.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6241.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 122.0.6226.0", + "description": "Run with ash-chrome version 122.0.6241.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -20636,8 +20636,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6226.0", - "revision": "version:122.0.6226.0" + "location": "lacros_version_skew_tests_v122.0.6241.0", + "revision": "version:122.0.6241.0" } ], "dimensions": {
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json index 581decc..3dc8f07 100644 --- a/testing/buildbot/chromium.fyi.json +++ b/testing/buildbot/chromium.fyi.json
@@ -42430,9 +42430,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6258.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6259.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 122.0.6258.0", + "description": "Run with ash-chrome version 122.0.6259.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -42441,8 +42441,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6258.0", - "revision": "version:122.0.6258.0" + "location": "lacros_version_skew_tests_v122.0.6259.0", + "revision": "version:122.0.6259.0" } ], "dimensions": { @@ -42459,9 +42459,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6226.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6241.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 122.0.6226.0", + "description": "Run with ash-chrome version 122.0.6241.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -42470,8 +42470,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6226.0", - "revision": "version:122.0.6226.0" + "location": "lacros_version_skew_tests_v122.0.6241.0", + "revision": "version:122.0.6241.0" } ], "dimensions": { @@ -42580,9 +42580,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6258.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6259.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 122.0.6258.0", + "description": "Run with ash-chrome version 122.0.6259.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -42591,8 +42591,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6258.0", - "revision": "version:122.0.6258.0" + "location": "lacros_version_skew_tests_v122.0.6259.0", + "revision": "version:122.0.6259.0" } ], "dimensions": { @@ -42609,9 +42609,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6226.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6241.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 122.0.6226.0", + "description": "Run with ash-chrome version 122.0.6241.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -42620,8 +42620,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6226.0", - "revision": "version:122.0.6226.0" + "location": "lacros_version_skew_tests_v122.0.6241.0", + "revision": "version:122.0.6241.0" } ], "dimensions": { @@ -43904,9 +43904,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6258.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6259.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 122.0.6258.0", + "description": "Run with ash-chrome version 122.0.6259.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -43915,8 +43915,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6258.0", - "revision": "version:122.0.6258.0" + "location": "lacros_version_skew_tests_v122.0.6259.0", + "revision": "version:122.0.6259.0" } ], "dimensions": { @@ -43933,9 +43933,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6226.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6241.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 122.0.6226.0", + "description": "Run with ash-chrome version 122.0.6241.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -43944,8 +43944,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6226.0", - "revision": "version:122.0.6226.0" + "location": "lacros_version_skew_tests_v122.0.6241.0", + "revision": "version:122.0.6241.0" } ], "dimensions": { @@ -44054,9 +44054,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6258.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6259.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 122.0.6258.0", + "description": "Run with ash-chrome version 122.0.6259.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -44065,8 +44065,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6258.0", - "revision": "version:122.0.6258.0" + "location": "lacros_version_skew_tests_v122.0.6259.0", + "revision": "version:122.0.6259.0" } ], "dimensions": { @@ -44083,9 +44083,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6226.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6241.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 122.0.6226.0", + "description": "Run with ash-chrome version 122.0.6241.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -44094,8 +44094,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6226.0", - "revision": "version:122.0.6226.0" + "location": "lacros_version_skew_tests_v122.0.6241.0", + "revision": "version:122.0.6241.0" } ], "dimensions": {
diff --git a/testing/buildbot/chromium.memory.json b/testing/buildbot/chromium.memory.json index b2632e1..174dbbb 100644 --- a/testing/buildbot/chromium.memory.json +++ b/testing/buildbot/chromium.memory.json
@@ -16451,12 +16451,12 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6258.0/test_ash_chrome", + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6259.0/test_ash_chrome", "--test-launcher-print-test-stdio=always", "--combine-ash-logs-on-bots", "--asan-symbolize-output" ], - "description": "Run with ash-chrome version 122.0.6258.0", + "description": "Run with ash-chrome version 122.0.6259.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -16466,8 +16466,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6258.0", - "revision": "version:122.0.6258.0" + "location": "lacros_version_skew_tests_v122.0.6259.0", + "revision": "version:122.0.6259.0" } ], "dimensions": { @@ -16484,12 +16484,12 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6226.0/test_ash_chrome", + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6241.0/test_ash_chrome", "--test-launcher-print-test-stdio=always", "--combine-ash-logs-on-bots", "--asan-symbolize-output" ], - "description": "Run with ash-chrome version 122.0.6226.0", + "description": "Run with ash-chrome version 122.0.6241.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -16499,8 +16499,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6226.0", - "revision": "version:122.0.6226.0" + "location": "lacros_version_skew_tests_v122.0.6241.0", + "revision": "version:122.0.6241.0" } ], "dimensions": { @@ -16627,12 +16627,12 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6258.0/test_ash_chrome", + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6259.0/test_ash_chrome", "--test-launcher-print-test-stdio=always", "--combine-ash-logs-on-bots", "--asan-symbolize-output" ], - "description": "Run with ash-chrome version 122.0.6258.0", + "description": "Run with ash-chrome version 122.0.6259.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -16642,8 +16642,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6258.0", - "revision": "version:122.0.6258.0" + "location": "lacros_version_skew_tests_v122.0.6259.0", + "revision": "version:122.0.6259.0" } ], "dimensions": { @@ -16660,12 +16660,12 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6226.0/test_ash_chrome", + "--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6241.0/test_ash_chrome", "--test-launcher-print-test-stdio=always", "--combine-ash-logs-on-bots", "--asan-symbolize-output" ], - "description": "Run with ash-chrome version 122.0.6226.0", + "description": "Run with ash-chrome version 122.0.6241.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -16675,8 +16675,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v122.0.6226.0", - "revision": "version:122.0.6226.0" + "location": "lacros_version_skew_tests_v122.0.6241.0", + "revision": "version:122.0.6241.0" } ], "dimensions": {
diff --git a/testing/buildbot/filters/pixel_tests.filter b/testing/buildbot/filters/pixel_tests.filter index dc94f1c..6283e27 100644 --- a/testing/buildbot/filters/pixel_tests.filter +++ b/testing/buildbot/filters/pixel_tests.filter
@@ -68,6 +68,8 @@ *PasswordAutomaticSaveBubbleBrowserTest.* *PasswordGenerationPopupViewBrowsertest.* *PasswordManagementRevampedBubbleInteractiveUiTest.* +PasswordBubbleInteractiveUiTest.NavigateToManagementDetailsViewAndTakeScreenshot +PasswordBubbleInteractiveUiTest.NavigateToManagementDetailsViewWithMoveFooterVisibleAndTakeScreenshot PasswordReuseModalWarningTest.* PerformanceToolbarButtonInteractiveUiTest.* PermissionRequestChipBrowserUiTest.*
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl index 2991105..ac17dd4 100644 --- a/testing/buildbot/test_suite_exceptions.pyl +++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -3655,18 +3655,6 @@ }, }, }, - # TODO(b/319364912): vpython cannot be delivered via CIPD on skylab builders - 'remove_from': [ - 'chromeos-brya-chrome-dchecks-skylab', - 'chromeos-brya-chrome-skylab', - 'chromeos-jacuzzi-chrome-dchecks-skylab', - 'chromeos-jacuzzi-chrome-skylab', - 'chromeos-jacuzzi-rel-skylab-fyi', - 'chromeos-octopus-chrome-skylab', - 'chromeos-octopus-rel-skylab-fyi', - 'chromeos-trogdor-chrome-skylab-tests-fyi', - 'chromeos-volteer-chrome-skylab', - ], }, 'net_unittests BRYA_RELEASE_LKGM': { # TODO(b/319364912): vpython cannot be delivered via CIPD on skylab builders
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl index 51c09e9..870bb38 100644 --- a/testing/buildbot/variants.pyl +++ b/testing/buildbot/variants.pyl
@@ -323,32 +323,32 @@ }, 'LACROS_VERSION_SKEW_CANARY': { 'identifier': 'Lacros version skew testing ash canary', - 'description': 'Run with ash-chrome version 122.0.6258.0', + 'description': 'Run with ash-chrome version 122.0.6259.0', 'args': [ - '--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6258.0/test_ash_chrome', + '--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6259.0/test_ash_chrome', ], 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/linux-ash-chromium/x86_64/ash.zip', - 'location': 'lacros_version_skew_tests_v122.0.6258.0', - 'revision': 'version:122.0.6258.0', + 'location': 'lacros_version_skew_tests_v122.0.6259.0', + 'revision': 'version:122.0.6259.0', }, ], }, }, 'LACROS_VERSION_SKEW_DEV': { 'identifier': 'Lacros version skew testing ash dev', - 'description': 'Run with ash-chrome version 122.0.6226.0', + 'description': 'Run with ash-chrome version 122.0.6241.0', 'args': [ - '--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6226.0/test_ash_chrome', + '--ash-chrome-path-override=../../lacros_version_skew_tests_v122.0.6241.0/test_ash_chrome', ], 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/linux-ash-chromium/x86_64/ash.zip', - 'location': 'lacros_version_skew_tests_v122.0.6226.0', - 'revision': 'version:122.0.6226.0', + 'location': 'lacros_version_skew_tests_v122.0.6241.0', + 'revision': 'version:122.0.6241.0', }, ], },
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index fbf23ba..093483b 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -5563,12 +5563,15 @@ { "platforms": [ "android", - "android_webview", - "chromeos" + "android_webview" ], "experiments": [ { - "name": "Enabled_20220601", + "name": "Enabled", + "params": { + "BlockListByDevice": "", + "BlockListByModel": "" + }, "enable_features": [ "DefaultPassthroughCommandDecoder" ] @@ -16983,21 +16986,6 @@ ] } ], - "ScreenTimeIntegration": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ScreenTimeIntegration" - ] - } - ] - } - ], "SeaPen": [ { "platforms": [ @@ -21080,7 +21068,8 @@ "name": "EnabledAllUsers", "params": { "IOSHideFeedWithSearchChoiceTargeted": "true", - "for_tagged_profiles_only": "false" + "for_tagged_profiles_only": "false", + "reprompt": "{\"*\": \"122.0.0.0\"}" }, "enable_features": [ "IOSHideFeedWithSearchChoice", @@ -21091,12 +21080,20 @@ "name": "EnabledNewUsers", "params": { "IOSHideFeedWithSearchChoiceTargeted": "true", - "for_tagged_profiles_only": "true" + "for_tagged_profiles_only": "true", + "reprompt": "{\"*\": \"122.0.0.0\"}" }, "enable_features": [ "IOSHideFeedWithSearchChoice", "SearchEngineChoiceTrigger" ] + }, + { + "name": "Disabled", + "disable_features": [ + "IOSHideFeedWithSearchChoice", + "SearchEngineChoiceTrigger" + ] } ] }
diff --git a/third_party/blink/public/devtools_protocol/browser_protocol.pdl b/third_party/blink/public/devtools_protocol/browser_protocol.pdl index 9fe9a28..5c830ad 100644 --- a/third_party/blink/public/devtools_protocol/browser_protocol.pdl +++ b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
@@ -11832,6 +11832,12 @@ ErrorGotIt ErrorMoreDetails + # The URLs that each account has + type AccountUrlType extends string + enum + TermsOfService + PrivacyPolicy + # Corresponds to IdentityRequestAccount type Account extends object properties @@ -11882,6 +11888,12 @@ string dialogId DialogButton dialogButton + command openUrl + parameters + string dialogId + integer accountIndex + AccountUrlType accountUrlType + command dismissDialog parameters string dialogId
diff --git a/third_party/blink/public/mojom/mediastream/media_stream.mojom b/third_party/blink/public/mojom/mediastream/media_stream.mojom index 45f1404..0a8d4fb 100644 --- a/third_party/blink/public/mojom/mediastream/media_stream.mojom +++ b/third_party/blink/public/mojom/mediastream/media_stream.mojom
@@ -176,6 +176,7 @@ kUnknownError, kNoPermissionError, kCapturedSurfaceNotFoundError, + kDisallowedForSelfCaptureError, }; // Per-frame renderer-side interface that receives device stopped/change
diff --git a/third_party/blink/renderer/OWNERS b/third_party/blink/renderer/OWNERS index 5dc7861..3844ed3f 100644 --- a/third_party/blink/renderer/OWNERS +++ b/third_party/blink/renderer/OWNERS
@@ -49,6 +49,7 @@ keishi@chromium.org # kevers reviews animation and scrolling-related changes. kevers@chromium.org +khushalsagar@chromium.org kinuko@chromium.org kojii@chromium.org kouhei@chromium.org
diff --git a/third_party/blink/renderer/bindings/generated_in_modules.gni b/third_party/blink/renderer/bindings/generated_in_modules.gni index dddc8611..2e3a9a51 100644 --- a/third_party/blink/renderer/bindings/generated_in_modules.gni +++ b/third_party/blink/renderer/bindings/generated_in_modules.gni
@@ -2490,6 +2490,8 @@ "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_private_aggregation.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_private_attribution.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_private_attribution.h", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_protected_audience.cc", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_protected_audience.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_public_key_credential.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_public_key_credential.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_push_event.cc",
diff --git a/third_party/blink/renderer/bindings/idl_in_modules.gni b/third_party/blink/renderer/bindings/idl_in_modules.gni index f52229f..d053a96 100644 --- a/third_party/blink/renderer/bindings/idl_in_modules.gni +++ b/third_party/blink/renderer/bindings/idl_in_modules.gni
@@ -14,6 +14,7 @@ "//third_party/blink/renderer/modules/ad_auction/auction_ad_config.idl", "//third_party/blink/renderer/modules/ad_auction/auction_ad_interest_group.idl", "//third_party/blink/renderer/modules/ad_auction/navigator_auction.idl", + "//third_party/blink/renderer/modules/ad_auction/protected_audience.idl", "//third_party/blink/renderer/modules/animationworklet/animation_worklet_global_scope.idl", "//third_party/blink/renderer/modules/animationworklet/css_animation_worklet.idl", "//third_party/blink/renderer/modules/animationworklet/worklet_animation.idl",
diff --git a/third_party/blink/renderer/core/layout/inline/fragment_item.cc b/third_party/blink/renderer/core/layout/inline/fragment_item.cc index d7d1368..640c414 100644 --- a/third_party/blink/renderer/core/layout/inline/fragment_item.cc +++ b/third_party/blink/renderer/core/layout/inline/fragment_item.cc
@@ -988,12 +988,17 @@ // Allows for better code separation and avoids the extra copy below. scoped_refptr<ShapeResult> shape_result = TextShapeResult()->CreateShapeResult(); - start_position = - LayoutUnit::FromFloatFloor(shape_result->CaretPositionForOffset( - start_offset, text, AdjustMidCluster::kToStart)); - end_position = - LayoutUnit::FromFloatCeil(shape_result->CaretPositionForOffset( - end_offset, text, AdjustMidCluster::kToEnd)); + float unrounded_start_position = shape_result->CaretPositionForOffset( + start_offset, text, AdjustMidCluster::kToStart); + float unrounded_end_position = shape_result->CaretPositionForOffset( + end_offset, text, AdjustMidCluster::kToEnd); + if (UNLIKELY(unrounded_start_position > unrounded_end_position)) { + start_position = LayoutUnit::FromFloatCeil(unrounded_start_position); + end_position = LayoutUnit::FromFloatFloor(unrounded_end_position); + } else { + start_position = LayoutUnit::FromFloatFloor(unrounded_start_position); + end_position = LayoutUnit::FromFloatCeil(unrounded_end_position); + } } else { // This fragment is a flow control because otherwise ShapeResult exists. DCHECK(IsFlowControl());
diff --git a/third_party/blink/renderer/core/view_transition/view_transition_style_tracker.cc b/third_party/blink/renderer/core/view_transition/view_transition_style_tracker.cc index 178e956..1fae851 100644 --- a/third_party/blink/renderer/core/view_transition/view_transition_style_tracker.cc +++ b/third_party/blink/renderer/core/view_transition/view_transition_style_tracker.cc
@@ -311,8 +311,9 @@ const int max_texture_size_in_layout = static_cast<int>(std::ceil(*max_texture_size / min_page_scale_factor)); - CHECK_LE(snapshot_root_size.width(), max_texture_size_in_layout); - CHECK_LE(snapshot_root_size.height(), max_texture_size_in_layout); + LOG_IF(WARNING, snapshot_root_size.width() > max_texture_size_in_layout || + snapshot_root_size.height() > max_texture_size_in_layout) + << "root snapshot does not fit within max texture size"; // While we can render up to the max texture size, that would significantly // add to the memory overhead. So limit to up to a viewport worth of @@ -436,7 +437,7 @@ : document_(document), state_(State::kCaptured), deserialized_(true) { device_pixel_ratio_ = transition_state.device_pixel_ratio; captured_name_count_ = static_cast<int>(transition_state.elements.size()); - snapshot_root_size_at_capture_ = + snapshot_root_layout_size_at_capture_ = transition_state.snapshot_root_size_at_capture; VectorOf<AtomicString> transition_names; @@ -763,8 +764,8 @@ set_element_sequence_id_ = 0; pending_transition_element_names_.clear(); - DCHECK(!snapshot_root_size_at_capture_.has_value()); - snapshot_root_size_at_capture_ = GetSnapshotRootSize(); + DCHECK(!snapshot_root_layout_size_at_capture_.has_value()); + snapshot_root_layout_size_at_capture_ = GetSnapshotRootSize(); return true; } @@ -1071,11 +1072,26 @@ return false; } - const int max_capture_size = ComputeMaxCaptureSize( + const int max_capture_size_in_layout = ComputeMaxCaptureSize( *document_, document_->GetPage()->GetChromeClient().GetMaxRenderBufferBounds( *document_->GetFrame()), - *snapshot_root_size_at_capture_); + *snapshot_root_layout_size_at_capture_); + + if (snapshot_root_layout_size_at_capture_->width() > + max_capture_size_in_layout || + snapshot_root_layout_size_at_capture_->height() > + max_capture_size_in_layout) { + // TODO(crbug.com/1516874): This skips the transition if the root is too + // large to fit into a texture but non-root elements clip in this case + // instead. It would be better to clip the root like we do child elements, + // rather than skipping (and that would comply better with the spec). + + // For main frames the capture size should never be bigger than the + // window so we only expect to end up here due to large subframes. + CHECK(!document_->GetFrame()->IsOutermostMainFrame()); + return false; + } bool needs_style_invalidation = false; @@ -1108,7 +1124,7 @@ visual_overflow_rect_in_layout_space.size = layout_view_size; } else { ComputeLiveElementGeometry( - max_capture_size, *layout_object, container_properties, + max_capture_size_in_layout, *layout_object, container_properties, visual_overflow_rect_in_layout_space, captured_rect_in_layout_space); } @@ -1274,7 +1290,7 @@ // bounds which includes this scale. captured_rect_in_layout_space = ComputeCaptureRect( max_capture_size, visual_overflow_rect_in_layout_space, - snapshot_matrix_in_layout_space, *snapshot_root_size_at_capture_); + snapshot_matrix_in_layout_space, *snapshot_root_layout_size_at_capture_); container_properties = ContainerProperties(border_box_size_in_css_space, snapshot_matrix_in_css_space); @@ -1565,9 +1581,9 @@ ViewTransitionState transition_state; transition_state.device_pixel_ratio = device_pixel_ratio_; - DCHECK(snapshot_root_size_at_capture_); + DCHECK(snapshot_root_layout_size_at_capture_); transition_state.snapshot_root_size_at_capture = - *snapshot_root_size_at_capture_; + *snapshot_root_layout_size_at_capture_; for (const auto& entry : element_data_map_) { const auto& element_data = entry.value; @@ -1927,7 +1943,7 @@ } bool ViewTransitionStyleTracker::SnapshotRootDidChangeSize() const { - if (!snapshot_root_size_at_capture_.has_value()) { + if (!snapshot_root_layout_size_at_capture_.has_value()) { return false; } @@ -1937,9 +1953,9 @@ // viewport-resizing UI (e.g. the virtual keyboard insets the viewport but // then outsets the viewport rect to get the snapshot root). These // adjustments can be off by a pixel due to different pixel snapping. - if (std::abs(snapshot_root_size_at_capture_->width() - + if (std::abs(snapshot_root_layout_size_at_capture_->width() - current_size.width()) <= 1 && - std::abs(snapshot_root_size_at_capture_->height() - + std::abs(snapshot_root_layout_size_at_capture_->height() - current_size.height()) <= 1) { return false; }
diff --git a/third_party/blink/renderer/core/view_transition/view_transition_style_tracker.h b/third_party/blink/renderer/core/view_transition/view_transition_style_tracker.h index 1a2a318..1df66b3 100644 --- a/third_party/blink/renderer/core/view_transition/view_transition_style_tracker.h +++ b/third_party/blink/renderer/core/view_transition/view_transition_style_tracker.h
@@ -325,7 +325,7 @@ // will be initialized from the cached state at creation but is currently // unset. // TODO(bokan): Implement for cross-document transitions. crbug.com/1404957. - absl::optional<gfx::Size> snapshot_root_size_at_capture_; + absl::optional<gfx::Size> snapshot_root_layout_size_at_capture_; // Map of the CSS |view-transition-name| property to state for that tag. HeapHashMap<AtomicString, Member<ElementData>> element_data_map_;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc index 5aaa0fc1..814ab7f 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
@@ -664,6 +664,7 @@ ax::mojom::blink::Role::kAudio, ax::mojom::blink::Role::kBanner, ax::mojom::blink::Role::kBlockquote, + ax::mojom::blink::Role::kCode, ax::mojom::blink::Role::kComplementary, ax::mojom::blink::Role::kContentDeletion, ax::mojom::blink::Role::kContentInfo, @@ -690,6 +691,7 @@ ax::mojom::blink::Role::kDocPreface, ax::mojom::blink::Role::kDocPrologue, ax::mojom::blink::Role::kDocToc, + ax::mojom::blink::Role::kEmphasis, ax::mojom::blink::Role::kFigcaption, ax::mojom::blink::Role::kFigure, ax::mojom::blink::Role::kFooter, @@ -736,6 +738,7 @@ ax::mojom::blink::Role::kSplitter, ax::mojom::blink::Role::kSubscript, ax::mojom::blink::Role::kSuperscript, + ax::mojom::blink::Role::kStrong, ax::mojom::blink::Role::kTerm, ax::mojom::blink::Role::kTime, ax::mojom::blink::Role::kVideo,
diff --git a/third_party/blink/renderer/modules/ad_auction/BUILD.gn b/third_party/blink/renderer/modules/ad_auction/BUILD.gn index 10c3d4df..fa60ef2 100644 --- a/third_party/blink/renderer/modules/ad_auction/BUILD.gn +++ b/third_party/blink/renderer/modules/ad_auction/BUILD.gn
@@ -11,6 +11,8 @@ "join_leave_queue.h", "navigator_auction.cc", "navigator_auction.h", + "protected_audience.cc", + "protected_audience.h", "validate_blink_interest_group.cc", "validate_blink_interest_group.h", ]
diff --git a/third_party/blink/renderer/modules/ad_auction/navigator_auction.cc b/third_party/blink/renderer/modules/ad_auction/navigator_auction.cc index 89a6702..ab5f378 100644 --- a/third_party/blink/renderer/modules/ad_auction/navigator_auction.cc +++ b/third_party/blink/renderer/modules/ad_auction/navigator_auction.cc
@@ -72,6 +72,7 @@ #include "third_party/blink/renderer/core/page/page.h" #include "third_party/blink/renderer/modules/ad_auction/ads.h" #include "third_party/blink/renderer/modules/ad_auction/join_leave_queue.h" +#include "third_party/blink/renderer/modules/ad_auction/protected_audience.h" #include "third_party/blink/renderer/modules/ad_auction/validate_blink_interest_group.h" #include "third_party/blink/renderer/modules/geolocation/geolocation_coordinates.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h" @@ -3020,7 +3021,8 @@ kMaxActiveCrossSiteClears, WTF::BindRepeating(&NavigatorAuction::StartClear, WrapWeakPersistent(this))), - ad_auction_service_(navigator.GetExecutionContext()) { + ad_auction_service_(navigator.GetExecutionContext()), + protected_audience_(MakeGarbageCollected<ProtectedAudience>()) { navigator.GetExecutionContext()->GetBrowserInterfaceBroker().GetInterface( ad_auction_service_.BindNewPipeAndPassReceiver( navigator.GetExecutionContext()->GetTaskRunner( @@ -4070,6 +4072,14 @@ blink::features::kFledgeEnforceKAnonymity); } +// static +ProtectedAudience* NavigatorAuction::protectedAudience( + ScriptState* script_state, + Navigator& navigator) { + return From(ExecutionContext::From(script_state), navigator) + .protected_audience_; +} + ScriptPromise NavigatorAuction::getInterestGroupAdAuctionData( ScriptState* script_state, const AdAuctionDataConfig* config,
diff --git a/third_party/blink/renderer/modules/ad_auction/navigator_auction.h b/third_party/blink/renderer/modules/ad_auction/navigator_auction.h index 14598b55..38f9084 100644 --- a/third_party/blink/renderer/modules/ad_auction/navigator_auction.h +++ b/third_party/blink/renderer/modules/ad_auction/navigator_auction.h
@@ -36,6 +36,7 @@ class AuctionAdInterestGroupKey; class AuctionAdConfig; class ScriptPromiseResolver; +class ProtectedAudience; class V8UnionFencedFrameConfigOrUSVString; class MODULES_EXPORT NavigatorAuction final @@ -199,8 +200,12 @@ static bool deprecatedRunAdAuctionEnforcesKAnonymity(ScriptState*, Navigator&); + static ProtectedAudience* protectedAudience(ScriptState*, + Navigator& navigator); + void Trace(Visitor* visitor) const override { visitor->Trace(ad_auction_service_); + visitor->Trace(protected_audience_); Supplement<Navigator>::Trace(visitor); } @@ -281,6 +286,7 @@ JoinLeaveQueue<PendingClear> queued_cross_site_clears_; HeapMojoRemote<mojom::blink::AdAuctionService> ad_auction_service_; + Member<ProtectedAudience> protected_audience_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/ad_auction/navigator_auction.idl b/third_party/blink/renderer/modules/ad_auction/navigator_auction.idl index ee16454..40a6c28 100644 --- a/third_party/blink/renderer/modules/ad_auction/navigator_auction.idl +++ b/third_party/blink/renderer/modules/ad_auction/navigator_auction.idl
@@ -57,4 +57,6 @@ [RuntimeEnabled=EnforceAnonymityExposure, CallWith=ScriptState] readonly attribute boolean deprecatedRunAdAuctionEnforcesKAnonymity; + + [RuntimeEnabled=FledgeFeatureDetection, SameObject, CallWith=ScriptState] readonly attribute ProtectedAudience protectedAudience; };
diff --git a/third_party/blink/renderer/modules/ad_auction/protected_audience.cc b/third_party/blink/renderer/modules/ad_auction/protected_audience.cc new file mode 100644 index 0000000..3f09c12 --- /dev/null +++ b/third_party/blink/renderer/modules/ad_auction/protected_audience.cc
@@ -0,0 +1,25 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "third_party/blink/renderer/modules/ad_auction/protected_audience.h" + +#include "third_party/blink/public/common/interest_group/ad_auction_constants.h" +#include "third_party/blink/renderer/bindings/core/v8/to_v8_traits.h" + +namespace blink { + +ProtectedAudience::ProtectedAudience() = default; + +ScriptValue ProtectedAudience::queryFeatureSupport(ScriptState* script_state, + const String& feature_name) { + if (feature_name == "adComponentsLimit") { + return ScriptValue(script_state->GetIsolate(), + ToV8Traits<IDLUnsignedLongLong>::ToV8( + script_state, MaxAdAuctionAdComponents())); + } + + return ScriptValue(); +} + +} // namespace blink
diff --git a/third_party/blink/renderer/modules/ad_auction/protected_audience.h b/third_party/blink/renderer/modules/ad_auction/protected_audience.h new file mode 100644 index 0000000..b5dcb6f4 --- /dev/null +++ b/third_party/blink/renderer/modules/ad_auction/protected_audience.h
@@ -0,0 +1,28 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_AD_AUCTION_PROTECTED_AUDIENCE_H_ +#define THIRD_PARTY_BLINK_RENDERER_MODULES_AD_AUCTION_PROTECTED_AUDIENCE_H_ + +#include "third_party/blink/renderer/platform/bindings/script_wrappable.h" + +#include "third_party/blink/renderer/bindings/core/v8/script_value.h" +#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + +namespace blink { + +class ScriptState; + +class ProtectedAudience : public ScriptWrappable { + DEFINE_WRAPPERTYPEINFO(); + + public: + ProtectedAudience(); + static ScriptValue queryFeatureSupport(ScriptState* script_state, + const String& feature_name); +}; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_AD_AUCTION_PROTECTED_AUDIENCE_H_
diff --git a/third_party/blink/renderer/modules/ad_auction/protected_audience.idl b/third_party/blink/renderer/modules/ad_auction/protected_audience.idl new file mode 100644 index 0000000..193decf --- /dev/null +++ b/third_party/blink/renderer/modules/ad_auction/protected_audience.idl
@@ -0,0 +1,7 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +interface ProtectedAudience { + [CallWith=ScriptState] any queryFeatureSupport(DOMString feature); +};
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_video_capturer_source.cc b/third_party/blink/renderer/modules/mediastream/media_stream_video_capturer_source.cc index de4e761..6785640 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_video_capturer_source.cc +++ b/third_party/blink/renderer/modules/mediastream/media_stream_video_capturer_source.cc
@@ -41,6 +41,8 @@ return "No permission."; case CapturedSurfaceControlResult::kCapturedSurfaceNotFoundError: return "Captured surface not found (likely stopped asynchronously.)"; + case CapturedSurfaceControlResult::kDisallowedForSelfCaptureError: + return "API not supported for self-capture."; } NOTREACHED_NORETURN(); }
diff --git a/third_party/blink/renderer/modules/payments/payment_manager.idl b/third_party/blink/renderer/modules/payments/payment_manager.idl index 125a975..319bf6a 100644 --- a/third_party/blink/renderer/modules/payments/payment_manager.idl +++ b/third_party/blink/renderer/modules/payments/payment_manager.idl
@@ -13,7 +13,8 @@ [ Exposed=Window, - RuntimeEnabled=PaymentApp + RuntimeEnabled=PaymentApp, + SecureContext ] interface PaymentManager { [SameObject, DeprecateAs=PaymentInstruments, RuntimeEnabled=PaymentInstruments] readonly attribute PaymentInstruments instruments; attribute DOMString userHint;
diff --git a/third_party/blink/renderer/modules/payments/payment_request_update_event.idl b/third_party/blink/renderer/modules/payments/payment_request_update_event.idl index c9991ec..4692455 100644 --- a/third_party/blink/renderer/modules/payments/payment_request_update_event.idl +++ b/third_party/blink/renderer/modules/payments/payment_request_update_event.idl
@@ -2,11 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// https://w3c.github.io/browser-payment-api/#idl-def-paymentrequestupdateevent +// https://w3c.github.io/payment-request/#dom-paymentrequestupdateevent [ RuntimeEnabled=PaymentRequest, - Exposed=Window + Exposed=Window, + SecureContext ] interface PaymentRequestUpdateEvent : Event { [CallWith=ExecutionContext] constructor(DOMString type, optional PaymentRequestUpdateEventInit eventInitDict = {}); [CallWith=ScriptState,RaisesException] void updateWith(Promise<PaymentDetailsUpdate> detailsPromise);
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 index adddec26..6ee783de 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -1808,6 +1808,13 @@ status: "stable", }, { + name: "FledgeFeatureDetection", + // This will likely have to be enabled based on an OR of many + // base::Features. + base_feature: "none", + public: true, + }, + { name: "FledgeNegativeTargeting", status: "stable", },
diff --git a/third_party/blink/tools/blinkpy/wpt_tests/wpt_adapter.py b/third_party/blink/tools/blinkpy/wpt_tests/wpt_adapter.py index 27214a3..e07c2f4 100644 --- a/third_party/blink/tools/blinkpy/wpt_tests/wpt_adapter.py +++ b/third_party/blink/tools/blinkpy/wpt_tests/wpt_adapter.py
@@ -307,7 +307,8 @@ ]) runner_options.binary_args.extend([ '--host-resolver-rules=' - 'MAP nonexistent.*.test ^NOTFOUND, MAP *.test 127.0.0.1', + 'MAP nonexistent.*.test ^NOTFOUND,' + 'MAP *.test 127.0.0.1, MAP *.test. 127.0.0.1', *self.port.additional_driver_flags(), ]) # Implicitly pass `--enable-blink-features=MojoJS,MojoJSTest` to Chrome.
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 39d4fcf..6975c28 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -6167,7 +6167,6 @@ [ Debug Mac13 ] virtual/threaded/animations/stability/pause-set-current-time.html [ Skip Timeout ] [ Debug Mac13 ] external/wpt/css/css-color/parsing/color-computed-hsl.html [ Skip Timeout ] [ Debug Mac13 ] virtual/controls-refresh-hc/fast/forms/color-scheme/button/button-pressed-state.html [ Skip Timeout ] -[ Debug Mac13 ] http/tests/devtools/profiler/heap-snapshot-comparison-sorting.js [ Skip Timeout ] [ Debug Mac13 ] external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-cross-document-nav.html [ Failure ] [ Debug Mac13 ] virtual/threaded-no-composited-antialiasing/animations/interpolation/text-decoration-color-interpolation.html [ Skip Timeout ] [ Debug Mac13 ] virtual/threaded-no-composited-antialiasing/animations/stability/pseudo-element-animation-with-marker-crash.html [ Skip Timeout ] @@ -6176,7 +6175,6 @@ [ Debug Mac13 ] fast/scroll-behavior/overflow-scroll-animates.html [ Skip Timeout ] [ Debug Mac13 ] virtual/threaded/printing/css2.1/page-break-after-002.html [ Skip Timeout ] [ Debug Mac13 ] virtual/fenced-frame-mparch/external/wpt/html/anonymous-iframe/embedding.tentative.https.window.html?13-last [ Failure ] -[ Debug Mac13 ] http/tests/devtools/profiler/heap-snapshot-containment-sorting.js [ Skip Timeout ] [ Debug Mac13 ] virtual/dark-color-scheme/fast/forms/color-scheme/media/video-playback-speed-menu.html [ Failure Skip Timeout ] [ Debug Mac13 ] http/tests/devtools/persistence/persistence-tabbed-editor-tabs-order.js [ Skip Timeout ] [ Debug Mac13 ] fast/dom/shadow/selections-in-shadow.html [ Skip Timeout ] @@ -6754,3 +6752,47 @@ # Gardener: 2024-01-22 crbug.com/1518453 inspector-protocol/input/dispatchTouchEvent.js [ Failure Pass Timeout ] crbug.com/1520409 [ Linux ] virtual/shared-storage-fenced-frame-mparch/external/wpt/shared-storage/shared-storage-writable-service-worker-fetch.tentative.https.sub.html [ Failure Pass ] + +crbug.com/1467464 http/tests/devtools/a11y-axe-core/elements/main-tool-test.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/elements/elements-tab-stops.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-comparison-sorting.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-containment-sorting.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/a11y-axe-core/basic-a11y-test.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/a11y-axe-core/elements/event-listeners-a11y-test.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/a11y-axe-core/memory/heap-profiler-a11y-test.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/a11y-axe-core/sources/dom-breakpoints-pane-a11y-test.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/a11y-axe-core/sources/event-listener-breakpoints-a11y-test.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/a11y-axe-core/sources/global-listeners-sidebar-a11y-test.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/a11y-axe-core/sources/scope-pane-a11y-test.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/a11y-axe-core/sources/source-navigator-contentscripts-a11y-test.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/a11y-axe-core/sources/xhr-breakpoints-sidebar-a11y-test.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/elements/event-listeners-framework-with-service-worker.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-profiler-profiling.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-comparison-dom-groups-change.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-comparison-expansion-preserved-when-sorting.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-comparison-show-all.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-comparison-show-next.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-comparison-shown-node-count-preserved-when-sorting.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-containment-expansion-preserved-when-sorting.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-containment-show-all.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-containment-show-next.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-containment-shown-node-count-preserved-when-sorting.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-event-listeners.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-inspect-dom-wrapper.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-loader.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-orphan-nodes.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-statistics.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-summary-expand-collapse.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-summary-expansion-preserved-when-sorting.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-summary-retainers.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-summary-search-by-id.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-summary-search.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-summary-show-all.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-summary-show-next.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-summary-show-ranges.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-summary-shown-node-count-preserved-when-sorting.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-summary-sorting-fields.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-summary-sorting-instances.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-summary-sorting.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot-weak-dominator.js [ Failure Pass Timeout ] +crbug.com/1467464 http/tests/devtools/profiler/heap-snapshot.js [ Failure Pass Timeout ]
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json index ca823ab7..026dffdc 100644 --- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json +++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -19127,6 +19127,19 @@ {} ] ], + "page-name-001-print.html": [ + "9427db4fe730e645430e1c5a57bfd34b45bf4582", + [ + null, + [ + [ + "/css/css-page/page-name-001-ref.html", + "==" + ] + ], + {} + ] + ], "page-name-abspos-001-print.html": [ "df2f61493580c3273de0f77143a2cba86074f215", [ @@ -19728,6 +19741,32 @@ } ] ], + "page-orientation-on-portrait-002-print.html": [ + "51b4a980fbdf631aa46f857e03939ab5acd702ac", + [ + null, + [ + [ + "/css/css-page/page-orientation-on-portrait-002-notref.html", + "!=" + ] + ], + {} + ] + ], + "page-orientation-on-portrait-003-print.html": [ + "9cf505bbd9798a9f9404a69c1e052bab45ca34a2", + [ + null, + [ + [ + "/css/css-page/page-orientation-on-portrait-003-notref.html", + "!=" + ] + ], + {} + ] + ], "page-orientation-on-square-001-print.html": [ "06e4f00d3c43fed651f958d6ccf578e4ca717f99", [ @@ -327862,6 +327901,10 @@ "3480039046aeca2dee76a7d4bdd720ddbac82784", [] ], + "page-name-001-ref.html": [ + "4e1a4999681faa1ba905fd8284326071c0ab571f", + [] + ], "page-name-abspos-001-print-ref.html": [ "dc61a550780bf76cab4d964041db37e187f41bb6", [] @@ -328022,6 +328065,14 @@ "caa7542dac9a8ceeccc0a3eb22377c5a85f56777", [] ], + "page-orientation-on-portrait-002-notref.html": [ + "503fd42d58475741251a8709740142e803d4f6cb", + [] + ], + "page-orientation-on-portrait-003-notref.html": [ + "f6f415df97d4f0c11e10cfacc985b35c8f7f8ad6", + [] + ], "page-orientation-portrait-ref.html": [ "c545c3163c7a713020465332888ca972cb47c45f", [] @@ -357520,7 +357571,7 @@ [] ], "rc-helper.js": [ - "9ecdc91ff147ac785154ae2ab5991ea32f9dacb3", + "80c164f56053d3379e0ac5ed31cde312c09ae6a3", [] ], "service-worker.js": [ @@ -381613,7 +381664,7 @@ ], "not-restored-reasons": { "abort-block-bfcache.window-expected.txt": [ - "4647057212b9416abbc38f74c71acbda97b3a8a3", + "5077930bbdb5b4b6dcbbdaaf94836d8f306d23be", [] ], "performance-navigation-timing-lock.https.tentative.window-expected.txt": [ @@ -381625,7 +381676,7 @@ [] ], "test-helper.js": [ - "a172546512a0f2f28c986c36cbb06d1ba333af3b", + "97695cd0acec89bc5fa223eadf516d3103ddc302", [] ] }, @@ -389092,7 +389143,7 @@ ] }, "router-rules.js": [ - "3ecd2025b39f54c78e84ae6838ec0272ff609c2d", + "d0458e7f240bb74b8c60f676921912d726b834e8", [] ], "simple-test-for-condition-main-resource.html": [ @@ -397403,6 +397454,14 @@ "65a021e4b59ca8841f87aace6aa0f8129a2b84fa", [] ], + "cast.https.any-expected.txt": [ + "d47e14f40f3451980d2f8e5b048c4b16e128f51e", + [] + ], + "cast.https.any.worker-expected.txt": [ + "073fd9089ecc875a64672a4ce51b396eb8353e3e", + [] + ], "clamp.https.any.worker-expected.txt": [ "bb81193fdcee180e750d8d48ba1dc0617ee21282", [] @@ -397536,11 +397595,11 @@ [] ], "pooling.https.any-expected.txt": [ - "570e340cd602b2a473b4ba48afc860451a61bc06", + "b2074d6673c4bc62c74e2f2a988b3613c4ebcc87", [] ], "pooling.https.any.worker-expected.txt": [ - "c6138a98f4feb89c5adcad57913fca23e26db3c2", + "8db7404a087e2b2b402dd39f7162c152d64354b9", [] ], "prelu.https.any-expected.txt": [ @@ -397593,6 +397652,10 @@ "04ab0d0d6f1f4bc6c4287f70026d2547d0e25420", [] ], + "cast.json": [ + "59d1036eeed5ad93460f75f04efb51bfc67a4617", + [] + ], "ceil.json": [ "b9bccbc3a07657e3ecc3a8dcbfd1c7c6a68896b7", [] @@ -397843,7 +397906,7 @@ ] }, "utils.js": [ - "955e01fb94948ec401fda13b21acd9e54adec398", + "92fffeb80f3f6b3bb043c15f4702bd7ebaad7767", [] ] }, @@ -428571,7 +428634,7 @@ ] ], "compute_pressure_rate_obfuscation_mitigation_not_triggered.tentative.https.window.js": [ - "9fd549d2db9ba69a26071cfe33e0857a8d8aef82", + "cb1aa432ce612442a73fb79b1545df10c07246fd", [ "compute-pressure/compute_pressure_rate_obfuscation_mitigation_not_triggered.tentative.https.window.html", { @@ -428598,7 +428661,7 @@ ] ], "compute_pressure_rate_obfuscation_mitigation_triggered.tentative.https.window.js": [ - "0ae20fdee6eb02090f3bc48d4b38af558103330e", + "11dcc3c70aa15189e351afa6480c40b6c9f9676c", [ "compute-pressure/compute_pressure_rate_obfuscation_mitigation_triggered.tentative.https.window.html", { @@ -601274,7 +601337,7 @@ ] ], "performance-navigation-timing-attributes.tentative.window.js": [ - "2fabf45f351d983a1001d4e1ed6970e818c0c2b6", + "44495fa981b75209dbc869511b1c5561cd223722", [ "performance-timeline/not-restored-reasons/performance-navigation-timing-attributes.tentative.window.html", { @@ -601321,7 +601384,7 @@ ] ], "performance-navigation-timing-bfcache-reasons-stay.tentative.window.js": [ - "897a9900268076826b9c07d2b0051bb2c7404b0e", + "28dbc38575a3b26924ccf2e6bf452cbb100c041d", [ "performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache-reasons-stay.tentative.window.html", { @@ -601411,7 +601474,7 @@ ] ], "performance-navigation-timing-cross-origin-bfcache.tentative.window.js": [ - "42769cf458b77020e8d0fb0218b19f109cf59663", + "42bda12919d1b7ff10c37ac37798fc42f1f50058", [ "performance-timeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.tentative.window.html", { @@ -601458,7 +601521,7 @@ ] ], "performance-navigation-timing-fetch.tentative.window.js": [ - "5cd35c7ba362e1a1b844fab38fe72e4991005192", + "c8f53a660fa9a144b21be7d009c4107d005d058c", [ "performance-timeline/not-restored-reasons/performance-navigation-timing-fetch.tentative.window.html", { @@ -601591,7 +601654,7 @@ ] ], "performance-navigation-timing-not-bfcached.tentative.window.js": [ - "0dc1519d1bb1c05026029f5ff644738f74fcd744", + "1cf1d55d90f78abca7d8c55ffb1aacb8e13f2fa5", [ "performance-timeline/not-restored-reasons/performance-navigation-timing-not-bfcached.tentative.window.html", { @@ -601685,7 +601748,7 @@ ] ], "performance-navigation-timing-reload.tentative.window.js": [ - "58584390cd3dc5a2400e62c65df1cf5ce99fa6c6", + "1a8972778d287c51c73a0d9db9cc61c0160c4034", [ "performance-timeline/not-restored-reasons/performance-navigation-timing-reload.tentative.window.html", { @@ -601732,7 +601795,7 @@ ] ], "performance-navigation-timing-same-origin-bfcache.tentative.window.js": [ - "44b44a865c0e5aa7dfd5320f5407b1e74748ab97", + "89d66b070ed8c4fe89fde91a8e6aeb6135854b75", [ "performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.tentative.window.html", { @@ -601779,7 +601842,7 @@ ] ], "performance-navigation-timing-same-origin-replace.tentative.window.js": [ - "c833db751390fbf43a73f49870c74377691c4b54", + "1162bfaf7600fdacfc3e0f7da147bc320d038a9d", [ "performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-replace.tentative.window.html", { @@ -627697,14 +627760,14 @@ "tentative": { "static-router": { "static-router-main-resource.https.html": [ - "30bbf60e83f849390a04a7795fd04184ed121ccd", + "9be7d74cc78c0e5e4ce4f4dd14fc3085feda4ff7", [ null, {} ] ], "static-router-subresource.https.html": [ - "6154c38f2d7013150021a2903d9b8a7301dc7013", + "c0eb8e9f2f51a2254e37f9c594189d45a60c4776", [ null, {} @@ -664971,6 +665034,57 @@ } ] ], + "cast.https.any.js": [ + "c9be45a770d3ad6247bfca04e20dc915eb12fc10", + [ + "webnn/cast.https.any.html", + { + "script_metadata": [ + [ + "title", + "test WebNN API cast operation" + ], + [ + "global", + "window,dedicatedworker" + ], + [ + "script", + "./resources/utils.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ], + [ + "webnn/cast.https.any.worker.html", + { + "script_metadata": [ + [ + "title", + "test WebNN API cast operation" + ], + [ + "global", + "window,dedicatedworker" + ], + [ + "script", + "./resources/utils.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ] + ], "clamp.https.any.js": [ "9818aed7c12be552b24427efa3beb78547ef2e0e", [ @@ -665635,6 +665749,57 @@ } ] ], + "cast.https.any.js": [ + "1830364eb55234a06c3b3821003ba8477bc459b9", + [ + "webnn/gpu/cast.https.any.html", + { + "script_metadata": [ + [ + "title", + "test WebNN API cast operation" + ], + [ + "global", + "window,dedicatedworker" + ], + [ + "script", + "../resources/utils.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ], + [ + "webnn/gpu/cast.https.any.worker.html", + { + "script_metadata": [ + [ + "title", + "test WebNN API cast operation" + ], + [ + "global", + "window,dedicatedworker" + ], + [ + "script", + "../resources/utils.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ] + ], "clamp.https.any.js": [ "98313868b6d6802cea00603caad49288dc4a7c99", [ @@ -669419,14 +669584,14 @@ ] ], "back-forward-cache-with-open-webrtc-connection.https.window.js": [ - "4a4807d5141123cd1cf7e85cc1c8e29623944f59", + "a516aa4c79988fabceca08da087c56734175ca0f", [ "webrtc/back-forward-cache-with-open-webrtc-connection.https.window.html", { "script_metadata": [ [ "title", - "Testing BFCache support for page with open WebRTC connection." + "Testing BFCache support for page with open WebRTC connection and live MediaStreamTrack." ], [ "script",
diff --git a/third_party/blink/web_tests/external/wpt/css/css-page/page-name-001-print.html b/third_party/blink/web_tests/external/wpt/css/css-page/page-name-001-print.html new file mode 100644 index 0000000..9427db4f --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-page/page-name-001-print.html
@@ -0,0 +1,21 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Test: @page size descriptor with named page</title> +<link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com"> +<link rel="help" href="https://www.w3.org/TR/css-page-3/#using-named-pages"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1874947"> +<link rel="match" href="page-name-001-ref.html"> +<style> +@page a { + size: 2in 3in; + margin: 0.1in; +} +html { + height: 100%; + box-sizing: border-box; + border: 5px solid black; +} +</style> +<div style="page: a"> +Text +</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-page/page-name-001-ref.html b/third_party/blink/web_tests/external/wpt/css/css-page/page-name-001-ref.html new file mode 100644 index 0000000..4e1a499 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-page/page-name-001-ref.html
@@ -0,0 +1,18 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Reference Case</title> +<link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com"> +<style> +@page { + size: 2in 3in; + margin: 0.1in; +} +html { + height: 100%; + box-sizing: border-box; + border: 5px solid black; +} +</style> +<div> +Text +</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-page/page-orientation-on-portrait-002-notref.html b/third_party/blink/web_tests/external/wpt/css/css-page/page-orientation-on-portrait-002-notref.html new file mode 100644 index 0000000..503fd42 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-page/page-orientation-on-portrait-002-notref.html
@@ -0,0 +1,25 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Not-reference Case</title> +<link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com"> +<link rel="help" href="https://drafts.csswg.org/css-page/#page-orientation-prop"> +<style> +@page { + margin: 0; + size: 200px 300px; +} +@page rotated { + page-orientation: rotate-left; +} +body { + margin: 0; +} +.filler { + box-sizing: border-box; + width: 200px; + height: 300px; + border: 10px solid black; +} +</style> +<div class="filler">Page 1</div> +<div class="filler" style="page: rotated">Page 2</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-page/page-orientation-on-portrait-002-print.html b/third_party/blink/web_tests/external/wpt/css/css-page/page-orientation-on-portrait-002-print.html new file mode 100644 index 0000000..51b4a980 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-page/page-orientation-on-portrait-002-print.html
@@ -0,0 +1,34 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Test: Differing border color at the end of a rotate-left page + should produce a reftest mismatch result</title> +<link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com"> +<link rel="help" href="https://drafts.csswg.org/css-page/#page-orientation-prop"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1875182"> +<link rel="mismatch" href="page-orientation-on-portrait-002-notref.html"> +<style> +@page { + margin: 0; + size: 200px 300px; +} +@page rotated { + page-orientation: rotate-left; +} +body { + margin: 0; +} +.filler { + box-sizing: border-box; + width: 200px; + height: 300px; + border: 10px solid black; +} +.specialborder { + border-bottom-color: cyan; +} +</style> +<div class="filler">Page 1</div> +<!-- Page 2 gets a special border at the end which should make it + compare as a "mismatch" against the reference case, if things are + working properly. --> +<div class="filler specialborder" style="page: rotated">Page 2</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-page/page-orientation-on-portrait-003-notref.html b/third_party/blink/web_tests/external/wpt/css/css-page/page-orientation-on-portrait-003-notref.html new file mode 100644 index 0000000..f6f415d --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-page/page-orientation-on-portrait-003-notref.html
@@ -0,0 +1,25 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Not-reference Case</title> +<link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com"> +<link rel="help" href="https://drafts.csswg.org/css-page/#page-orientation-prop"> +<style> +@page { + margin: 0; + size: 200px 300px; +} +@page rotated { + page-orientation: rotate-right; +} +body { + margin: 0; +} +.filler { + box-sizing: border-box; + width: 200px; + height: 300px; + border: 10px solid black; +} +</style> +<div class="filler">Page 1</div> +<div class="filler" style="page: rotated">Page 2</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-page/page-orientation-on-portrait-003-print.html b/third_party/blink/web_tests/external/wpt/css/css-page/page-orientation-on-portrait-003-print.html new file mode 100644 index 0000000..9cf505b --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-page/page-orientation-on-portrait-003-print.html
@@ -0,0 +1,34 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Test: Differing border color at the start of a rotate-right page + should produce a reftest mismatch result</title> +<link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com"> +<link rel="help" href="https://drafts.csswg.org/css-page/#page-orientation-prop"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1875182"> +<link rel="mismatch" href="page-orientation-on-portrait-003-notref.html"> +<style> +@page { + margin: 0; + size: 200px 300px; +} +@page rotated { + page-orientation: rotate-right; +} +body { + margin: 0; +} +.filler { + box-sizing: border-box; + width: 200px; + height: 300px; + border: 10px solid black; +} +.specialborder { + border-top-color: cyan; +} +</style> +<div class="filler">Page 1</div> +<!-- Page 2 gets a special border at the start which should make it + compare as a "mismatch" against the reference case, if things are + working properly. --> +<div class="filler specialborder" style="page: rotated">Page 2</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/no-crash-view-transition-in-massive-iframe.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/no-crash-view-transition-in-massive-iframe.html new file mode 100644 index 0000000..c004a94 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/no-crash-view-transition-in-massive-iframe.html
@@ -0,0 +1,22 @@ +<!DOCTYPE html> +<title>View transitions: no crash with view-transitions in massive iframe</title> +<link rel="help" href="https://github.com/WICG/view-transitions"> +<link rel="author" href="mailto:roger.johannesson@xperi.com"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<style> +iframe { width: 40000px; height: 40000px } +</style> + +<iframe></iframe> + +<script> +promise_test(async t => { + const iframeDoc = document.getElementsByTagName("iframe")[0].contentDocument; + assert_implements(iframeDoc.startViewTransition, "Missing document.startViewTransition in iframe"); + const transition = iframeDoc.startViewTransition(); + try { await transition.ready; } catch {} +}, "startViewTransition in massive iframe shouldn't crash."); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/webnn/cast.https.any-expected.txt b/third_party/blink/web_tests/external/wpt/webnn/cast.https.any-expected.txt new file mode 100644 index 0000000..d47e14f --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/webnn/cast.https.any-expected.txt
@@ -0,0 +1,95 @@ +This is a testharness.js-based test. +[FAIL] cast float32 0D tensor to int32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int32) is not supported." +[FAIL] cast float32 1D tensor to int32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int32) is not supported." +[FAIL] cast float32 2D tensor to int32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int32) is not supported." +[FAIL] cast float32 3D tensor to int32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int32) is not supported." +[FAIL] cast float32 4D tensor to int32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int32) is not supported." +[FAIL] cast float32 5D tensor to int32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int32) is not supported." +[FAIL] cast float32 4D tensor to float16 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (cast) is not supported." +[FAIL] cast float32 4D tensor to uint32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (uint32) is not supported." +[FAIL] cast float32 4D tensor to int64 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int64) is not supported." +[FAIL] cast float32 4D tensor to int8 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int8) is not supported." +[FAIL] cast float32 4D tensor to uint8 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (uint8) is not supported." +[FAIL] cast float16 4D tensor to float32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (cast) is not supported." +[FAIL] cast float16 4D tensor to int32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int32) is not supported." +[FAIL] cast float16 4D tensor to uint32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (uint32) is not supported." +[FAIL] cast float16 4D tensor to int64 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int64) is not supported." +[FAIL] cast float16 4D tensor to int8 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int8) is not supported." +[FAIL] cast float16 4D tensor to uint8 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (uint8) is not supported." +[FAIL] cast int32 4D tensor to float32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int32) is not supported." +[FAIL] cast int32 4D tensor to float16 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int32) is not supported." +[FAIL] cast int32 4D tensor to int64 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int64) is not supported." +[FAIL] cast int32 4D tensor to int8 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int8) is not supported." +[FAIL] cast int32 4D tensor to uint8 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (uint8) is not supported." +[FAIL] cast uint32 4D tensor to float32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (uint32) is not supported." +[FAIL] cast uint32 4D tensor to float16 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (uint32) is not supported." +[FAIL] cast uint32 4D tensor to int32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int32) is not supported." +[FAIL] cast uint32 4D tensor to int64 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int64) is not supported." +[FAIL] cast uint32 4D tensor to int8 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int8) is not supported." +[FAIL] cast uint32 4D tensor to uint8 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (uint8) is not supported." +[FAIL] cast int64 4D tensor to float32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int64) is not supported." +[FAIL] cast int64 4D tensor to float16 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int64) is not supported." +[FAIL] cast int64 4D tensor to int32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int32) is not supported." +[FAIL] cast int64 4D tensor to uint32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (uint32) is not supported." +[FAIL] cast int64 4D tensor to int8 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int8) is not supported." +[FAIL] cast int64 4D tensor to uint8 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (uint8) is not supported." +[FAIL] cast int8 4D tensor to float32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int8) is not supported." +[FAIL] cast int8 4D tensor to float16 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int8) is not supported." +[FAIL] cast int8 4D tensor to int32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int32) is not supported." +[FAIL] cast int8 4D tensor to uint32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (uint32) is not supported." +[FAIL] cast int8 4D tensor to int64 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int64) is not supported." +[FAIL] cast int8 4D tensor to uint8 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (uint8) is not supported." +[FAIL] cast uint8 4D tensor to float32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (uint8) is not supported." +[FAIL] cast uint8 4D tensor to float16 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (uint8) is not supported." +[FAIL] cast uint8 4D tensor to int32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int32) is not supported." +[FAIL] cast uint8 4D tensor to uint32 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (uint32) is not supported." +[FAIL] cast uint8 4D tensor to int64 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int64) is not supported." +[FAIL] cast uint8 4D tensor to int8 / async + promise_test: Unhandled rejection with value: object "NotSupportedError: The operand data type (int8) is not supported." +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/webnn/cast.https.any.js b/third_party/blink/web_tests/external/wpt/webnn/cast.https.any.js new file mode 100644 index 0000000..c9be45a --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/webnn/cast.https.any.js
@@ -0,0 +1,10 @@ +// META: title=test WebNN API cast operation +// META: global=window,dedicatedworker +// META: script=./resources/utils.js +// META: timeout=long + +'use strict'; + +// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-cast + +testWebNNOperation('cast', buildCast); \ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/webnn/cast.https.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/webnn/cast.https.any.worker-expected.txt new file mode 100644 index 0000000..073fd90 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/webnn/cast.https.any.worker-expected.txt
@@ -0,0 +1,188 @@ +This is a testharness.js-based test. +Found 92 FAIL, 0 TIMEOUT, 0 NOTRUN. +[FAIL] cast float32 0D tensor to int32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int32) is not supported. +[FAIL] cast float32 1D tensor to int32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int32) is not supported. +[FAIL] cast float32 2D tensor to int32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int32) is not supported. +[FAIL] cast float32 3D tensor to int32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int32) is not supported. +[FAIL] cast float32 4D tensor to int32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int32) is not supported. +[FAIL] cast float32 5D tensor to int32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int32) is not supported. +[FAIL] cast float32 4D tensor to float16 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (cast) is not supported. +[FAIL] cast float32 4D tensor to uint32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (uint32) is not supported. +[FAIL] cast float32 4D tensor to int64 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int64) is not supported. +[FAIL] cast float32 4D tensor to int8 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int8) is not supported. +[FAIL] cast float32 4D tensor to uint8 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (uint8) is not supported. +[FAIL] cast float16 4D tensor to float32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (cast) is not supported. +[FAIL] cast float16 4D tensor to int32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int32) is not supported. +[FAIL] cast float16 4D tensor to uint32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (uint32) is not supported. +[FAIL] cast float16 4D tensor to int64 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int64) is not supported. +[FAIL] cast float16 4D tensor to int8 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int8) is not supported. +[FAIL] cast float16 4D tensor to uint8 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (uint8) is not supported. +[FAIL] cast int32 4D tensor to float32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int32) is not supported. +[FAIL] cast int32 4D tensor to float16 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int32) is not supported. +[FAIL] cast int32 4D tensor to int64 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int64) is not supported. +[FAIL] cast int32 4D tensor to int8 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int8) is not supported. +[FAIL] cast int32 4D tensor to uint8 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (uint8) is not supported. +[FAIL] cast uint32 4D tensor to float32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (uint32) is not supported. +[FAIL] cast uint32 4D tensor to float16 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (uint32) is not supported. +[FAIL] cast uint32 4D tensor to int32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int32) is not supported. +[FAIL] cast uint32 4D tensor to int64 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int64) is not supported. +[FAIL] cast uint32 4D tensor to int8 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int8) is not supported. +[FAIL] cast uint32 4D tensor to uint8 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (uint8) is not supported. +[FAIL] cast int64 4D tensor to float32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int64) is not supported. +[FAIL] cast int64 4D tensor to float16 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int64) is not supported. +[FAIL] cast int64 4D tensor to int32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int32) is not supported. +[FAIL] cast int64 4D tensor to uint32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (uint32) is not supported. +[FAIL] cast int64 4D tensor to int8 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int8) is not supported. +[FAIL] cast int64 4D tensor to uint8 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (uint8) is not supported. +[FAIL] cast int8 4D tensor to float32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int8) is not supported. +[FAIL] cast int8 4D tensor to float16 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int8) is not supported. +[FAIL] cast int8 4D tensor to int32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int32) is not supported. +[FAIL] cast int8 4D tensor to uint32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (uint32) is not supported. +[FAIL] cast int8 4D tensor to int64 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int64) is not supported. +[FAIL] cast int8 4D tensor to uint8 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (uint8) is not supported. +[FAIL] cast uint8 4D tensor to float32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (uint8) is not supported. +[FAIL] cast uint8 4D tensor to float16 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (uint8) is not supported. +[FAIL] cast uint8 4D tensor to int32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int32) is not supported. +[FAIL] cast uint8 4D tensor to uint32 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (uint32) is not supported. +[FAIL] cast uint8 4D tensor to int64 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int64) is not supported. +[FAIL] cast uint8 4D tensor to int8 / sync + Failed to execute 'buildSync' on 'MLGraphBuilder': The operand data type (int8) is not supported. +[FAIL] cast float32 0D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float32 1D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float32 2D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float32 3D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float32 4D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float32 5D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float32 4D tensor to float16 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float32 4D tensor to uint32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float32 4D tensor to int64 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float32 4D tensor to int8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float32 4D tensor to uint8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float16 4D tensor to float32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float16 4D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float16 4D tensor to uint32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float16 4D tensor to int64 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float16 4D tensor to int8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float16 4D tensor to uint8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int32 4D tensor to float32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int32 4D tensor to float16 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int32 4D tensor to int64 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int32 4D tensor to int8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int32 4D tensor to uint8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint32 4D tensor to float32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint32 4D tensor to float16 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint32 4D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint32 4D tensor to int64 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint32 4D tensor to int8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint32 4D tensor to uint8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int64 4D tensor to float32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int64 4D tensor to float16 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int64 4D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int64 4D tensor to uint32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int64 4D tensor to int8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int64 4D tensor to uint8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int8 4D tensor to float32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int8 4D tensor to float16 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int8 4D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int8 4D tensor to uint32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int8 4D tensor to int64 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int8 4D tensor to uint8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint8 4D tensor to float32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint8 4D tensor to float16 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint8 4D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint8 4D tensor to uint32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint8 4D tensor to int64 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint8 4D tensor to int8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/webnn/gpu/cast.https.any.js b/third_party/blink/web_tests/external/wpt/webnn/gpu/cast.https.any.js new file mode 100644 index 0000000..1830364 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/webnn/gpu/cast.https.any.js
@@ -0,0 +1,10 @@ +// META: title=test WebNN API cast operation +// META: global=window,dedicatedworker +// META: script=../resources/utils.js +// META: timeout=long + +'use strict'; + +// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-cast + +testWebNNOperation('cast', buildCast, 'gpu'); \ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/webnn/resources/test_data/cast.json b/third_party/blink/web_tests/external/wpt/webnn/resources/test_data/cast.json new file mode 100644 index 0000000..59d1036 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/webnn/resources/test_data/cast.json
@@ -0,0 +1,3040 @@ +{ + "tests": [ + { + "name": "cast float32 0D tensor to int32", + "inputs": { + "input": { + "shape": [], + "data": [ + 84.77753448486328 + ], + "type": "float32" + } + }, + "type": "int32", + "expected": { + "name": "output", + "shape": [], + "data": [ + 84 + ], + "type": "int32" + } + }, + { + "name": "cast float32 1D tensor to int32", + "inputs": { + "input": { + "shape": [24], + "data": [ + 102.1578369140625, + -43.5, + 52.84621810913086, + -99.9583511352539, + 6.729493141174316, + 92.66157531738281, + -10.377813339233398, + 106.65289306640625, + -7.126272678375244, + 91.51563262939453, + -50.87134552001953, + 83.38890075683594, + 72.9759750366211, + -31.015382766723633, + 79.94034576416016, + 41.5, + 35.727149963378906, + -2.5, + -96.05252838134766, + -86.76212310791016, + -27.49382972717285, + -23.836687088012695, + 70.77123260498047, + 83.5 + ], + "type": "float32" + } + }, + "type": "int32", + "expected": { + "name": "output", + "shape": [24], + "data": [ + 102, + -43, + 52, + -99, + 6, + 92, + -10, + 106, + -7, + 91, + -50, + 83, + 72, + -31, + 79, + 41, + 35, + -2, + -96, + -86, + -27, + -23, + 70, + 83 + ], + "type": "int32" + } + }, + { + "name": "cast float32 2D tensor to int32", + "inputs": { + "input": { + "shape": [4, 6], + "data": [ + 102.1578369140625, + -43.5, + 52.84621810913086, + -99.9583511352539, + 6.729493141174316, + 92.66157531738281, + -10.377813339233398, + 106.65289306640625, + -7.126272678375244, + 91.51563262939453, + -50.87134552001953, + 83.38890075683594, + 72.9759750366211, + -31.015382766723633, + 79.94034576416016, + 41.5, + 35.727149963378906, + -2.5, + -96.05252838134766, + -86.76212310791016, + -27.49382972717285, + -23.836687088012695, + 70.77123260498047, + 83.5 + ], + "type": "float32" + } + }, + "type": "int32", + "expected": { + "name": "output", + "shape": [4, 6], + "data": [ + 102, + -43, + 52, + -99, + 6, + 92, + -10, + 106, + -7, + 91, + -50, + 83, + 72, + -31, + 79, + 41, + 35, + -2, + -96, + -86, + -27, + -23, + 70, + 83 + ], + "type": "int32" + } + }, + { + "name": "cast float32 3D tensor to int32", + "inputs": { + "input": { + "shape": [2, 3, 4], + "data": [ + 102.1578369140625, + -43.5, + 52.84621810913086, + -99.9583511352539, + 6.729493141174316, + 92.66157531738281, + -10.377813339233398, + 106.65289306640625, + -7.126272678375244, + 91.51563262939453, + -50.87134552001953, + 83.38890075683594, + 72.9759750366211, + -31.015382766723633, + 79.94034576416016, + 41.5, + 35.727149963378906, + -2.5, + -96.05252838134766, + -86.76212310791016, + -27.49382972717285, + -23.836687088012695, + 70.77123260498047, + 83.5 + ], + "type": "float32" + } + }, + "type": "int32", + "expected": { + "name": "output", + "shape": [2, 3, 4], + "data": [ + 102, + -43, + 52, + -99, + 6, + 92, + -10, + 106, + -7, + 91, + -50, + 83, + 72, + -31, + 79, + 41, + 35, + -2, + -96, + -86, + -27, + -23, + 70, + 83 + ], + "type": "int32" + } + }, + { + "name": "cast float32 4D tensor to int32", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 102.1578369140625, + -43.5, + 52.84621810913086, + -99.9583511352539, + 6.729493141174316, + 92.66157531738281, + -10.377813339233398, + 106.65289306640625, + -7.126272678375244, + 91.51563262939453, + -50.87134552001953, + 83.38890075683594, + 72.9759750366211, + -31.015382766723633, + 79.94034576416016, + 41.5, + 35.727149963378906, + -2.5, + -96.05252838134766, + -86.76212310791016, + -27.49382972717285, + -23.836687088012695, + 70.77123260498047, + 83.5 + ], + "type": "float32" + } + }, + "type": "int32", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 102, + -43, + 52, + -99, + 6, + 92, + -10, + 106, + -7, + 91, + -50, + 83, + 72, + -31, + 79, + 41, + 35, + -2, + -96, + -86, + -27, + -23, + 70, + 83 + ], + "type": "int32" + } + }, + { + "name": "cast float32 5D tensor to int32", + "inputs": { + "input": { + "shape": [2, 1, 4, 1, 3], + "data": [ + 102.1578369140625, + -43.5, + 52.84621810913086, + -99.9583511352539, + 6.729493141174316, + 92.66157531738281, + -10.377813339233398, + 106.65289306640625, + -7.126272678375244, + 91.51563262939453, + -50.87134552001953, + 83.38890075683594, + 72.9759750366211, + -31.015382766723633, + 79.94034576416016, + 41.5, + 35.727149963378906, + -2.5, + -96.05252838134766, + -86.76212310791016, + -27.49382972717285, + -23.836687088012695, + 70.77123260498047, + 83.5 + ], + "type": "float32" + } + }, + "type": "int32", + "expected": { + "name": "output", + "shape": [2, 1, 4, 1, 3], + "data": [ + 102, + -43, + 52, + -99, + 6, + 92, + -10, + 106, + -7, + 91, + -50, + 83, + 72, + -31, + 79, + 41, + 35, + -2, + -96, + -86, + -27, + -23, + 70, + 83 + ], + "type": "int32" + } + }, + { + "name": "cast float32 4D tensor to float16", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 102.1578369140625, + 43.60371780395508, + 52.84621810913086, + 99.9583511352539, + 6.729493141174316, + 92.66157531738281, + 10.377813339233398, + 106.65289306640625, + 7.126272678375244, + 91.51563262939453, + 50.87134552001953, + 83.38890075683594, + 72.9759750366211, + 31.015382766723633, + 79.94034576416016, + 41.844703674316406, + 35.727149963378906, + 2.614182949066162, + 96.05252838134766, + 86.76212310791016, + 27.49382972717285, + 23.836687088012695, + 70.77123260498047, + 83.8347396850586 + ], + "type": "float32" + } + }, + "type": "float16", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 102.1875, + 43.59375, + 52.84375, + 99.9375, + 6.73046875, + 92.6875, + 10.375, + 106.625, + 7.125, + 91.5, + 50.875, + 83.375, + 73, + 31.015625, + 79.9375, + 41.84375, + 35.71875, + 2.61328125, + 96.0625, + 86.75, + 27.5, + 23.84375, + 70.75, + 83.8125 + ], + "type": "float16" + } + }, + { + "name": "cast float32 4D tensor to uint32", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 102.1578369140625, + 43.60371780395508, + 52.84621810913086, + 99.9583511352539, + 6.729493141174316, + 92.66157531738281, + 10.377813339233398, + 106.65289306640625, + 7.126272678375244, + 91.51563262939453, + 50.87134552001953, + 83.38890075683594, + 72.9759750366211, + 31.015382766723633, + 79.94034576416016, + 41.844703674316406, + 35.727149963378906, + 2.614182949066162, + 96.05252838134766, + 86.76212310791016, + 27.49382972717285, + 23.836687088012695, + 70.77123260498047, + 83.8347396850586 + ], + "type": "float32" + } + }, + "type": "uint32", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 102, + 43, + 52, + 99, + 6, + 92, + 10, + 106, + 7, + 91, + 50, + 83, + 72, + 31, + 79, + 41, + 35, + 2, + 96, + 86, + 27, + 23, + 70, + 83 + ], + "type": "uint32" + } + }, + { + "name": "cast float32 4D tensor to int64", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 102.1578369140625, + 43.60371780395508, + 52.84621810913086, + 99.9583511352539, + 6.729493141174316, + 92.66157531738281, + 10.377813339233398, + 106.65289306640625, + 7.126272678375244, + 91.51563262939453, + 50.87134552001953, + 83.38890075683594, + 72.9759750366211, + 31.015382766723633, + 79.94034576416016, + 41.844703674316406, + 35.727149963378906, + 2.614182949066162, + 96.05252838134766, + 86.76212310791016, + 27.49382972717285, + 23.836687088012695, + 70.77123260498047, + 83.8347396850586 + ], + "type": "float32" + } + }, + "type": "int64", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + "102", + "43", + "52", + "99", + "6", + "92", + "10", + "106", + "7", + "91", + "50", + "83", + "72", + "31", + "79", + "41", + "35", + "2", + "96", + "86", + "27", + "23", + "70", + "83" + ], + "type": "int64" + } + }, + { + "name": "cast float32 4D tensor to int8", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 102.1578369140625, + 43.60371780395508, + 52.84621810913086, + 99.9583511352539, + 6.729493141174316, + 92.66157531738281, + 10.377813339233398, + 106.65289306640625, + 7.126272678375244, + 91.51563262939453, + 50.87134552001953, + 83.38890075683594, + 72.9759750366211, + 31.015382766723633, + 79.94034576416016, + 41.844703674316406, + 35.727149963378906, + 2.614182949066162, + 96.05252838134766, + 86.76212310791016, + 27.49382972717285, + 23.836687088012695, + 70.77123260498047, + 83.8347396850586 + ], + "type": "float32" + } + }, + "type": "int8", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 102, + 43, + 52, + 99, + 6, + 92, + 10, + 106, + 7, + 91, + 50, + 83, + 72, + 31, + 79, + 41, + 35, + 2, + 96, + 86, + 27, + 23, + 70, + 83 + ], + "type": "int8" + } + }, + { + "name": "cast float32 4D tensor to uint8", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 102.1578369140625, + 43.60371780395508, + 52.84621810913086, + 99.9583511352539, + 6.729493141174316, + 92.66157531738281, + 10.377813339233398, + 106.65289306640625, + 7.126272678375244, + 91.51563262939453, + 50.87134552001953, + 83.38890075683594, + 72.9759750366211, + 31.015382766723633, + 79.94034576416016, + 41.844703674316406, + 35.727149963378906, + 2.614182949066162, + 96.05252838134766, + 86.76212310791016, + 27.49382972717285, + 23.836687088012695, + 70.77123260498047, + 83.8347396850586 + ], + "type": "float32" + } + }, + "type": "uint8", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 102, + 43, + 52, + 99, + 6, + 92, + 10, + 106, + 7, + 91, + 50, + 83, + 72, + 31, + 79, + 41, + 35, + 2, + 96, + 86, + 27, + 23, + 70, + 83 + ], + "type": "uint8" + } + }, + { + "name": "cast float16 4D tensor to float32", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 3.103515625, + 32.40625, + 62.15625, + 51.75, + 87.0625, + 106.25, + 125.375, + 112.9375, + 70.8125, + 39.1875, + 10.3515625, + 21.234375, + 99.75, + 16.125, + 115.625, + 66, + 49.375, + 115.75, + 77, + 57.15625, + 61.6875, + 12.9296875, + 101.25, + 123.9375 + ], + "type": "float16" + } + }, + "type": "float32", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 3.103515625, + 32.40625, + 62.15625, + 51.75, + 87.0625, + 106.25, + 125.375, + 112.9375, + 70.8125, + 39.1875, + 10.3515625, + 21.234375, + 99.75, + 16.125, + 115.625, + 66, + 49.375, + 115.75, + 77, + 57.15625, + 61.6875, + 12.9296875, + 101.25, + 123.9375 + ], + "type": "float32" + } + }, + { + "name": "cast float16 4D tensor to int32", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 3.103515625, + 32.40625, + 62.15625, + 51.75, + 87.0625, + 106.25, + 125.375, + 112.9375, + 70.8125, + 39.1875, + 10.3515625, + 21.234375, + 99.75, + 16.125, + 115.625, + 66, + 49.375, + 115.75, + 77, + 57.15625, + 61.6875, + 12.9296875, + 101.25, + 123.9375 + ], + "type": "float16" + } + }, + "type": "int32", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 3, + 32, + 62, + 51, + 87, + 106, + 125, + 112, + 70, + 39, + 10, + 21, + 99, + 16, + 115, + 66, + 49, + 115, + 77, + 57, + 61, + 12, + 101, + 123 + ], + "type": "int32" + } + }, + { + "name": "cast float16 4D tensor to uint32", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 3.103515625, + 32.40625, + 62.15625, + 51.75, + 87.0625, + 106.25, + 125.375, + 112.9375, + 70.8125, + 39.1875, + 10.3515625, + 21.234375, + 99.75, + 16.125, + 115.625, + 66, + 49.375, + 115.75, + 77, + 57.15625, + 61.6875, + 12.9296875, + 101.25, + 123.9375 + ], + "type": "float16" + } + }, + "type": "uint32", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 3, + 32, + 62, + 51, + 87, + 106, + 125, + 112, + 70, + 39, + 10, + 21, + 99, + 16, + 115, + 66, + 49, + 115, + 77, + 57, + 61, + 12, + 101, + 123 + ], + "type": "uint32" + } + }, + { + "name": "cast float16 4D tensor to int64", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 3.103515625, + 32.40625, + 62.15625, + 51.75, + 87.0625, + 106.25, + 125.375, + 112.9375, + 70.8125, + 39.1875, + 10.3515625, + 21.234375, + 99.75, + 16.125, + 115.625, + 66, + 49.375, + 115.75, + 77, + 57.15625, + 61.6875, + 12.9296875, + 101.25, + 123.9375 + ], + "type": "float16" + } + }, + "type": "int64", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + "3", + "32", + "62", + "51", + "87", + "106", + "125", + "112", + "70", + "39", + "10", + "21", + "99", + "16", + "115", + "66", + "49", + "115", + "77", + "57", + "61", + "12", + "101", + "123" + ], + "type": "int64" + } + }, + { + "name": "cast float16 4D tensor to int8", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 3.103515625, + 32.40625, + 62.15625, + 51.75, + 87.0625, + 106.25, + 125.375, + 112.9375, + 70.8125, + 39.1875, + 10.3515625, + 21.234375, + 99.75, + 16.125, + 115.625, + 66, + 49.375, + 115.75, + 77, + 57.15625, + 61.6875, + 12.9296875, + 101.25, + 123.9375 + ], + "type": "float16" + } + }, + "type": "int8", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 3, + 32, + 62, + 51, + 87, + 106, + 125, + 112, + 70, + 39, + 10, + 21, + 99, + 16, + 115, + 66, + 49, + 115, + 77, + 57, + 61, + 12, + 101, + 123 + ], + "type": "int8" + } + }, + { + "name": "cast float16 4D tensor to uint8", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 3.103515625, + 32.40625, + 62.15625, + 51.75, + 87.0625, + 106.25, + 125.375, + 112.9375, + 70.8125, + 39.1875, + 10.3515625, + 21.234375, + 99.75, + 16.125, + 115.625, + 66, + 49.375, + 115.75, + 77, + 57.15625, + 61.6875, + 12.9296875, + 101.25, + 123.9375 + ], + "type": "float16" + } + }, + "type": "uint8", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 3, + 32, + 62, + 51, + 87, + 106, + 125, + 112, + 70, + 39, + 10, + 21, + 99, + 16, + 115, + 66, + 49, + 115, + 77, + 57, + 61, + 12, + 101, + 123 + ], + "type": "uint8" + } + }, + { + "name": "cast int32 4D tensor to float32", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 45, + 55, + 11, + 21, + 78, + 104, + 102, + 66, + 41, + 110, + 92, + 69, + 48, + 23, + 58, + 12, + 33, + 24, + 101, + 87, + 49, + 118, + 1, + 77 + ], + "type": "int32" + } + }, + "type": "float32", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 45, + 55, + 11, + 21, + 78, + 104, + 102, + 66, + 41, + 110, + 92, + 69, + 48, + 23, + 58, + 12, + 33, + 24, + 101, + 87, + 49, + 118, + 1, + 77 + ], + "type": "float32" + } + }, + { + "name": "cast int32 4D tensor to float16", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 45, + 55, + 11, + 21, + 78, + 104, + 102, + 66, + 41, + 110, + 92, + 69, + 48, + 23, + 58, + 12, + 33, + 24, + 101, + 87, + 49, + 118, + 1, + 77 + ], + "type": "int32" + } + }, + "type": "float16", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 45, + 55, + 11, + 21, + 78, + 104, + 102, + 66, + 41, + 110, + 92, + 69, + 48, + 23, + 58, + 12, + 33, + 24, + 101, + 87, + 49, + 118, + 1, + 77 + ], + "type": "float16" + } + }, + { + "name": "cast int32 4D tensor to int64", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 45, + 55, + 11, + 21, + 78, + 104, + 102, + 66, + 41, + 110, + 92, + 69, + 48, + 23, + 58, + 12, + 33, + 24, + 101, + 87, + 49, + 118, + 1, + 77 + ], + "type": "int32" + } + }, + "type": "int64", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + "45", + "55", + "11", + "21", + "78", + "104", + "102", + "66", + "41", + "110", + "92", + "69", + "48", + "23", + "58", + "12", + "33", + "24", + "101", + "87", + "49", + "118", + "1", + "77" + ], + "type": "int64" + } + }, + { + "name": "cast int32 4D tensor to int8", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 45, + 55, + 11, + 21, + 78, + 104, + 102, + 66, + 41, + 110, + 92, + 69, + 48, + 23, + 58, + 12, + 33, + 24, + 101, + 87, + 49, + 118, + 1, + 77 + ], + "type": "int32" + } + }, + "type": "int8", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 45, + 55, + 11, + 21, + 78, + 104, + 102, + 66, + 41, + 110, + 92, + 69, + 48, + 23, + 58, + 12, + 33, + 24, + 101, + 87, + 49, + 118, + 1, + 77 + ], + "type": "int8" + } + }, + { + "name": "cast int32 4D tensor to uint8", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 45, + 55, + 11, + 21, + 78, + 104, + 102, + 66, + 41, + 110, + 92, + 69, + 48, + 23, + 58, + 12, + 33, + 24, + 101, + 87, + 49, + 118, + 1, + 77 + ], + "type": "int32" + } + }, + "type": "uint8", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 45, + 55, + 11, + 21, + 78, + 104, + 102, + 66, + 41, + 110, + 92, + 69, + 48, + 23, + 58, + 12, + 33, + 24, + 101, + 87, + 49, + 118, + 1, + 77 + ], + "type": "uint8" + } + }, + { + "name": "cast uint32 4D tensor to float32", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 34, + 83, + 113, + 31, + 62, + 80, + 8, + 40, + 104, + 42, + 6, + 91, + 93, + 21, + 40, + 21, + 51, + 110, + 115, + 12, + 122, + 68, + 57, + 72 + ], + "type": "uint32" + } + }, + "type": "float32", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 34, + 83, + 113, + 31, + 62, + 80, + 8, + 40, + 104, + 42, + 6, + 91, + 93, + 21, + 40, + 21, + 51, + 110, + 115, + 12, + 122, + 68, + 57, + 72 + ], + "type": "float32" + } + }, + { + "name": "cast uint32 4D tensor to float16", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 34, + 83, + 113, + 31, + 62, + 80, + 8, + 40, + 104, + 42, + 6, + 91, + 93, + 21, + 40, + 21, + 51, + 110, + 115, + 12, + 122, + 68, + 57, + 72 + ], + "type": "uint32" + } + }, + "type": "float16", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 34, + 83, + 113, + 31, + 62, + 80, + 8, + 40, + 104, + 42, + 6, + 91, + 93, + 21, + 40, + 21, + 51, + 110, + 115, + 12, + 122, + 68, + 57, + 72 + ], + "type": "float16" + } + }, + { + "name": "cast uint32 4D tensor to int32", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 34, + 83, + 113, + 31, + 62, + 80, + 8, + 40, + 104, + 42, + 6, + 91, + 93, + 21, + 40, + 21, + 51, + 110, + 115, + 12, + 122, + 68, + 57, + 72 + ], + "type": "uint32" + } + }, + "type": "int32", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 34, + 83, + 113, + 31, + 62, + 80, + 8, + 40, + 104, + 42, + 6, + 91, + 93, + 21, + 40, + 21, + 51, + 110, + 115, + 12, + 122, + 68, + 57, + 72 + ], + "type": "int32" + } + }, + { + "name": "cast uint32 4D tensor to int64", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 34, + 83, + 113, + 31, + 62, + 80, + 8, + 40, + 104, + 42, + 6, + 91, + 93, + 21, + 40, + 21, + 51, + 110, + 115, + 12, + 122, + 68, + 57, + 72 + ], + "type": "uint32" + } + }, + "type": "int64", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + "34", + "83", + "113", + "31", + "62", + "80", + "8", + "40", + "104", + "42", + "6", + "91", + "93", + "21", + "40", + "21", + "51", + "110", + "115", + "12", + "122", + "68", + "57", + "72" + ], + "type": "int64" + } + }, + { + "name": "cast uint32 4D tensor to int8", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 34, + 83, + 113, + 31, + 62, + 80, + 8, + 40, + 104, + 42, + 6, + 91, + 93, + 21, + 40, + 21, + 51, + 110, + 115, + 12, + 122, + 68, + 57, + 72 + ], + "type": "uint32" + } + }, + "type": "int8", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 34, + 83, + 113, + 31, + 62, + 80, + 8, + 40, + 104, + 42, + 6, + 91, + 93, + 21, + 40, + 21, + 51, + 110, + 115, + 12, + 122, + 68, + 57, + 72 + ], + "type": "int8" + } + }, + { + "name": "cast uint32 4D tensor to uint8", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 34, + 83, + 113, + 31, + 62, + 80, + 8, + 40, + 104, + 42, + 6, + 91, + 93, + 21, + 40, + 21, + 51, + 110, + 115, + 12, + 122, + 68, + 57, + 72 + ], + "type": "uint32" + } + }, + "type": "uint8", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 34, + 83, + 113, + 31, + 62, + 80, + 8, + 40, + 104, + 42, + 6, + 91, + 93, + 21, + 40, + 21, + 51, + 110, + 115, + 12, + 122, + 68, + 57, + 72 + ], + "type": "uint8" + } + }, + { + "name": "cast int64 4D tensor to float32", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + "50", + "1", + "28", + "20", + "102", + "86", + "70", + "38", + "50", + "19", + "11", + "4", + "56", + "77", + "40", + "80", + "45", + "127", + "4", + "87", + "125", + "26", + "63", + "11" + ], + "type": "int64" + } + }, + "type": "float32", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 50, + 1, + 28, + 20, + 102, + 86, + 70, + 38, + 50, + 19, + 11, + 4, + 56, + 77, + 40, + 80, + 45, + 127, + 4, + 87, + 125, + 26, + 63, + 11 + ], + "type": "float32" + } + }, + { + "name": "cast int64 4D tensor to float16", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + "50", + "1", + "28", + "20", + "102", + "86", + "70", + "38", + "50", + "19", + "11", + "4", + "56", + "77", + "40", + "80", + "45", + "127", + "4", + "87", + "125", + "26", + "63", + "11" + ], + "type": "int64" + } + }, + "type": "float16", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 50, + 1, + 28, + 20, + 102, + 86, + 70, + 38, + 50, + 19, + 11, + 4, + 56, + 77, + 40, + 80, + 45, + 127, + 4, + 87, + 125, + 26, + 63, + 11 + ], + "type": "float16" + } + }, + { + "name": "cast int64 4D tensor to int32", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + "50", + "1", + "28", + "20", + "102", + "86", + "70", + "38", + "50", + "19", + "11", + "4", + "56", + "77", + "40", + "80", + "45", + "127", + "4", + "87", + "125", + "26", + "63", + "11" + ], + "type": "int64" + } + }, + "type": "int32", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 50, + 1, + 28, + 20, + 102, + 86, + 70, + 38, + 50, + 19, + 11, + 4, + 56, + 77, + 40, + 80, + 45, + 127, + 4, + 87, + 125, + 26, + 63, + 11 + ], + "type": "int32" + } + }, + { + "name": "cast int64 4D tensor to uint32", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + "50", + "1", + "28", + "20", + "102", + "86", + "70", + "38", + "50", + "19", + "11", + "4", + "56", + "77", + "40", + "80", + "45", + "127", + "4", + "87", + "125", + "26", + "63", + "11" + ], + "type": "int64" + } + }, + "type": "uint32", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 50, + 1, + 28, + 20, + 102, + 86, + 70, + 38, + 50, + 19, + 11, + 4, + 56, + 77, + 40, + 80, + 45, + 127, + 4, + 87, + 125, + 26, + 63, + 11 + ], + "type": "uint32" + } + }, + { + "name": "cast int64 4D tensor to int8", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + "50", + "1", + "28", + "20", + "102", + "86", + "70", + "38", + "50", + "19", + "11", + "4", + "56", + "77", + "40", + "80", + "45", + "127", + "4", + "87", + "125", + "26", + "63", + "11" + ], + "type": "int64" + } + }, + "type": "int8", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 50, + 1, + 28, + 20, + 102, + 86, + 70, + 38, + 50, + 19, + 11, + 4, + 56, + 77, + 40, + 80, + 45, + 127, + 4, + 87, + 125, + 26, + 63, + 11 + ], + "type": "int8" + } + }, + { + "name": "cast int64 4D tensor to uint8", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + "50", + "1", + "28", + "20", + "102", + "86", + "70", + "38", + "50", + "19", + "11", + "4", + "56", + "77", + "40", + "80", + "45", + "127", + "4", + "87", + "125", + "26", + "63", + "11" + ], + "type": "int64" + } + }, + "type": "uint8", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 50, + 1, + 28, + 20, + 102, + 86, + 70, + 38, + 50, + 19, + 11, + 4, + 56, + 77, + 40, + 80, + 45, + 127, + 4, + 87, + 125, + 26, + 63, + 11 + ], + "type": "uint8" + } + }, + { + "name": "cast int8 4D tensor to float32", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 123, + 17, + 31, + 77, + 88, + 44, + 84, + 40, + 14, + 64, + 109, + 4, + 2, + 0, + 45, + 47, + 72, + 88, + 82, + 4, + 73, + 36, + 65, + 117 + ], + "type": "int8" + } + }, + "type": "float32", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 123, + 17, + 31, + 77, + 88, + 44, + 84, + 40, + 14, + 64, + 109, + 4, + 2, + 0, + 45, + 47, + 72, + 88, + 82, + 4, + 73, + 36, + 65, + 117 + ], + "type": "float32" + } + }, + { + "name": "cast int8 4D tensor to float16", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 123, + 17, + 31, + 77, + 88, + 44, + 84, + 40, + 14, + 64, + 109, + 4, + 2, + 0, + 45, + 47, + 72, + 88, + 82, + 4, + 73, + 36, + 65, + 117 + ], + "type": "int8" + } + }, + "type": "float16", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 123, + 17, + 31, + 77, + 88, + 44, + 84, + 40, + 14, + 64, + 109, + 4, + 2, + 0, + 45, + 47, + 72, + 88, + 82, + 4, + 73, + 36, + 65, + 117 + ], + "type": "float16" + } + }, + { + "name": "cast int8 4D tensor to int32", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 123, + 17, + 31, + 77, + 88, + 44, + 84, + 40, + 14, + 64, + 109, + 4, + 2, + 0, + 45, + 47, + 72, + 88, + 82, + 4, + 73, + 36, + 65, + 117 + ], + "type": "int8" + } + }, + "type": "int32", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 123, + 17, + 31, + 77, + 88, + 44, + 84, + 40, + 14, + 64, + 109, + 4, + 2, + 0, + 45, + 47, + 72, + 88, + 82, + 4, + 73, + 36, + 65, + 117 + ], + "type": "int32" + } + }, + { + "name": "cast int8 4D tensor to uint32", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 123, + 17, + 31, + 77, + 88, + 44, + 84, + 40, + 14, + 64, + 109, + 4, + 2, + 0, + 45, + 47, + 72, + 88, + 82, + 4, + 73, + 36, + 65, + 117 + ], + "type": "int8" + } + }, + "type": "uint32", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 123, + 17, + 31, + 77, + 88, + 44, + 84, + 40, + 14, + 64, + 109, + 4, + 2, + 0, + 45, + 47, + 72, + 88, + 82, + 4, + 73, + 36, + 65, + 117 + ], + "type": "uint32" + } + }, + { + "name": "cast int8 4D tensor to int64", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 123, + 17, + 31, + 77, + 88, + 44, + 84, + 40, + 14, + 64, + 109, + 4, + 2, + 0, + 45, + 47, + 72, + 88, + 82, + 4, + 73, + 36, + 65, + 117 + ], + "type": "int8" + } + }, + "type": "int64", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + "123", + "17", + "31", + "77", + "88", + "44", + "84", + "40", + "14", + "64", + "109", + "4", + "2", + "0", + "45", + "47", + "72", + "88", + "82", + "4", + "73", + "36", + "65", + "117" + ], + "type": "int64" + } + }, + { + "name": "cast int8 4D tensor to uint8", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 123, + 17, + 31, + 77, + 88, + 44, + 84, + 40, + 14, + 64, + 109, + 4, + 2, + 0, + 45, + 47, + 72, + 88, + 82, + 4, + 73, + 36, + 65, + 117 + ], + "type": "int8" + } + }, + "type": "uint8", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 123, + 17, + 31, + 77, + 88, + 44, + 84, + 40, + 14, + 64, + 109, + 4, + 2, + 0, + 45, + 47, + 72, + 88, + 82, + 4, + 73, + 36, + 65, + 117 + ], + "type": "uint8" + } + }, + { + "name": "cast uint8 4D tensor to float32", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 10, + 112, + 121, + 120, + 22, + 105, + 41, + 30, + 75, + 121, + 55, + 47, + 121, + 24, + 16, + 33, + 97, + 24, + 3, + 37, + 45, + 6, + 56, + 57 + ], + "type": "uint8" + } + }, + "type": "float32", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 10, + 112, + 121, + 120, + 22, + 105, + 41, + 30, + 75, + 121, + 55, + 47, + 121, + 24, + 16, + 33, + 97, + 24, + 3, + 37, + 45, + 6, + 56, + 57 + ], + "type": "float32" + } + }, + { + "name": "cast uint8 4D tensor to float16", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 10, + 112, + 121, + 120, + 22, + 105, + 41, + 30, + 75, + 121, + 55, + 47, + 121, + 24, + 16, + 33, + 97, + 24, + 3, + 37, + 45, + 6, + 56, + 57 + ], + "type": "uint8" + } + }, + "type": "float16", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 10, + 112, + 121, + 120, + 22, + 105, + 41, + 30, + 75, + 121, + 55, + 47, + 121, + 24, + 16, + 33, + 97, + 24, + 3, + 37, + 45, + 6, + 56, + 57 + ], + "type": "float16" + } + }, + { + "name": "cast uint8 4D tensor to int32", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 10, + 112, + 121, + 120, + 22, + 105, + 41, + 30, + 75, + 121, + 55, + 47, + 121, + 24, + 16, + 33, + 97, + 24, + 3, + 37, + 45, + 6, + 56, + 57 + ], + "type": "uint8" + } + }, + "type": "int32", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 10, + 112, + 121, + 120, + 22, + 105, + 41, + 30, + 75, + 121, + 55, + 47, + 121, + 24, + 16, + 33, + 97, + 24, + 3, + 37, + 45, + 6, + 56, + 57 + ], + "type": "int32" + } + }, + { + "name": "cast uint8 4D tensor to uint32", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 10, + 112, + 121, + 120, + 22, + 105, + 41, + 30, + 75, + 121, + 55, + 47, + 121, + 24, + 16, + 33, + 97, + 24, + 3, + 37, + 45, + 6, + 56, + 57 + ], + "type": "uint8" + } + }, + "type": "uint32", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 10, + 112, + 121, + 120, + 22, + 105, + 41, + 30, + 75, + 121, + 55, + 47, + 121, + 24, + 16, + 33, + 97, + 24, + 3, + 37, + 45, + 6, + 56, + 57 + ], + "type": "uint32" + } + }, + { + "name": "cast uint8 4D tensor to int64", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 10, + 112, + 121, + 120, + 22, + 105, + 41, + 30, + 75, + 121, + 55, + 47, + 121, + 24, + 16, + 33, + 97, + 24, + 3, + 37, + 45, + 6, + 56, + 57 + ], + "type": "uint8" + } + }, + "type": "int64", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + "10", + "112", + "121", + "120", + "22", + "105", + "41", + "30", + "75", + "121", + "55", + "47", + "121", + "24", + "16", + "33", + "97", + "24", + "3", + "37", + "45", + "6", + "56", + "57" + ], + "type": "int64" + } + }, + { + "name": "cast uint8 4D tensor to int8", + "inputs": { + "input": { + "shape": [2, 2, 2, 3], + "data": [ + 10, + 112, + 121, + 120, + 22, + 105, + 41, + 30, + 75, + 121, + 55, + 47, + 121, + 24, + 16, + 33, + 97, + 24, + 3, + 37, + 45, + 6, + 56, + 57 + ], + "type": "uint8" + } + }, + "type": "int8", + "expected": { + "name": "output", + "shape": [2, 2, 2, 3], + "data": [ + 10, + 112, + 121, + 120, + 22, + 105, + 41, + 30, + 75, + 121, + 55, + 47, + 121, + 24, + 16, + 33, + 97, + 24, + 3, + 37, + 45, + 6, + 56, + 57 + ], + "type": "int8" + } + } + ] +} \ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/webnn/resources/utils.js b/third_party/blink/web_tests/external/wpt/webnn/resources/utils.js index 955e01fb..92fffeb8 100644 --- a/third_party/blink/web_tests/external/wpt/webnn/resources/utils.js +++ b/third_party/blink/web_tests/external/wpt/webnn/resources/utils.js
@@ -289,6 +289,7 @@ argMax: {ULP: {int64: 0}}, argMin: {ULP: {int64: 0}}, batchNormalization: {ULP: {float32: 6, float16: 6}}, + cast: {ULP: {float32: 1, float16: 1, int32: 0, uint32: 0, int64: 0, int8: 0, uint8: 0}}, clamp: {ULP: {float32: 0, float16: 0}}, concat: {ULP: {float32: 0, float16: 0}}, conv2d: {ULP: {float32: getConv2dPrecisionTolerance, float16: getConv2dPrecisionTolerance}}, @@ -606,6 +607,15 @@ return namedOutputOperand; }; +const buildCast = (operationName, builder, resources) => { + // MLOperand cast(MLOperand input, MLOperandDataType type); + const namedOutputOperand = {}; + const inputOperand = createSingleInputOperand(builder, resources); + // invoke builder.cast() + namedOutputOperand[resources.expected.name] = builder[operationName](inputOperand, resources.type); + return namedOutputOperand; +}; + const buildConcat = (operationName, builder, resources) => { // MLOperand concat(sequence<MLOperand> inputs, unsigned long axis); const namedOutputOperand = {};
diff --git a/third_party/blink/web_tests/flag-specific/enable-skia-graphite/paint/markers/active-suggestion-marker-basic-expected.png b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/paint/markers/active-suggestion-marker-basic-expected.png new file mode 100644 index 0000000..b64180c2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/paint/markers/active-suggestion-marker-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-skia-graphite/paint/markers/composition-marker-basic-expected.png b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/paint/markers/composition-marker-basic-expected.png new file mode 100644 index 0000000..ed4d968 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/paint/markers/composition-marker-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-skia-graphite/paint/markers/ellipsis-ltr-text-in-rtl-flow-with-markers-expected.png b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/paint/markers/ellipsis-ltr-text-in-rtl-flow-with-markers-expected.png new file mode 100644 index 0000000..c2159fb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/paint/markers/ellipsis-ltr-text-in-rtl-flow-with-markers-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-skia-graphite/paint/markers/ellipsis-mixed-text-in-rtl-flow-with-markers-expected.png b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/paint/markers/ellipsis-mixed-text-in-rtl-flow-with-markers-expected.png new file mode 100644 index 0000000..88cd062 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/paint/markers/ellipsis-mixed-text-in-rtl-flow-with-markers-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-skia-graphite/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.png b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.png new file mode 100644 index 0000000..02948ba8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-skia-graphite/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.png b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.png new file mode 100644 index 0000000..31576b14 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-skia-graphite/paint/markers/suggestion-marker-basic-expected.png b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/paint/markers/suggestion-marker-basic-expected.png new file mode 100644 index 0000000..7187f28 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/paint/markers/suggestion-marker-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-skia-graphite/svg/text/bidi-text-query-expected.png b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/svg/text/bidi-text-query-expected.png new file mode 100644 index 0000000..2f52a24 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/svg/text/bidi-text-query-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-skia-graphite/svg/text/combining-character-queries-expected.png b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/svg/text/combining-character-queries-expected.png new file mode 100644 index 0000000..50d3decf --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/svg/text/combining-character-queries-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-skia-graphite/svg/text/surrogate-pair-queries-expected.png b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/svg/text/surrogate-pair-queries-expected.png new file mode 100644 index 0000000..55c6ad02 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/svg/text/surrogate-pair-queries-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-skia-graphite/virtual/dark-color-scheme/composition_marker/composition-marker-basic-dark-mode-expected.png b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/virtual/dark-color-scheme/composition_marker/composition-marker-basic-dark-mode-expected.png new file mode 100644 index 0000000..b68670b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/virtual/dark-color-scheme/composition_marker/composition-marker-basic-dark-mode-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/fedcm/fedcm-open-url-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/fedcm/fedcm-open-url-expected.txt new file mode 100644 index 0000000..47bfb73 --- /dev/null +++ b/third_party/blink/web_tests/http/tests/inspector-protocol/fedcm/fedcm-open-url-expected.txt
@@ -0,0 +1,36 @@ +Check that opening account URLs works +msg.params: { + accounts : [ + [0] : { + accountId : 1234 + email : john_doe@idp.example + givenName : John + idpConfigUrl : https://127.0.0.1:8443/resources/fedcm/fedcm.json + idpLoginUrl : https://127.0.0.1:8443/resources/fedcm/signin.html + loginState : SignIn + name : John Doe + pictureUrl : https://idp.example/profile/123 + } + [1] : { + accountId : 5678 + email : aisha@idp.example + givenName : Aisha + idpConfigUrl : https://127.0.0.1:8443/resources/fedcm/fedcm.json + idpLoginUrl : https://127.0.0.1:8443/resources/fedcm/signin.html + loginState : SignUp + name : Aisha Ahmad + pictureUrl : https://idp.example/profile/567 + privacyPolicyUrl : https://rp.example/privacy_policy.html + termsOfServiceUrl : https://rp.example/terms_of_service.html + } + ] + dialogId : <string> + dialogType : AccountChooser + title : Sign in +} +{ + code : -32602 + message : Account does not have requested URL +} +Opened URL: https://rp.example/terms_of_service.html +
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/fedcm/fedcm-open-url.js b/third_party/blink/web_tests/http/tests/inspector-protocol/fedcm/fedcm-open-url.js new file mode 100644 index 0000000..41e86a92 --- /dev/null +++ b/third_party/blink/web_tests/http/tests/inspector-protocol/fedcm/fedcm-open-url.js
@@ -0,0 +1,41 @@ +(async function(/** @type {import('test_runner').TestRunner} */ testRunner) { + const {page, session, dp} = + await testRunner.startBlank( + "Check that opening account URLs works"); + + await page.navigate( + "https://devtools.test:8443/inspector-protocol/fedcm/resources/dialog-shown-event.https.html"); + + // Enable FedCM domain + await dp.FedCm.enable({disableRejectionDelay: true}); + + // Trigger FedCM dialog + const dialogPromise = session.evaluateAsync("triggerDialog()"); + + let msg = await dp.FedCm.onceDialogShown(); + if (msg.error) { + testRunner.fail(msg.error); + return; + } + + testRunner.log(msg.params, "msg.params: ", ["dialogId"]); + + await dp.Target.setDiscoverTargets({discover: true}); + // This should fail because this account has no URLs. + let result = await dp.FedCm.openUrl({dialogId: msg.params.dialogId, + accountIndex: 0, + accountUrlType: "TermsOfService"}); + testRunner.log(result.error); + + // This should succeed. + dp.FedCm.openUrl({dialogId: msg.params.dialogId, + accountIndex: 1, + accountUrlType: "TermsOfService"}); + + await dp.Target.onceTargetCreated(); + const pageTargets = (await dp.Target.getTargets()).result.targetInfos.filter(target => target.type === 'page'); + testRunner.log("Opened URL: " + pageTargets[0].url); + + dp.FedCm.dismissDialog({dialogId: msg.params.dialogId}); + testRunner.completeTest(); +})
diff --git a/third_party/blink/web_tests/platform/linux-chrome/external/wpt/fetch/metadata/trailing-dot.https.sub.any-expected.txt b/third_party/blink/web_tests/platform/linux-chrome/external/wpt/fetch/metadata/trailing-dot.https.sub.any-expected.txt deleted file mode 100644 index b5eea6ba..0000000 --- a/third_party/blink/web_tests/platform/linux-chrome/external/wpt/fetch/metadata/trailing-dot.https.sub.any-expected.txt +++ /dev/null
@@ -1,8 +0,0 @@ -This is a testharness.js-based test. -[FAIL] Fetching a resource from the same origin, but spelled with a trailing dot. - promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch" -[FAIL] Fetching a resource from the same site, but spelled with a trailing dot. - promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch" -[FAIL] Fetching a resource from a cross-site host, spelled with a trailing dot. - promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch" -Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/platform/linux-chrome/external/wpt/html-aam/roles-expected.txt b/third_party/blink/web_tests/platform/linux-chrome/external/wpt/html-aam/roles-expected.txt index 0b0d9a2..003e49d8 100644 --- a/third_party/blink/web_tests/platform/linux-chrome/external/wpt/html-aam/roles-expected.txt +++ b/third_party/blink/web_tests/platform/linux-chrome/external/wpt/html-aam/roles-expected.txt
@@ -1,21 +1,15 @@ This is a testharness.js-based test. Found 9 FAIL, 0 TIMEOUT, 0 NOTRUN. -[FAIL] el-code - assert_equals: <code data-testname="el-code" data-expectedrole="code" class="ex">x</code> expected "code" but got "none" [FAIL] el-dd assert_equals: <dd data-testname="el-dd" data-expectedrole="definition" class="ex">x</dd> expected "definition" but got "DescriptionListDetail" [FAIL] el-details assert_equals: <details data-testname="el-details" data-expectedrole="group" class="ex"><summary>x</summary>x</details> expected "group" but got "Details" [FAIL] el-dt assert_equals: <dt data-testname="el-dt" data-expectedrole="term" class="ex">x</dt> expected "term" but got "DescriptionListTerm" -[FAIL] el-em - assert_equals: <em data-testname="el-em" data-expectedrole="emphasis" class="ex">x</em> expected "emphasis" but got "none" [FAIL] el-form assert_equals: <form data-testname="el-form" data-expectedrole="form" class="ex"><input></form> expected "form" but got "Section" [FAIL] el-hgroup assert_equals: <hgroup data-testname="el-hgroup" data-expectedrole="group" class="ex"><h1>x</h1></hgroup> expected "group" but got "none" [FAIL] el-option assert_equals: <option data-testname="el-option" data-expectedrole="option" class="ex">x</option> expected "option" but got "menuitem" -[FAIL] el-strong - assert_equals: <strong data-testname="el-strong" data-expectedrole="strong" class="ex">x</strong> expected "strong" but got "none" Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/platform/mac-mac11-arm64/svg/text/surrogate-pair-queries-expected.png b/third_party/blink/web_tests/platform/mac-mac11-arm64/svg/text/surrogate-pair-queries-expected.png index 1ecb3d9..e47a8b77 100644 --- a/third_party/blink/web_tests/platform/mac-mac11-arm64/svg/text/surrogate-pair-queries-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac11-arm64/svg/text/surrogate-pair-queries-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac11/svg/text/combining-character-queries-expected.png b/third_party/blink/web_tests/platform/mac-mac11/svg/text/combining-character-queries-expected.png deleted file mode 100644 index dfb9658..0000000 --- a/third_party/blink/web_tests/platform/mac-mac11/svg/text/combining-character-queries-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac11/svg/text/surrogate-pair-queries-expected.png b/third_party/blink/web_tests/platform/mac-mac11/svg/text/surrogate-pair-queries-expected.png index 0e7757f..7ff5b44 100644 --- a/third_party/blink/web_tests/platform/mac-mac11/svg/text/surrogate-pair-queries-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac11/svg/text/surrogate-pair-queries-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac12-arm64/svg/text/surrogate-pair-queries-expected.png b/third_party/blink/web_tests/platform/mac-mac12-arm64/svg/text/surrogate-pair-queries-expected.png index c0f90689..dfb3517 100644 --- a/third_party/blink/web_tests/platform/mac-mac12-arm64/svg/text/surrogate-pair-queries-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac12-arm64/svg/text/surrogate-pair-queries-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac13-arm64/svg/text/surrogate-pair-queries-expected.png b/third_party/blink/web_tests/platform/mac-mac13-arm64/svg/text/surrogate-pair-queries-expected.png index c0f90689..dfb3517 100644 --- a/third_party/blink/web_tests/platform/mac-mac13-arm64/svg/text/surrogate-pair-queries-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac13-arm64/svg/text/surrogate-pair-queries-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/active-suggestion-marker-basic-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/active-suggestion-marker-basic-expected.png index a2e12a9..fd3fd244 100644 --- a/third_party/blink/web_tests/platform/mac/paint/markers/active-suggestion-marker-basic-expected.png +++ b/third_party/blink/web_tests/platform/mac/paint/markers/active-suggestion-marker-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/composition-marker-basic-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/composition-marker-basic-expected.png index d816da48..4d91e974 100644 --- a/third_party/blink/web_tests/platform/mac/paint/markers/composition-marker-basic-expected.png +++ b/third_party/blink/web_tests/platform/mac/paint/markers/composition-marker-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-ltr-text-in-rtl-flow-with-markers-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-ltr-text-in-rtl-flow-with-markers-expected.png index 7427c8c..d55227f2 100644 --- a/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-ltr-text-in-rtl-flow-with-markers-expected.png +++ b/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-ltr-text-in-rtl-flow-with-markers-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-mixed-text-in-rtl-flow-with-markers-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-mixed-text-in-rtl-flow-with-markers-expected.png index 33da166..c3aec4b2 100644 --- a/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-mixed-text-in-rtl-flow-with-markers-expected.png +++ b/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-mixed-text-in-rtl-flow-with-markers-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.png index 79c41e19..3bc6322 100644 --- a/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.png +++ b/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.png index 563c394..a84c0490 100644 --- a/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.png +++ b/third_party/blink/web_tests/platform/mac/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/suggestion-marker-basic-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/suggestion-marker-basic-expected.png index 0ed055c6..b9b477dc 100644 --- a/third_party/blink/web_tests/platform/mac/paint/markers/suggestion-marker-basic-expected.png +++ b/third_party/blink/web_tests/platform/mac/paint/markers/suggestion-marker-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/text/bidi-text-query-expected.png b/third_party/blink/web_tests/platform/mac/svg/text/bidi-text-query-expected.png index ee6305394..e0c08f0 100644 --- a/third_party/blink/web_tests/platform/mac/svg/text/bidi-text-query-expected.png +++ b/third_party/blink/web_tests/platform/mac/svg/text/bidi-text-query-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/text/combining-character-queries-expected.png b/third_party/blink/web_tests/platform/mac/svg/text/combining-character-queries-expected.png index 5147a9d..d344294 100644 --- a/third_party/blink/web_tests/platform/mac/svg/text/combining-character-queries-expected.png +++ b/third_party/blink/web_tests/platform/mac/svg/text/combining-character-queries-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/text/surrogate-pair-queries-expected.png b/third_party/blink/web_tests/platform/mac/svg/text/surrogate-pair-queries-expected.png index ca748214..4ec1c52 100644 --- a/third_party/blink/web_tests/platform/mac/svg/text/surrogate-pair-queries-expected.png +++ b/third_party/blink/web_tests/platform/mac/svg/text/surrogate-pair-queries-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/composition_marker/composition-marker-basic-dark-mode-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/composition_marker/composition-marker-basic-dark-mode-expected.png index 610d83ab..06fb057 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/composition_marker/composition-marker-basic-dark-mode-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/composition_marker/composition-marker-basic-dark-mode-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/webnn-service-enabled/external/wpt/webnn/gpu/cast.https.any-expected.txt b/third_party/blink/web_tests/virtual/webnn-service-enabled/external/wpt/webnn/gpu/cast.https.any-expected.txt new file mode 100644 index 0000000..0493397b --- /dev/null +++ b/third_party/blink/web_tests/virtual/webnn-service-enabled/external/wpt/webnn/gpu/cast.https.any-expected.txt
@@ -0,0 +1,7 @@ +This is a testharness.js-based test. +[FAIL] cast float16 4D tensor to int64 / async + assert_true: assert_array_approx_equals_ulp: test cast int64 actual 137438953475 should be close enough to expected 3 by the acceptable 0 ULP distance, but they have 137438953472 ULP distance expected true got false +[FAIL] cast int64 4D tensor to float16 / async + assert_true: assert_array_approx_equals_ulp: test cast float16 actual 0 should be close enough to expected 1 by the acceptable 1 ULP distance, but they have 15360 ULP distance expected true got false +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/webnn-service-enabled/external/wpt/webnn/gpu/cast.https.any.worker-expected.txt b/third_party/blink/web_tests/virtual/webnn-service-enabled/external/wpt/webnn/gpu/cast.https.any.worker-expected.txt new file mode 100644 index 0000000..681af3e --- /dev/null +++ b/third_party/blink/web_tests/virtual/webnn-service-enabled/external/wpt/webnn/gpu/cast.https.any.worker-expected.txt
@@ -0,0 +1,100 @@ +This is a testharness.js-based test. +Found 48 FAIL, 0 TIMEOUT, 0 NOTRUN. +[FAIL] cast float16 4D tensor to int64 / sync + assert_true: assert_array_approx_equals_ulp: test cast int64 actual 137438953475 should be close enough to expected 3 by the acceptable 0 ULP distance, but they have 137438953472 ULP distance expected true got false +[FAIL] cast int64 4D tensor to float16 / sync + assert_true: assert_array_approx_equals_ulp: test cast float16 actual 0 should be close enough to expected 1 by the acceptable 1 ULP distance, but they have 15360 ULP distance expected true got false +[FAIL] cast float32 0D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float32 1D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float32 2D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float32 3D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float32 4D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float32 5D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float32 4D tensor to float16 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float32 4D tensor to uint32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float32 4D tensor to int64 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float32 4D tensor to int8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float32 4D tensor to uint8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float16 4D tensor to float32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float16 4D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float16 4D tensor to uint32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float16 4D tensor to int64 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float16 4D tensor to int8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast float16 4D tensor to uint8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int32 4D tensor to float32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int32 4D tensor to float16 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int32 4D tensor to int64 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int32 4D tensor to int8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int32 4D tensor to uint8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint32 4D tensor to float32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint32 4D tensor to float16 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint32 4D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint32 4D tensor to int64 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint32 4D tensor to int8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint32 4D tensor to uint8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int64 4D tensor to float32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int64 4D tensor to float16 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int64 4D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int64 4D tensor to uint32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int64 4D tensor to int8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int64 4D tensor to uint8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int8 4D tensor to float32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int8 4D tensor to float16 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int8 4D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int8 4D tensor to uint32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int8 4D tensor to int64 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast int8 4D tensor to uint8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint8 4D tensor to float32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint8 4D tensor to float16 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint8 4D tensor to int32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint8 4D tensor to uint32 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint8 4D tensor to int64 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +[FAIL] cast uint8 4D tensor to int8 / async + promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +Harness: the test ran to completion. +
diff --git a/third_party/depot_tools b/third_party/depot_tools index 46cb7d0..c341d58 160000 --- a/third_party/depot_tools +++ b/third_party/depot_tools
@@ -1 +1 @@ -Subproject commit 46cb7d0aca592cd20ddc2f6cb16ee386b2abbf0d +Subproject commit c341d58921ab188e4edacce04a221559bce86e8d
diff --git a/third_party/devtools-frontend-internal b/third_party/devtools-frontend-internal index 4e0cc80..1fbe815 160000 --- a/third_party/devtools-frontend-internal +++ b/third_party/devtools-frontend-internal
@@ -1 +1 @@ -Subproject commit 4e0cc80c5875ea35501cf9ff3b859cc2c8565ccd +Subproject commit 1fbe815582914a424a0615e0ca6d2d58815c3616
diff --git a/third_party/devtools-frontend/src b/third_party/devtools-frontend/src index 7f28655..6981663 160000 --- a/third_party/devtools-frontend/src +++ b/third_party/devtools-frontend/src
@@ -1 +1 @@ -Subproject commit 7f28655bc9e25129032852b084aa07a171d1cca2 +Subproject commit 698166359a5ecb172961eb5ea79a8469c06bf9be
diff --git a/third_party/libc++/src b/third_party/libc++/src index 28aa23f..24cb554 160000 --- a/third_party/libc++/src +++ b/third_party/libc++/src
@@ -1 +1 @@ -Subproject commit 28aa23ffb4c7344914a5b4ac7169f12e5a12333f +Subproject commit 24cb5545a9a648f580ef7ce7b758689578f0a2a7
diff --git a/third_party/libc++abi/src b/third_party/libc++abi/src index ea028d4..9986707 160000 --- a/third_party/libc++abi/src +++ b/third_party/libc++abi/src
@@ -1 +1 @@ -Subproject commit ea028d4d2b8a901f6302f5371c68a24480766e2b +Subproject commit 9986707a5f2fc6d5d1ffa7f224a032bdd45c95fd
diff --git a/third_party/libunwindstack b/third_party/libunwindstack index 4dbfa0e..a3bb4cd 160000 --- a/third_party/libunwindstack +++ b/third_party/libunwindstack
@@ -1 +1 @@ -Subproject commit 4dbfa0e8c844c8e243b297bc185e54a99ff94f9e +Subproject commit a3bb4cd02e0e984a235069f812cbef2b37c389e5
diff --git a/third_party/node/linux/node-linux-x64.tar.gz.sha1 b/third_party/node/linux/node-linux-x64.tar.gz.sha1 index ab2e90c..e7940f9 100644 --- a/third_party/node/linux/node-linux-x64.tar.gz.sha1 +++ b/third_party/node/linux/node-linux-x64.tar.gz.sha1
@@ -1 +1 @@ -ab9544e24e752d3d17f335fb7b2055062e582d11 +46795170ff5df9831955f163f6966abde581c8af
diff --git a/third_party/node/mac/node-darwin-arm64.tar.gz.sha1 b/third_party/node/mac/node-darwin-arm64.tar.gz.sha1 index 10a8723..bad20d6 100644 --- a/third_party/node/mac/node-darwin-arm64.tar.gz.sha1 +++ b/third_party/node/mac/node-darwin-arm64.tar.gz.sha1
@@ -1 +1 @@ -31859fc1fa0994a95f44f09c367d6ff63607cfde +864780996d3be6c9aca03f371a4bd672728f0a75
diff --git a/third_party/node/mac/node-darwin-x64.tar.gz.sha1 b/third_party/node/mac/node-darwin-x64.tar.gz.sha1 index 1dc1f6f0..9f4ef8ad 100644 --- a/third_party/node/mac/node-darwin-x64.tar.gz.sha1 +++ b/third_party/node/mac/node-darwin-x64.tar.gz.sha1
@@ -1 +1 @@ -16dfd094763b71988933a31735f9dea966f9abd6 +85ccc2202fd4f1615a443248c01a866ae227ba78
diff --git a/third_party/node/update_node_binaries b/third_party/node/update_node_binaries index 22f1aaf..d2ae360 100755 --- a/third_party/node/update_node_binaries +++ b/third_party/node/update_node_binaries
@@ -15,7 +15,7 @@ cd "$(dirname "$0")" BASE_URL="https://nodejs.org/dist" -NODE_VERSION="v16.13.0" +NODE_VERSION="v20.11.0" update_unix() { local SUFFIX="$1"
diff --git a/third_party/node/win/node.exe.sha1 b/third_party/node/win/node.exe.sha1 index 5e0e1f5..87b0b6a 100644 --- a/third_party/node/win/node.exe.sha1 +++ b/third_party/node/win/node.exe.sha1
@@ -1 +1 @@ -5ef847033c517c499f56f9d136d159b663bab717 +2cb36010af52bc5e2a2d1e3675c10361c80d8f8d
diff --git a/third_party/perfetto b/third_party/perfetto index d6af17f..30666f9 160000 --- a/third_party/perfetto +++ b/third_party/perfetto
@@ -1 +1 @@ -Subproject commit d6af17fef257af28ee2417216ef87d5c5b743a1b +Subproject commit 30666f946a71e4e05cb789cc391472b6c21c7741
diff --git a/tools/metrics/histograms/PRESUBMIT.py b/tools/metrics/histograms/PRESUBMIT.py index c3892ff2..28c7fc8 100644 --- a/tools/metrics/histograms/PRESUBMIT.py +++ b/tools/metrics/histograms/PRESUBMIT.py
@@ -134,3 +134,27 @@ sys.path.append(histograms_allowlist_check_path) from histograms_allowlist_check import CheckWebViewHistogramsAllowlist return CheckWebViewHistogramsAllowlist(src_path, output_api) + + +def CheckBooleansAreEnums(input_api, output_api): + """Checks that histograms that use Booleans do not use units.""" + results = [] + cwd = input_api.PresubmitLocalPath() + inclusion_pattern = input_api.re.compile(r'units="[Bb]oolean') + units_warning = """ + You are using 'units' for a boolean histogram, but you should be using + 'enum' instead.""" + + # Only for changed files, do corresponding checks if the file is + # histograms.xml or enums.xml. + for affected_file in input_api.AffectedTextFiles(): + filepath = input_api.os_path.relpath(affected_file.AbsoluteLocalPath(), cwd) + if 'histograms.xml' in filepath: + for line_number, line in affected_file.ChangedContents(): + if inclusion_pattern.search(line): + results.append('%s:%s\n\t%s' % (filepath, line_number, line.strip())) + + # If a histograms.xml file was changed, check for units="[Bb]oolean". + if results: + return [output_api.PresubmitPromptOrNotify(units_warning, results)] + return results \ No newline at end of file
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 8800e0e..d98a296 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -2297,6 +2297,11 @@ <int value="1" label="Deprecated enum name"/> </enum> +<enum name="BooleanDestroyed"> + <int value="0" label="Not destroyed"/> + <int value="1" label="Destroyed"/> +</enum> + <enum name="BooleanDetected"> <int value="0" label="Not detected"/> <int value="1" label="Detected"/> @@ -2411,6 +2416,11 @@ <int value="1" label="Dark"/> </enum> +<enum name="BooleanIsFileBacked"> + <int value="0" label="Not file backed"/> + <int value="1" label="File backed"/> +</enum> + <enum name="BooleanIsProductDetailPage"> <int value="0" label="Is not a product detail page"/> <int value="1" label="Is a product detail page"/> @@ -2456,6 +2466,11 @@ <int value="1" label="Matched"/> </enum> +<enum name="BooleanOccurred"> + <int value="0" label="Did not occur"/> + <int value="1" label="Occurred"/> +</enum> + <enum name="BooleanOnBattery"> <int value="0" label="Not on battery"/> <int value="1" label="On Battery"/> @@ -24684,6 +24699,8 @@ <int value="176401620" label="TabGroupParityAndroid:enabled"/> <int value="176421334" label="OmniboxHistoryQuickProviderSpecificityScoreCountUniqueHosts:enabled"/> + <int value="176501467" + label="SyncShowIdentityErrorsForSignedInUsers:disabled"/> <int value="176526479" label="AccessibilityPageZoom:enabled"/> <int value="176760435" label="DesktopPWAsPreventClose:enabled"/> <int value="176773784" label="EnableHardwareMirrorMode:disabled"/> @@ -24890,6 +24907,8 @@ <int value="277483398" label="ClipboardHistory:disabled"/> <int value="277565405" label="ContextualSearchDefinitions:disabled"/> <int value="277769727" label="JourneysZeroStateFiltering:disabled"/> + <int value="278028552" + label="SyncShowIdentityErrorsForSignedInUsers:enabled"/> <int value="278756320" label="disable-app-list-app-info"/> <int value="279525129" label="SystemEmojiPickerJellySupport:disabled"/> <int value="280459238" label="ChromeSharingHubLaunchAdjacent:disabled"/>
diff --git a/tools/metrics/histograms/metadata/accessibility/histograms.xml b/tools/metrics/histograms/metadata/accessibility/histograms.xml index 751d5c2..7c515436 100644 --- a/tools/metrics/histograms/metadata/accessibility/histograms.xml +++ b/tools/metrics/histograms/metadata/accessibility/histograms.xml
@@ -315,7 +315,7 @@ </histogram> <histogram name="Accessibility.Android.UpdateAccessibilityServices.DidPoll" - units="BooleanHit" expires_after="2024-06-30"> + enum="BooleanHit" expires_after="2024-06-30"> <owner>mschillaci@google.com</owner> <owner>aldietz@google.com</owner> <owner>chrome-a11y-core@google.com</owner> @@ -338,7 +338,7 @@ </histogram> <histogram name="Accessibility.Android.UpdateAccessibilityServices.PollTimeout" - units="BooleanHit" expires_after="2024-06-30"> + enum="BooleanHit" expires_after="2024-06-30"> <owner>mschillaci@google.com</owner> <owner>aldietz@google.com</owner> <owner>chrome-a11y-core@google.com</owner> @@ -455,7 +455,7 @@ </summary> </histogram> -<histogram name="Accessibility.AriaLabelledBy.HasMultipleIds" units="Boolean" +<histogram name="Accessibility.AriaLabelledBy.HasMultipleIds" enum="Boolean" expires_after="2024-06-30"> <owner>mschillaci@google.com</owner> <owner>chrome-a11y-core@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/android/histograms.xml b/tools/metrics/histograms/metadata/android/histograms.xml index 34d8f98..4d14a09 100644 --- a/tools/metrics/histograms/metadata/android/histograms.xml +++ b/tools/metrics/histograms/metadata/android/histograms.xml
@@ -4232,7 +4232,7 @@ </summary> </histogram> -<histogram name="Android.TabSwitcher.TabHidden" units="boolean" +<histogram name="Android.TabSwitcher.TabHidden" enum="Boolean" expires_after="2024-06-23"> <owner>ckitagawa@chromium.org</owner> <owner>clank-isochron-team@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/apps/histograms.xml b/tools/metrics/histograms/metadata/apps/histograms.xml index 75ebc5a..c09c3a0 100644 --- a/tools/metrics/histograms/metadata/apps/histograms.xml +++ b/tools/metrics/histograms/metadata/apps/histograms.xml
@@ -892,7 +892,7 @@ </histogram> <histogram name="Apps.AppList.Scoring.ScoreAboveBestMatchThreshold{Type}" - units="BooleanHit" expires_after="2024-04-28"> + enum="BooleanHit" expires_after="2024-04-28"> <owner>chenjih@chromium.org</owner> <owner>dgrebenyuk@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/arc/histograms.xml b/tools/metrics/histograms/metadata/arc/histograms.xml index 00a2974c..1e9d4b3 100644 --- a/tools/metrics/histograms/metadata/arc/histograms.xml +++ b/tools/metrics/histograms/metadata/arc/histograms.xml
@@ -1588,6 +1588,16 @@ </summary> </histogram> +<histogram name="Arc.OptinTosLoadResult" enum="BooleanSuccess" + expires_after="2024-03-17"> + <owner>mhasank@google.com</owner> + <owner>arc-core@google.com</owner> + <summary> + Records the status of loading Play terms of service in in-session optin + dialog. This metric reports false on aborts and failed retries as well. + </summary> +</histogram> + <histogram name="Arc.PlayAutoInstallRequest.State{ArcUserTypes}" enum="ArcPlayAutoInstallRequestState" expires_after="2024-07-01"> <owner>jhorwich@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/ash/histograms.xml b/tools/metrics/histograms/metadata/ash/histograms.xml index ce6d767..829545f8 100644 --- a/tools/metrics/histograms/metadata/ash/histograms.xml +++ b/tools/metrics/histograms/metadata/ash/histograms.xml
@@ -2065,7 +2065,7 @@ </summary> </histogram> -<histogram name="Ash.DeskApi.{Method}.Result" units="BooleanSuccess" +<histogram name="Ash.DeskApi.{Method}.Result" enum="BooleanSuccess" expires_after="2024-04-07"> <owner>aprilzhou@google.com</owner> <owner>janetmac@chromium.org</owner> @@ -2256,7 +2256,7 @@ </summary> </histogram> -<histogram name="Ash.Desks.DeskButton.HiddenByUser" units="BooleanHit" +<histogram name="Ash.Desks.DeskButton.HiddenByUser" enum="BooleanHit" expires_after="2024-07-07"> <owner>yongshun@google.com</owner> <owner>benbecker@google.com</owner> @@ -2267,7 +2267,7 @@ </summary> </histogram> -<histogram name="Ash.Desks.DeskButton.Presses" units="BooleanHit" +<histogram name="Ash.Desks.DeskButton.Presses" enum="BooleanHit" expires_after="2024-06-30"> <owner>yongshun@google.com</owner> <owner>benbecker@google.com</owner> @@ -2302,7 +2302,7 @@ </histogram> <histogram name="Ash.Desks.DeskProfiles.AvatarView.ButtonPressed" - units="BooleanHit" expires_after="2024-12-21"> + enum="BooleanHit" expires_after="2024-12-21"> <owner>shidi@chromium.org</owner> <owner>dandersson@chromium.org</owner> <owner>yongshun@chromium.org</owner> @@ -2635,7 +2635,7 @@ </histogram> <histogram name="Ash.Desks.{EntryPoint}.BarAction.{BarAction}" - units="BooleanHit" expires_after="2024-07-05"> + enum="BooleanHit" expires_after="2024-07-05"> <owner>benbecker@google.com</owner> <owner>yongshun@google.com</owner> <owner>nupurjain@google.com</owner> @@ -2700,7 +2700,7 @@ </summary> </histogram> -<histogram name="Ash.DeskTemplate.DeleteSaveAndRecall" units="BooleanHit" +<histogram name="Ash.DeskTemplate.DeleteSaveAndRecall" enum="BooleanHit" expires_after="2024-09-27"> <owner>dandersson@chromium.org</owner> <owner>janetmac@chromium.org</owner> @@ -2776,7 +2776,7 @@ </summary> </histogram> -<histogram name="Ash.DeskTemplate.NewSaveAndRecall" units="BooleanHit" +<histogram name="Ash.DeskTemplate.NewSaveAndRecall" enum="BooleanHit" expires_after="2024-09-27"> <owner>dandersson@chromium.org</owner> <owner>janetmac@chromium.org</owner> @@ -4353,7 +4353,7 @@ </histogram> <histogram name="Ash.MultiDisplay.WindowsMovedAfterRemap.DisplayRotated" - units="Boolean" expires_after="2024-05-26"> + enum="Boolean" expires_after="2024-05-26"> <owner>sammiequon@chromium.org</owner> <owner>yunchengs@google.com</owner> <owner>chromeos-wm-corexp@google.com</owner> @@ -4368,7 +4368,7 @@ <histogram name="Ash.MultiDisplay.WindowsMovedAfterRemap.DisplayWorkAreaChanged" - units="Boolean" expires_after="2024-05-26"> + enum="Boolean" expires_after="2024-05-26"> <owner>sammiequon@chromium.org</owner> <owner>yunchengs@google.com</owner> <owner>chromeos-wm-corexp@google.com</owner> @@ -5412,7 +5412,7 @@ </histogram> <histogram name="Ash.Personalization.KeyboardBacklight.OpenZoneCustomization" - units="BooleanHit" expires_after="2024-05-19"> + enum="BooleanHit" expires_after="2024-05-19"> <owner>thuongphan@chromium.org</owner> <owner>assistive-eng@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/blink/histograms.xml b/tools/metrics/histograms/metadata/blink/histograms.xml index 4bca0a2..0a1a754 100644 --- a/tools/metrics/histograms/metadata/blink/histograms.xml +++ b/tools/metrics/histograms/metadata/blink/histograms.xml
@@ -2934,7 +2934,7 @@ </histogram> <histogram name="Blink.LocalFrameRoot.DidReachFirstContentfulPaint" - units="Boolean" expires_after="2024-06-30"> + enum="Boolean" expires_after="2024-06-30"> <owner>pdr@chromium.org</owner> <owner>paint-dev@chromium.org</owner> <summary> @@ -2944,7 +2944,7 @@ </histogram> <histogram name="Blink.LocalFrameRoot.DidReachFirstContentfulPaint.MainFrame" - units="Boolean" expires_after="2024-06-30"> + enum="Boolean" expires_after="2024-06-30"> <owner>pdr@chromium.org</owner> <owner>paint-dev@chromium.org</owner> <summary> @@ -3092,7 +3092,7 @@ </histogram> <histogram name="Blink.MobileMetrics.BadTapTargetRatioExtractionSucceed" - units="Boolean" expires_after="2023-05-07"> + enum="Boolean" expires_after="2023-05-07"> <owner>kumagi@google.com</owner> <owner>gaul@google.com</owner> <owner>paint-dev@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/browser/histograms.xml b/tools/metrics/histograms/metadata/browser/histograms.xml index 4e14600d..ce6f139 100644 --- a/tools/metrics/histograms/metadata/browser/histograms.xml +++ b/tools/metrics/histograms/metadata/browser/histograms.xml
@@ -169,7 +169,7 @@ </token> </histogram> -<histogram name="Browser.ERP.FilteredOutEvents" units="BooleanFiltered" +<histogram name="Browser.ERP.FilteredOutEvents" enum="BooleanFiltered" expires_after="2024-05-23"> <owner>lbaraz@chromium.org</owner> <owner>cros-reporting-team@google.com</owner> @@ -215,7 +215,7 @@ </summary> </histogram> -<histogram name="Browser.ERP.RateLimitedEvents" units="BooleanAccepted" +<histogram name="Browser.ERP.RateLimitedEvents" enum="BooleanAccepted" expires_after="2024-05-23"> <owner>lbaraz@chromium.org</owner> <owner>cros-reporting-team@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/compositing/histograms.xml b/tools/metrics/histograms/metadata/compositing/histograms.xml index 62e7c9f..18512793 100644 --- a/tools/metrics/histograms/metadata/compositing/histograms.xml +++ b/tools/metrics/histograms/metadata/compositing/histograms.xml
@@ -428,7 +428,7 @@ <histogram name="Compositing.Display.OverlayProcessorUsingStrategy.FramesAttemptingRequiredOverlays" - units="boolean" expires_after="2024-05-26"> + enum="Boolean" expires_after="2024-05-26"> <owner>zoraiznaeem@chromium.org</owner> <owner>graphics-dev@chromium.org</owner> <summary> @@ -439,7 +439,7 @@ <histogram name="Compositing.Display.OverlayProcessorUsingStrategy.FramesScalingRequiredOverlays" - units="boolean" expires_after="2024-06-30"> + enum="Boolean" expires_after="2024-06-30"> <owner>zoraiznaeem@chromium.org</owner> <owner>graphics-dev@chromium.org</owner> <summary> @@ -602,7 +602,7 @@ </histogram> <histogram name="Compositing.Renderer.AnimationUpdateOnMissingPropertyNode" - units="boolean" expires_after="2024-12-02"> + enum="Boolean" expires_after="2024-12-02"> <owner>awogbemila@chromium.org</owner> <owner>input-dev@chromium.org</owner> <summary> @@ -698,7 +698,7 @@ </histogram> <histogram name="Compositing.SkiaRenderer.DirectlyDrawableRenderPassWithRPDQ" - units="boolean" expires_after="2024-06-30"> + enum="Boolean" expires_after="2024-06-30"> <owner>khushalsagar@chromium.org</owner> <owner>vmpstr@chromium.org</owner> <owner>graphics-dev@chromium.org</owner> @@ -710,7 +710,7 @@ </histogram> <histogram name="Compositing.SkiaRenderer.DrawTileDrawQuad.UsingRawDraw" - units="boolean" expires_after="2023-06-11"> + enum="Boolean" expires_after="2023-06-11"> <owner>penghuang@chromium.org</owner> <owner>graphics-dev@chromium.org</owner> <summary>Records if the TileDrawQuad is rendered with RawDraw.</summary> @@ -869,7 +869,7 @@ </summary> </histogram> -<histogram name="Compositing.TileManager.EnoughMemory" units="boolean" +<histogram name="Compositing.TileManager.EnoughMemory" enum="Boolean" expires_after="2024-06-30"> <owner>lizeb@chromium.org</owner> <owner>chrome-gpu-memory@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/enterprise/enums.xml b/tools/metrics/histograms/metadata/enterprise/enums.xml index d739c68..03bafed 100644 --- a/tools/metrics/histograms/metadata/enterprise/enums.xml +++ b/tools/metrics/histograms/metadata/enterprise/enums.xml
@@ -2014,6 +2014,9 @@ <int value="1194" label="DeviceLoginScreenTouchVirtualKeyboardEnabled"/> <int value="1195" label="DeviceExtendedAutoUpdateEnabled"/> <int value="1196" label="CAPlatformIntegrationEnabled"/> + <int value="1197" label="FloatingSsoEnabled"/> + <int value="1198" label="FloatingSsoDomainBlocklist"/> + <int value="1199" label="FloatingSsoDomainBlocklistExceptions"/> </enum> <enum name="EnterprisePoliciesSources">
diff --git a/tools/metrics/histograms/metadata/extensions/histograms.xml b/tools/metrics/histograms/metadata/extensions/histograms.xml index 73626a4f9..5a97801a 100644 --- a/tools/metrics/histograms/metadata/extensions/histograms.xml +++ b/tools/metrics/histograms/metadata/extensions/histograms.xml
@@ -1266,7 +1266,7 @@ <histogram name="Extensions.Events.DidDispatchToAckSucceed.{BackgroundContextType}" - units="Boolean" expires_after="never"> + enum="Boolean" expires_after="never"> <!-- expires-never: Monitors core extension system health. --> <owner>jlulejian@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/feature_engagement/histograms.xml b/tools/metrics/histograms/metadata/feature_engagement/histograms.xml index 087f97b..9592ac0 100644 --- a/tools/metrics/histograms/metadata/feature_engagement/histograms.xml +++ b/tools/metrics/histograms/metadata/feature_engagement/histograms.xml
@@ -233,6 +233,8 @@ summary="showing the Parcel Tracking IPH on the Magic Stack"/> <variant name="IPH_iOSPasswordPromoDesktop" summary="showing the iOS password promo on desktop"/> + <variant name="IPH_iOSPromoAllTabs" + summary="showing All Tabs default browser promo"/> <variant name="IPH_iOSPromoAppStore" summary="showing the App Store Promo on iOS"/> <variant name="IPH_iOSPromoCredentialProviderExtension" @@ -241,12 +243,16 @@ summary="showing the Default Browser Promo on iOS"/> <variant name="IPH_iOSPromoDefaultBrowserReminder" summary="showing the Default Browser Promo after remind me later on iOS"/> + <variant name="IPH_iOSPromoMadeForIOS" + summary="showing Made for iOS default browser promo"/> <variant name="IPH_iOSPromoPasswordManagerWidget" summary="showing the Password Manager widget promo on iOS"/> <variant name="IPH_iOSPromoPostRestore" summary="showing the Post Restore Promo on iOS"/> <variant name="IPH_iOSPromoPostRestoreDefaultBrowser" summary="showing the Post Restore Default Browser Promo on iOS"/> + <variant name="IPH_iOSPromoStaySafe" + summary="showing Stay Safe default browser promo"/> <variant name="IPH_iOSPromoWhatsNew" summary="showing the Whats New Promo on iOS"/> <variant name="IPH_iOSPullToRefreshFeature"
diff --git a/tools/metrics/histograms/metadata/gpu/histograms.xml b/tools/metrics/histograms/metadata/gpu/histograms.xml index d6e5bc44..c8ff0d0 100644 --- a/tools/metrics/histograms/metadata/gpu/histograms.xml +++ b/tools/metrics/histograms/metadata/gpu/histograms.xml
@@ -903,7 +903,7 @@ </histogram> <histogram name="Gpu.Graphite.GraphiteImageProviderAccessHitInCache" - units="Boolean" expires_after="2024-06-01"> + enum="Boolean" expires_after="2024-06-01"> <owner>blundell@chromium.org</owner> <owner>sunnyps@chromium.org</owner> <owner>graphics-dev@chromium.org</owner> @@ -1227,7 +1227,7 @@ </summary> </histogram> -<histogram name="GPU.Sandboxed" units="Boolean" expires_after="2024-12-19"> +<histogram name="GPU.Sandboxed" enum="Boolean" expires_after="2024-12-19"> <owner>akhna@google.com</owner> <owner>chromeos-hardening@google.com</owner> <summary> @@ -1281,7 +1281,7 @@ </summary> </histogram> -<histogram name="GPU.SharedImage.IsNewMultiplanarFormat" units="Boolean" +<histogram name="GPU.SharedImage.IsNewMultiplanarFormat" enum="Boolean" expires_after="2024-06-30"> <owner>hitawala@chromium.org</owner> <owner>vasilyt@chromium.org</owner> @@ -1293,7 +1293,7 @@ </summary> </histogram> -<histogram name="GPU.SharedImage.IsRG88HardwareGMBSupported" units="Boolean" +<histogram name="GPU.SharedImage.IsRG88HardwareGMBSupported" enum="Boolean" expires_after="2024-06-04"> <owner>hitawala@chromium.org</owner> <owner>graphics-dev@chromium.org</owner> @@ -1399,7 +1399,7 @@ </token> </histogram> -<histogram name="GPU.Vulkan.ExtMemoryBudgetSupported" units="BooleanSupported" +<histogram name="GPU.Vulkan.ExtMemoryBudgetSupported" enum="BooleanSupported" expires_after="2024-06-30"> <owner>vikassoni@chromium.org</owner> <owner>penghuang@chromium.org</owner> @@ -1479,7 +1479,7 @@ </summary> </histogram> -<histogram name="Gpu.{CacheType}LoadHitInCache" units="Boolean" +<histogram name="Gpu.{CacheType}LoadHitInCache" enum="Boolean" expires_after="2024-06-01"> <owner>blundell@chromium.org</owner> <owner>geofflang@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/history/histograms.xml b/tools/metrics/histograms/metadata/history/histograms.xml index 8f5b6d679..1bf012a 100644 --- a/tools/metrics/histograms/metadata/history/histograms.xml +++ b/tools/metrics/histograms/metadata/history/histograms.xml
@@ -1287,7 +1287,7 @@ </histogram> <histogram name="History.Clusters.JourneysEligibleAndEnabledAtSessionStart" - units="BooleanEnabled" expires_after="2024-06-30"> + enum="BooleanEnabled" expires_after="2024-06-30"> <owner>sophiechang@chromium.org</owner> <owner>chrome-journeys@google.com</owner> <component>UI>Browser>Journeys</component> @@ -2166,7 +2166,7 @@ </summary> </histogram> -<histogram name="History.VisitedLinks.VisitLoggedFromMainFrame" units="boolean" +<histogram name="History.VisitedLinks.VisitLoggedFromMainFrame" enum="Boolean" expires_after="2024-06-16"> <owner>kyraseevers@chromium.org</owner> <owner>brgoldstein@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/ios/enums.xml b/tools/metrics/histograms/metadata/ios/enums.xml index 8ad471b..60f3221a 100644 --- a/tools/metrics/histograms/metadata/ios/enums.xml +++ b/tools/metrics/histograms/metadata/ios/enums.xml
@@ -551,6 +551,9 @@ <int value="10" label="Omnibox Position"/> <int value="11" label="Docking Promo"/> <int value="12" label="Docking Promo (Remind Me Later)"/> + <int value="13" label="All Tabs default browser promo"/> + <int value="14" label="Made for iOS default browser promo"/> + <int value="15" label="Stay Safe default browser promo"/> </enum> <enum name="IOSPromosManagerPromoImpressionLimitEvaluationType">
diff --git a/tools/metrics/histograms/metadata/navigation/histograms.xml b/tools/metrics/histograms/metadata/navigation/histograms.xml index 2956a45..2acb4869 100644 --- a/tools/metrics/histograms/metadata/navigation/histograms.xml +++ b/tools/metrics/histograms/metadata/navigation/histograms.xml
@@ -1199,7 +1199,7 @@ <histogram name="Navigation.PendingCommit.DidBlockGetFrameHostForNavigation.{RegularOrMHTMLType}" - units="Boolean" expires_after="2023-12-31"> + enum="Boolean" expires_after="2023-12-31"> <owner>dcheng@chromium.org</owner> <owner>rakina@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/network/enums.xml b/tools/metrics/histograms/metadata/network/enums.xml index cc0354c8..96c0ec0 100644 --- a/tools/metrics/histograms/metadata/network/enums.xml +++ b/tools/metrics/histograms/metadata/network/enums.xml
@@ -393,6 +393,9 @@ <int value="28" label="rndis_host"/> <int value="29" label="atl1c"/> <int value="30" label="sky2"/> + <int value="31" label="stgmac"/> + <int value="32" label="nforce"/> + <int value="33" label="r8153"/> </enum> <enum name="FallbackDNSTestResult"> @@ -960,6 +963,12 @@ <int value="38" label="BruschettaVmStartupSuccess"/> <int value="39" label="BruschettaVmShutdown"/> <int value="40" label="BruschettaVmShutdownSuccess"/> + <int value="41" label="BorealisVmStartup"/> + <int value="42" label="BorealisVmStartupSuccess"/> + <int value="43" label="BorealisVmShutdown"/> + <int value="44" label="BorealisVmShutdownSuccess"/> + <int value="45" label="ConfigureNetwork"/> + <int value="46" label="ConfigureNetworkSuccess"/> </enum> <enum name="NetworkPatchpanelDHCPServerEvent">
diff --git a/tools/metrics/histograms/metadata/omnibox/histograms.xml b/tools/metrics/histograms/metadata/omnibox/histograms.xml index cdd43709..15ab687 100644 --- a/tools/metrics/histograms/metadata/omnibox/histograms.xml +++ b/tools/metrics/histograms/metadata/omnibox/histograms.xml
@@ -1454,7 +1454,7 @@ </summary> </histogram> -<histogram name="Omnibox.RichAutocompletion.Triggered.Any" units="Boolean" +<histogram name="Omnibox.RichAutocompletion.Triggered.Any" enum="Boolean" expires_after="2024-06-30"> <owner>manukh@chromium.org</owner> <owner>jdonnelly@chromium.org</owner> @@ -1559,7 +1559,7 @@ <histogram name="Omnibox.SearchPrefetch.SearchWhatYouTypedWasAlsoSuggested.{HistoryOrSuggest}" - units="boolean" expires_after="2023-05-02"> + enum="Boolean" expires_after="2023-05-02"> <owner>ryansturm@chromium.org</owner> <owner>chrome-omnibox-team@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/others/histograms.xml b/tools/metrics/histograms/metadata/others/histograms.xml index 07eea6aa..d62ecf9 100644 --- a/tools/metrics/histograms/metadata/others/histograms.xml +++ b/tools/metrics/histograms/metadata/others/histograms.xml
@@ -2460,7 +2460,7 @@ <histogram name="ComponentUpdater.AndroidComponentLoader.LoadStatus.{Component}" - units="BooleanSuccess" expires_after="2024-11-28"> + enum="BooleanSuccess" expires_after="2024-11-28"> <owner>avvall@chromium.org</owner> <owner>src/android_webview/OWNERS</owner> <owner>src/components/component_updater/android/OWNERS</owner> @@ -5095,7 +5095,7 @@ </histogram> <histogram name="Feedback.ChromeOSApp.GetBigFeedbackLogs.Success" - units="boolean" expires_after="2024-08-30"> + enum="Boolean" expires_after="2024-08-30"> <owner>xiangdongkong@google.com</owner> <owner>cros-feedback-app@google.com</owner> <summary> @@ -5141,7 +5141,7 @@ </summary> </histogram> -<histogram name="Feedback.ChromeOSApp.IncludedEmail" units="boolean" +<histogram name="Feedback.ChromeOSApp.IncludedEmail" enum="Boolean" expires_after="2024-08-30"> <owner>longbowei@google.com</owner> <owner>xiangdongkong@google.com</owner> @@ -5152,7 +5152,7 @@ </summary> </histogram> -<histogram name="Feedback.ChromeOSApp.IncludedFile" units="boolean" +<histogram name="Feedback.ChromeOSApp.IncludedFile" enum="Boolean" expires_after="2024-08-30"> <owner>longbowei@google.com</owner> <owner>xiangdongkong@google.com</owner> @@ -5163,7 +5163,7 @@ </summary> </histogram> -<histogram name="Feedback.ChromeOSApp.IncludedScreenshot" units="boolean" +<histogram name="Feedback.ChromeOSApp.IncludedScreenshot" enum="Boolean" expires_after="2024-08-30"> <owner>longbowei@google.com</owner> <owner>xiangdongkong@google.com</owner> @@ -5174,7 +5174,7 @@ </summary> </histogram> -<histogram name="Feedback.ChromeOSApp.IncludedSystemInfo" units="boolean" +<histogram name="Feedback.ChromeOSApp.IncludedSystemInfo" enum="Boolean" expires_after="2024-08-30"> <owner>longbowei@google.com</owner> <owner>xiangdongkong@google.com</owner> @@ -5185,7 +5185,7 @@ </summary> </histogram> -<histogram name="Feedback.ChromeOSApp.IncludedUrl" units="boolean" +<histogram name="Feedback.ChromeOSApp.IncludedUrl" enum="Boolean" expires_after="2024-08-30"> <owner>longbowei@google.com</owner> <owner>xiangdongkong@google.com</owner> @@ -5236,7 +5236,7 @@ </token> </histogram> -<histogram name="Feedback.ChromeOSApp.ViewedHelpContent" units="boolean" +<histogram name="Feedback.ChromeOSApp.ViewedHelpContent" enum="Boolean" expires_after="2024-08-30"> <owner>longbowei@google.com</owner> <owner>xiangdongkong@google.com</owner> @@ -5247,7 +5247,7 @@ </summary> </histogram> -<histogram name="Feedback.ChromeOSApp.ViewedImage" units="boolean" +<histogram name="Feedback.ChromeOSApp.ViewedImage" enum="Boolean" expires_after="2024-08-30"> <owner>longbowei@google.com</owner> <owner>xiangdongkong@google.com</owner> @@ -5258,7 +5258,7 @@ </summary> </histogram> -<histogram name="Feedback.ChromeOSApp.ViewedMetrics" units="boolean" +<histogram name="Feedback.ChromeOSApp.ViewedMetrics" enum="Boolean" expires_after="2024-08-30"> <owner>longbowei@google.com</owner> <owner>xiangdongkong@google.com</owner> @@ -5269,7 +5269,7 @@ </summary> </histogram> -<histogram name="Feedback.ChromeOSApp.ViewedScreenshot" units="boolean" +<histogram name="Feedback.ChromeOSApp.ViewedScreenshot" enum="Boolean" expires_after="2024-08-30"> <owner>longbowei@google.com</owner> <owner>xiangdongkong@google.com</owner> @@ -5280,7 +5280,7 @@ </summary> </histogram> -<histogram name="Feedback.ChromeOSApp.ViewedSystemAndAppInfo" units="boolean" +<histogram name="Feedback.ChromeOSApp.ViewedSystemAndAppInfo" enum="Boolean" expires_after="2024-08-30"> <owner>longbowei@google.com</owner> <owner>xiangdongkong@google.com</owner> @@ -5413,7 +5413,7 @@ </summary> </histogram> -<histogram name="Feedback.ReportSending.Online" units="boolean" +<histogram name="Feedback.ReportSending.Online" enum="Boolean" expires_after="2024-05-19"> <owner>xiangdongkong@google.com</owner> <owner>cros-feedback-app@google.com</owner> @@ -7733,7 +7733,7 @@ </histogram> <histogram name="Ozone.TouchEventConverterEvdev.RepeatedTouchCount" - units="BooleanDetected" expires_after="2024-06-01"> + enum="BooleanDetected" expires_after="2024-06-01"> <owner>jiwan@chromium.org</owner> <owner>robsc@chromium.org</owner> <summary> @@ -7745,7 +7745,7 @@ </histogram> <histogram name="Ozone.TouchEventConverterEvdev.StylusSessionCount" - units="BooleanDetected" expires_after="2024-06-01"> + enum="BooleanDetected" expires_after="2024-06-01"> <owner>jiwan@chromium.org</owner> <owner>robsc@chromium.org</owner> <summary> @@ -7792,7 +7792,7 @@ </histogram> <histogram name="Ozone.TouchEventConverterEvdev.TouchSessionCount" - units="BooleanDetected" expires_after="2024-06-01"> + enum="BooleanDetected" expires_after="2024-06-01"> <owner>jiwan@chromium.org</owner> <owner>robsc@chromium.org</owner> <summary> @@ -9571,7 +9571,7 @@ </summary> </histogram> -<histogram name="SiteIsolatedCodeCache.JS.Hit" units="Boolean" +<histogram name="SiteIsolatedCodeCache.JS.Hit" enum="Boolean" expires_after="2023-10-08"> <owner>yhirano@chromium.org</owner> <owner>loading-dev@chromium.org</owner> @@ -11554,7 +11554,7 @@ </summary> </histogram> -<histogram name="WebUICodeCache.FeatureEnabled" units="Boolean" +<histogram name="WebUICodeCache.FeatureEnabled" enum="Boolean" expires_after="2024-07-14"> <owner>temao@chromium.org</owner> <owner>tluk@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/password/enums.xml b/tools/metrics/histograms/metadata/password/enums.xml index fae0094..985b3535 100644 --- a/tools/metrics/histograms/metadata/password/enums.xml +++ b/tools/metrics/histograms/metadata/password/enums.xml
@@ -650,6 +650,7 @@ <int value="14" label="Full note selected"/> <int value="15" label="Part of a note copied"/> <int value="16" label="Full note copied"/> + <int value="17" label="Move password link clicked in details footer"/> </enum> <enum name="PasswordManager.AssistantStoppedBubble.CloseReason">
diff --git a/tools/metrics/histograms/metadata/password/histograms.xml b/tools/metrics/histograms/metadata/password/histograms.xml index 8efe5cb..e45a57d3 100644 --- a/tools/metrics/histograms/metadata/password/histograms.xml +++ b/tools/metrics/histograms/metadata/password/histograms.xml
@@ -1538,7 +1538,7 @@ </summary> </histogram> -<histogram name="PasswordManager.Import.FileDeletionSelected" units="Boolean" +<histogram name="PasswordManager.Import.FileDeletionSelected" enum="Boolean" expires_after="2024-06-30"> <owner>eliaskh@chromium.org</owner> <owner>natiahlyi@google.com</owner> @@ -1548,7 +1548,7 @@ </summary> </histogram> -<histogram name="PasswordManager.Import.Only{ErrorType}" units="Boolean" +<histogram name="PasswordManager.Import.Only{ErrorType}" enum="Boolean" expires_after="2024-06-30"> <owner>eliaskh@chromium.org</owner> <owner>natiahlyi@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/performance_controls/histograms.xml b/tools/metrics/histograms/metadata/performance_controls/histograms.xml index 422bdd6..8bdf3d3 100644 --- a/tools/metrics/histograms/metadata/performance_controls/histograms.xml +++ b/tools/metrics/histograms/metadata/performance_controls/histograms.xml
@@ -29,7 +29,7 @@ </histogram> <histogram name="PerformanceControls.BatterySaver.IPHOpenSettings" - units="BooleanSettingsOpened" expires_after="2024-05-19"> + enum="BooleanOpened" expires_after="2024-05-19"> <owner>agale@chromium.org</owner> <owner>estalin@chromium.org</owner> <owner>chrome-performance-ui-sea@google.com</owner> @@ -77,7 +77,7 @@ </histogram> <histogram name="PerformanceControls.MemorySaver.IPHEnableMode" - units="BooleanEnableMode" expires_after="2024-05-26"> + enum="BooleanEnabled" expires_after="2024-05-26"> <owner>agale@chromium.org</owner> <owner>chrome-performance-ui-sea@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/performance_manager/histograms.xml b/tools/metrics/histograms/metadata/performance_manager/histograms.xml index b20fed0..15d939a 100644 --- a/tools/metrics/histograms/metadata/performance_manager/histograms.xml +++ b/tools/metrics/histograms/metadata/performance_manager/histograms.xml
@@ -123,7 +123,7 @@ <histogram name="PerformanceManager.PerformanceInterventions.CPU.SystemCPUError.{Timing}" - units="BooleanError" expires_after="2024-04-28"> + enum="BooleanError" expires_after="2024-04-28"> <owner>agale@chromium.org</owner> <owner>joenotcharles@chromium.org</owner> <owner>chrome-catan@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/prefetch/histograms.xml b/tools/metrics/histograms/metadata/prefetch/histograms.xml index c0b763f..415f30b 100644 --- a/tools/metrics/histograms/metadata/prefetch/histograms.xml +++ b/tools/metrics/histograms/metadata/prefetch/histograms.xml
@@ -311,7 +311,7 @@ </histogram> <histogram name="PrefetchProxy.Prefetch.ExistingPrefetchWithMatchingURL" - units="Boolean" expires_after="2024-01-14"> + enum="Boolean" expires_after="2024-01-14"> <owner>liviutinta@chromium.org</owner> <owner>jbroman@chromium.org</owner> <owner>curranmax@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/sb_client/histograms.xml b/tools/metrics/histograms/metadata/sb_client/histograms.xml index 4c9136d13..1b5b053 100644 --- a/tools/metrics/histograms/metadata/sb_client/histograms.xml +++ b/tools/metrics/histograms/metadata/sb_client/histograms.xml
@@ -554,7 +554,7 @@ </histogram> <histogram name="SBClientPhishing.CSDPhishingCachedDataAvailable" - units="BooleanAvailable" expires_after="2024-10-09"> + enum="BooleanAvailable" expires_after="2024-10-09"> <owner>andysjlim@chromium.org</owner> <owner>chrome-counter-abuse-alerts@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/search/histograms.xml b/tools/metrics/histograms/metadata/search/histograms.xml index f9c177e..4bce965 100644 --- a/tools/metrics/histograms/metadata/search/histograms.xml +++ b/tools/metrics/histograms/metadata/search/histograms.xml
@@ -727,7 +727,7 @@ </summary> </histogram> -<histogram name="Search.Lens.ViewportDimensionsSent.Success" units="Boolean" +<histogram name="Search.Lens.ViewportDimensionsSent.Success" enum="Boolean" expires_after="2024-06-02"> <owner>mercerd@google.com</owner> <owner>lens-chrome-eng@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/security/histograms.xml b/tools/metrics/histograms/metadata/security/histograms.xml index c5264e1..2b6d62bd 100644 --- a/tools/metrics/histograms/metadata/security/histograms.xml +++ b/tools/metrics/histograms/metadata/security/histograms.xml
@@ -823,7 +823,7 @@ <histogram name="SiteIsolation.NewProcessUsedForNavigationWhenSameSiteProcessExists" - units="Boolean" expires_after="2024-04-20"> + enum="Boolean" expires_after="2024-04-20"> <owner>bashi@chromium.org</owner> <owner>blink-network-stack@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/segmentation_platform/histograms.xml b/tools/metrics/histograms/metadata/segmentation_platform/histograms.xml index 86e960c9..f8ba087 100644 --- a/tools/metrics/histograms/metadata/segmentation_platform/histograms.xml +++ b/tools/metrics/histograms/metadata/segmentation_platform/histograms.xml
@@ -657,7 +657,7 @@ <histogram name="SegmentationPlatform.SegmentInfoDatabase.ProtoDBUpdateResult.{SegmentationKey}" - units="BooleanSuccess" expires_after="2024-10-01"> + enum="BooleanSuccess" expires_after="2024-10-01"> <owner>salg@google.com</owner> <owner>chrome-segmentation-platform@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/storage/histograms.xml b/tools/metrics/histograms/metadata/storage/histograms.xml index 51034240..67e53285 100644 --- a/tools/metrics/histograms/metadata/storage/histograms.xml +++ b/tools/metrics/histograms/metadata/storage/histograms.xml
@@ -668,7 +668,7 @@ </histogram> <histogram name="Storage.SharedStorage.Database.Destruction" - units="BooleanDestroyed" expires_after="2024-01-31"> + enum="BooleanDestroyed" expires_after="2024-01-31"> <owner>cammie@chromium.org</owner> <owner>yaoxia@chromium.org</owner> <owner>chrome-ads-histograms@google.com</owner> @@ -819,7 +819,7 @@ </histogram> <histogram name="Storage.SharedStorage.Database.IsFileBacked" - units="BooleanIsFileBacked" expires_after="2024-06-02"> + enum="BooleanIsFileBacked" expires_after="2024-06-02"> <owner>cammie@chromium.org</owner> <owner>yaoxia@chromium.org</owner> <owner>chrome-ads-histograms@google.com</owner> @@ -1005,7 +1005,7 @@ <histogram name="Storage.SharedStorage.OnShutdown.RecoveryFromInitFailureAttempted" - units="BooleanRecoveryAttempted" expires_after="2024-01-31"> + enum="BooleanAttempted" expires_after="2024-01-31"> <owner>cammie@chromium.org</owner> <owner>yaoxia@chromium.org</owner> <owner>chrome-ads-histograms@google.com</owner> @@ -1018,7 +1018,7 @@ </histogram> <histogram name="Storage.SharedStorage.OnShutdown.RecoveryOnDiskAttempted" - units="BooleanRecoveryOnDiskAttempted" expires_after="2024-01-31"> + enum="BooleanAttempted" expires_after="2024-01-31"> <owner>cammie@chromium.org</owner> <owner>yaoxia@chromium.org</owner> <owner>chrome-ads-histograms@google.com</owner> @@ -1042,7 +1042,7 @@ </histogram> <histogram name="Storage.SharedStorage.Worklet.Context.IsDefined" - units="BooleanIsDefined" expires_after="2024-01-31"> + enum="Boolean" expires_after="2024-01-31"> <owner>cammie@chromium.org</owner> <owner>yaoxia@chromium.org</owner> <owner>chrome-ads-histograms@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/tab/histograms.xml b/tools/metrics/histograms/metadata/tab/histograms.xml index 90dc8c83..cec8ef7 100644 --- a/tools/metrics/histograms/metadata/tab/histograms.xml +++ b/tools/metrics/histograms/metadata/tab/histograms.xml
@@ -244,7 +244,7 @@ </token> </histogram> -<histogram name="Tab.HasCustomUnderPageBackgroundColor" units="BooleanPresent" +<histogram name="Tab.HasCustomUnderPageBackgroundColor" enum="BooleanPresent" expires_after="2024-11-29"> <owner>gambard@chromium.org</owner> <owner>bling-team@google.com</owner> @@ -257,7 +257,7 @@ </summary> </histogram> -<histogram name="Tab.HasThemeColor" units="BooleanPresent" +<histogram name="Tab.HasThemeColor" enum="BooleanPresent" expires_after="2024-11-29"> <owner>gambard@chromium.org</owner> <owner>bling-team@google.com</owner> @@ -2191,7 +2191,7 @@ </summary> </histogram> -<histogram name="Tabs.Tasks.OrderValidOnStartup" units="boolean" +<histogram name="Tabs.Tasks.OrderValidOnStartup" enum="Boolean" expires_after="2024-03-24"> <owner>ckitagawa@chromium.org</owner> <owner>fredmello@chromium.org</owner> @@ -2201,7 +2201,7 @@ </summary> </histogram> -<histogram name="Tabs.Tasks.TabAddedWithValidProposedPosition" units="boolean" +<histogram name="Tabs.Tasks.TabAddedWithValidProposedPosition" enum="Boolean" expires_after="2024-05-19"> <owner>ckitagawa@chromium.org</owner> <owner>fredmello@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/v8/histograms.xml b/tools/metrics/histograms/metadata/v8/histograms.xml index 0d9b0673..68c05f2 100644 --- a/tools/metrics/histograms/metadata/v8/histograms.xml +++ b/tools/metrics/histograms/metadata/v8/histograms.xml
@@ -56,7 +56,7 @@ </summary> </histogram> -<histogram name="V8.CFIPageSizeMismatch" units="BooleanOccurred" +<histogram name="V8.CFIPageSizeMismatch" enum="BooleanOccurred" expires_after="2024-06-01"> <owner>sroettger@google.com</owner> <owner>v8-security@google.com</owner> @@ -1601,8 +1601,8 @@ </summary> </histogram> -<histogram name="V8.UnhandledExceptionCountInMainThread" - units="BooleanOccurred" expires_after="2024-05-26"> +<histogram name="V8.UnhandledExceptionCountInMainThread" enum="BooleanOccurred" + expires_after="2024-05-26"> <owner>chikamune@chromium.org</owner> <owner>sisidovski@chromium.org</owner> <owner>hiroshige@chromium.org</owner> @@ -1616,7 +1616,7 @@ </summary> </histogram> -<histogram name="V8.UnhandledExceptionCountInWorker" units="BooleanOccurred" +<histogram name="V8.UnhandledExceptionCountInWorker" enum="BooleanOccurred" expires_after="2024-06-30"> <owner>chikamune@chromium.org</owner> <owner>sisidovski@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/web_apk/histograms.xml b/tools/metrics/histograms/metadata/web_apk/histograms.xml index 106e45d..330a474 100644 --- a/tools/metrics/histograms/metadata/web_apk/histograms.xml +++ b/tools/metrics/histograms/metadata/web_apk/histograms.xml
@@ -59,7 +59,7 @@ </summary> </histogram> -<histogram name="WebApk.Database.WriteResult" units="boolean" +<histogram name="WebApk.Database.WriteResult" enum="Boolean" expires_after="2024-06-01"> <owner>hartmanng@chromium.org</owner> <owner>src/chrome/android/webapk/OWNERS</owner>
diff --git a/tools/metrics/histograms/metadata/web_rtc/histograms.xml b/tools/metrics/histograms/metadata/web_rtc/histograms.xml index ec79ef721..6e5f599 100644 --- a/tools/metrics/histograms/metadata/web_rtc/histograms.xml +++ b/tools/metrics/histograms/metadata/web_rtc/histograms.xml
@@ -977,7 +977,7 @@ </histogram> <histogram name="WebRTC.DesktopCapture.FrameIsRefresh.{CapturerType}" - units="boolean" expires_after="2024-04-04"> + enum="Boolean" expires_after="2024-04-04"> <owner>henrika@chromium.org</owner> <owner>webrtc-dev@chromium.org</owner> <summary> @@ -1222,7 +1222,7 @@ </histogram> <histogram name="WebRTC.PeerConnection.DtlsFingerprintLegacySha1" - units="boolean" expires_after="2024-07-01"> + enum="Boolean" expires_after="2024-07-01"> <owner>hta@chromium.org</owner> <owner>webrtc-dev@chromium.org</owner> <owner>phancke@microsoft.com</owner> @@ -1485,7 +1485,7 @@ </summary> </histogram> -<histogram name="WebRTC.PeerConnection.ThermalThrottling" units="boolean" +<histogram name="WebRTC.PeerConnection.ThermalThrottling" enum="Boolean" expires_after="2024-06-30"> <owner>handellm@google.com</owner> <owner>hbos@chromium.org</owner> @@ -1517,8 +1517,8 @@ </summary> </histogram> -<histogram name="WebRTC.PeerConnection.ValidBundledPayloadTypes" - units="boolean" expires_after="2024-06-30"> +<histogram name="WebRTC.PeerConnection.ValidBundledPayloadTypes" enum="Boolean" + expires_after="2024-06-30"> <owner>hbos@chromium.org</owner> <owner>webrtc-dev@chromium.org</owner> <owner>phancke@microsoft.com</owner> @@ -1530,7 +1530,7 @@ </summary> </histogram> -<histogram name="WebRTC.PeerConnection.ValidIceChars" units="boolean" +<histogram name="WebRTC.PeerConnection.ValidIceChars" enum="Boolean" expires_after="2024-02-04"> <owner>hta@chromium.org</owner> <owner>webrtc-dev@chromium.org</owner> @@ -1590,7 +1590,7 @@ </histogram> <histogram name="WebRTC.Screenshare.DesktopCapturerFullscreenDetector" - units="boolean" expires_after="2024-06-30"> + enum="Boolean" expires_after="2024-06-30"> <owner>kron@chromium.org</owner> <owner>webrtc-video@google.com</owner> <summary> @@ -1616,7 +1616,7 @@ </summary> </histogram> -<histogram name="WebRTC.Screenshare.ZeroHz.QueueOverload" units="boolean" +<histogram name="WebRTC.Screenshare.ZeroHz.QueueOverload" enum="Boolean" expires_after="2024-03-30"> <owner>henrika@chromium.org</owner> <owner>handellm@google.com</owner>
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json index 1e517be..e0407d3 100644 --- a/tools/perf/core/perfetto_binary_roller/binary_deps.json +++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -5,24 +5,24 @@ "full_remote_path": "perfetto-luci-artifacts/v41.0/linux-arm64/trace_processor_shell" }, "win": { - "hash": "4fac8adf0559ee13d48de4ef8c88f42b312e206d", - "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/d6af17fef257af28ee2417216ef87d5c5b743a1b/trace_processor_shell.exe" + "hash": "feaa75bb95f85c202058ceed81230feab12ed1b7", + "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/448bdb779b4dbc8559703c589d7f8209de3551d4/trace_processor_shell.exe" }, "linux_arm": { "hash": "b1a376729d0b7aefc4c38db1348d94d068be07f1", "full_remote_path": "perfetto-luci-artifacts/v41.0/linux-arm/trace_processor_shell" }, "mac": { - "hash": "bdc6d1ad97086a8bd93a52aecfe4131c04f36215", - "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/mac/d6af17fef257af28ee2417216ef87d5c5b743a1b/trace_processor_shell" + "hash": "985f664ac31685fe44006ecbd522177548b1c31b", + "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/mac/917e4c0c2526d538fa786faaec9f497d96683623/trace_processor_shell" }, "mac_arm64": { "hash": "8cd6239efb03863974fdc94e5ee004352f999e3a", "full_remote_path": "perfetto-luci-artifacts/v41.0/mac-arm64/trace_processor_shell" }, "linux": { - "hash": "c442c4d1342bcaaccc2571494e0de072b9412cd5", - "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/d6af17fef257af28ee2417216ef87d5c5b743a1b/trace_processor_shell" + "hash": "e49946815e329386de8d7be7d347222640320b05", + "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/917e4c0c2526d538fa786faaec9f497d96683623/trace_processor_shell" } }, "power_profile.sql": {
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ru.xtb b/ui/chromeos/translations/ui_chromeos_strings_ru.xtb index f641ecb..6e39890 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ru.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ru.xtb
@@ -875,7 +875,7 @@ <translation id="7740287852186792672">Результаты поиска</translation> <translation id="7748626145866214022">Больше возможностей доступно на панели действий. Чтобы перейти на нее, нажмите клавиши Alt + A.</translation> <translation id="7760449188139285140">Китайский, Wubi</translation> -<translation id="7765158879357617694">Переместить</translation> +<translation id="7765158879357617694">Перенести</translation> <translation id="7774365994322694683">Птица</translation> <translation id="7780322752056734036">Несколько объектов (<ph name="NUMBER_OF_ITEMS" />) восстановлено</translation> <translation id="7781829728241885113">Вчера</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_vi.xtb b/ui/chromeos/translations/ui_chromeos_strings_vi.xtb index 989f144..d93c72d 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_vi.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_vi.xtb
@@ -95,7 +95,7 @@ <translation id="1742316578210444689">Tiếng Do Thái (chuyển tự)</translation> <translation id="1747761757048858544">Tiếng Hà Lan (Hà Lan)</translation> <translation id="174937106936716857">Tổng số lượng tệp</translation> -<translation id="1755345808328621801">Tệp này dành cho máy tính sử dụng phần mềm Windows. Tệp này không tương thích với thiết bị chạy ChromeOS của bạn. Vui lòng tìm kiếm ứng dụng thay thế phù hợp trong Cửa hàng Chrome trực tuyến.</translation> +<translation id="1755345808328621801">Tệp này dành cho máy tính sử dụng phần mềm Windows. Tệp này không tương thích với thiết bị chạy ChromeOS của bạn. Vui lòng tìm kiếm ứng dụng thay thế phù hợp trong Chrome Web Store.</translation> <translation id="1757915090001272240">Wide Latin</translation> <translation id="1761091787730831947">Chia sẻ với <ph name="VM_NAME" /></translation> <translation id="1773212559869067373">Chứng chỉ xác thực bị từ chối cục bộ</translation> @@ -167,7 +167,7 @@ <translation id="2305020378527873881"><ph name="VOLUME_NAME" /> đã được đẩy ra.</translation> <translation id="2307462900900812319">Định cấu hình mạng</translation> <translation id="2312704192806647271">{COUNT,plural, =1{Không tìm thấy tiện ích có mã nhận dạng <ph name="BEGIN_LIST" /><ph name="END_LIST" />. Hãy liên hệ với quản trị viên của bạn.}other{Không tìm thấy các tiện ích có mã nhận dạng <ph name="BEGIN_LIST" /><ph name="END_LIST" />. Hãy liên hệ với quản trị viên của bạn.}}</translation> -<translation id="2325650632570794183">Loại tệp này không được hỗ trợ. Vui lòng truy cập Cửa hàng Chrome trực tuyến để tìm ứng dụng có thể mở loại tệp này.</translation> +<translation id="2325650632570794183">Loại tệp này không được hỗ trợ. Vui lòng truy cập Chrome Web Store để tìm ứng dụng có thể mở loại tệp này.</translation> <translation id="2326539130272988168">Tiếng Bungary</translation> <translation id="233822363739146957">Không gian lưu trữ không đủ để đồng bộ hoá tất cả các tệp của bạn</translation> <translation id="23721837607121582">Tải hồ sơ mạng di động xuống, Mạng <ph name="NETWORK_INDEX" />/<ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" /></translation> @@ -243,7 +243,7 @@ <translation id="2949781154072577687">Đang định dạng <ph name="DRIVE_NAME" />...</translation> <translation id="2951236788251446349">Sứa</translation> <translation id="2958458230122209142">Sắp hết bộ nhớ, <ph name="TOTAL_SPACE" /> bộ nhớ cá nhân hiện còn <ph name="REMAINING_PERCENTAGE" />%.</translation> -<translation id="2977940621473452797">Tệp này dành cho máy tính sử dụng phần mềm Macintosh. Tệp này không tương thích với thiết bị chạy ChromeOS của bạn. Vui lòng tìm kiếm ứng dụng thay thế phù hợp trong Cửa hàng Chrome trực tuyến.</translation> +<translation id="2977940621473452797">Tệp này dành cho máy tính sử dụng phần mềm Macintosh. Tệp này không tương thích với thiết bị chạy ChromeOS của bạn. Vui lòng tìm kiếm ứng dụng thay thế phù hợp trong Chrome Web Store.</translation> <translation id="2984337792991268709">Hôm nay <ph name="TODAY_DAYTIME" /></translation> <translation id="299638574917407533">Tiếng Pháp (Canada)</translation> <translation id="3003189754374775221">Mạng <ph name="NETWORK_INDEX" />/<ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="NETWORK_PROVIDER_NAME" />, Cường độ tín hiệu <ph name="SIGNAL_STRENGTH" />%, Kết nối</translation>
diff --git a/ui/events/test/event_generator.cc b/ui/events/test/event_generator.cc index 52afd16b..e463586 100644 --- a/ui/events/test/event_generator.cc +++ b/ui/events/test/event_generator.cc
@@ -134,7 +134,6 @@ gfx::Point location = GetLocationInCurrentRoot(); ui::MouseEvent mouseev(ui::ET_MOUSE_PRESSED, location, location, ui::EventTimeForNow(), flags_, flag); - mouseev.set_source_device_id(mouse_source_device_id_); Dispatch(&mouseev); } } @@ -144,7 +143,6 @@ gfx::Point location = GetLocationInCurrentRoot(); ui::MouseEvent mouseev(ui::ET_MOUSE_RELEASED, location, location, ui::EventTimeForNow(), flags_, flag); - mouseev.set_source_device_id(mouse_source_device_id_); Dispatch(&mouseev); flags_ ^= flag; } @@ -189,7 +187,6 @@ gfx::Point location = GetLocationInCurrentRoot(); ui::MouseWheelEvent wheelev(gfx::Vector2d(delta_x, delta_y), location, location, ui::EventTimeForNow(), flags_, 0); - wheelev.set_source_device_id(mouse_source_device_id_); Dispatch(&wheelev); } @@ -198,7 +195,6 @@ delegate()->ConvertPointToTarget(current_target_, &enter_location); ui::MouseEvent mouseev(ui::ET_MOUSE_ENTERED, enter_location, enter_location, ui::EventTimeForNow(), flags_, 0); - mouseev.set_source_device_id(mouse_source_device_id_); Dispatch(&mouseev); } @@ -207,7 +203,6 @@ delegate()->ConvertPointToTarget(current_target_, &exit_location); ui::MouseEvent mouseev(ui::ET_MOUSE_EXITED, exit_location, exit_location, ui::EventTimeForNow(), flags_, 0); - mouseev.set_source_device_id(mouse_source_device_id_); Dispatch(&mouseev); } @@ -222,7 +217,6 @@ new ui::MouseEvent(ui::ET_MOUSE_MOVED, point_in_host, point_in_host, ui::EventTimeForNow(), flags_, 0)); ui::MouseEvent mouseev(native_event.get()); - mouseev.set_source_device_id(mouse_source_device_id_); native_event->set_location(point_for_native); Dispatch(&mouseev); @@ -236,7 +230,6 @@ ui::ET_MOUSE_DRAGGED : ui::ET_MOUSE_MOVED; ui::MouseEvent mouseev(event_type, point_in_host, point_in_host, ui::EventTimeForNow(), flags_, 0); - mouseev.set_source_device_id(mouse_source_device_id_); Dispatch(&mouseev); SetCurrentScreenLocation(point_in_host); @@ -260,7 +253,6 @@ delegate()->ConvertPointToTarget(current_target_, &move_point); ui::MouseEvent mouseev(event_type, move_point, move_point, ui::EventTimeForNow(), flags_, 0); - mouseev.set_source_device_id(mouse_source_device_id_); Dispatch(&mouseev); } SetCurrentScreenLocation(point_in_screen);
diff --git a/ui/events/test/event_generator.h b/ui/events/test/event_generator.h index 98b80af..6504f056 100644 --- a/ui/events/test/event_generator.h +++ b/ui/events/test/event_generator.h
@@ -14,7 +14,6 @@ #include "build/chromeos_buildflags.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/events/event.h" -#include "ui/events/event_constants.h" #include "ui/events/event_dispatcher.h" #include "ui/events/keycodes/keyboard_codes.h" #include "ui/gfx/geometry/point.h" @@ -187,12 +186,6 @@ void set_flags(int flags) { flags_ = flags; } int flags() const { return flags_; } - // Resets the Mouse Event device ID. - void set_mouse_source_device_id( - int source_device_id = ui::ED_UNKNOWN_DEVICE) { - mouse_source_device_id_ = source_device_id; - } - // Generates a button press / release event. void PressButton(int flag); void ReleaseButton(int flag); @@ -514,7 +507,6 @@ gfx::Point current_screen_location_; raw_ptr<EventTarget, AcrossTasksDanglingUntriaged> current_target_ = nullptr; int flags_ = 0; - int mouse_source_device_id_ = ui::ED_UNKNOWN_DEVICE; bool grab_ = false; ui::PointerDetails touch_pointer_details_;
diff --git a/ui/gfx/gpu_fence_handle.cc b/ui/gfx/gpu_fence_handle.cc index 651a67f..391341c 100644 --- a/ui/gfx/gpu_fence_handle.cc +++ b/ui/gfx/gpu_fence_handle.cc
@@ -92,7 +92,17 @@ GpuFenceHandle::~GpuFenceHandle() = default; bool GpuFenceHandle::is_null() const { - return !smart_fence_.get(); + if (!smart_fence_.get()) { + return true; + } + +#if BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA) + return !smart_fence_.get()->scoped_fence_.is_valid(); +#elif BUILDFLAG(IS_WIN) + return !smart_fence_.get()->scoped_fence_.IsValid(); +#else + return true; +#endif } GpuFenceHandle::RefCountedScopedFence::RefCountedScopedFence(
diff --git a/ui/ozone/platform/drm/gpu/drm_display.cc b/ui/ozone/platform/drm/gpu/drm_display.cc index 3fc47af..447e06b 100644 --- a/ui/ozone/platform/drm/gpu/drm_display.cc +++ b/ui/ozone/platform/drm/gpu/drm_display.cc
@@ -161,7 +161,9 @@ is_hdr_capable_ && base::FeatureList::IsEnabled(display::features::kUseHDRTransferFunction); - if (is_hdr_capable_) { + if (is_hdr_capable_ && + base::FeatureList::IsEnabled( + display::features::kEnableExternalDisplayHDR10Mode)) { current_color_space_ = display_snapshot.color_space(); SetColorspaceProperty(display_snapshot.color_space()); SetHdrOutputMetadata(display_snapshot.color_space());
diff --git a/ui/views/bubble/bubble_dialog_model_host.cc b/ui/views/bubble/bubble_dialog_model_host.cc index 5498f894..1c2204a 100644 --- a/ui/views/bubble/bubble_dialog_model_host.cc +++ b/ui/views/bubble/bubble_dialog_model_host.cc
@@ -843,6 +843,10 @@ } SetSubtitle(model_->subtitle(DialogModelHost::GetPassKey())); + // This is added due to crbug.com/1518993 which adds a subtitle that needs + // line wrapping. If any future dialogs need the subtitle to not line wrap, + // this behavior will need to be configurable via the builder. + SetSubtitleAllowCharacterBreak(true); if (!model_->main_image(DialogModelHost::GetPassKey()).IsEmpty()) { SetMainImage(model_->main_image(DialogModelHost::GetPassKey()));
diff --git a/ui/webui/resources/cr_components/omnibox/realbox_icon.html b/ui/webui/resources/cr_components/omnibox/realbox_icon.html index a0e12fc..ef92b5e 100644 --- a/ui/webui/resources/cr_components/omnibox/realbox_icon.html +++ b/ui/webui/resources/cr_components/omnibox/realbox_icon.html
@@ -101,12 +101,10 @@ background-size: 24px; } - :host([in-searchbox][mask-image*='//resources/images/icon_search.svg']) #icon { - -webkit-mask-size: 20px; /* Loupe in realbox is larger than in matches. */ - } - - :host([in-searchbox][mask-image*='//resources/cr_components/omnibox/icons/search_cr23.svg']) #icon { - -webkit-mask-size: 20px; /* Loupe in realbox is larger than in matches. */ + /* All icons in the searchbox should be 20px large. */ + :host([in-searchbox]) #icon { + -webkit-mask-size: 20px; + background-size: 20px; } :host([has-icon-container-background]:not([in-searchbox])) #icon {